Verarbeitung von Sprachaufnahmen auf dem Webserver

Wir haben im letzten Kapitel gesehen, dass die Sprachaufnahme mit der HTTP-Post-Methode an ein Skript namens aufnahme-2-vxml.php gesendet wird. Dieses Vorgehen ist vergleichbar mit dem Hochladen einer Datei vom Webbrowser aus. In beiden Fällen muss der Webserver Aktionen einleiten, um die empfangenen Daten zu verarbeiten. Dies kann auf unterschiedlichste Arten geschehen, je nachdem, welche serverseitige Technologie zum Einsatz kommt. In unserem Beispiel verwenden wir ein kleines PHP-Skript:

Beispiel 20.5. aufnahme-2-vxml.php

<?php
  echo '<?xml version="1.0" encoding="UTF-8"?>';

  $filename = $_FILES['aufnahme']['name'];
  move_uploaded_file($_FILES['aufnahme']['tmp_name'],
                     "./aufnahmen/" . $filename);
?>

<vxml version="2.0">
<form>
<block><prompt>Ihre Nachricht war:<break time="300ms"/></prompt></block>
<block><prompt>
<audio src="./aufnahmen/<?php echo $filename; ?>"></audio>
<break time="300ms"/>
</prompt></block>
</form>
</vxml>


Das Beispielskript speichert die empfangene Sounddatei im Pfad aufnahmen ab. Alternativ könnte man die Aufnahme natürlich auch in einer Datenbank abspeichern oder als E-Mail versenden. Bei der obigen Variante sollte man allerdings darauf achten, dass der Webserver die erforderlichen Zugriffsrechte hat, um in das aufnahmen-Verzeichnis zu schreiben.

Damit der Anrufer seine aufgenommenen Worte hören kann, sendet der Webserver ein passendes VoiceXML-Dokument zurück. Der Aufbau dieses Dokuments mit dem <audio>-Element wurde schon im Kapitel "Abspielen von Sounddateien" behandelt.

Mit dem Hastenix-Skript können Sie dieses Beispiel interaktiv testen, indem Sie Ihren Dialplan einmal mehr erweitern und die 4294 wählen:

;
; Hastenix-Beispiel zur Sprachaufnahme
;
exten => 4294,1,Answer
exten => 4294,2,AGI(hastenix.pl|http://hastenix.hawhaw.de/aaw/aufnahme-1
.vxml)
exten => 4294,3,Hangup
[Anmerkung]

Bevor Sie während des Tests eventuell unüberlegte Äußerungen machen: Seien Sie sich bewusst, dass Ihre Worte auf den HAWHAW-Server übertragen und dort wie oben beschrieben abgespeichert werden!