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/ |
Die Durchführung der Aufnahme und das anschließende Hochladen auf einen entfernten Webserver kann mit folgendem Dokument realisiert werden:
Beispiel 18.4. aufnahme-1.vxml
<?xml version="1.0" encoding="UTF-8"?> <vxml version="2.0"> <form> <record name="aufnahme" beep="true"> <prompt>Bitte hinterlassen Sie Ihre Nachricht nach dem Piepton.</prompt> <filled> <submit next="aufnahme-2-vxml.php" enctype="multipart/form-data" method="post" namelist="aufnahme"/> </filled> <catch event="connection.disconnect.hangup"> <submit next="aufnahme-2-vxml.php" enctype="multipart/form-data" method="post" namelist="aufnahme"/> </catch> </record> </form> </vxml>
Das <record> Element ist wie das <field> Element ein Eingabeelement innerhalb eines <form> Elements. Die Angabe eines Namens ist hier notwendig, um die Aufnahme später zum Webserver abschicken zu können und um die empfangenen Daten dort weiter verarbeiten zu können. Darüber hinaus verdienen die folgenden optionalen Attribute Erwähnung:
beep (true/false): Wenn dieses Attribut auf "true" gesetzt wird, erzeugt der Voicebrowser einen kurzen Piepton bevor die Aufnahme beginnt.
maxtime: Die Aufnahme endet wenn der im maxtime-Attribut angegebene Zeitwert überschritten wurde. Zeitwerte müssen in VoiceXML prinzipiell immer mit der richtigen Maßeinheit angegeben werden, z.B. "60s" oder "600ms".
finalsilence: Hier kann man angeben nach wieviel Sekunden Stille die Aufnahme als beendet betrachtet werden soll. Hier gilt es einen vernünftigen Mittelwert zu finden. Zu kleine Werte beenden die Aufnahme vielleicht vorzeitig, weil der Anrufer nur mal Luft geholt oder kurz nachgedacht hat. Zu lange Werte spannen die Geduld des Anrufers unnötig auf die Probe, da er nach dem Ende seiner Ansprache keinen Fortschritt wahrnimmt. Die Voicebrowser haben normalerweise einen guten Mittelwert als Defaultwert fest voreingestellt, so dass man dieses Attribut nicht unbedingt setzen muss.[119]
Für das Absenden der Aufnahmedaten werden im obigen Dokument zwei Kriterien definiert:
Der Anrufer sagt nichts mehr oder drückt eine Taste seines Telefons. In diesem Fall kommt das <filled> Element zum Zug und sendet die aufgenommenen Sprachdaten zum im <submit> Element angegebenen PHP-Skript.
Der Anrufer legt nach seiner Ansprache auf. Auch in diesem Fall soll die Aufnahme nicht verloren gehen, sondern per <submit> zum Webserver übertragen werden. Man erreicht dies, indem man in einem <catch> Element das Event "connection.disconnect.hangup" fängt, welches die VoiceXML-Plattform aussendet, sobald sie das Auflegen des Anrufers erkannt hat.
Man sieht, dass die <submit> Anweisung für beide Fälle völlig identisch ist. Im next-Attribut wird das empfangende Skript angegeben. Die Sendemethode sollte bei Aufnahmen immer "post", der encoding type immer "multipart/form-data" lauten. Im namelist-Atttribut ist genau der Name einzutragen, der innerhalb des <record> Element im name-Attribut angegeben wurde.
[119] Der Anrufer kann die Aufnahme auch durch das Senden eines DTMF-Tones beenden, nur sollte man ihm dies vorher mitteilen.
© by Stefan Wintermeyer