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/


5.1. Upload von Sprachaufnahmen zum Webserver

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:

Für das Absenden der Aufnahmedaten werden im obigen Dokument zwei Kriterien definiert:

  1. 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.

  2. 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.