Dialogov´e syst´emy Ludˇek B´artek
VoiceXML Z´apis dialog˚u pomoc´ı
VoiceXML
Dialogov´ e syst´ emy
Ludˇek B´artek
Laboratoˇr vyhled´av´an´ı a dialogu, Fakulta Informatiky Masarykovy Univerzity, Brno
jaro 2012
Dialogov´e syst´emy Ludˇek B´artek
VoiceXML Z´apis dialog˚u pomoc´ı VoiceXML
VoiceXML
Z´akladn´ı informace
Jazyk pro popis dialogov´ych rozhran´ı.
Souˇc´ast standard˚u W3C Voice Browser Activity.
C´ıl:
pˇrin´est v´yhody webov´eho v´yvoje a doruˇcov´an´ı obsahu do interaktivn´ıch hlasov´ych aplikac´ı.
Historie:
1995 – zapoˇcat v´yvoj znaˇckovac´ıho jazyka AT&T Phone Markup Language.
1998 – konference poˇr´adan´a W3C na t´ema hlasov´eho proch´azen´ı webu:
pˇredvedeny jazyky PML, VoxML, SpeechML, TalkML, VoiceHTML, . . .
Dialogov´e syst´emy Ludˇek B´artek
VoiceXML Z´apis dialog˚u pomoc´ı VoiceXML
VoiceXML
Z´akladn´ı informace
Historie (pokraˇcov´an´ı):
1999 – zaloˇzeno VoiceXML Forum – c´ılem je spojen´ı sil pˇri v´yvoji jazyka pro znaˇckov´an´ı dialog˚u.
2000:
vyd´ana specifikace VoiceXML 1.0
specifikace VoiceXML 1.0 pˇrijata jako standard W3C.
Aktu´aln´ı stav:
doporuˇcen´ı – VoiceXML 2.1. (ˇcerven 2007) draft – VoiceXML 3.0 (srpen 2010)
Dialogov´e syst´emy Ludˇek B´artek
VoiceXML Z´apis dialog˚u pomoc´ı VoiceXML
VoiceXML
Model komunikace
Dialogov´e syst´emy Ludˇek B´artek
VoiceXML Z´apis dialog˚u pomoc´ı VoiceXML
VoiceXML
Struktura aplikac´ı
VoiceXML dokument(y):
Skl´adaj´ı se z formul´aˇr˚u.
Uˇzivatel se v dan´em okamˇziku nach´az´ı v jednom z konverzaˇcn´ıch stav˚u.
Pˇrechody mezi stavy definov´any pomoc´ı URI – odkazuj´ı na dalˇs´ı krok dialogu.
Dialog konˇc´ı, pokud tento pˇrechod nen´ı definov´an.
VoiceXML definuje dva druhy dialog˚u:
Formul´aˇre – definuje proces nutn´y pro z´ısk´an´ı hodnot sady poloˇzek.
Menu – poskytuje uˇzivateli sadu moˇznost´ı a odkaz˚u na pokraˇcov´an´ı dialogu.
Dialogov´e syst´emy Ludˇek B´artek
VoiceXML Z´apis dialog˚u pomoc´ı VoiceXML
VoiceXML
Struktura aplikac´ı – pokraˇcov´an´ı
Subdialogy:
Obdoba funkc´ı v procedur´aln´ım programu.
Slouˇz´ı k opˇetovn´emu prov´adˇen´ı jist´e ˇc´asti dialogu (napˇr.
zjiˇstˇen´ı e-mailov´e adresy).
Realizov´any jako formul´aˇre, kter´ym mohou b´yt pˇred´any parametry, a kter´e mohou vrace hodnotu (viz d´ale).
Sezen´ı:
Zaˇc´ın´a v okamˇziku zah´ajen´ı komunikace s VoiceXML interpretrem.
Konˇc´ı:
na pˇr´an´ı uˇzivatele (napˇr. ukonˇcen´ı spojen´ı, ˇz´adost o ukonˇcen´ı interpretace, . . . )
VoiceXML dokumentem – nen´ı definov´an dalˇs´ı pˇrechod, pˇred´an´ı dat k dalˇs´ımu zpracov´an´ı, . . .
Aplikace – sada dokument˚u, kter´e sd´ılej´ı koˇrenov´y dokument.
Dialogov´e syst´emy Ludˇek B´artek
VoiceXML Z´apis dialog˚u pomoc´ı VoiceXML
VoiceXML
voicexml – koˇrenov´y element kaˇzd´eho dokument.
Mus´ı obsahovat atributy:
version – pouˇzit´a verze standardu VoiceXML aktu´aln´ı 2.1
hodnota z´avis´ı na pouˇzit´e platformˇe – OptimTalk 1.9 – 2.1, JVoiceXML – zat´ım ne´upln´a podpora verze 2.1, VoiceGlue – podpora 2.0 + nˇekter´e moˇznosti z 2.1, . . . xmlns – deklarace implicitn´ıho jmenn´eho prostoru.
Hodnota mus´ı b´yt http://www.w3.org/2001/vxml.
xml:lang – hodnotou je k´od jazyka, pro kter´y je dialogov´e rozhran´ı navrˇzeno.
Element obsahuje:
jeden nebo v´ıce element˚u form, element menu,
. . .
Dialogov´e syst´emy Ludˇek B´artek
VoiceXML Z´apis dialog˚u pomoc´ı VoiceXML
Formul´ aˇr
Jeden ze z´akladn´ıch element˚u VoiceXML dokument˚u.
Ohraniˇcen znaˇckami < form > a < /form >.
Obsahuje:
sadu vstupn´ıch pol´ı
deklarace promˇenn´ych dan´eho formul´aˇre – element var definice gramatik platn´ych v dan´em formul´aˇri
bloky v´ykonn´eho k´odu:
. . . Atributy:
id – povinn´y atribut:
slouˇz´ı jako n´azev dan´eho formul´aˇre
jeho hodnota mus´ı b´yt unik´atn´ı v dan´em dokumentu lze pouˇz´ıt k pˇred´av´an´ı ˇr´ızen´ı do dan´eho formul´aˇre.
Dialogov´e syst´emy Ludˇek B´artek
VoiceXML Z´apis dialog˚u pomoc´ı VoiceXML
Formul´ aˇr
Algoritmus interpretace formul´aˇr˚u
Formul´aˇre jsou interpretov´any implicitn´ım algoritmem pro interpretaci formul´aˇr˚u (Form Interpretation Algorithn, FIA):
1 Pˇrehraj vˇsechny v´yzvy, kter´e jsou potomky tohoto elementu form.
2 Dokud existuje vstupn´ı pole formul´aˇre s nedefinovanou hodnotou:
1 Vyber 1. vhodn´y nezadan´y vstup.
2 Pˇrehraj vˇsechny v´yzvy, kter´e se v´aˇz´ı k dan´emu poli.
3 Z´ıskej hodnotu vstupu dan´eho vstupn´ıho pole nebo zpracuj vyvolanou ud´alost (help, nomatch, . . . ) 4 Zpracuj ˇc´ast filled dan´eho vstupn´ıho pole.
Dialogov´e syst´emy Ludˇek B´artek
VoiceXML Z´apis dialog˚u pomoc´ı VoiceXML
Formul´ aˇr
FIA – pokraˇcov´an´ı
FIA m˚uˇze d´ale skonˇcit pokud:
pokud se m´a prov´est pˇresmˇerov´an´ı hovoru (napˇr. element goto)
pokud m´a doj´ıt k pˇred´an´ı dat dokumentov´emu serveru (element submit)
pokud je explicitnˇe poˇzadov´ano ukonˇcen´ı (element exit).
Dialogov´e syst´emy Ludˇek B´artek
VoiceXML Z´apis dialog˚u pomoc´ı VoiceXML
Formul´ aˇr
Uk´azka
<vxml version="2.0"
xmlns="http://www.w3.org/2001/vxml"
xml:lang="en-US">
<form id="hello">
<prompt>
Hello world!
This is our first VoiceXML form.
</prompt>
</form>
</vxml>
Dialogov´e syst´emy Ludˇek B´artek
VoiceXML Z´apis dialog˚u pomoc´ı VoiceXML
Formul´ aˇr
Moˇzn´y obsah
Vstupn´ı pole - odpov´ıdaj´ı r˚uzn´ym moˇznostem zad´an´ı vstupn´ıch poloˇzek formul´aˇre:
field – vstup od uˇzivatele, moˇznost zad´an´ı hlasem nebo pomoc´ı DTMF.
record – slouˇz´ı k nahr´an´ı zpr´avy od uˇzivatele.
subdialog – slouˇz´ı k vyvol´an´ı dialogu ˇreˇs´ıc´ıho d´ılˇc´ı probl´em, napˇr. zad´an´ı adresy, . . .
R´ıd´ıc´ı poloˇˇ zky:
block – pˇr´ıkazov´y blok, lze vyuˇz´ıt napˇr. k r˚uzn´ym
v´ystup˚um pro uˇzivatele, vyhodnocov´an´ı vstupn´ıch dat, . . . initial – inici´aln´ı ˇc´ast formul´aˇre. Vyuˇz´ıv´a se hlavnˇe v dialogov´ych rozhran´ıch se sm´ıˇsenou strategi´ı.
transfer – pˇresmˇerov´an´ı uˇzivatele na novou lokaci (aplikaci, telefonn´ıho oper´atora, . . . )
object – slouˇz´ı ke zpˇr´ıstupnˇen´ı funkcionality, kter´a m˚uˇze b´yt z´avisl´a na platformˇe (dll, JSP+ servlet, . . . )
Dialogov´e syst´emy Ludˇek B´artek
VoiceXML Z´apis dialog˚u pomoc´ı VoiceXML
Formul´ aˇr
Vstupn´ı pole a ˇr´ıd´ıc´ı struktury – uk´azka uˇzit´ı
<vxml version="2.0" xmlns="http://www.w3.org/2001/vxml"
xml:lang="cs-CZ">
<form id="hello">
<block name="hello">
<prompt>Welcome to the VoiceXML!.</prompt>
</block>
<field name="greating">
<prompt>Hello.</prompt>
<grammar src="greatings.grxml"/>
<noinput>
<prompt>Tell mi something nice, like hello, hi, good day.</prompt>
</noinput>
Dialogov´e syst´emy Ludˇek B´artek
VoiceXML Z´apis dialog˚u pomoc´ı VoiceXML
Formul´ aˇr
Vstupn´ı pole a ˇr´ıd´ıc´ı struktury – uk´azka uˇzit´ı – pokraˇcov´an´ı
<nomatch>
<prompt> I didn’t understand you, but thanks anyway.
</prompt>
<exit/>
</nomatch>
<noinput count="2">
<prompt> When you don’t want to speek to me good bye.</prompt>
<exit/>
</noinput>
</field>
<filled>
<prompt> you said <value expr="greating"/></prompt>
<submit src="SomeURI" namelist="greating"/>
</filled>
</form>
</vxml>
Dialogov´e syst´emy Ludˇek B´artek
VoiceXML Z´apis dialog˚u pomoc´ı VoiceXML
Element field
Pˇredstavuje vstup od uˇzivatele. M˚uˇze b´yt zad´an bud’
hlasem nebo pomoc´ı DTMF.
Atributy:
name – jm´eno pole. Pouˇz´ıv´a se k pˇr´ıstupu k zadan´e hodnotˇe (pomoc´ı st´ınov´e promˇenn´e se shodn´ym jm´enem).
expr – v´yraz v jazyce ECMAScript, kter´y slouˇz´ı k inicializace hodnoty vstupn´ıho pole.
cond – vstupn´ı podm´ınka nutn´a pro zpracov´an´ı vstupn´ıho pole.
V´ıce viz specifikace.
Dialogov´e syst´emy Ludˇek B´artek
VoiceXML Z´apis dialog˚u pomoc´ı VoiceXML
Element field
Pokraˇcov´an´ı
Obsah elementu:
V´yzva s popisem poˇzadovan´e hodnoty (element prompt).
Gramatika – SRGS gramatika s popisem akceptovan´ych vstup˚u.
Oˇsetˇren´ı ud´alost´ı:
noinput – nebyl zad´an ˇz´adn´y vstup
nomatch – zad´an neakceptovan´y vstup (vstup neodpov´ıd´a gramatice)
filled – umoˇzˇnuje zpracov´an´ı vstupu po vyplnˇen´ı vstupn´ıho pole
. . .
Dialogov´e syst´emy Ludˇek B´artek
VoiceXML Z´apis dialog˚u pomoc´ı VoiceXML
Element field
Uk´azka uˇzit´ı
<?xml version="1.0" encoding="UTF-8"?>
<vxml version="2.0" xmlns="...">
<form id="main">
<field name="name">
<prompt>Zadejte Vaˇse jm´eno</prompt>
<grammar src="..." type="application/xml+srgs"/>
<noinput>Zadejte pros´ım Vaˇse kˇrestn´ı jm´eno
</noinput>
<nomatch>Je mi l´ıto, ale zadan´e jm´eno nen´ı v kalend´aˇri</nomatch>
</field>
<filled>
<submit next="applicationURI" namelist="name"/>
</filled>
</form>
</vxml>
Dialogov´e syst´emy Ludˇek B´artek
VoiceXML Z´apis dialog˚u pomoc´ı VoiceXML
Element record
Umoˇzˇnuje syst´emu nahr´at zpr´avu od uˇzivatele.
Lze vyuˇz´ıt napˇr. pro tvorbu hlasov´eho z´aznamn´ıku.
Atributy:
name – n´azev vstupn´ıho pole expr – viz field
cond – viz field
beep – m´a-li b´yt zaˇc´atek nahr´av´an´ı b´yt signalizov´an zvukov´ym sign´alem
maxtime – maxim´aln´ı d´elka nahr´avky
type – mime-type v´ysledn´e nahr´avky, mus´ı b´yt podporov´ana VoiceXML platformou
. . .
Dialogov´e syst´emy Ludˇek B´artek
VoiceXML Z´apis dialog˚u pomoc´ı VoiceXML
Element record
Obsah elementu:
V´yzva/v´yzvy s popisem poˇzadovan´eho poˇzadovan´eho vstupu.
Oˇsetˇren´ı ud´alost´ı:
noinput – uˇzivatel zpr´avu nezaˇcal nahr´avat.
connection.disconnect.hangup – uˇzivatel zavˇesil.
Dialogov´e syst´emy Ludˇek B´artek
VoiceXML Z´apis dialog˚u pomoc´ı VoiceXML
Element record
Uk´azka uˇzit´ı
<?xml version="1.0" encoding="utf-8"?>
<vxml version="2.0"
xmlns="http://www.w3.org/2001/vxml">
<form id="zaznamnik">
<record name="zaznam" beep="true" maxtime="30s"
type="audio/x-wav">
<prompt>Bohuˇzel zde nikdo nen´ı. Po zaznˇen´ı sign´alu m˚uˇzete zanechat vzkaz.</prompt>
<noinput> Bohuˇzel nic neslyˇs´ım. Zkuste to znovu.
</noinput>
<catch event="connection.disconnect.hangup">
<submit next="http://some.uri.cz/zaznamnik"/>
</catch>
</record>
</form>
</vxml>
Dialogov´e syst´emy Ludˇek B´artek
VoiceXML Z´apis dialog˚u pomoc´ı VoiceXML
Element subdialog
Slouˇz´ı k vyvol´an´ı d´ılˇc´ıho dialogu (dialogu ˇreˇs´ıc´ıho d´ılˇc´ı probl´em).
Jeden a tent´yˇz subdialog se d´a volat opakovanˇe.
Vyvol´an´ı subdialogu:
element subdialog – vlastn´ı vol´an´ı subdialogu.
Obsahuje:
param – definice hodnoty parametru.
filled – k´od, kter´y se m´a prov´est po n´avratu z d´ılˇc´ıho dialogu.
Atributy:
name – jm´eno volan´eho subdialogu.
src – URI dokumentu s k´odem subdialogu.
K´od subdialogu:
formul´aˇr
ukonˇcen´y elementem return.
Dialogov´e syst´emy Ludˇek B´artek
VoiceXML Z´apis dialog˚u pomoc´ı VoiceXML
Element subdialog
Uk´azka uˇzit´ı
<?xml version="1.0" encoding="utf-8"?>
<vxml version="2.0" xmlns="..." xml:lang="cs-CZ">
<form id="demo">
<block>
<prompt>Uk´azka pouˇzit´ı subdialogu ve VoiceXML
</prompt>
</block>
<subdialog name="greating" src="#say_hello">
<param name="param1" expr="’ahoj’"/>
<filled>
<prompt>Hodnota subdialogu je <value expr="greating.great"/></prompt>
</filled>
</subdialog>
Dialogov´e syst´emy Ludˇek B´artek
VoiceXML Z´apis dialog˚u pomoc´ı VoiceXML
Element subdialog
Uk´azka uˇzit´ı – pokraˇcov´an´ı
<filled>
<prompt>ˇRekl jste <value expr="greating.great"/>
</prompt>
</filled>
</form>
<form id="say_hello">
<var name="param1"/>
<field name="great">
<prompt><value expr="param1"/></prompt>
<grammar src="pozdrav.grxml"/>
<noinput count="2">
<prompt>Na pozdrav jste mi neodpovˇedˇel.
Nashledanou.</prompt>
<return/>
</noinput>
Dialogov´e syst´emy Ludˇek B´artek
VoiceXML Z´apis dialog˚u pomoc´ı VoiceXML
Element subdialog
Uk´azka uˇzit´ı – pokraˇcov´an´ı
<nomatch>
<prompt>Bohuˇzel jsem V´am nerozumˇel, ale stejnˇe dekuji.Nashledanou.</prompt>
<return/>
</nomatch>
</field>
<filled>
<return namelist="great"/>
</filled>
</form>
</vxml>
Dialogov´e syst´emy Ludˇek B´artek
VoiceXML Z´apis dialog˚u pomoc´ı VoiceXML
Element block
Obsahuje provediteln´y obsah.
atributy:
name – n´azev bloku.
expr – inici´aln´ı hodnota promˇenn´e formul´aˇre.
cond – podm´ınka omezuj´ıc´ı prov´adˇen´ı bloku.
struktura – shodn´a s obsahem elementu filled:
ˇr´ıd´ıc´ı struktury – elementy if, else, elseif pˇriˇrazovac´ı pˇr´ıkaz – element assign, clear, . . . pˇr´ıkazy skoku – element goto, exit, return, . . .