Coverbild des Asterisk Buches von Stefan Wintermeyer

Letzte Woche => Endspurt!

Montag den 29.01.07 geht das Buch in die Produktion. Bis dahin laeuft der Beta-Test noch in vollem Umfang. Bitte melden Sie Fehler! Siehe Beta-Test FAQ.

Erscheinungstermin: 03.03.07. Das Buch wird auf dem Asterisk-Tag.org in Chemnitz vorgestellt und kann dort auch erworben werden. 10 Tage spaeter wird es im Buchhandel sein. Wer nicht in Chemnitz sein kann, sollte das Buch vorbestellen: Amazon oder direkt beim Verlag

Asterisk-Schulungen und Consulting vom Autor dieses Buches finden Sie auf http://www.amooma.de. Naechste Asterisk-Schulung: 12.02. - 13.02.07 (noch 2 Plaetze frei) - Ach ja, ... wir suchen auch noch Asterisk Entwickler! => http://www.amooma.de/jobs/


4. DTMF Eingabe

Ein wesentlicher Bestandteil von VoiceXML ist das Thema Spracherkennung und die Definition von Grammatiken. Eine Sprachanwendung wird natürlich erst dann interaktiv, wenn der Anrufer durch eigene Eingaben in den Ablauf eingreifen kann. Mit den bisher behandelten Funktionen ließe sich ja gerade einmal eine Ansagemaschine realisieren.

Da der Asterisk mit Bordmitteln jedoch keine Spracherkennung unterstützt , wollen wir auf dieses Thema nicht näher eingehen, sondern uns dem kleinen Bruder der Spracherkennung zuwenden: Der DTMF-Erkennung.

Ein DTMF-Signal wird erzeugt, wenn der Anrufer während eines Sprachdialogs eine Taste seines Telefons drückt. In den vorherigen Kapiteln zum Thema Dialplan haben wir gesehen, dass der Asterisk hervorragend mit DTMF-Eingaben während einer Verbindung umgehen kann. Schreiben wir ein rudimentäres Sprachportal der Apfelmus GmbH einmal in VoiceXML-Schreibweise:

Beispiel 18.3. dtmf.vxml

<?xml version="1.0" encoding="UTF-8"?>
<vxml version="2.0">
<form>
<block><prompt>Willkommen im Sprachportal der Apfelmus GmbH
<break time="300ms"/></prompt></block>
<block><prompt>Für eine Beschreibung unserer neuen Produkte drücken Sie bitte die eins.
  <break time="300ms"/></prompt></block>
<block><prompt>Für allgemeine Informationen über unsere Firma drücken Sie bitte die zwei.
  <break time="300ms"/></prompt></block>
<field><prompt timeout="10s"/><noinput><exit/></noinput></field>
</form>
<link next="products.vxml" dtmf="1"></link>
<link next="info.vvxml" dtmf="2"></link>
</vxml>


Die ersten Zeilen dieses Dokuments verstehen wir bereits. Nach den drei Ansageblöcken kommt aber jetzt ein <field> Element. Dieses Element signalisiert dem Voicebrowser, dass er jetzt auf eine Eingabe des Benutzers warten soll. Bei dem <noinput> Element handelt es sich um ein sogenanntes Event, das der Voicebrowser in bestimmten Situationen sendet. In unserem Fall sendet er es dann, wenn 10 Sekunden lang keine Eingabe erfolgte. Das <exit> Element überträgt die Kontrolle wieder an den Interpreter, was hier nichts anderes heisst, als dass die Verbindung beendet wird.

Nach dem bisher gesagten würde der Voicebrowser anhand dieses Dokuments 3 Ansagen spielen, 10 Sekunden warten und dann die Verbindung beenden. Wenn da nicht noch die <link> Elemente am Ende des Dokuments wären! Hier wird nämlich dem Voicebrowser mitgeteilt was er tun soll, wenn er im Verlauf der Verbindung das Drücken der Taste 1 bzw. 2 erkennt: Er soll in diesem Fall das aktuelle VoiceXML Dokument verlassen und ein neues VoiceXML Dokument laden und ausführen.

Erwähnenswert ist noch die Position der <link> Elemente im Dokument. Je nach dem wo diese Elemente positioniert sind, entscheidet der Voicebrowser ob die Erkennung eines DTMF-Tones berücksichtigt werden soll oder nicht. In unserem Beispiel stehen die Links im Kontext des gesamten Dokuments. Somit muss der Voicebrowser während der gesamten Verbindung ein Ohr darauf haben, ob der Anrufer eine der Tasten 1 bzw. 2 gedrückt hat.

Mit dem Hastenix Skript können Sie dieses Beispiel interaktiv testen, wenn Sie Ihren Dialplan erneut erweitern und danach die 4293 wählen:

;
; Hastenix Beispiel zur DTMF-Eingabe
;
exten => 4293,1,Answer
exten => 4293,2,AGI(hastenix.pl|http://hastenix.hawhaw.de/aaw/dtmf.vxml)
exten => 4293,3,Hangup