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.
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.
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.
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.
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.
vbox_init_touchtones
vbox_pause <ms>
Wartet eine bestimmte Anzahl von Millisekunden.
ms
Anzahl der Millisekunden die gewartet werden soll.
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.
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.
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.
set RC [ vbox_messages_info /var/spool/vbox/michael/incoming/00000865241883-00005143 1 ]