31.10.2012 Aufrufe

DIPLOMARBEIT

DIPLOMARBEIT

DIPLOMARBEIT

MEHR ANZEIGEN
WENIGER ANZEIGEN

Erfolgreiche ePaper selbst erstellen

Machen Sie aus Ihren PDF Publikationen ein blätterbares Flipbook mit unserer einzigartigen Google optimierten e-Paper Software.

3.5 Anpassung<br />

Ein Blick in den Quellcode zeigt, dass das Programm auf die Signalverarbeitungsroutinen des Asterisk<br />

Projektes 22 zurückgreift. Dabei handelt es sich um ein bekanntes Open‐Source‐Toolkit zum erstellen<br />

von Telefonanwendungen.<br />

Damit das Ergebnis an den Demonstrator übermittelt werden kann, wurde das Programm um die<br />

Fähigkeit erweitert, die erkannte Nummernfolge in einer Datei zu speichern.<br />

Bevor der Demonstrator DTMF2NUM verwenden kann, muss er mitgeteilt bekommen, wann denn<br />

das Programm aufgerufen werden soll. Dazu wird ein neues Element eingeführt, welches die<br />

DTMF‐Erkennung für das umgebende Element aktivieren soll. Wird das ‐Element beispielswei‐<br />

se innerhalb eines ‐Elements platziert, so sollen bei dieser Eingabe auch DTMF‐Töne akzeptiert<br />

werden.<br />

In der Klasse VxItem, die für alle Elemente zuständig ist, wird eine neue Variable erstellt, welche<br />

festhält, ob eine DTMF‐Erkennung für das aktuelle Element gewünscht ist:<br />

Damit der VoiceXML‐Parser das neue ‐Element auch verarbeiten kann, wird die Funktion<br />

startElement() der Klasse S1 um eine entsprechende Abfrage erweitert:<br />

Die Funktion recognize() der Klasse Recognizer, die das Aufzeichnen und Auswerten einer<br />

Äußerung veranlasst, wird nun um den Parameter dtmf erweitert. Der Funktionsaufruf in der Klasse<br />

VxField sieht nun folgendermaßen aus:<br />

Der Aufruf von DTMF2NUM kann jetzt in der Funktion recognize() direkt nach der Aufzeichnung<br />

einer Äußerung durchgeführt werden:<br />

22 URL: http://www.asterisk.org/<br />

82<br />

boolean dtmf = false;<br />

[…]<br />

else if ( matchesType( "dtmf", localname, qName ) ) {<br />

active.dtmf = true;<br />

} […]<br />

erkannt = recognizer.recognize(dtmf);<br />

if (dtmf) {<br />

String dtmfFile = saveWave.replaceAll( "wav$", "dtmf");<br />

String cmdline = "dtmf2num -f " + dtmfFile + " " + saveWave;<br />

Process p = Runtime.getRuntime().exec(cmdline);<br />

p.waitFor();<br />

}<br />

FileReader reader = new FileReader(dtmfFile);<br />

int result = reader.read();<br />

reader.close();<br />

if (result != -1) return "dtmf_" + (char)result;

Hurra! Ihre Datei wurde hochgeladen und ist bereit für die Veröffentlichung.

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!