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_bindirEnthält das Verzeichnis, in welches die Programme installiert wurden,
die von normalen Benutzern ausgeführt werden dürfen ('/usr/local/vbox/bin').
vbox_var_savenameEnthä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_rectimeEnthält die Anzahl der Sekunden die maximal aufgezeichnet werden soll. Dieser Wert entspricht der Konfiguration des aktuellen Anrufers.
vbox_var_spooldirEnthält den Pfad zum Spoolverzeichnis des jeweiligen Benutzers
('/var/spool/vbox/<username>').
vbox_var_checknewEnthält den Pfad in dem nach neuen Nachrichten gesucht werden soll
('/var/spool/vbox/<username>/incoming').
vbox_msg_standardEnthält den Namen der Datei die als Ansage gespielt werden soll
('/var/spool/vbox/<username>/messages/standard.msg').
vbox_msg_beepEnthält den Namen der Datei die als Beep gespielt werden soll
('/var/spool/vbox/<username>/messages/beep.msg').
vbox_msg_timeoutEnthält den Namen der Datei die bei einem Timeout gespielt werden soll
('/var/spool/vbox/<username>/messages/timeout.msg').
vbox_caller_idEnthält die CALLERID des aktuellen Anrufers. Ist diese nicht
bekannt, wird 0 eingetragen.
vbox_caller_phoneEnthält die vollständige Telefonnummer des aktuellen Anrufers. Ist diese
nicht bekannt, wird "*** Unknown ***" eingetragen.
vbox_caller_nameEnthält den Namen des aktuellen Anrufers. Ist dieser nicht bekannt, wird
"*** Unknown ***" eingetragen.
vbox_user_nameEnthält den Namen des Benutzers, unter dessen Rechte der aktuelle vboxgetty läuft.
vbox_user_homeEnthält das Heimatverzeichnis des Benutzers, unter dessen Rechte der aktuelle vboxgetty läuft.
vbox_flag_standardEnthält TRUE wenn der Ansagetext gespielt werden soll, oder
FALSE wenn nicht. Der Wert entspricht der Konfiguration des aktuellen
Anrufers.
vbox_flag_beepEnthält TRUE wenn der Beep gespielt werden soll, oder
FALSE wenn nicht. Der Wert entspricht der Konfiguration des aktuellen
Anrufers.
vbox_flag_timeoutEnthält TRUE wenn die Timeout-Nachricht gespielt werden soll,
oder FALSE wenn nicht. Der Wert entspricht der Konfiguration des
aktuellen Benutzers.
vbox_flag_recordEnthä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.
messageVollständiger Name der Datei (inkl. Verzeichnis) die gespielt werden soll.
Folgende Rückgabewerte sind möglich:
ERRORDas Abspielen wurde wegen eines Fehlers abgebrochen.
HANGUPDie Verbindung wurde beendet. Das Skript sollte sich bei dieser Rückgabe beenden.
OKDie 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.
savenameVollständiger Name der Datei (inkl. Verzeichnis) unter der die Nachricht gespeichert werden soll.
timelimitMaximale Anzahl Sekunden die Aufgezeichnet werden soll.
Folgende Rückgabewerte sind möglich:
ERRORDas Aufzeichnen wurde wegen eines Fehlers abgebrochen.
TIMEOUT
Die maximale Aufzeichnungszeit wurde erreicht.
HANGUPDie Verbindung wurde beendet. Das Skript sollte sich bei dieser Rückgabe beenden.
OKDie 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.
secondsAnzahl der Sekunden die gewartet werden sollen.
Folgende Rückgabewerte sind möglich:
ERRORDas Warten wurde wegen eines Fehlers abgebrochen.
TIMEOUTDie angegebene Anzahl Sekunden ist abgelaufen.
HANGUPDie Verbindung wurde beendet. Das Skript sollte sich bei dieser Rückgabe beenden.
OKDie 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_touchtonesDieses 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.
msAnzahl 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.
messageboxVerzeichnis 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.
messageboxVerzeichnis 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.
messageVollständiger Pfad und Name der Nachricht, deren Header abgefragt werden soll.
fieldnrNummer 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 ]