Bei den Standardsprachbausteinen gibt es eine Datei
marryme.gsm
, die den Text "Will you marry me? Press 1
for yes or 2 for no."
[] enthält. Um hiermit eine Heiratsantrags-IVR zu realisieren,
reicht folgender Dialplan:
[]exten => 30,1,Answer()
exten => 30,2,Background(marryme)
exten => 30,3,Hangup()
exten => 1,1,Playback(thank-you-cooperation)
exten => 1,2,Hangup()
exten => 2,1,Playback(sorry)
exten => 2,2,Hangup()
Wird die 30 angerufen, hebt Asterisk
ab und spielt das Soundfile
marryme.gsm
ab. Während
der Ansage kann der Benutzer jederzeit eine Eingabe machen. Diese Eingabe
wird als weitere Extension gewertet und abgerufen. Wer also die 1 drückt,
bekommt die Ansage "Thank you for your cooperation." abgespielt. Danach
legt Asterisk auf.
Unterschied zwischen 10 und
1000
Nehmen wir als Beispiel für die Problematik der gleich anfangenden
Extensions den folgenden Dialplan:
exten => 30,1,Answer()
exten => 30,2,Background(marryme)
exten => 30,3,Hangup()
exten => 1,1,Playback(thank-you-cooperation)
exten => 1,2,Hangup()
exten => 10,1,NoOp(Test mit 10)
exten => 10,2,Hangup()
exten => 100,1,NoOp(Test mit 100)
exten => 100,2,Hangup()
exten => 2,1,Playback(sorry)
exten => 2,2,Hangup()
Damit Asterisk zwischen den Eingaben 1, 10 und 100 unterschieden
kann, wartet
Background()
nach jeder Eingabe eine bestimmte
Zeit. Ist diese Zeit (
TIMEOUT
) abgelaufen, so
gilt die Eingabe als beendet.
Tipp
Mit
TIMEOUT
können noch andere Timeouts
definiert werden. Informationen dazu bekommen Sie im CLI mit der
Eingabe
show function TIMEOUT
. Weitere
Informationen zu
TIMEOUT
finden Sie bei
Abschnitt D.101, „TIMEOUT()
“.
Den
TIMEOUT
kann man in Sekunden angeben
und wie folgt im Dialplan setzen:
exten => 123,1,Set(TIMEOUT(digit)=3)
Asterisk wird beim obigen Dialplan bei der Eingabe der Ziffer 2
direkt und bei der Eingabe der Ziffer 1 erst nach dem Ende des
TIMEOUT
s reagieren. Es erkennt also selbstständig, wann
eine Eingabe bereits logisch gültig ist, und agiert
entsprechend.
Falscheingaben (die
i-Extension)
Eine Falscheingabe (also eine nicht im Dialplan definierte
Eingabe) kann mit der
i
-Extension (i wie
invalid) abgefangen werden. Ein einfaches Beispiel
würde folgendermaßen aussehen:
exten => 30,1,Answer()
exten => 30,2,Background(marryme)
exten => 30,3,Hangup()
exten => 1,1,Playback(thank-you-cooperation)
exten => 1,2,Hangup()
exten => 2,1,Playback(sorry)
exten => 2,2,Hangup()
; Bei allen anderen Eingaben wird diese
; i-Extension aufgerufen.
exten => i,1,Background(sorry)
exten => i,2,Hangup()
Die einfachste Möglichkeit, kurze Pausen für die Eingabe zu
realisieren, ist das Abspielen von Soundfiles ohne Inhalt. Im
Verzeichnis
/var/lib/asterisk/sounds/silence/
gibt
es 1 bis 9 Sekunden lange Dateien, die nur Stille abspielen. Soll in
unserem Heiratsantragsbeispiel noch 5 Sekunden auf eine Antwort gewartet
werden, so kann man das wie folgt erreichen:
exten => 30,1,Answer()
exten => 30,2,Background(marryme)
exten => 30,3,Background(silence/5)
exten => 30,4,Hangup()
exten => 1,1,Playback(thank-you-cooperation)
exten => 1,2,Hangup()
exten => 2,1,Playback(sorry)
exten => 2,2,Hangup()
exten => i,1,Background(marryme)
exten => i,2,Hangup()