Next Previous Contents

5. Skriptsprache

Ab Version 2.0.0 von vbox wird tcl als Skriptsprache benutzt, um eingegangene Anrufe zu bearbeiten. Eine genaue Beschreibung der allgemeinen Funktionen von tcl kann der tcl beiliegenden Dokumentation entnommen werden.

Die Anrufe werden auch weiterhin von vboxgetty entgegengenommen. Die weitere Bearbeitung nach der Entgegennahme erfolgt dann über das tcl Skript.

Zusätzlich zu den von tcl bereitgestellten Variablen stehen noch einige neue zur Verfügung, die von vboxgetty initialisiert werden (die Angaben in Klammern entsprechen der Voreinstellung):

vbox_var_bindir

Enthält das Verzeichnis, in welches die Programme installiert wurden, die von normalen Benutzern ausgeführt werden dürfen ('/usr/local/vbox/bin').

vbox_var_savename

Enthält den Dateinamen unter dem die Nachricht gespeichert werden sollte. Der Name errechnet sich aus dem aktuellen Datum und der Prozeß-ID. Der vorgegebene Name muß nicht benutzt werden!

vbox_var_rectime

Enthält die Anzahl der Sekunden die maximal aufgezeichnet werden soll. Dieser Wert entspricht der Konfiguration des aktuellen Anrufers.

vbox_var_spooldir

Enthält den Pfad zum Spoolverzeichnis des jeweiligen Benutzers ('/var/spool/vbox/<username>').

vbox_var_checknew

Enthält den Pfad in dem nach neuen Nachrichten gesucht werden soll ('/var/spool/vbox/<username>/incoming').

vbox_msg_standard

Enthält den Namen der Datei die als Ansage gespielt werden soll ('/var/spool/vbox/<username>/messages/standard.msg').

vbox_msg_beep

Enthält den Namen der Datei die als Beep gespielt werden soll ('/var/spool/vbox/<username>/messages/beep.msg').

vbox_msg_timeout

Enthält den Namen der Datei die bei einem Timeout gespielt werden soll ('/var/spool/vbox/<username>/messages/timeout.msg').

vbox_caller_id

Enthält die CALLERID des aktuellen Anrufers. Ist diese nicht bekannt, wird 0 eingetragen.

vbox_caller_phone

Enthält die vollständige Telefonnummer des aktuellen Anrufers. Ist diese nicht bekannt, wird "*** Unknown ***" eingetragen.

vbox_caller_name

Enthält den Namen des aktuellen Anrufers. Ist dieser nicht bekannt, wird "*** Unknown ***" eingetragen.

vbox_user_name

Enthält den Namen des Benutzers, unter dessen Rechte der aktuelle vboxgetty läuft.

vbox_user_home

Enthält das Heimatverzeichnis des Benutzers, unter dessen Rechte der aktuelle vboxgetty läuft.

vbox_flag_standard

Enthält TRUE wenn der Ansagetext gespielt werden soll, oder FALSE wenn nicht. Der Wert entspricht der Konfiguration des aktuellen Anrufers.

vbox_flag_beep

Enthält TRUE wenn der Beep gespielt werden soll, oder FALSE wenn nicht. Der Wert entspricht der Konfiguration des aktuellen Anrufers.

vbox_flag_timeout

Enthält TRUE wenn die Timeout-Nachricht gespielt werden soll, oder FALSE wenn nicht. Der Wert entspricht der Konfiguration des aktuellen Benutzers.

vbox_flag_record

Enthält TRUE wenn eine Nachricht aufgezeichnet werden soll, oder FALSE wenn nicht. Der Wert entspricht der Konfiguration des aktuellen Benutzers.

Zusätzlich zu den von tcl bereitgestellten Funktionen stehen noch einige neue zur Verfügung, mit denen vboxgetty gesteuert werden kann:

vbox_breaklist <add|rem> <sequence> [...]

Mit diesem Befehl kann gesteuert werden, bei welchen Touchtone-Sequenzen vboxgetty das Abspielen, Aufzeichnen oder Warten abbricht.

Touchtone-Sequenzen müssen immer in der Form *NUMMER# angegeben werden, wobei NUMMER einer Folge von Zeichen der Form 0-9 und A-D enspricht. Auch einzelne Zahlen müssen in der Form *NUMMER# angegeben werden; vboxgetty erkennst selbst, ob die Eingabe vom Anrufer eine einzelne Zahl oder Teil einer Sequenz ist.

add <sequence> [...]

Fügt die Touchtone-Sequenz(en) sequence zur Abbruchliste hinzu. Es können maximal 8 Sequenzen auf einmal angegeben werden.

rem <sequence> [...]

Entfernt die Touchtone-Sequenz(en) sequence aus der Abbruchliste. Wenn als sequence das Schlüsselwort all angegeben wird, wird die komplette Abbruchliste gelöscht. Es können maximal 8 Sequenzen auf einmal angegeben werden.

Beispiel:

vbox_breaklist rem all
vbox_breaklist add "*08154711#"

vbox_put_message <message>

Mit dieser Funktion kann eine Nachricht abgespielt werden. Die Art des Abbruchs wird als Rückgabewert gesetzt.

message

Vollständiger Name der Datei (inkl. Verzeichnis) die gespielt werden soll.

Folgende Rückgabewerte sind möglich:

ERROR

Das Abspielen wurde wegen eines Fehlers abgebrochen.

HANGUP

Die Verbindung wurde beendet. Das Skript sollte sich bei dieser Rückgabe beenden.

OK

Die Datei wurde vollständig gespielt und durch kein Ereignis abgebrochen.

Enthält die Rückgabe einen anderen Wert, handelt es sich um eine Touchtone-Sequenz, die während des Abspielens erkannt wurde.

Beispiel:

set RC [ vbox_put_message /var/spool/vbox/michael/messages/standard.msg ]

vbox_get_message <savename> <timelimit>

Zeichnet eine Nachricht auf. Die Art des Abbruchs wird als Rückgabewert gesetzt.

savename

Vollständiger Name der Datei (inkl. Verzeichnis) unter der die Nachricht gespeichert werden soll.

timelimit

Maximale Anzahl Sekunden die Aufgezeichnet werden soll.

Folgende Rückgabewerte sind möglich:

ERROR

Das Aufzeichnen wurde wegen eines Fehlers abgebrochen.

TIMEOUT

Die maximale Aufzeichnungszeit wurde erreicht.

HANGUP

Die Verbindung wurde beendet. Das Skript sollte sich bei dieser Rückgabe beenden.

OK

Die Datei wurde vollständig aufgezeichnet und durch kein Ereignis abgebrochen.

Enthält die Rückgabe einen anderen Wert, handelt es sich um eine Touchtone-Sequenz, die während des Aufzeichnens erkannt wurde.

Beispiel:

set RC [ vbox_get_message /var/spool/vbox/michael/incoming/00000858611291-00022795 90 ]

vbox_wait <seconds>

Wartet eine bestimmte Anzahl von Sekunden auf Eingaben vom Anrufer. Die Art des Abbruchs wird als Rückgabewert gesetzt.

seconds

Anzahl der Sekunden die gewartet werden sollen.

Folgende Rückgabewerte sind möglich:

ERROR

Das Warten wurde wegen eines Fehlers abgebrochen.

TIMEOUT

Die angegebene Anzahl Sekunden ist abgelaufen.

HANGUP

Die Verbindung wurde beendet. Das Skript sollte sich bei dieser Rückgabe beenden.

OK

Die angegebene Anzahl Sekunden ist abgelaufen.

Enthält die Rückgabe einen anderen Wert, handelt es sich um eine Touchtone-Sequenz, die während des Aufzeichnens erkannt wurde.

Beispiel:

set RC [ vbox_wait 120 ]

vbox_init_touchtones

Dieses Kommando löscht die interne Touchtone-Sequenz.

Normalerweise werden alle erkannten Touchtones an die interne Touchtone-Sequenz angehängt und auch bei einem Wechsel vom Abspiel- in den Aufnahmemodus nicht gelöscht. Gelöscht wird diese nur bei Eingabe von '*', da dieser Touchtone eine neue Sequenz einleitet.

Beispiel:

vbox_init_touchtones

vbox_pause <ms>

Wartet eine bestimmte Anzahl von Millisekunden.

ms

Anzahl der Millisekunden die gewartet werden soll.

Beispiel:

vbox_pause 1500

vbox_get_nr_new_messages <messagebox>

Ermittelt die Anzahl der neuen Nachrichten in einem Verzeichnis. Das Ergebnis wird als Rückgabewert gesetzt.

messagebox

Verzeichnis welches untersucht werden soll.

Beispiel:

set RC [ vbox_get_nr_new_messages /var/spool/vbox/michael/incoming ]

vbox_get_nr_all_messages <messagebox>

Ermittelt die Anzahl aller Nachrichten in einem Verzeichnis. Das Ergebnis wird als Rückgabewert gesetzt.

messagebox

Verzeichnis welches untersucht werden soll.

Beispiel:

set RC [ vbox_get_nr_all_messages /var/spool/vbox/michael/incoming ]

vbox_message_info <message> <fieldnr>

Gibt ein Feld aus dem Header einer Nachricht zurück. Das Ergebnis wird als Rückgabewert gesetzt. Bei einem Fehler enthält der Rückgabewert keine Daten.

message

Vollständiger Pfad und Name der Nachricht, deren Header abgefragt werden soll.

fieldnr

Nummer des Header-Feldes das abgefragt werden soll. Folgende Nummern können angegeben werden:

  • 1 - Erzeugungsdatum der Nachricht in Sekunden seit dem 1.1.1970,
  • 2 - Kompression der Nachricht,
  • 3 - Die CALLERID des Anrufers,
  • 4 - Der Name des Anrufers,
  • 5 - Die vollständige Telefonnummer des Anrufers,
  • 6 - Der Wohnort des Anrufers.

Beispiel:

set RC [ vbox_messages_info /var/spool/vbox/michael/incoming/00000865241883-00005143 1 ]


Next Previous Contents