FU Berlin

<xmlcity:berlin>

Bundesministerium für Bildung und Forschung

Wachstumskerne

   
   
 

> Über das XML Clearinghouse
> Ansprechpartner
 

XML in Berlin und Brandenburg
> Firmen
> Forschungsvorhaben
> Lehrveranstaltungen
> Stellenangebote
 

Veranstaltungen des XML Clearinghouses
> XML Kolloquium
> Workshops
> Konferenzen
> Infotage
 

XML im deutsch-sprachigen Raum
> XML Veranstaltungen
> Standards und Entwicklungen
> Fördermöglichkeiten
> XML Reports
 

XML News
> Deutschsprachig
> Englischsprachig
> Semantic Web
> E-Business
> News einstellen
 

Online-Zertifikate
> XML-Grundlagen
> Electronic Business
> Semantic Web
 

Testlabor
> Ontology Reviewing System
 
 
 

Voice Extensible Markup Language (VoiceXML)

Status: W3C Candidate Recommendation vom 20.02.2003
Version: 2.0
Homepage: http://www.voicexml.org
Verfasser: W3C

VoiceXML ist eine XML-Sprache, die vom VoiceXML-Forum entwickelt und gepflegt wird. Das Forum wurde von IBM, Motorola, AT&T und Lucent Technologies mit dem Ziel gegründet , einen Standard für den Zugriff auf Netz-Dienste über das Telefon zu etablieren [Wireless2000a]

Die Version 2.0 der VoiceXML-Spezifikation ist seit dem 20. Februar 2003 öffentlich verfügbar

VoiceXML wurde entwickelt, um auf einfache Weise sprachbasierte Applikationen entwickeln zu können. Sprachbasierte Applikationen machen hauptsächlich auf Geräten Sinn, die nur ein sehr kleines (oder überhaupt kein) Display haben und die oft nur über eine numerische Tastatur verfügen, wie z.B. Mobiltelefone. Dazu kommt noch begrenzter Speicher und begrenzte Rechenleistung. Mit VoiceXML ist es nun möglich, sprachgesteuerte Applikationen zu entwickeln, die alle VoiceXML-fähigen Geräte ausführen können.

VoiceXML-Dokumente bestehen zunächst aus einer Anzahl von Dialogen (<form> oder <menu>). Diese Dialog-Elemente beschreiben den Ablauf von Interaktionen mit dem Benutzer und sind demnach als Applikation anzusehen. Das menu-Element ist eine spezielle Form des <form>- Elementes. Es ist nützlich, um dem Benutzer eine Auswahl von Möglichkeiten zu geben und entsprechend der Auswahl weiter im Programm zu verzweigen (oder ein neues VoiceXML-Dokument zu laden).
Ein <form>-Element ist etwas komplexer. Es kann beinhalten:

  • Feld-Elemente (<field>) und Kontroll-Elemente (<control>),
  • Variablendeklarationen
  • Event-Handler
  • Blöcke mit prozeduraler Logik

Folgendes Beispiel zeigt den Aufbau einer einfachen Applikation:

Aufbau einer einfachen VoiceXML Applikation
<form id="weather_info">
      <block>Welcome to the weather information service.</block>
      <field name="state">
              <prompt>What state?</prompt>
              <grammar src="state.gram" type="application/x-jsgf"/>
              <catch event="help">
                      Please speak the state for which you want the weather.
              </catch>
       </field>
       <field name="city">
               <prompt>What city?</prompt>
               <grammar src="city.gram" type="application/x-jsgf"/>
               <catch event="help">
                      Please speak the city for which you want the weather.
               </catch>
       </field>
       <block>
              <submit next="/servlet/weather" namelist="city state"/>
       </block>
 </form>

Ein denkbares Szenario wäre dann:

C (computer): Welcome to the weather information service. What state?
H (human): Help
C: Please speak the state for which you want the weather.
H: Georgia
C: What city?
H: Tblisi
C: I did not understand what you said. What city?
H: Macon
C: The conditions in Macon Georgia are sunny and clear at 11 AM ...

Die <field>-Elemente stehen also für die einzelnen Dialogschritte. Mit dem <prompt>-Element wird eine Sprachausgabe generiert. Das <grammar>-Element inkludiert eine Grammatik. Diese Grammatik beschreibt lediglich, welche Spracheingaben erwartet werden. In city.gram z.B. sind alle Städte aufgelistet, die von der Applikation erkannt werden. Die Applikation wird beendet, wenn ein gültiger Staat und eine gültige Stadt eingegeben wurden. Dann wird der Inhalt des <block>-Elements ausgeführt. In diesem Beispiel werden die eingegebenen Daten an einen Server geschickt (der hoffentlich eine Antwort zurückliefert). Interessant sind hier noch die Event-Handler. Mit <catch event="help"> wird ein Hilfstext ausgegeben, wenn der Benutzer das Wort "help" ausspricht.

Richtig interessant sind bei VoiceXML Blöcke mit prozeduraler Logik. Folgendes Beispiel führt eine Validierung von Monatseingaben durch:

Verhaltensbeschreibung mit VoiceXML
<filled>
        <!-- validate the mmyy -->
        <var name="mm"/>
        <var name="i" expr="expiry_date.length"/>
        <if cond="i == 3">
                  <assign name="mm" expr="expiry_date.substring(0,1)"/>
         <elseif cond="i == 4"/>
                  <assign name="mm" expr="expiry_date.substring(0,2)"/>
         </if>
         <if cond="mm == " || mm < 1 || mm > 12">
                  <clear namelist="expiry_date"/>
                  <throw event="nomatch"/>
         </if>
</filled>

Dieser Ausschnitt definiert zunächst die Variablen mm und i. Der Variablen i wird als Wert die Länge des eingegebenen Datums (Form: 1-2-0-1 für Dezember 2001) zugewiesen. Das Jahr muß zweistellig eingegeben werden, der Monat kann ein- oder zweistellig eingegeben werden (0-1 oder 1 für Januar). Abhängig vom Wert der Variablen i wird nun der Monats-Substring extrahiert und in der Variablen mm abgespeichert. Jetzt wird nur noch nachgeprüft, ob sich mm im Bereich [1..12] befindet. Ist das nicht der Fall, wird ein passender Event generiert (der dann eine entsprechende Fehlermeldung anzeigt).

Solche Logik-Blöcke werden vom VoiceXML-Interpreter über einen ECMA Script-Interpreter ausgeführt, d.h. es ist kein Compilieren notwendig.


 
         
       
 
  Seite zuletzt geändert am: 11-Apr-2006 11:11:43
Webadmin: wwwadmin@xml-Clearinghouse.de
© XML Clearinghouse   Impressum
Haftungsausschluss