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>
&lt/vxml>
 

3.In dieser Anwendung füllt der Benutzer ein "Formular" (durch ein Element
&lt;form&gt;<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>&lt;?xml version="1.0" encoding="iso-8859-1"?&gt;
&lt;vxml version="2.0" lang="de"&gt;
 &lt;form&gt;
  &lt;field name="city"&gt;
   &lt;prompt&gt;
     Wohin wollen Sie reisen?
   &lt;/prompt&gt;
   &lt;option&gt; Paris &lt;/option&gt; 
   &lt;option&gt; Prag &lt;/option&gt; 
   &lt;option&gt; Mallorca &lt;/option&gt; 
   &lt;option&gt; Antalya &lt;/option&gt; 
  &lt;/field&gt;
  &lt;field name="travellers"&gt;
   &lt;prompt&gt;
     Wieviele Personen reisen nach &lt;value expr="city"/&gt;?
   &lt;/prompt&gt;
  &lt;/field&gt;
  &lt;/block&gt;
 &lt;/form&gt; 
&lt/vxml&gt;
 </verbatim></pre></td></tr>
</table> 

---+++ 4. Beispiel für die Benutzung vom <verbatim>&lt;nomatch&gt;<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> &lt;field name="travellers" type="number"&gt;
   &lt;prompt count="1"&gt;
     Wieviele Personen reisen nach &lt;value expr="city"/&gt;?
   &lt;/prompt&gt;
  &lt;prompt count="2"&gt;
    Sie müssen die Anzahl der Reisenden nennen, wenn Sie
    einen Flug nach &lt;value expr="city"/&gt; buchen wollen.  
   &lt;/prompt&gt;
 &lt;nomatch&gt;
  &lt;prompt&gt;
     Bitte nennen Sie einfach eine Zahl.
   &lt;/prompt&gt; 
   &lt;reprompt/&gt;
 &lt;/nomatch&gt;
 &lt;/field&gt;
 </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> &lt;field name="travellers" type="number"&gt;
   &lt;prompt count="1"&gt;
     Wieviele Personen reisen nach &lt;value expr="city"/&gt; ?
   &lt;/prompt&gt;
   &lt;filled&gt;
     &lt;var name="num_travellers" expr="travellers+0"/&gt;
     &lt;if cond="num_travellers &gt; 12"&gt;
       &lt;prompt&gt;
          Verzeihen Sie, wir nehmen nur Gruppen von bis zu 12 Leuten an.
       &lt;/prompt&gt;
       &lt;clear namelist="travellers"/&gt;
     &lt:/if&gt;
    &lt;/filled&gt;
 &lt;/field&gt;
 </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> &lt;field name="city" &gt;
   &lt;prompt &gt;
    Welche Stadt?
   &lt;/prompt&gt;
   &lt;filled&gt;
     &lt;if cond="city$.confidence &lt; 0.3"&gt;
       &lt;prompt&gt;
          Verzeihung, ich habe das nicht genau verstanden.
       &lt;/prompt&gt;
       &lt;clear namelist="city"/&gt;
     &lt;elseif cond="city$confidence <0.7"/&gt;
      &lt;assign name="utterance" expr="city$.utterance"/&gt;
      &lt;goto nextitem="confirmcity"/&gt;    
     &lt/if&gt;
    &lt;/filled&gt;
 &lt;/field&gt;
&lt;subdialog name="confirmcity" src=#ynconfirm" cond="false"&gt;
  &lt;param name="user_input" expr="utterance"/&gt;
 &lt;filled&gt;
   &lt;if cond="confirmcity.result=='false'"&gt;
     &lt;clear namelist="city"/&gt;
   &lt;/if&gt;
 &lt;/filled&gt;
&lt;subdialog&gt;
 </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>&lt,form id="yconfirm"&gt;
  &lt;var name="user_input"/&gt;
  &lt;field name="yn" type="boolean"&gt;
    &lt;prompt&gt;
     Haben Sie &lt;value expr="user_input"/&gt; gesagt?
    &lt;/prompt&gt;
  &ltfilled&gt;
    &lt;var name="result" expr="'false'"/&gt;
    &lt;if cond="yn"&gt;
      &lt;assign name="result" expr=" 'true'"/&gt;
    &lt;if&gt;
    &lt;return namelist="result/&gt;
  &lt;/filled&gt;
 &lt;filled&gt;
&lt;/form&gt;


 </verbatim></pre></td></tr>
</table> 

</verbatim>
<nop>

 
This site is powered by FoswikiCopyright © by the contributing authors. All material on this collaboration platform is the property of the contributing authors.
Ideas, requests, problems regarding Foswiki? Send feedback