Beispieldialoge und deren Umsetzung in VoiceXML
Die folgende Beispiele basiern sich auf die Übersetzung von VoiceXML Spezifikation von
W3C von Dave Ragett. Das gesamte Material findet sich an
http://meiert.com/de/w3/Voice/Guide/.
1. Abspielen einer Audio Datei
Dialog | VoiceXML-Kode |
Willkommen beim Reiseplaner | <?xml version="1.0" encoding="iso-8859-1"?>
<form>
<block>
<prompt bargein="false"> Willkommen beim Reiseplaner!
<audio src= "..." />
</prompt>
</block>
</form>
</vxml>
|
2. Menu mit drei Optionen: Sport, Wetter oder Nachrichten
Dialog | VoiceXML-Kode |
Computer:Bitte wählen Sie aus:Sport; Wetter; Nachrichten.
Mensch: Astrologie
Computer: Ich habe sie nicht verstanden. ( Eine platformspezifische Meldung )
Computer: Bitte wählen Sie aus:Sport; Wetter; Nachrichten.
Mensch: Sport
Computer: startet daen Dialog unter "http://sports.example.com/start.vxml"
|
<?xml version="1.0" encoding="iso-8859-1"?>
<vxml version="2.0" lang="de">
<menu>
<promt>
Bitte wählen Sie aus: <enumerate/>
</prompt>
<choice next="http://sports.example.com/start.vxml">
Sport
</choice>
<choice next="http://sports.example.com/intro.vxml">
Wetter
</choice>
<choice next="http://sports.example.com/news.vxml">
Nachrichten
</choice>
<noinput>
Bitte wählen Sie einThema aus: <enumerate/>
</noinput>
</menu>
</vxml>
|
3.In dieser Anwendung füllt der Benutzer ein "Formular" (durch ein Element <form><verbatim>) aus. Hier kann man die Benutzung einer Variable sehen.
<table border="1" cellpadding="1">
<tr>
<td> *Dialog* </td> <td> *<nop>VoiceXML-Kode* </td></tr>
<tr>
<td>
*Computer*: Wohin wollen Sie reisen?
*Computer*: Paris Prag Mallorca Antalya
*Mensch*: Prag
*Computer*: Wieviele Personen reisen nach Prag
*Mensch*: Zwei
*Computer* <i> Schickt an "http://localhost/handler" *Prag* und *Zwei*</i>
</td>
<td> <pre><verbatim><?xml version="1.0" encoding="iso-8859-1"?>
<vxml version="2.0" lang="de">
<form>
<field name="city">
<prompt>
Wohin wollen Sie reisen?
</prompt>
<option> Paris </option>
<option> Prag </option>
<option> Mallorca </option>
<option> Antalya </option>
</field>
<field name="travellers">
<prompt>
Wieviele Personen reisen nach <value expr="city"/>?
</prompt>
</field>
</block>
</form>
</vxml>
</verbatim></pre></td></tr>
</table>
---+++ 4. Beispiel für die Benutzung vom <verbatim><nomatch><verbatim> Element sowie Varianten von prompts. Hier wird das Element benutzt, um den Benutzer zu warnen, dass er etwas anderes als einen Nummer eingegeben hat.
<table border="1" cellpadding="1">
<tr>
<td> *Dialog* </td> <td> *<nop>VoiceXML-Kode* </td></tr>
<tr>
<td>
*Computer*: Wieviele Personen reisen nach Prag?
*Mensch*: Also ich mit meiner Frau und zwei Kinder
*Computer*: Bitte nennen mir die Anzahl der Reisenden
*Mensch*: Ich , meine Frau und die Kinder
*Computer*: Sie müssen die Anzahl der Reisenden nennen, wenn Sie einen Flug nach
Prag buchen wollen.
*Mensch*: Das habe ich gemacht
*Computer*:Bitte nennen Sie einfach eine Zahl.
*Computer*: Wieviele Personen reisen nach Prag?
*Mensch*: vier.
</td>
<td> <pre><verbatim> <field name="travellers" type="number">
<prompt count="1">
Wieviele Personen reisen nach <value expr="city"/>?
</prompt>
<prompt count="2">
Sie müssen die Anzahl der Reisenden nennen, wenn Sie
einen Flug nach <value expr="city"/> buchen wollen.
</prompt>
<nomatch>
<prompt>
Bitte nennen Sie einfach eine Zahl.
</prompt>
<reprompt/>
</nomatch>
</field>
</verbatim></pre></td></tr>
</table>
---+++5. Beispiel für die Überprüfung des eingegebenen Wertes in ein Feld. Man sieht, wie einfache Operationen mit Nummern funktionieren.
<table border="1" cellpadding="1">
<tr>
<td> *Dialog* </td> <td> *<nop>VoiceXML-Kode* </td></tr>
<tr>
<td>
*Computer: Wieviele Personen reisen nach Prag?
*Mensch*: Zwanzig
*Computer*: Verzeihen Sie, wir nehmen nur Gruppen von bis zu 12 Leuten an
</td>
<td> <pre><verbatim> <field name="travellers" type="number">
<prompt count="1">
Wieviele Personen reisen nach <value expr="city"/> ?
</prompt>
<filled>
<var name="num_travellers" expr="travellers+0"/>
<if cond="num_travellers > 12">
<prompt>
Verzeihen Sie, wir nehmen nur Gruppen von bis zu 12 Leuten an.
</prompt>
<clear namelist="travellers"/>
<:/if>
</filled>
</field>
</verbatim></pre></td></tr>
</table>
---+++Beispiel für die Überprüfung der Genauigkeit der Eingabe. Gleichzeitig sieht man hier, wie ein Subdialog eingebaut sein kann.
<table border="1" cellpadding="1">
<tr>
<td> *Dialog* </td> <td> *<nop>VoiceXML-Kode* </td></tr>
<tr><td>
*Computer*: Welche Stadt?
*Mensch*: Prague
*Computer*: Verzeihung, ich habe das nicht genau verstanden
*Mensch*: Prag
*Computer*: <i>Der Name wird erkannt und der Dialog fortgesetzt </i>
</td>
<td> <pre><verbatim> <field name="city" >
<prompt >
Welche Stadt?
</prompt>
<filled>
<if cond="city$.confidence < 0.3">
<prompt>
Verzeihung, ich habe das nicht genau verstanden.
</prompt>
<clear namelist="city"/>
<elseif cond="city$confidence <0.7"/>
<assign name="utterance" expr="city$.utterance"/>
<goto nextitem="confirmcity"/>
</if>
</filled>
</field>
<subdialog name="confirmcity" src=#ynconfirm" cond="false">
<param name="user_input" expr="utterance"/>
<filled>
<if cond="confirmcity.result=='false'">
<clear namelist="city"/>
</if>
</filled>
<subdialog>
</verbatim></pre></td></tr>
</table>
---+++Beispiel für eine Subdialog (immer gut für sich wiederhole Dialoge). Hier ein Beispiel mit einem Bestätigungssubdialog.
<table border="1" cellpadding="1">
<tr>
<td> *Dialog* </td> <td> *<nop>VoiceXML-Kode* </td></tr>
<tr><td>
*Computer*: Haben Sie Paris gesagt ?
*Mensch*: Nein.
*Computer* : <i> Reprompt Hauptdialog</i> Welche Stadt ?
*Mensch*: Prag
*Computer*: Haben sie Prag gesagt?
*Mensch*: Ja
*Computer*: <i>Setzt den Hauptdialog fort </i>
</td>
<td> <pre><verbatim><,form id="yconfirm">
<var name="user_input"/>
<field name="yn" type="boolean">
<prompt>
Haben Sie <value expr="user_input"/> gesagt?
</prompt>
<filled>
<var name="result" expr="'false'"/>
<if cond="yn">
<assign name="result" expr=" 'true'"/>
<if>
<return namelist="result/>
</filled>
<filled>
</form>
</verbatim></pre></td></tr>
</table>
</verbatim>
<nop>