Bei den Standardsprachbausteinen gibt es eine Datei
marryme.gsm
, die den Text "Will you marry me? Press 1
for yes or 2 for no."[59] enthält. Um hiermit eine Heiratsantrags-IVR zu realisieren,
reicht folgender Dialplan.[60]
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 jederzeit vom Benutzer eine Eingabe gemacht werden. 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.
Mit der Applikation Playback() (siehe
„Playback()
“) können Soundfiles nur
abgespielt werden, jegliche Eingabe während des Abspielens wird nicht
beachtet. Background() (siehe „Background()
“) hingegen spielt die Datei ab und
wartet während des Abspielens auf eine Eingabe. Diese wird dann als
Extension interpretiert, als wenn Sie im aktuellen Context auch so
gewählt worden wäre.
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.
Mit |
Den TIMEOUT
kann man in Sekunden angeben
und wie folgt im Dialplan setzen:
exten => 123,1,Set(TIMEOUT(digit)=3)
Eine Falscheingabe (also eine nicht im Dialplan definierte
Eingabe) kann mit der i
-Extension (i wie invalid)
abgefangen werden. Das einfache 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()