VXML “in einer Nußschale” Referat im Rahmen des Seminars Dialogsysteme mit VXML SS2001 Universität Stuttgart, IMS Joachim Vollrath
Ziele Einstieg in VXML Überblick über die Technologie Wichtigste "Tags"
VXML "in einer Nußschale” Kurzübersicht XML Einführung in VXML VXML Grundelemente VXML Formular-Elemente Ausführbare Inhalte Komplexeres Beispiel
Kurzübersicht XML Beispiel Bedeutung von XML Sinn und Zweck von XML
VXML - ein Beispiel <? xml version="1.0" ?> <mitarbeiter> <name>Meier</name> <vorname>Heinz</vorname> <gebdatum> <jahr>1938</jahr> <monat>10</monat> <tag>29</tag> </gebdatum> <!-- usw, usf --> </mitarbeiter>
Was ist XML? XML = eXtensible Markup Language XML = "SGML fürs Web" Zitat: "XML wurde entwickelt um ein für alle Mal die von Microsoft und Netscape propagierten Tag-Suppenkriege zu beenden." (comp.infosystems.www.authoring.html) Entwicklung seit 1996, 1998 W3C-Standard
Warum XML? Universelle Metasprache um strukturierte hierarchische Information abzubilden Daten + Meta-Daten Von Mensch und Maschine zu verarbeiten Kostenlos, plattformunabhängig, breite Unterstützung (zumindest in der Theorie)
Einführung in VXML Beispiel Bedeutung von VXML Sinn und Zweck von VXML
VXML - ein Beispiel <? xml version=" 1. 0"?> <vxml version=" 1. 0"> <form> <block><prompt>Hello, World!</prompt></block> <field name="greeting"> <prompt> What say you? </prompt> <grammar> hello | howdy | greetings | hey | password </grammar> <help> Say hello, howdy, greetings, hey, or password </help> <filled> You said <value expr="greeting"/> </filled> </field> </form> </vxml>
Was ist VXML? VXML = Voice eXtensible Markup Language Sprach-basierte Telefonieanwendungen Seit 1999 durch das VXML-Forum entwickelt VXML-Forum = Zusammenschluß von AT&T, IBM, Lucent und Motorola
Warum VXML? Modellierung sprachgesteuerter Dialogsysteme Beschreibung Mensch-Maschine-Schnittstelle Integration in bestehende Internet-Infrastruktur Einfaches Erstellen komplexer Applikationen
Grundlegende Konzepte Design-Prinzipien von VXML VXML-Dokumente und -Applikationen VXML Architekturmodell Technologische Einbettung
Design-Prinzipien Abstraktion Applikation Plattform-Details Modularität Unterstützung vieler Ein- und Ausgabeformate Vernetzung von Inhalten mittels URIs Auslagerung komplexer Berechnungen, Datenabfragen, etc.
Dokumente & Applikationen root D2 D1
Implementation Plattform Architekturmodell Document Server Implementation Plattform VXML Interpreter Context VXML Interpreter
Technologische Einbettung
VXML Grundelemente Formulare Menüs Links Variablen und Ausdrücke Grammatiken Ereignisse Ausgaben
Formular Schlüsselelement in VXML-Dokumenten Beherbergt Formular- und Kontrollelemente (ähnlich zu HTML) Interpretation durch FIA Directed & Mixed Initiative Form <form> <block><prompt>Hi, I am a form.</prompt></block> <!-- I can do more, but that's still to come --> </form>
Menü Erfragt Auswahl des Benutzers Leitet entsprechend der Auswahl weiter <menu> <prompt>coffe, tea or milk?</prompt> <choice dtmf="1" next="coffe.vxml"> coffee </choice> <choice dtmf="2" next="tea.vxml"> tea </choice> <choice dtmf="3" next="milk.vxml"> milk </choice> </menu>
Link Enthält eine oder mehrere Grammatiken Leitet weiter oder löst Ereignis aus, falls Grammatik mit Eingabe übereinstimmt <link next="books/main.vxml"> <grammar type="application/x-sjgf"> books | Voice XML books </grammar> <dtmf> 2 </dtmf> </link>
Variablen und Ausdrücke Deklaration wie in Programmiersprachen <var name="pi" expr="3.14159"/> Referenzierung über ECMAScript-Sprache <if cond="city == 'LA'"> </if> <assign name="mm" expr="expiry_date.substring(0,1)"/>
Grammatiken Menge von legalen Äußerungen Inline: Extern: <grammar> visa {visa} | master [card] {mastercard} | amex {amex} | american [express] {amex} </grammar> Extern: <grammar src="URI" type="mime-type"/>
Ereignisse Auslösen: Abfangen: Verschiedene Ereignisse vordefiniert <throw event="nomatch"/> Abfangen: <catch event="nomatch noinput" count="3"> <prompt>Security violation!</prompt> <throw event="telephone.disconnect.hangup"> </catch> Verschiedene Ereignisse vordefiniert
Ausgaben Ausgabe synthetisierter Sprache und Audio Auszeichnung der Sprache Ausgabe gespeicherter Werte <prompt> <audio src="tada.wav"/> <emp>Hello</emp>, <value expr="caller">.<break> It has been <value expr="lastlogin"/> since your last call. </prompt>
VXML Formular-Elemente Felder Filled Subdialoge
Field Speichert Benutzereingabe Kann Grammatiken und Reaktionen enthalten <field name="lo_fat_meal" type="boolean"> <prompt>Do you want a low fat meal on this flight?</prompt> <help>Low fat is the opposite of high fat.</help> <filled> <prompt> I heard <emp><value expr="lo_fat_meal"/></emp>. </prompt> </filled> </field>
Filled Ausführen von Aktionen nach dem "Ausfüllen" von Feldern <form id="get_city"> <field name="city"> <grammar src="served_cities.gram"/> <prompt>What is the city?</prompt> <filled> <if cond="city == 'Novosibirsk'"> <prompt>A wise choice indeed, Sir.</prompt> </if> </filled> </field> </form>
Subdialog Aufruf eines neuen VXML-Dialogs (Dokument) Vergleichbar mit Funktionsaufruf <form> <subdialog name="result" src="#getdriverslicense"> <param name="birthday" expr="'2000-02-10'"/> </subdialog> </form> <form id="getdriverslicense"> <var name="birthday"/> <field name="drivelicense"> <filled> <grammar src="drivegrammar.gram" type="application/x-jsgf"/> <return namelist="drivelicense status"/> </filled> </field>
Ausführbare Inhalte Var, Assign, Clear If, ElseIf, Else Submit, Return Exit
Var, Assign, Clear Deklaration Wertzuweisung Löschen <var name=pi expr="3.0"/> Wertzuweisung <assign name="pi" expr="3.14159"/> Löschen <clear namelist="pi"/>
If, ElseIf, Else Bedingte Ausführung analog zu bekannten Programmiersprachen <if cond="city == 'LA'"> <assign name="city" expr=" 'Los Angeles'"/> <elseif cond="city == 'Big Apple'"/> <assign name="city" expr=" 'New York'"/> <else/> <assign name="city" expr="'Oberalfingen'"/> </if>
Submit, Return Weiterleitung auf andere Dokumente mit Parameterübergabe <submit next="http://www.consors.de/order.asp" namelist="WKN Stueckzahl"/> Rückgabe von Werten an aufrufendes Dokument <return namelist="foo bar"/>
Komplexeres Beispiel Siehe Handout