Sunteți pe pagina 1din 212

Le langage de balisage extensible vocal (VoiceXML) vers...

http://www.yoyodesign.org/doc/w3c/voicexml20/

Voice Extensible Markup Language (VoiceXML) Version 2.0, 16 mars 2004, en version franaise
Statut du document traduit
Ceci est une traduction de la recommandation du W3C traitant de la deuxime version du langage de balisage extensible vocal VoiceXML. Cependant, il ne s'agit pas de la version officielle en franais. Seul le document original en anglais a valeur de rfrence. On peut l'obtenir : http://www.w3.org/TR/2004/REC-voicexml20-20040316/ .

Avertissement
Des erreurs ont pu survenir malgr le soin apport ce travail.

Notes sur la traduction


Certains concepts sont difficiles rendre en franais, ou peuvent bnficier d'une explication. Par moment, les expressions originales en anglais viennent en renfort dans le texte sous cette forme : ex. traduction [ndt. translation] D'autres expressions intgrent galement les versions originales en anglais, qui apparaissent d'une manire ou d'une autre (selon le navigateur), lorsque l'on laisse le pointeur de la souris au-dessus d'elles. Elles se prsentent sous cette forme : ex. Agent utilisateur Finalement, les liens menant d'autres documents du W3C dj traduits sont discrtement doubls vers leur traduction, comme ceci : ex. un lien VF vers un document du W3C. Adresse : <http://www.yoyodesign.org/doc/w3c/voicexml20/> Traducteur : J.J.SOLARI (contact) Correcteurs : Nicolas DERMINE Date de traduction : 17 juillet 2004 Dernire mise jour : 24 aot 2004

Archives compresses et autres formats


Cette traduction est disponible au format HTML sous forme d'archive compresse et, le cas chant, dans d'autres formats l'adresse http://www.yoyodesign.org/doc/w3c/w3c.html.

Autres documents traduits


On peut consulter les traductions en franais d'autres documents du W3C http://www.w3.org/2003/03/Translations/byLanguage?language=fr

1 of 212

27/07/2012 22:31

Le langage de balisage extensible vocal (VoiceXML) vers...

http://www.yoyodesign.org/doc/w3c/voicexml20/

Avis lgal
Copyright 1994-2004 World Wide Web Consortium, ( Massachusetts Institute of Technology , European Research Consortium for Informatics and Mathematics , Keio University ). Tous droits rservs. Consulter la notice de copyright pour les productions du W3C.

Le langage de balisage extensible vocal (VOICEXML) version 2.0


Recommandation du W3C du 16 mars 2004
Cette version : http://www.w3.org/TR/2004/REC-voicexml20-20040316/ Dernire version : http://www.w3.org/TR/voicexml20/ Version prcdente : http://www.w3.org/TR/2004/PR-voicexml20-20040203/ Rdacteurs : Scott McGlashan, Hewlett-Packard (rdacteur en chef) Daniel C. Burnett, Nuance Communications Jerry Carter, expert invit Peter Danielsen, Lucent (jusqu'en octobre 2002) Jim Ferrans, Motorola Andrew Hunt, ScanSoft Bruce Lucas, IBM Brad Porter, Tellme Networks Ken Rehor, Vocalocity Steph Tryphonas, Tellme Networks Veuillez consulter l' errata de ce document, lequel peut contenir des corrections normatives. Voir galement d'ventuelles traductions .
Copyright 2004 W3C (MIT, ERCIM, Keio), tous droits rservs. Les rgles de responsabilit , de marque commerciale , d' utilisation des documents et d' octroi de licences logicielles du W3C s'appliquent.

2 of 212

27/07/2012 22:31

Le langage de balisage extensible vocal (VoiceXML) vers...

http://www.yoyodesign.org/doc/w3c/voicexml20/

Rsum
Ce document dnit le langage de balisage extensible vocal (V OICEXML). Le langage VoiceXML se destine la cration des dialogues lectro-acoustiques soulignant une voix synthtise, un signal sonore numris, la reconnaissance d'une entre vocale ou d'une tonalit DTMF, l'enregistrement d'une commande vocale, un change tlphonique ou des conversations initiative mixte. Son objectif principal est d'apporter les avantages du dveloppement et de la diusion de contenu fonds sur le Web aux applications de rponse vocale interactives.

Statut de ce document
Ce chapitre dcrit le statut de ce document au moment de sa publication. D'autres documents peuvent venir le remplacer. On peut trouver une liste des publications courantes du W3C et la dernire rvision de ce rapport technique dans l' index des rapports techniques du W3C http://www.w3.org/TR/ . Ce document, qui a t pass en revue par les membres du W3C et les tiers intresss, a t approuv par le Directeur comme recommandation du W3C . Le rle du W3C en produisant la recommandation consiste attirer l'attention sur la spcication et d'en promouvoir le large dploiement. Cela participe la fonctionnalit et l'interoprabilit du Web. Cette spcication fait partie du Cadre d'interface vocale du W3C et elle a t dveloppe au sein de l' activit Navigateur vocal du W3C par les participants du groupe de travail Navigateur vocal (rserv aux membres du W3C). La conception du langage VoiceXML 2.0 a fait l'objet d'un examen approfondi (voir la disposition des remarques ) et elle satisfait aux exigences techniques du groupe de travail. On trouvera une liste des mises en uvres dans le rapport des mises en uvres du langage VoiceXML 2.0 , avec la suite de tests associe. Les remarques sont bienvenues sur la liste de diusion www-voice@w3.org (archive). Voir galement le guide d'utilisation des listes de diusion et archives du W3C . Le W3C met disposition une liste des ventuelles divulgations de brevets relatifs ces travaux .

Les conventions du document


Dans ce document, les mots-cls doi(ven)t , ne doi(ven)t pas , obligatoire , devra(devront) , ne devra(devront) pas , devrai(en)t , ne devrai(en)t pas , recommand , peu(ven)t et optionnel doivent se comprendre selon les dnitions du document [RFC2119] et ils indiquent les niveaux d'obligation des implmentations VoiceXML conformes.

3 of 212

27/07/2012 22:31

Le langage de balisage extensible vocal (VoiceXML) vers...

http://www.yoyodesign.org/doc/w3c/voicexml20/

Table des matires


Table des matires abrge
1. Vue d'ensemble 2. Les structures de dialogue 3. L'entre d'utilisateur 4. La sortie du systme 5. Le ux de commande et les scripts 6. L'environnement et les ressources Annexes

Table des matires dtaille


1. Vue d'ensemble 1.1 Introduction 1.2 Historique 1.2.1 Le modle architectural 1.2.2 Les objectifs du langage VoiceXML 1.2.3 La porte du langage VoiceXML 1.2.4 Les principes de conception 1.2.5 Les contraintes de la plateforme d'implmentation 1.3 Les concepts 1.3.1 Les dialogues et les sous-dialogues 1.3.2 Les sessions 1.3.3 Les applications 1.3.4 Les grammaires 1.3.5 Les vnements 1.3.6 Les liens 1.4 Les lments du langage VoiceXML 1.5 La structure et l'excution du document 1.5.1 L'excution dans un seul document 1.5.2 L'excution d'une application documents multiples 1.5.3 Les sous-dialogues 1.5.4 Le traitement nal 2. Les structures de dialogue 2.1 Les formulaires 2.1.1 L'interprtation des formulaires 2.1.2 Les lments de formulaire 2.1.3 Les variables et contraintes des lments de formulaire 2.1.4 Les formulaires dirigs 2.1.5 Les formulaires initiative mixte 2.1.6 L'algorithme d'interprtation des formulaires 2.2 Les menus 2.2.1 L'lment menu 2.2.2 L'lment choice 2.2.3 Les tonalits DTMF dans les menus 2.2.4 L'lment enumerate 2.2.5 La gnration des grammaires

4 of 212

27/07/2012 22:31

Le langage de balisage extensible vocal (VoiceXML) vers...

http://www.yoyodesign.org/doc/w3c/voicexml20/

2.2.6 Le modle d'interprtation 2.3 Les lments de formulaire 2.3.1 L'lment field 2.3.2 L'lment block 2.3.3 L'lment initial 2.3.4 L'lment subdialog 2.3.5 L'lment object 2.3.6 L'lment record 2.3.7 L'lment transfer 2.4 L'lment filled 2.5 Les liens 3. L'entre d'utilisateur 3.1 Les grammaires 3.1.1 Les grammaires vocales 3.1.2 Les grammaires DTMF 3.1.3 La porte des grammaires 3.1.4 L'activation des grammaires 3.1.5 L'interprtation smantique de l'entre 3.1.6 L'application des rsultats de l'interprtation smantique aux formulaires VoiceXML 4. La sortie du systme 4.1 L'lment prompt 4.1.1 Le balisage vocal 4.1.2 Les invites de base 4.1.3 L'invite sonore 4.1.4 L'lment value 4.1.5 L'interruption 4.1.6 La slection d'une invite 4.1.7 La temporisation 4.1.8 La mise en le d'attente des invites et la collecte des entres 5. Le ux de commande et les scripts 5.1 Les variables et les expressions 5.1.1 La dclaration des variables 5.1.2 Les portes des variables 5.1.3 L'appel des variables 5.1.4 Les variables de session normalises 5.1.5 Les variables d'application normalises 5.2 La gestion des vnements 5.2.1 L'lment throw 5.2.2 L'lment catch 5.2.3 La notation abrge 5.2.4 La slection de l'lment catch 5.2.5 Les lments catch implicites 5.2.6 Les types d'vnement 5.3 Le contenu excutable 5.3.1 L'lment var 5.3.2 L'lment assign 5.3.3 L'lment clear 5.3.4 Les lments if, elseif et else 5.3.5 Les lments prompt 5.3.6 L'lment reprompt 5.3.7 L'lment goto

5 of 212

27/07/2012 22:31

Le langage de balisage extensible vocal (VoiceXML) vers...

http://www.yoyodesign.org/doc/w3c/voicexml20/

5.3.8 L'lment submit 5.3.9 L'lment exit 5.3.10 L'lment return 5.3.11 L'lment disconnect 5.3.12 L'lment script 5.3.13 L'lment log 6. L'environnement et les ressources 6.1 La mise en place des ressources 6.1.1 Le chargement 6.1.2 La mise en cache 6.1.3 Le prchargement 6.1.4 Les protocoles 6.2 Les informations de mtadonne 6.2.1 L'lment meta 6.2.2 L'lment metadata 6.3 L'lment property 6.3.1 Les proprits propres la plateforme 6.3.2 Les proprits gnriques des logiciels de reconnaissance vocale 6.3.3 Les proprits gnriques des logiciels de reconnaisance DTMF 6.3.4 Les proprits d'invite et de collecte 6.3.5 Les proprits de mise en place 6.3.6 Les proprits diverses 6.4 L'lment param 6.5 Les dsignations des valeurs Annexes Annexe A. Le glossaire des termes Annexe B. La dnition de type de document VoiceXML Annexe C. L'algorithme d'interprtation des formulaires Annexe D. Les proprits de temporisation Annexe E. Les formats des chiers sons Annexe F. La conformit Annexe G. L'internationalisation Annexe H. L'accessibilit Annexe I. La vie prive Annexe J. Les changements survenus depuis VoiceXML 1.0 Annexe K. La rutilisabilit Annexe L. Remerciements Annexe M. Rfrences Annexe N. Le type de mdia et le suxe de chier Annexe O. La dnition du schma XML du langage VoiceXML Annexe P. Les types des grammaires intgres

1. Vue d'ensemble
Ce document denit le langage de balisage extensible vocal. Ses origines, ses concepts fondamentaux et son usage sont prsents dans le chapitre 1. Les structures de dialogue des formulaires, des menus et des liens, ainsi que le mcanisme (l'algorithme d'interprtation des formulaires FIA) de leur interprtation, sont introduits ensuite dans le chapitre 2. Les entres d'utilisateur employant des grammaires vocales ou DTMF sont abordes dans le chapitre 3, tandis que le chapitre 4 couvre les sorties systme faisant appel une voix synthtise ou un signal sonore enregistr. Les

6 of 212

27/07/2012 22:31

Le langage de balisage extensible vocal (VoiceXML) vers...

http://www.yoyodesign.org/doc/w3c/voicexml20/

mcanismes de manipulation du ux de commande des dialogues, comprenant les variables, les vnements et les lments excutables, sont expliqus dans le chapitre 5. Les caractristiques environnementales, tels que les paramtres et les proprits tout comme la manipulation des ressources, sont dnies dans le chapitre 6. Les annexes fournissent des renseignements supplmentaires concernant le schma VoiceXML, la spcication dtaille de l'algorithme FIA, la temporisation, les formats des chiers sons, les instructions relatives la conformit, l'internationalisation, l'accessibilit et la vie prive. Le langage VoiceXML trouve son origine en 1995 comme langage de cration de dialogues fond sur XML et destin simplier le processus de dveloppement des applications de reconnaissance vocale dans un projet de la socit AT&T intitul langage de balisage tlphonique (PML). Consquence de la rorganisation de la socit AT&T, des quipes des socits AT&T, Lucent et Motorola ont poursuivis des travaux sur leurs propres langages analogues PML. En 1998, le W3C a accueilli une confrence sur les navigateurs vocaux. cette poque, les socits AT&T et Lucent avaient produit des variantes direntes de leur langage PML original, tandis que la socit Motorola avait dvelopp le langage VoxML et que la socit IBM dveloppait son propre langage SpeechML. Beaucoup d'autres participants de la confrence dveloppaient galement des langages similaires pour la cration de dialogues, par exemple, le langage TalkML de la socit HP et le langage VoiceHTML de la socit PipeBeach. Le forum VoiceXML fut alors constitu par les socits AT&T, IBM, Lucent et Motorola an de mettre leurs eorts en commun. La mission du forum VoiceXML consistait dnir un langage de cration de dialogues normalis dont les dveloppeurs pourraient se servir pour construire des applications conversationnelles. Les membres du forum choisirent le langage XML comme fondement de leur eort car il tait clair que c'tait l'orientation technologique prendre. En 2000, le forum VoiceXML publiait la spcication VoiceXML 1.0. Peu de temps aprs, le langage VoiceXML 1.0 tait soumis au W3C comme fondement pour la cration d'un nouveau standard international. Le langage VoiceXML 2.0 rsulte de ces travaux ainsi que des suggestions faites par les socits membres du W3C, les autres groupes de travail du W3C et le public. Les dveloppeurs familiariss avec le langage VoiceXML 1.0 sont invits, en particulier, consulter le chapitre Les changements survenus depuis VoiceXML 1.0 qui rsume les dirences entre les deux versions VoiceXML 2.0 et VoiceXML 1.0.

1.1 Introduction
Le langage VoiceXML est destin la cration des dialogues lectro-acoustiques soulignant une voix synthtise, un signal sonore numris, la reconnaissance d'une entre vocale ou d'une tonalit DTMF, l'enregistrement d'une commande vocale, un change tlphonique ou des conversations initiative mixte. Son objectif principal est d'apporter les avantages du dveloppement et de la diusion de contenu fonds sur le Web aux applications de rponse vocale interactives. Voici deux exemples VoiceXML brefs. Le premier est l'habituel Salut tout le monde ! :

7 of 212

27/07/2012 22:31

Le langage de balisage extensible vocal (VoiceXML) vers...

http://www.yoyodesign.org/doc/w3c/voicexml20/

<?xml version="1.0" encoding="UTF-8"?> <vxml xmlns="http://www.w3.org/2001/vxml" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.w3.org/2001/vxml http://www.w3.org/TR/voicexml20/vxml.xsd" version="2.0"> <form> <block>Salut tout le monde !</block> </form> </vxml>

L'lment suprieur est l'lment vxml, dont le rle principal est celui d'un conteneur pour les dialogues. Il existe deux types de dialogues : les formulaires et les menus. Les formulaires prsentent des informations et recueillent les entres ; les menus prsentent des choix pour la suite de l'interaction. Cet exemple montre un seul formulaire contenant un lment block qui synthtise et prsente Salut tout le monde ! l'utilisateur. Comme le formulaire ne prcise pas de dialogue suivant, la conversation s'achve. Notre second exemple propose un choix de boissons l'utilisateur pour le soumettre un script ct serveur :
<?xml version="1.0" encoding="UTF-8"?> <vxml xmlns="http://www.w3.org/2001/vxml" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.w3.org/2001/vxml http://www.w3.org/TR/voicexml20/vxml.xsd" version="2.0"> <form> <field name="boisson"> <prompt>Voulez-vous du caf, du th, du lait ou rien du tout ?</prompt> <grammar src="boisson.grxml" type="application/srgs+xml"/> </field> <block> <submit next="http://www.boisson.example.com/boisson2.asp"/> </block> </form> </vxml>

Un lment field est un champ d'entre. L'utilisateur doit fournir une valeur au champ avant le traitement de l'lment suivant du formulaire. Voici une interaction simple : O (ordinateur) : Voulez-vous du caf, du th, du lait ou rien du tout ? H (humain) : Du jus d'orange. O : Je n'ai pas compris ce que vous avez dit (un message implicite propre la plateforme.) O : Voulez-vous du caf, du th, du lait ou rien du tout ? H : Du th. O : (suite dans le document boisson2.asp)

8 of 212

27/07/2012 22:31

Le langage de balisage extensible vocal (VoiceXML) vers...

http://www.yoyodesign.org/doc/w3c/voicexml20/

1.2 Historique
Ce chapitre contient un modle architectural de haut niveau, dont on utilise ensuite la terminologie pour dcrire les objectifs du langage VoiceXML, sa porte, ses principes de conception et les contraintes qu'il exerce sur les systmes qui le mettent en uvre.

1.2.1 Le modle architectural


Le modle architectural adopt par ce document contient les composants suivants :

Figure 1 : Le modle architectural Un serveur de documents (par exemple, un serveur Web) traite les requtes issues d'une application cliente, savoir l'interprteur VoiceXML, au travers du contexte d'interprtation VoiceXML. En rponse, le serveur produit des documents VoiceXML lesquels sont traits par l'interprteur VoiceXML. Le contexte d'interprtation VoiceXML peut surveiller les entres des utilisateurs en parallle avec l'interprteur VoiceXML. Par exemple, un contexte d'interprtation VoiceXML peut rester en permanence l'coute d'une phrase d'abandon particulire qui mne l'utilisateur un assistant personnel de haut niveau et un autre rester l'coute de phrases d'abandon qui modient les prfrences de l'utilisateur comme le volume ou bien les caractristiques de la synthse de la parole. La plateforme d'implementation est commande par le contexte d'interprtation VoiceXML et par l'interprteur VoiceXML. Par exemple, dans une application de rponse vocale interactive, le contexte d'interprtation VoiceXML peut tre responsable de la dtection d'un appel entrant, de l'acquisition du document VoiceXML initial et de la rponse cet appel, tandis que l'interprteur VoiceXML conduit le dialogue aprs l'appel. La plateforme d'implmentation suscite des vnements en rponse aux actions de l'utilisateur (par exemple, se dconnecter ds rception d'une entre vocale ou d'une saisie de caractres) et aux vnements du systme (par exemple, l'expiration d'un temporisateur). L'interprteur VoiceXML interfre, selon les indications du document VoiceXML, sur certains de ces vnements, tandis que le contexte d'interprtation VoiceXML interfre sur d'autres.

9 of 212

27/07/2012 22:31

Le langage de balisage extensible vocal (VoiceXML) vers...

http://www.yoyodesign.org/doc/w3c/voicexml20/

1.2.2 Les objectifs du langage VoiceXML


L'objectif principal du langage VoiceXML est d'apporter la pleine puissance de dveloppement et de diusion de contenu du Web aux applications de rponse vocale, en librant ainsi leurs auteurs de la programmation et de la gestion des ressources de bas niveau. Ce qui permet l'intgration des services vocaux aux et des services d'accs aux donnes en utilisant le paradigme client-serveur familier. Un service vocale apparat comme une succession de dialogues d'interaction entre un utilisateur et une plateforme d'implmentation. Les dialogues sont fournis par des serveurs de documents, lesquels peuvent tre extrieurs la plateforme d'implmentation. Les serveurs de documents se chargent de la logique d'ensemble des services, de l'exploitation des bases de donnes et des systmes patrimoniaux, et produisent les dialogues. Le document VoiceXML prcise chacun des dialogues d'interaction que l'interprteur VoiceXML doit conduire. Les entres d'utilisateur aectent l'interprtation du dialogue et elles sont rassembles en requtes soumises au serveur de documents. Le serveur de documents rpond par un autre document VoiceXML an de poursuivre la session avec l'utilisateur par d'autres dialogues. Le langage VoiceXML est un langage de balisage qui : Minimise les interactions client/serveur en dnissant plusieurs interactions par document. Isole les auteurs d'applications des dtails de bas niveau propres la plateforme. Spare le code d'interaction avec l'utilisateur (dans le langage VoiceXML) de la logique des services (par exemple, les scripts CGI). Favorise la portabilit des services entre les plateformes d'implmentation. Le langage VoiceXML est commun aux fournisseurs de contenu, aux fournisseurs d'outils et aux fournisseurs de plateformes. Est facile employer pour des interactions simples et ore nanmoins des fonctionnalits pour grer des dialogues complexes. Bien que le langage VoiceXML s'eorce de satisfaire aux besoins d'une majorit de services rponse vocale, il est probable que des applications ddies, agissant un niveau d'action plus n, soient mieux adaptes aux exigences strictes de certains services.

1.2.3 La porte du langage VoiceXML


Le langage dcrit l'interaction homme-machine oerte par les systmes rponse vocale, ce qui comprend : La sortie d'une voix synthtise (synthse de la parole). La sortie de chiers sons. La reconnaissance d'une entre vocale. La reconnaissance d'une entre DTMF.

10 of 212

27/07/2012 22:31

Le langage de balisage extensible vocal (VoiceXML) vers...

http://www.yoyodesign.org/doc/w3c/voicexml20/

L'enregistrement d'une commande vocale. La commande du ux des dialogues. Des fonctionnalits tlphoniques tels que le transfert d'appel et le raccrochage. Le langage VoiceXML fournit les moyens de capturer une saisie de caractres et/ou une commande vocale, en assignant les rsultats des entres des variables de requte dnies par le document et en prenant des dcisions qui aectent l'interprtation des documents crits dans ce mme langage. Un document peut tre reli d'autres documents par le biais d'identicateurs de ressource uniformes (URI).

1.2.4 Les principes de conception


Le langage VoiceXML est une application XML [XML]. 1. Le langage encourage la portabilit des services au travers d'une abstraction des ressources des plateformes. 2. Le langage s'accomode de la diversit des plateformes en ce qui concerne la gestion des formats des chiers sons, des formats des grammaires vocales et des systmes d'adresse URI. Bien que les fabricants de plateformes puissent grer divers formats de grammaire, le langage ncessite un format de grammaire commun, savoir la forme XML dcrite dans la spcication des grammaires de reconnaissance vocale du W3C [SRGS], pour faciliter l'interoprabilit. De la mme manire, bien que divers formats sonores de lecture et d'enregistrement puissent tre grs, ceux dcrits dans l'annexe E doivent tre pris en charge. 3. Le langage ore des facilits pour la cration des types d'interaction courants. 4. Le langage possde une smantique bien dnie qui prserve les intentions de l'auteur en ce qui concerne le droulement des interactions avec l'utilisateur. Il n'est pas besoin d'une heuristique ct client pour dterminer l'interprtation des lments d'un document. 5. Le langage reconnat les interprtations smantiques faites par les grammaires et il transmet ces informations l'application. 6. Le langage est dot d'un mcanisme de ux de commande. 7. Le langage autorise une sparation entre la logique du service et le comportement d'une interaction. 8. Le langage n'est pas conu pour des calculs intensifs, pour l'exploitation des bases de donnes ou l'exploitation des systmes patrimoniaux. Toutes choses que des ressources situes hors de l'interprteur du document sont censs prendre en charge, par exemple, un serveur de documents. 9. La logique de service gnrale, la gestion des tats, la gnration et la succession des dialogues sont censes rsider hors de l'interprtateur du document. 10. Le langage permet de relier des documents et aussi de soumettre des donnes des scripts ct serveur au moyen d'adresses URI. 11. Le langage VoiceXML permet d'identier exactement quelles donnes soumettre

11 of 212

27/07/2012 22:31

Le langage de balisage extensible vocal (VoiceXML) vers...

http://www.yoyodesign.org/doc/w3c/voicexml20/

au serveur et quelle mthode HTTP (GET ou POST) employer pour la soumission. 12. Le langage n'exige pas des auteurs de documents qu'ils aectent ou dsaectent explicitement les ressources des dialogues ou qu'ils se proccupent des accs simultans. L'allocation des ressources et les ls de commande concurrents doivent tre pris en charge par la plateforme d'implmentation.

1.2.5 Les contraintes de la plateforme d'implmentation


Ce chapitre souligne les contraintes exerces sur les plateformes matrielles/logicielles qui soutiendront un interprteur VoiceXML. L'acquisition du document. Le contexte d'interprtation est cens acqurir les documents sur lesquels l'interprteur VoiceXML agira. La gestion du systme d'adresse URI http:// est obligatoire. Dans certains cas, la requte des documents est gnre par l'interprtation d'un document VoiceXML, tandis que d'autres requtes sont gnres par le contexte d'interprtation en rponse des vnements hors de porte du langage, par exemple, un appel tlphonique entrant. Lorsqu'il met des requtes de documents via le protocole HTTP, le contexte d'interprtation s'identie au moyen d'une variable d'en-tte User-Agent dont la valeur a la forme nom/version , par exemple, "acme-browser/1.2" La sortie audio. Une plateforme d'implmentation doit mettre en uvre une sortie audio utilisant des chiers sons et une voix synthtise. La plateforme doit pouvoir ordonner librement la synthse vocale et la sortie audio. Si une ressource de sortie audio n'est pas disponible, alors un vnement error.noresource doit tre suscit. Les chiers sons sont appels par des adresses URI. Le langage dnit un ensemble obligatoire de formats de chiers sons (voir l'annexe E) ; d'autres formats de chiers sons peuvent galement tre grs. L'entre audio. Une plateforme d'implmentation est tenue de dtecter et signaler simultanment une saisie de caractres et/ou une commande vocale et de contrler la dure de l'intervalle de dtection d'une entre avec un temporisateur dont la longueur est spcie par un document VoiceXML. Si une ressource de sortie audio n'est pas disponible, alors un vnement error.noresource doit tre suscit. La plateforme doit signaler les caractres (par exemple, DTMF) saisis par un utilisateur. Les plateformes doivent prendre en charge la forme XML des grammaires dcrites dans la spcication des grammaires de reconnaissance vocale du W3C [SRGS]. Elles devraient galement prendre en charge la forme ABNF des grammaires DTMF dcrites dans la mme spcication [SRGS]. La plateforme doit pouvoir recevoir dynamiquement les donnes de la grammaire de reconnaissance vocale. Elle doit pouvoir utiliser les donnes des grammaires vocales de forme XML de la spcication des grammaires de reconnaissance vocale du W3C [SRGS]. Elle devrait pouvoir recevoir les donnes des grammaires de reconnaissance vocale de forme ABNF de cette mme spcication [SRGS], et elle peut prendre en charge d'autres formes de grammaire tel que le format JSpeech Grammar Format [JSGF] ou bien des formats propritaires. Certains lments VoiceXML contiennent des donnes de grammaire vocale, d'autres se rfrent des donnes de grammaire vocale au travers d'une adresse URI. Le logiciel de reconnaissance vocale doit pouvoir s'adapter une mise jour dynamique de la commande vocale qu'il coute au travers d'une des mthodes

12 of 212

27/07/2012 22:31

Le langage de balisage extensible vocal (VoiceXML) vers...

http://www.yoyodesign.org/doc/w3c/voicexml20/

dcrites dans la spcication des grammaires de reconnaissance vocale. La plateforme doit pouvoir enregistrer les signaux sonores provenant de l'utilisateur. La plateforme d'implmentation doit faire en sorte que l'enregistrement soit disponible une variable de requte. Le langage dnit un ensemble obligatoire de formats de chiers sons enregistrs (voir l'annexe E) ; d'autres formats peuvent galement pris en charge. Le transfert. La plateforme devrait pouvoir eectuer une connexion un tiers au travers d'un rseau de communication, tel que le rseau tlphonique.

1.3 Les concepts


Un document VoiceXML (ou bien un ensemble de documents apparents appel application) forme une machine conversationnelle tats nis. L'utilisateur se trouve toujours dans un seul tat conversationnel (ou dialogue) la fois. Chaque dialogue dtermine le prochain dialogue de transition. Les transitions sont indiques au moyen d'adresses URI, lesquelles dnissent les prochains document et dialogue utiliser. Si l'adresse URI ne dsigne pas de document, alors il s'agit du document courant. Si elle ne dsigne pas de dialogue, alors il s'agit du premier dialogue dans le document. L'excution se termine lorsque le dialogue n'indique pas de successeur ou bien lorsqu'il contient un lment qui interrompt explicitement la conversation.

1.3.1 Les dialogues et les sous-dialogues


Il existe deux types de dialogues : les formulaires et les menus. Les formulaires dnissent une interaction qui eectue la collecte des valeurs d'un ensemble de variables d'lment de formulaire. Chaque champ peut indiquer une grammaire dnissant les entres permises dans celui-ci. Si une grammaire au niveau du formulaire est prsente, alors elle peut servir pour le remplissage de plusieurs champs d'un nonc. Un menu prsentera l'utilisateur un ensemble d'options puis il eectuera une transition vers un autre dialogue en fonction de son choix. Un sous-dialogue ressemble un appel de fonction en cela qu'il fournit un mcanisme pour invoquer une nouvelle interaction pour revenir ensuite au formulaire original. Les instances de variables, les grammaires et les information d'tats sont sauvegardes et sont disponibles au retour sur le document appelant. Les sous-dialogues peuvent servir, par exemple, crer une squence de conrmation ncessitant l'interrogation d'une base de donnes, ou crer un ensemble de composants susceptibles d'tre partags entre des documents dans une seule application, ou crer une librairie de dialogues rutilisables partage entre plusieurs applications.

1.3.2 Les sessions


Une session dbute lorsque l'utilisateur commence interagir avec un contexte d'interprtation VoiceXML et s'achve la demande de l'utilisateur, d'un document ou du contexte d'interprtation.

1.3.3 Les applications


Une application est un ensemble de documents partageant un mme document racine

13 of 212

27/07/2012 22:31

Le langage de balisage extensible vocal (VoiceXML) vers...

http://www.yoyodesign.org/doc/w3c/voicexml20/

d'application. Ds que l'utilisateur interagit avec un document dans une application, le document racine d'application est charg galement. Le document racine d'application reste charg en mmoire tant que l'utilisateur eectue des transitions entre les autres documents de la mme application et il est vid de la mmoire lorsque l'utilisateur opre une transition vers un document qui ne se trouve pas dans l'application. Tant que le document racine d'application est charg, ses variables sont accessibles aux autres documents au titre de variables d'application et ses grammaires restent actives pour la dure de l'application, selon les rgles d'activation des grammaires expliques dans le chapitre 3.1.4. La gure 2 montre les documents de transition ( D ) dans une application partageant un document racine d'application commun (racine).

Figure 2 : Les documents de transition dans une application.

1.3.4 Les grammaires


Chaque dialogue a une ou plusieurs grammaires vocales et/ou DTMF associes. Dans les applications diriges par la machine, toutes les grammaires d'un dialogue ne sont actives que lorsque l'utilisateur se trouve dans le dialogue en question. Dans les applications initiative mixte, o l'utilisateur et la machine dterminent en alternance quoi faire ensuite, certains dialogues sont marqus pour rendre leurs grammaires actives (c'est--dire, l'coute), mme si l'utilisateur se trouve dans un autre dialogue du mme document, ou dans un autre document charg issu de la mme application. Dans cette situation, si l'utilisateur dit quelque chose touchant les grammaires actives d'un autre dialogue, l'excution opre une transition vers cet autre dialogue, l'nonc de l'utilisateur tant alors trait comme s'il avait t dit dans ce dialogue. L'initiative mixte apporte de la puissance et de la exibilit aux applications vocales.

1.3.5 Les vnements


Le langage VoiceXML fournit un mcanisme de remplissage de formulaire pour la manipulation normale d'une entre d'utilisateur. Il dnit, en outre, un mcanisme pour la gestion des vnements non couverts par le mcanisme du formulaire. La plateforme suscite des vnements dans diverses circonstances, comme lorsque l'utilisateur ne rpond pas, ou ne rpond pas de manire intelligible, demande de l'aide, etc. L'interprteur suscite galement des vnements s'il trouve une erreur smantique dans un document VoiceXML. Les vnements sont capturs par des lments catch ou leur forme syntaxique abrge. Tout lment dans lequel un vnement peut survenir peut dnir des lments catch. En outre, les lments catch peuvent galement s'hriter des lments englobants comme par copie . On peut ainsi spcier un comportement de gestion des vnements communs

14 of 212

27/07/2012 22:31

Le langage de balisage extensible vocal (VoiceXML) vers...

http://www.yoyodesign.org/doc/w3c/voicexml20/

n'importe quel niveau, lequel s'applique tous les niveaux infrieurs.

1.3.6 Les liens


Le lien gre les interactions d'initiative mixte. Il dnit une grammaire active ds lors que l'utilisateur se trouve dans la porte du lien. Si l'entre d'utilisateur correspond la grammaire indique par le lien, le contrle est transfr l'adresse URI de ce lien. Un lien peut servir susciter un vnement ou aller sur l'adresse URI de destination.

1.4 Les lments du langage VoiceXM


lment assign audio block catch choice clear Objectif Assigne une valeur une variable Lit un chier son au sein d'un lment prompt Chapitre 5.3.2 4.1.3

Un conteneur pour un code excutable (non 2.3.2 interactif) Capture un vnement Dnit un lment de menu 5.2.2 2.2.2

Eace une ou plusieurs variables d'lment 5.3.3 de formulaire 5.3.11 5.3.4 5.3.4 2.2.4 5.2.3 5.3.9 2.3.1 2.4 2.1 5.3.7 3.1 5.2.3

disconnect Dconnecte une session else elseif enumerate error exit field filled form goto grammar help Employ dans les lments if Employ dans les lments if Raccourci pour l'numration des choix dans un menu Capture un vnement erreur Sort d'une session Dclare un champ de saisie dans un formulaire Une action excute quand les champs sont remplis Un dialogue pour la prsentation d'informations et la collecte de donnes Aller un autre dialogue dans le mme document ou un document dirent Indique une grammaire de reconnaissance vocale ou une grammaire DTMF Capture un vnement aide Tableau 1 : Les lments du langage VoiceXML

15 of 212

27/07/2012 22:31

Le langage de balisage extensible vocal (VoiceXML) vers...

http://www.yoyodesign.org/doc/w3c/voicexml20/

lment if initial link log menu meta metadata noinput nomatch object option param prompt property record reprompt return script subdialog submit throw transfer value var

Objectif Logique conditionnelle simple Dclare une logique initiale sur une entre dans un formulaire ( initiative mixte) Dnit une transition commune tous les dialogues dans la porte du lien Gnre un message de dbogage Un dialogue pour choisir entre plusieurs destinations Dnit un lment de mtadonne en tant que couple nom/valeur Dnit une mtainformation en utilisant un schma de mtadonne Capture un vnement non-entre

Chapitre 5.3.4 2.3.3 2.5 5.3.13 2.2.1 6.2.1 6.2.2 5.2.3

Capture un vnement non-correspondance 5.2.3 Interagit avec une extension personnalise Indique une option dans un lment field Paramtre dans un lment object ou subdialog 2.3.5 2.3.1.3 6.4

Place en le d'attente la synthse vocale et 4.1 la sortie audio vers l'utilisateur Contrle les paramtres de la plateforme d'implmentation. Enregistre un chantillon audio Joue la le d'attente sur un champ lorsque celui-ci est revisit aprs un vnement Retour d'un sous-dialogue. Dnit un bloc de logique de script ECMAScript ct client Invoque un dialogue en tant que sous-dialogue du dialogue courant Soumet des valeurs un serveur de documents Suscite un vnement. Transfre l'appelant vers une autre destination Insre la valeur d'une expression dans une invite Dclare une variable 6.3 2.3.6 5.3.6 5.3.10 5.3.12 2.3.4 5.3.8 5.2.1 2.3.7 4.1.4 5.3.1

16 of 212

27/07/2012 22:31

Le langage de balisage extensible vocal (VoiceXML) vers...

http://www.yoyodesign.org/doc/w3c/voicexml20/

lment record

Objectif

Chapitre

L'lment de niveau suprieur dans chaque 1.5.1 document VoiceXML

1.5 La structure et l'excution du document


Un document VoiceXML se compose principalement d'lments de niveau suprieur appels dialogues. Il existe deux types de dialogues : les formulaires et les menus. Un document peut galement avoir des lments meta et metadata, des lments var et script, des lments property, des lments catch et des lments link.

1.5.1 L'excution dans un seul document


L'excutions du document dbute implicitement au premier dialogue. Au fur et mesure de l'excution, chaque dialogue dtermine le suivant. Lorsqu'un dialogue n'indique aucun dialogue suivant, l'excution du document se termine. Voici dvelopp un Salut tout le monde ! an d'illustrer ce droulement. L'exemple inclut maintenant une variable de niveau document appele salut et contenant le message d'accueil. Sa valeur sert d'invite dans le premier formulaire. Ds lors que ce premier formulaire a jou le message d'accueil, il va au formulaire appel dire_au_revoir , lequel joue Au revoir ! l'utilisateur. Puisque le second formulaire ne fait aucune transition vers un autre dialogue, cela provoque une sortie du document.
<?xml version="1.0" encoding="UTF-8"?> <vxml xmlns="http://www.w3.org/2001/vxml" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.w3.org/2001/vxml http://www.w3.org/TR/voicexml20/vxml.xsd" version="2.0"> <meta name="author" content="John Doe"/> <meta name="maintainer" content="sav-salut@salut.example.com"/> <var name="salut" expr="'Salut tout le monde !'"/> <form> <block> <value expr="salut"/> <goto next="#dire_au_revoir"/> </block> </form> <form id="dire_au_revoir"> <block> Au revoir ! </block> </form> </vxml>

Les formulaires peuvent se combiner autrement :


<?xml version="1.0" encoding="UTF-8"?> <vxml xmlns="http://www.w3.org/2001/vxml" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"

17 of 212

27/07/2012 22:31

Le langage de balisage extensible vocal (VoiceXML) vers...

http://www.yoyodesign.org/doc/w3c/voicexml20/

xsi:schemaLocation="http://www.w3.org/2001/vxml http://www.w3.org/TR/voicexml20/vxml.xsd" version="2.0"> <meta name="author" content="John Doe"/> <meta name="maintainer" content="sav-salut@salut.example.com"/> <var name="salut" expr="'Bonjour tout le monde !'"/> <form> <block> <value expr="salut"/> Au revoir ! </block> </form> </vxml>

L'lment vxml comprend les attributs suivants :


version

La version du langage VoiceXML du document (obligatoire). Le numro de version courant est "2.0". L'espace de nommage dsign pour le langage VoiceXML (obligatoire). L'espace de nommage du langage VoiceXML est dni comme tant http://www.w3.org/2001/vxml. L'adresse URI de base du document, dni dans le document [XML-BASE]. Comme dans le langage [HTML], c'est l'adresse URI que toutes les appels relatifs dans le document prennent comme adresse de base. L'identicateur de langue du document. Si absent, la valeur implicite est propre la plateforme. L'adresse URI du document racine d'application du document, le cas chant. Tableau 2 : Les attributs de l'lments vxml

xmlns

xml:base

xml:lang

application

L'information de langue s'hrite en descendant la hirarchie du document : la valeur de l'attribut xml:lang se transmet aux lments susceptibles de dnir galement cet attribut, tels que les lments grammar et prompt, moins que ces lments ne dnissent une autre valeur.

1.5.2 L'excution d'une application documents multiples


Normalement, chaque document s'excute comme une application isole. Dans les cas o l'on souhaite que plusieurs documents travaillent ensemble comme une seule application, on slectionne un document an qu'il devienne le document racine d'application, les autres documents devenant des documents terminaux d'application. Chaque document terminal indique alors le document racine dans son lment vxml. Une fois cette indication donne, chaque fois que l'interprteur sera instruit de charger et d'excuter un document terminal dans cette application, il chargera d'abord le document racine d'application si ce n'tait pas dj fait. Le document racine d'application reste charg jusqu' ce que l'interprteur soit instruit de charger un document appartenant une application dirente. De ce fait, l'interprtation se situera toujours dans l'un des deux cas de gure suivants :
18 of 212 27/07/2012 22:31

Le langage de balisage extensible vocal (VoiceXML) vers...

http://www.yoyodesign.org/doc/w3c/voicexml20/

Le document racine d'application est charg et l'utilisateur interagit avec celui-ci : il n'y a pas de document terminal. Le document racine d'application et un seul document terminal sont tous les deux chargs et l'utilisateur interagit avec le document terminal. Lorsqu'on dnit une succession de sous-dialogues dans des documents spars, plusieurs documents terminaux peuvent avoir t chargs, bien que l'excution ne se situe que dans l'un de ces documents. Lorsque le chargement d'un document terminal dclenche celui d'un document racine d'application, aucun des dialogues dans le document racine n'est excut. L'excution dbute dans le document terminal. Les applications multiples documents revtent plusieurs avantages : Les variables du document racine sont disponibles pour les documents terminaux, de sorte que les informations peuvent tre partages et conserves. Les lments property du document racine dnissent les valeurs implicites des proprits utilises dans les documents terminaux. On peut dnir du code ECMAScript courant dans les lments script du document racine, code qui peut servir dans les documents terminaux. Les lments catch du document racine dnissent la gestion implicite des vnements pour les documents terminaux. Les grammaires de porte document dans le document racine sont actives lorsque l'utilisateur se trouve dans un document terminal, de sorte que l'utilisateur peut interagir avec les formulaires, liens et menus dans le document racine. Voici l'illustration d'une application en deux documents : Document racine d'application (racine-app.vxml)
<?xml version="1.0" encoding="UTF-8"?> <vxml xmlns="http://www.w3.org/2001/vxml" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.w3.org/2001/vxml http://www.w3.org/TR/voicexml20/vxml.xsd" version="2.0"> <var name="au_revoir" expr=" Ciao "/> <link next="transfert_operateur.vxml"> <grammar type="application/srgs+xml" root="racine" version="1.0"> <rule id="racine" scope="public">oprateur</rule> </grammar> </link> </vxml>

Document terminal (terminal.vxml)


<?xml version="1.0" encoding="UTF-8"?> <vxml xmlns="http://www.w3.org/2001/vxml" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.w3.org/2001/vxml http://www.w3.org/TR/voicexml20/vxml.xsd" version="2.0" application="racine-app.vxml">

19 of 212

27/07/2012 22:31

Le langage de balisage extensible vocal (VoiceXML) vers...

http://www.yoyodesign.org/doc/w3c/voicexml20/

<form id="dire_au_revoir"> <field name="reponse"> <grammar type="application/srgs+xml" src="/grammars/boolean.grxml"/> <prompt>Devons-nous nous dire <value expr="application.au_revoir"/> ?</prompt> <filled> <if cond="reponse"> <exit/> </if> <clear namelist="reponse"/> </filled> </field> </form> </vxml>

Dans cet exemple, l'application est conue de telle sorte que le document terminal.vxml doive tre charg en premier. Son attribut application indique que le document racine_app.vxml devrait tre utilis comme document racine d'application. Le document racine_app.vxml est donc charg, ce qui cre la variable d'application au_revoir et dnit galement un lien qui mne au document transfert_operateur.vxml ds lors que l'utilisateur dit oprateur . L'utilisateur commence l'interaction dans le formulaire dire_au_revoir : O : Devons-nous nous dire Ciao ? H : Si ! O : Je n'ai pas compris ce que vous avez dit (un message implicite propre la plateforme). O : Devons-nous nous dire Ciao ? H : Ciao ! O : Je n'ai pas compris ce que vous avez dit. H : Oprateur. O : (Charge le document transfert_operateur.vxml , an de mettre l'appelant en contact avec un oprateur humain). Remarquez que, quand l'utilisateur est dans une application documents multiples, deux documents au plus sont chargs tout instant : le document racine d'application et, sauf si eectivement l'utilisateur interagit avec le document racine, un document terminal de l'application. L'lment vxml du document racine ne dnit pas d'attribut application et, au contraire, c'est l'lment vxml d'un document terminal qui dnit un attribut application. Un interprteur aura toujours un document racine d'application charg, mais un document terminal d'application ne le sera pas toujours. Le nom de l'application courante de l'interprteur est l'adresse URI absolue du document racine d'application. L'interprteur demeure dans la mme application tant que le nom reste le mme. Lorsque le nom change, il entre dans une nouvelle application et son contexte racine est initialis. Le contexte racine de l'application se compose des variables, des grammaires, des lments catch, des scripts et des proprits dans la porte de l'application. Pendant une session d'utilisateur, l'interprteur passe d'un document l'autre selon

20 of 212

27/07/2012 22:31

Le langage de balisage extensible vocal (VoiceXML) vers...

http://www.yoyodesign.org/doc/w3c/voicexml20/

les requtes des lments choice, goto, link, subdialog et submit. Certaines transitions restent dans une application, d'autres ont lieu entre des applications. La prservation ou l'initialisation du contexte racine dpendent du type de la transition : Transition racine terminal dans l'application Une transition racine terminal dans la mme application se produit lorsque le document courant est un document racine et que la valeur de l'attribut application du document cible se rsoud dans la mme adresse URI absolue que celle du nom de l'application courante. Le document racine d'application et son contexte sont prservs. Transition terminal terminal dans l'application Une transition terminal terminal dans la mme application se produit lorsque le document courant est un document terminal et que la valeur de l'attribut application du document cible se rsoud dans la mme adresse URI absolue que celle du nom de l'application courante. Le document racine d'application et son contexte sont prservs. Transition terminal racine dans l'application Une transition de terminal racine dans la mme application se produit lorsque le document courant est un document terminal et que l'adresse URI absolue du document cible est la mme que celle du nom de l'application courante. Le document racine d'application courant et son contexte sont prservs quand la transition est cause par un lment choice, goto ou link. Le contexte racine est initialis quand c'est un lment submit qui produit la transition terminal racine, car l'lment submit aboutit toujours au chargement de son adresse URI. Transition racine racine Une transition racine racine se produit lorsque le document courant est un document racine et le document cible aussi, c'est--dire qu'il n'a pas d'attribut application. Le contexte racine est initialis par le document racine d'application conformment la politique de mise en cache, voir le chapitre 6.1.2. La politique de mise en cache est consulte, mme lorsque le nom de l'application cible et celui de l'application courante sont identiques. Transition de sous-dialogue L'invocation d'un sous-dialogue se produit lorsqu'un document racine ou un document terminal excutent un lment subdialog. Comme expliqu dans le chapitre 2.3.4, l'invocation d'un sous-dialogue cre un nouveau contexte d'excution. Le document racine d'application et son contexte, dans le contexte d'excution du document appelant, sont gards intacts pendant l'excution du sous-dialogue puis rutiliss au retour du sous-dialogue en question. Le nouveau contexte d'excution du sous-dialogue possde son propre contexte racine et, le cas chant, son propre contexte terminal. Lorsqu'un appel d'adresse URI non vide invoque le sous-dialogue, c'est la politique de mise en cache, dcrite dans le chapitre 6.1.2, qui dterminera l'acquisition des documents racine et terminal utiliss pour initialiser les nouveaux contextes racine et terminal. Si un sous-dialogue est invoqu au travers d'un appel d'adresse URI vide avec un identicateur de fragment, par exemple, #sous-routine1 , alors le document racine et le document terminal demeurent inchangs, et c'est la raison pour laquelle les documents racine et terminal courants seront utiliss pour initialiser les nouveaux contextes racine et terminal. Les transitions inter-applications Toutes les autres transitions se produisent entre applications, ce qui se traduit par une initialisation du contexte racine de l'application par le document racine de l'application suivante.

21 of 212

27/07/2012 22:31

Le langage de balisage extensible vocal (VoiceXML) vers...

http://www.yoyodesign.org/doc/w3c/voicexml20/

Si un document se rfre un document racine d'application inexistant, un vnement error.badfetch est suscit. Si l'attribut application d'un document se rfre un document qui possde dj un attribut application, alors un vnement error.semantic est suscit. Les diagrammes suivants illustrent les eets des transitions entre les documents racine et terminal et le contexte racine de l'application. Dans ces diagrammes, les botes reprsentent des documents, les changements de texture des botes identient les initialisations de contexte racine, les ches en trait plein symbolisent les transitions vers l'adresse URI dans l'tiquette de la che, les ches verticales en pointills indiquent un attribut application dont l'adresse URI correspond l'tiquette de la che.

Figure 3 : Les transitions qui prservent le contexte racine Dans ce diagramme, tous les documents appartiennent la mme application. Les transitions sont identies par les numros de 1 4 dans la partie suprieure de la gure. Ce sont : 1. Une transition vers une adresse URI A qui rsulte dans le document 1, le contexte d'application est initialis partir du contenu du document 1. Supposons que ce soit le premier document de la session. Le nom de l'application courante est A . 2. Les document 1 dnit une transition vers l'adresse URI B , laquelle produit le document 2. L'attribut application du document 2 et l'adresse URI A ont la mme valeur. La racine est le document 1 dont le contenu est prserv. C'est une transition racine terminal dans la mme application. 3. Le document 2 dnit une transition vers l'adresse URI C , laquelle produit un autre document terminal : le document 3. La valeur de son attribut application est identique galement l'adresse URI A . La racine est le document 1 dont le contenu est prserv. C'est une transition terminal terminal dans la mme application. 4. Le document 3 dnit une transition vers l'adresse URI A au moyen d'un lement choice, goto ou link. Le document 1 est utilis avec son contexte racine intact. C'est une transition terminal racine dans la mme application. Le diagramme suivant illustre des transitions qui initialisent le contexte racine.

22 of 212

27/07/2012 22:31

Le langage de balisage extensible vocal (VoiceXML) vers...

http://www.yoyodesign.org/doc/w3c/voicexml20/

Figure 4 : Les transitions qui initialisent le contexte racine 5. Le document 1 dnit une transition vers sa propre adresse URI A . Le document rsultant 4 n'a pas d'attribut application, il s'agit donc un document racine et le contexte racine est initialis. C'est une transition racine racine. 6. Le document 4 dnit une transition vers l'adresse URI D , laquelle produit le document terminal 5. La valeur de son attribut application est dirente : l'adresse URI E . On entre dans une nouvelle application. L'adresse URI E produit le document racine 6. Le contexte racine est initialis partir du contenu du document 6. C'est une transition inter-applications. 7. Le document 5 dnit une transition vers l'adresse URI A . La consultation du cache renvoie le document 4 lequel n'a pas d'attribut application. Par consquent, il appartient l'application A et le contexte racine est donc initialis. L'initialisation a lieu, mme si cette application et ce document racine ont t utiliss plus tt dans la session. C'est une transition inter-applications.

1.5.3 Les sous-dialogues


Un sous-dialogue est un mcanisme permettant de dcomposer des squences de dialogues complexes an de mieux les structurer ou de crer des composants rutilisables. Par exemple, la sollicitation des renseignements concernant un compte peut impliquer de runir plusieurs informations, tels qu'un numro de compte et un numro de tlphone du domicile. Un service d'assistance la clientle pourrait se construire autour de plusieurs applications indpendantes partageant ce bloc de construction lmentaire, qu'il serait donc raisonnable de construire comme un sous-dialogue. On en trouvera une illustration dans l'exemple ci-dessous. Le premier document app.vxml cherche rgulariser le compte d'un client et, pour ce faire, il doit obtenir les renseignements concernant le compte puis le niveau de rgularisation. Les renseignements sur le compte sont obtenus au moyen d'un lment subdialog qui invoque un autre document VoiceXML, lequel sollicite une entre de l'utilisateur. Pendant l'excution de ce second document, le dialogue appelant est suspendu en attente du retour des informations. Le second document fournit le rsultat des interactions avec l'utilisateur au moyen d'un lment return, les valeurs rsultantes devenant accessibles au travers de la variable dnie par l'attribut name sur l'lment subdialog. Application de service la clientle (app.vxml)
<?xml version="1.0" encoding="UTF-8"?>

23 of 212

27/07/2012 22:31

Le langage de balisage extensible vocal (VoiceXML) vers...

http://www.yoyodesign.org/doc/w3c/voicexml20/

<vxml xmlns="http://www.w3.org/2001/vxml" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.w3.org/2001/vxml http://www.w3.org/TR/voicexml20/vxml.xsd" version="2.0"> <form id="regularisation_facturation"> <var name="num_compte"/> <var name="tel_domicile"/> <subdialog name="infocompte" src="info_compte.vxml#normal"> <filled> <!-- Remarquez que la variable dfinie par "infocompte" est renvoye comme objet ECMAScript, lequel contient deux proprits dfinies par les variables indiques dans l'lment "return" du sous-dialogue. --> <assign name="num_compte" expr="infocompte.numcompte"/> <assign name="tel_domicile" expr="infocompte.telcompte"/> </filled> </subdialog> <field name="montant_regularisation"> <grammar type="application/srgs+xml" src="/grammars/currency.grxml"/> <prompt> Quelle est la valeur de votre rgularisation de compte ? </prompt> <filled> <submit next="/cgi-bin/majcompte"/> </filled> </field> </form> </vxml>

Document contenant le sous-dialogue des renseignements de compte (info_compte.vxml)


<?xml version="1.0" encoding="UTF-8"?> <vxml xmlns="http://www.w3.org/2001/vxml" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.w3.org/2001/vxml http://www.w3.org/TR/voicexml20/vxml.xsd" version="2.0"> <form id="normal"> <field name="numcompte"> <grammar type="application/srgs+xml" src="/grammars/digits.grxml"/> <prompt> Quel est votre numro de compte ? </prompt> </field> <field name="telcompte"> <grammar type="application/srgs+xml" src="/grammars/phone.grxml"/> <prompt> Quel est le numro de tlphone de votre domicile ? </prompt> <filled> <!-- Les valeurs obtenues dans les deux champs sont fournies au dialogue appelant par l'lment "return". --> <return namelist="numcompte telcompte"/> </filled> </field> </form> </vxml>

Les sous-dialogues ajoutent un nouveau contexte d'excution lorsqu'on les invoque. Le


24 of 212 27/07/2012 22:31

Le langage de balisage extensible vocal (VoiceXML) vers...

http://www.yoyodesign.org/doc/w3c/voicexml20/

sous-dialogue peut tre un nouveau dialogue dans le document existant ou un nouveau dialogue dans un nouveau document. Les sous-dialogues peuvent se composer de plusieurs documents. La gure 5 montre le ux d'excution au cours de la transition d'une squence de documents ( D ) vers un sous-dialogue ( SD ) et retour.

Figure 5 : Un sous-dialogue compos de plusieurs documents revenant du dernier document de sous-dialogue. Le contexte d'excution du dialogue D2 est suspendu pendant l'invocation du sous-dialogue SD1 dans le document sd1.vxml . Ce sous-dialogue transfre l'excution au dialogue dans le document sd2.vxml (au moyen d'un lment goto). En dnitive, le contrle est rendu directement au dialogue D2 lorsque le dialogue dans sd2.vxml s'achve. La gure 6 montre un exemple de sous-dialogue en plusieurs documents dans lequel le contrle est transfr d'un sous-dialogue l'autre.

25 of 212

27/07/2012 22:31

Le langage de balisage extensible vocal (VoiceXML) vers...

http://www.yoyodesign.org/doc/w3c/voicexml20/

Figure 6 : Un sous-dialogue compos de plusieurs documents revenant du premier document de sous-dialogue. Le sous-dialogue dans sd1.vxml spcie un transfert du contrle vers un second sous-dialogue SD2 dans sd2.vxml . Pendant l'excution du sous-dialogue SD2 , deux contextes sont suspendus : celui du dialogue dans D2 attendant un retour de SD1 et celui du dialogue dans SD1 attendant un retour de SD2 . Au retour de SD2 , le contrle revient SD1 , qui redonne son tour le contrle au dialogue D2 .

1.5.4 Le traitement nal


Dans certaines circonstances (notamment, pendant que l'interprteur VoiceXML traite un vnement disconnect), l'interprteur peut poursuivre l'excution dans l'tat de traitement nal aprs l'interruption d'une connexion, an de permettre l'application VoiceXML d'eectuer une ventuelle purge ncessaire nale, telle que soumettre les informations au serveur d'applications. Par exemple, l'lment catch suivant capturera l'vnement connection.disconnect.hangup et l'excutera au cours de l'tat de traitement nal :
<catch event="connection.disconnect.hangup"> <submit namelist="maSortie" next="http://monsite/sortie.jsp"/> </catch>

Pendant l'tat de traitement nal, l'application doit rester dans l'tat de transition et ne peut pas entrer dans l'tat d'attente (dcrit dans le chapitre 4.1.8). Ainsi, par exemple, l'application ne devrait pas aller dans les lments field, record et transfer pendant l'tat de traitement nal. L'interprteur VoiceXML doit s'interrompre si l'application VoiceXML essaye d'entrer dans l'tat d'attente pendant l'tat de traitement nal. Hormis cette restriction, l'excution de l'application VoiceXML se poursuit normalement pendant l'tat de traitement nal. Ainsi, par exemple, l'application peut eectuer une transition entre des documents pendant l'tat de traitement nal et l'interprteur doit
26 of 212 27/07/2012 22:31

Le langage de balisage extensible vocal (VoiceXML) vers...

http://www.yoyodesign.org/doc/w3c/voicexml20/

s'interrompre si aucun lment de formulaire ne convient pour une slection (comme dcrit dans le chapitre 2.1.1).

2. Les structures de dialogue


2.1 Les formulaires
Les formulaires sont les composants-cls des documents VoiceXML. Un formulaire comprend : Un ensemble d'lments de formulaire, lesquels sont lus par la boucle principale de l'algorithme d'interprtation des formulaires. Les lments de formulaire se rangent en lments d'entre, qui peuvent tre remplis par une entre d'utilisateur, et les lments de commande, qui ne le peuvent. Des dclarations de variables d'lment non-formulaire. Des gestionnaires d'vnements. Des actions remplies , savoir des blocs de logique procdurale s'excutant quand certaines combinaisons de variables d'lments d'entre sont assignes. Les attributs de formulaire sont : Le nom du formulaire. S'il est fourni, on peut appeler le formulaire dans le document ou depuis un autre document. Par exemple : <form id="meteo">, <goto next="#meteo">.

id

La porte implicite des grammaires de formulaire. Pour la valeur "dialog", les grammaires de formulaire ne sont actives que dans le formulaire. Pour la valeur "document", elles sont actives pour la dure de n'importe quel dialogue dans le mme document. Si la valeur est "document" et que le document est un document racine d'application, alors les grammaires de formulaire sont actives pour la dure de scope n'importe quel dialogue dans n'importe quel document de cette application. Remarquez que la porte des grammaires de formulaire individuel est prioritaire sur la porte implicite. Par exemple, dans les documents non-racines, si on a un formulaire avec une porte valant implicitement "dialog" et une grammaire de formulaire dont la porte vaut "document", alors cette grammaire est active dans n'importe quel dialogue du document. Tableau 3 : Les attributs de l'lment form Cette partie dcrit certains concepts sous-jacents des formulaires puis donne quelques exemples dtaills de leur utilisation.

2.1.1 L'interprtation des formulaires


Les formulaires sont interprts par un algorithme d'interprtation des formulaires

27 of 212

27/07/2012 22:31

Le langage de balisage extensible vocal (VoiceXML) vers...

http://www.yoyodesign.org/doc/w3c/voicexml20/

implicite (FIA). La boucle principale de l'algorithme FIA slectionne maintes reprises un lment de formulaire pour le visiter. L'lment de formulaire slectionn est le premier dans l'ordre du document dont la condition de veille n'est pas satisfaite. Par exemple, la condition de veille implicite d'un champ vrie si la variable d'lment de formulaire du champ possde une valeur, de sorte que, si un formulaire simple ne contient que des champs, l'utilisateur fera l'objet d'une invite pour chaque champ tour de rle. En gnral, l'interprtation d'un lment de formulaire implique : La slection et la lecture d'une ou plusieurs invites ; La collecte d'une entre d'utilisateur, que ce soit une rponse remplissant un ou plusieurs lments d'entre ou bien le dclenchement d'un certain vnement (par exemple, une aide), et ; L'interprtation de toutes les actions filled correspondant aux lments d'entre nouvellement remplis. L'algorithme FIA se termine lorsqu'il rencontre une dclaration de transfert de contrle (par exemple, un lment goto menant un autre dialogue ou document, ou un lment submit envoyant des donnes au serveur de documents. Il se termine galement pour un lment exit implicite, quand il ne reste aucun lment de formulaire susceptible d'tre slectionn. L'algorithme FIA est dcrit prcisment dans le chapitre 2.1.6.

2.1.2 Les lments de formulaire


Les lments de formulaire sont ceux pouvant tre visits dans la boucle principale de l'algorithme FIA. Les lments d'entre conduisent l'algorithme FIA runir un rsultat pour un lment particulier. Lorsque l'algorithme FIA slectionne un lment de commande, cet lment peut contenir un bloc de code procdural excuter, ou il peut dire l'algorithme FIA de mettre en place l'invite-et-collecte initiale d'un formulaire initiative mixte. 2.1.2.1 Les lments d'entre Un lment d'entre dnit une variable d'lment d'entre recueillir de l'utilisateur. Les lments d'entre ont des invites pour indiquer l'utilisateur quoi dire ou quoi saisir, des grammaires qui dnissent les entres permises et des gestionnaires d'vnement pour traiter tous les vnements susceptibles d'en rsulter. Un lment d'entre peut galement comporter un lment filled, lequel dnit l'action prendre juste aprs que la variable d'lment d'entre a t remplie. Les lments d'entre comprennent : field Un lment d'entre dont la valeur s'obtient via des grammaires ASR ou DTMF. Un lment d'entre dont la valeur est un message sonore enregistr par l'utilisateur. Un lment record pourrait, par exemple, recueillir un message Tableau 4 : Les lments d'entre
28 of 212 27/07/2012 22:31

record

Le langage de balisage extensible vocal (VoiceXML) vers...

http://www.yoyodesign.org/doc/w3c/voicexml20/

lectronique vocal. Un lment d'entre qui transfre l'utilisateur vers un autre numro de tlphone. Si le transfert renvoie une commande, la variable du champ recevra le statut rsultant. Cet lment d'entre invoque un objet propre une plateforme avec divers paramtres. Le rsultat de l'objet de plateforme est un objet ECMAScript de type Object . Un objet de plateforme pourrait revtir la forme d'un dialogue intgr qui recueillerait les renseignements d'une carte de crdit. Un autre pourrait recueillir un message textuel au moyen d'une certaine mthode propritaire de saisie de texte DTMF. Les implmentations n'ont pas obligation de produire des objets propres une plateforme, bien qu'elles doivent grer l'lment object en suscitant un vnement error.unsupported.objectname si l'objet propre une plateforme particulire n'tait pas reconnu (remarquez que la chane objectname dans error.unsupported.objectname est xe et ne se remplace donc pas par le nom de l'objet non reconnu ; la variable d'vnement spciale "_message" peut fournir d'autres informations d'erreur plus spciques, comme dcrit dans le chapitre 5.2.2).

transfer

object

Cet lment d'entre se comporte grossirement comme un appel de fonction. Il invoque un autre subdialog dialogue dans le document courant ou bien un autre document VoiceXML. Il renvoie un objet ECMAScript de type Object comme rsultat. 2.1.2.2 Les lments de commande Il existe deux types d'lments de commande : Une squence de dclarations procdurales servant pour les invites et les calculs, mais pas pour le recueil d'une entre. Un bloc contient une variable d'lment de formulaire (normalement implicite) dont la valeur doit tre vrie avant qu'il ne puisse tre interprt.

block

Cet lment dtermine l'interaction initiale dans un formulaire initiative mixte. Son invite devrait tre crite de manire encourager l'utilisateur dire quelque chose qui corresponde avec une grammaire de niveau initial formulaire. Lorsqu'au moins une variable d'lment de formulaire est remplie comme rsultat d'une reconnaissance pendant un lment initial, alors la variable d'lment de formulaire de l'lment initial se Tableau 5 : Les lments de commande
29 of 212 27/07/2012 22:31

Le langage de balisage extensible vocal (VoiceXML) vers...

http://www.yoyodesign.org/doc/w3c/voicexml20/

vrie, ce qui l'exclut comme alternative pour l'algorithme FIA.

2.1.3 Les variables et contraintes des lments de formulaire


chaque lment de formulaire est associe une variable d'lment de formulaire, dont la valeur implicite n'est pas dnie lorsqu'on accde au formulaire. Cette variable d'lment de formulaire contiendra le rsultat de l'interprtation de l'lment de formulaire. La variable d'lment de formulaire d'un lment d'entre s'appelle aussi une variable d'lment d'entre, et elle contient la valeur collecte auprs de l'utilisateur. Une variable d'lment de formulaire peut recevoir un nom au moyen de l'attribut name ou peut rester anonyme, auquel cas il sera gnr un nom interne. Chaque lment de formulaire admet une condition de veille, laquelle rgit le fait qu'un lment de formulaire puisse ou non tre slectionn par l'algorithme FIA. La condition de veille implicite vrie simplement si la variable d'lment de formulaire a une valeur. Si c'est le cas, l'lment de formulaire ne sera pas visit. Les lments d'entre reoivent habituellement un nom, au contraire des lments de commande. En gnral, les variables d'lment de formulaire n'ont pas de valeurs initiales et aucune autre condition de veille n'est dnie. Parfois, cependant, un contrle plus n peut se rvler ncessaire. Un formulaire peut avoir une variable d'lment de formulaire dont la valeur est xe initialement pour cacher un champ puis tre eace (par exemple, au moyen d'un lment clear) pour forcer la collecte du champ en question. Un autre champ peut avoir une condition de veille qui l'active seulement quand il n'a pas t collect et aprs que deux autres champs ont t remplis. Un lment de bloc s'excutera seulement quand certaines conditions seront vries. On peut donc exercer un contrle plus n sur l'ordre dans lequel l'algorithme FIA slectionnera et excutera les lments de formulaires. Toutefois, en gnral, on pourra construire beaucoup de dialogues sans avoir recours un tel niveau de complexit. En rsum, tous les lments de formulaires admettent les attributs suivants : Le nom d'une variable d'lment de formulaire, dans la porte d'un dialogue, qui contiendra la valeur de l'lment de formulaire.

name

La valeur initiale de la variable d'lment de formulaire ; par dfaut, c'est la valeur ECMAScript "undefined". Si elle est expr initialise, alors l'lment de formulaire ne s'excutera pas, moins d'eacer la variable d'lment de formulaire. Une expression valuer conjointement au test de la variable d'lment de formulaire. Si l'attribut est absent, sa valeur cond implicite vaut "true" ou alors, dans le cas de l'lment initial, c'est un test pour dterminer si une quelconque variable d'lment de formulaire a t remplie. Tableau 6 : Les attributs communs des lments de formulaire

2.1.4 Les formulaires dirigs

30 of 212

27/07/2012 22:31

Le langage de balisage extensible vocal (VoiceXML) vers...

http://www.yoyodesign.org/doc/w3c/voicexml20/

Le type de formulaire le plus simple et le plus commun est celui o les lments de formulaire sont excuts exactement une fois, en ordre squentiel, pour mettre en uvre une interaction dirige par l'ordinateur. Voici un service mtorologique rpondant ce type.
<?xml version="1.0" encoding="UTF-8"?> <vxml version="2.0" xmlns="http://www.w3.org/2001/vxml" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.w3.org/2001/vxml http://www.w3.org/TR/voicexml20/vxml.xsd"> <form id="info_meteo"> <block>Bienvenue sur ce service d'informations mtorologiques !</block> <field name="pays"> <prompt>Quel pays ?</prompt> <grammar src="pays.grxml" type="application/srgs+xml"/> <catch event="help"> Veuillez prononcer le nom du pays dont vous voulez connatre la mto. </catch> </field> <field name="ville"> <prompt>Quelle ville ?</prompt> <grammar src="ville.grxml" type="application/srgs+xml"/> <catch event="help"> Veuillez prononcer le nom de la ville dont vous voulez la mto. </catch> </field> <block> <submit next="/servlet/meteo" namelist="ville pays"/> </block> </form> </vxml>

Ce dialogue se droule de manire squentielle : O (ordinateur) : Bienvenue sur ce service d'informations mtorologiques ! Quel pays ? H (humain) : Aide [ndt. help] O : Veuillez prononcer le nom du pays dont vous voulez connatre la mto. H : Islande O : Quelle ville ? H : Hsavk O : Je n'ai pas compris ce que vous avez dit. Quelle ville ? H : Akureyri O : Les conditions Akureyri, en Islande, sont ensoleilles et dgages 11h00, etc. La premire itration de l'algorithme FIA slectionne le premier lment block, car sa variable d'lment de formulaire (cache) n'est pas dnie au dpart. Ce bloc produit

31 of 212

27/07/2012 22:31

Le langage de balisage extensible vocal (VoiceXML) vers...

http://www.yoyodesign.org/doc/w3c/voicexml20/

l'invite principale et la valeur de sa variable d'lment de formulaire est xe " true". la deuxime itration, le premier lment block est saut car sa valeur d'lment de formulaire est maintenant dnie et le champ pays est slectionn puisque l'tat de la variable de dialogue n'est pas dnie. Ce champ invite l'utilisateur indiquer le pays puis assigne la rponse la variable. On trouvera une description dtaille du remplissage des variables d'lment de formulaire depuis une grammaire de niveau champ dans le chapitre 3.1.6. La troisime itration du formulaire invite remplir le champ ville pour le collecter ensuite. La quatrime itration excute l'lment block nal et eectue une transition vers une autre adresse URI. Chaque champ de cet exemple produit une invite dans un certain ordre an d'obtenir une rponse, indique une grammaire dnissant ce qu'il faut couter et comporte un gestionnaire d'vnement pour l'vnement help. L'vnement help est suscit ds que l'utilisateur demande une assistance. Le gestionnaire d'vnement help capture ces vnements et fait une invite plus dtaille. Voici un second formulaire dirig, qui invite donner des informations de carte de crdit :
<?xml version="1.0" encoding="UTF-8"?> <vxml version="2.0" xmlns="http://www.w3.org/2001/vxml" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.w3.org/2001/vxml http://www.w3.org/TR/voicexml20/vxml.xsd"> <form id="obtenir_info_carte"> <block>Nous avons maintenant besoin du type de votre carte de crdit, de son numro et de sa date d'expiration.</block> <field name="type_carte"> <prompt count="1">Quel est le type de votre carte de crdit ?</prompt> <prompt count="2">Type de carte ?</prompt> <!-- Ceci est une grammaire intgre. --> <grammar type="application/srgs+xml" root="r2" version="1.0"> <rule id="r2" scope="public"> <one-of> <item>visa</item> <item>master <item repeat="0-1">card</item></item> <item>amex</item> <item>american express</item> </one-of> </rule> </grammar> <help> Veuillez dire Visa, MasterCard ou American Express.</help> </field> <field name="num_carte"> <grammar type="application/srgs+xml" src="/grammars/digits.grxml"/> <prompt count="1">Quel est le numro de votre carte ?</prompt> <prompt count="2">Numro de carte ?</prompt> <catch event="help"> <if cond="type_carte =='amex' || type_carte =='american express'"> Veuillez dire ou bien saisir les 15 chiffres du numro de votre carte. <else/> Veuillez dire ou bien saisir les 16 chiffres du numro de votre carte. </if> </catch>

32 of 212

27/07/2012 22:31

Le langage de balisage extensible vocal (VoiceXML) vers...

http://www.yoyodesign.org/doc/w3c/voicexml20/

<filled> <if cond="(type_carte == 'amex' || type_carte =='american express') &amp;&amp; num_carte.length != 15"> Les numros des cartes American Express doivent avoir 15 chiffres. <clear namelist="num_carte"/> <throw event="nomatch"/> <elseif cond="type_carte != 'amex' &amp;&amp; type_carte !='american express' &amp;&amp; num_carte.length != 16"/> Les numros des cartes MasterCard et Visa ont 16 chiffres. <clear namelist="num_carte"/> <throw event="nomatch"/> </if> </filled> </field> <field name="date_expiration"> <grammar type="application/srgs+xml" src="/grammars/digits.grxml"/> <prompt count="1">Quelle est la date d'expiration de votre carte ?</prompt> <prompt count="2">Date d'expiration ?</prompt> <help> Veuillez dire ou saisir la date d'expiration, par exemple, un deux zro un. </help> <filled> <!-- Validation de la date mmaa --> <var name="mm"/> <var name="i" expr="date_expiration.length"/> <if cond="i == 3"> <assign name="mm" expr="date_expiration.substring(0,1)"/> <elseif cond="i == 4"/> <assign name="mm" expr="date_expiration.substring(0,2)"/> </if> <if cond="mm == '' || mm &lt; 1 || mm &gt; 12"> <clear namelist="date_expiration"/> <throw event="nomatch"/> </if> </filled> </field> <field name="confirmer"> <grammar type="application/srgs+xml" src="/grammars/boolean.grxml"/> <prompt> J'ai une carte <value expr="type_carte"/>, numro <value expr="num_carte"/>, expirant le <value expr="date_expiration"/>. Est-ce exact ? </prompt> <filled> <if cond="confirmer"> <submit next="placer_commande.asp" namelist="type_carte num_carte date_expiration"/> </if> <clear namelist="type_carte num_carte date_expiration confirmer"/> </filled> </field> </form> </vxml>

Remarquez que les alternatives grammaticales amex et american express renvoient des valeurs littrales qui demandent un traitement distinct dans les
33 of 212 27/07/2012 22:31

Le langage de balisage extensible vocal (VoiceXML) vers...

http://www.yoyodesign.org/doc/w3c/voicexml20/

expressions conditionnelles. Le chapitre 3.1.5 dcrit comment utiliser des rattachements smantiques dans la grammaire pour ne renvoyer qu'une seule reprsentation de ces entres. Le dialogue pourrait prendre la tournure suivante : O : Nous avons maintenant besoin du type de votre carte de crdit, de son numro et de sa date d'expiration. O : Quel est le type de votre carte de crdit ? H : Discover O : Je n'ai pas compris ce que vous avez dit (un message implicite propre la platerforme). O : Type de carte ? (on utilise la seconde invite cette fois-ci) H : M.rd. ! (fort heureusement traite comme aide par cette plateforme). O : Veuillez dire Visa, MasterCard ou American Express. H : Heuh... Amex (cette plateforme ignore le Heuh ) O : Quel est le numro de votre carte ? H : Un deux trois quatre ... attendez ... O : Je n'ai pas compris ce que vous avez dit. O : Numro de carte ? H: (utilisation de tonalits DTMF) 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 # O : Quelle est la date d'expiration de votre carte ? H : un deux zro un O : J'ai une carte Amex, numro 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6, expirant le 1 2 0 1. Est-ce exact ? H : Oui Les champs sont les blocs de contruction principaux des formulaires. Un champ dclare une variable et dnit les invites, les grammaires, les squences DTMF, les messages d'assistance et les autres gestionnaires d'vnements qui servent l'obtenir. Chaque champ dclare une variable d'lment de formulaire VoiceXML dans la porte du dialogue du formulaire. Ces variables peuvent faire l'objet d'une soumission une fois le formulaire rempli ou tre copies dans d'autres variables. Chaque champ possde ses propres grammaires vocales et/ou DTMF, dnies explicitement au moyen d'lments grammar ou bien implicitement au moyen d'un attribut type. L'attribut type peut s'utiliser pour les grammaires intgres, comme les grammaires de type digits et boolean dans l'exemple. Chaque champ peut dnir une ou plusieurs invites. S'il n'y a qu'une invite, elle est

34 of 212

27/07/2012 22:31

Le langage de balisage extensible vocal (VoiceXML) vers...

http://www.yoyodesign.org/doc/w3c/voicexml20/

rpte jusqu' tant que l'utilisateur fournisse une valeur. S'il y a plusieurs invites, elles sont slectionnes pour tre reproduites selon l'algorithme de slection des invites (voir le chapitre 4.1.6). L'attribut count sert dterminer quelle invite utiliser chaque itration. Dans l'exemple, les invites se raccourcissent. C'est ce qu'on appelle une incitation dgressive. Les lments <catch event="help"> sont des gestionnaires d'vnement dnissant ce qu'il faut faire lorsque l'utilisateur demande une assistance. Les messages d'assistance peuvent galement tre dgressifs. On peut les abrger ; les deux formes suivantes sont ainsi quivalentes :
<catch event="help"> Veuillez dire visa, mastercard ou amex. </catch> <help> Veuillez dire visa, mastercard ou amex. </help>

L'lment filled dnit ce qu'il faut faire lorsque l'utilisateur fournit une entre reconnue pour le champ. Une de ses utilisations consiste dnir des contraintes d'intgrit sur et en plus des vrications faites par les grammaires, comme dans le champs date_expiration de l'exemple prcdent.

2.1.5 Les formulaires initiative mixte


Le chapitre prcdent traitait de formulaires mettant en uvre des conversations rigides conduites par l'ordinateur. Pour faire un formulaire initiative mixte, o l'ordinateur et l'humain mnent tous deux la conversation, il faut que le formulaire ait une ou plusieurs grammaires de niveau formulaire. On peut crire le dialogue de plusieurs faons. Un style de composition courant combine un lment initial, invitant une rponse gnrale, et des lments field, invitant des renseignements particuliers. L'exemple ci-dessous en est une illustration. On peut obtenir un eet similaire avec des techiques plus complexes, comme utiliser l'attribut cond sur des lments field. Si un formulaire a des grammaires de niveau formulaire, alors : Ses lments d'entre peuvent tre remplis dans n'importe quel ordre ; Plus d'un lment d'entre peut tre rempli en rsultat d'une seule parole de l'utilisateur. Seuls les lments d'entre (et non les lments de commande) peuvent tre remplis en rsultat du ltrage d'une grammaire de niveau formulaire. Le remplissage des variables de champ lors de l'utilisation d'une grammaire de niveau formulaire est dcrit dans le chapitre 3.1.6. galement, les grammaires du formulaire peuvent tre actives lorsque l'utilisateur se trouve dans d'autres dialogues. Si un document comporte deux formulaires, disons un formulaire pour une location de voiture et un autre pour une rservation d'htel, et que les deux formulaires ont des grammaires actives pour le document, alors un utilisateur pourrait rpondre une demande de renseignements concernant la rservation d'htel par des renseignements concernant la location de voiture et donc conduire l'ordinateur

35 of 212

27/07/2012 22:31

Le langage de balisage extensible vocal (VoiceXML) vers...

http://www.yoyodesign.org/doc/w3c/voicexml20/

discuter de location de voiture la place. L'utilisateur peut avoir un change avec n'importe quelle grammaire et, par consquent, avoir des lments d'entre qui soient xs et des actions qui soient entreprises en rponse. Exemple. Voici une deuxime version du service d'informations mtorologiques, montrant une initiative mixte. Dans un but d'illustration, on l'a amlior avec de la publicit et avec une conrmation de la ville et du pays :
<?xml version="1.0" encoding="UTF-8"?> <vxml version="2.0" xmlns="http://www.w3.org/2001/vxml" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.w3.org/2001/vxml http://www.w3.org/TR/voicexml20/vxml.xsd"> <form id="info_meteo"> <grammar src="ville-et-pays.grxml" type="application/srgs+xml"/> <!-- L'appelant ne peut pas interrompre la publicit du jour. --> <block> <prompt bargein="false"> Bienvenue sur ce service d'informations mtorologiques ! <audio src="http://www.pubs-en-ligne.example.com/wis.wav"/> </prompt> </block> <initial name="debut"> <prompt> Quels sont la ville et le pays dont vous voulez connatre la mto ? </prompt> <help> Veuiller prononcer le nom de la ville et celui du pays pour lesquels vous souhaitez un bulletin mtorologique </help> <!-- Si l'utilisateur reste silencieux, faire une nouvelle invite puis essayer des invites diriges. --> <noinput count="1"> <reprompt/></noinput> <noinput count="2"> <reprompt/> <assign name="debut" expr="true"/></noinput> </initial> <field name="pays"> <prompt>Quel pays ?</prompt> <help> Veuillez prononcer le nom du pays dont vous voulez connatre la mto. </help> </field> <field name="ville"> <prompt>Veuillez prononcer le nom de la ville situe en <value expr="pays"/> dont vous voulez connatre la mto.</prompt> <help>Veuillez prononcer le nom de la ville dont vous voulez connatre la mto.</help> <filled> <!-- La plupart de nos clients habitent Paris. --> <if cond="ville == 'Paris' &amp;&amp; pays == undefined"> <assign name="pays" expr="'France'"/> </if> </filled> </field>

36 of 212

27/07/2012 22:31

Le langage de balisage extensible vocal (VoiceXML) vers...

http://www.yoyodesign.org/doc/w3c/voicexml20/

<field name="continuer" modal="true"> <grammar type="application/srgs+xml" src="/grammars/boolean"/> <prompt>Voulez-vous entendre le bulletin mtorologique pour <value expr="ville"/>, <value expr="pays"/> ? </prompt> <filled> <if cond="continuer"> <prompt bargein="false"> <audio src="http://www.pubs-en-ligne.example.com/wis2.wav"/> </prompt> <submit next="/servlet/meteo" namelist="ville pays"/> </if> <clear namelist="debut ville pays continuer"/> </filled> </field> </form> </vxml>

Voici une transcription montrant les avantages prsents par ce type dialogue, mme pour un utilisateur novice : O : Bienvenue sur ce service d'informations mtorologiques ! Achetez la mayonnaise de tante Louise !. O : Quels sont la ville et le pays dont vous voulez connatre la mto ? H : Heuh... France. O : Veuillez prononcer le nom de la ville situe en France dont vous voulez connatre la mto. H : La Rochelle, s'il vous plat. O : Voulez-vous entendre le bulletin mtorologique de La Rochelle, France ? H : Non O : Quels sont la ville et le pays dont vous voulez connatre la mto ? H : Paris. O : Voulez-vous entendre le bulletin mtorologique pour Paris, France ? H : Oui O : N'oubliez pas d'acheter la mayonnaise de tante Louise ce soir ! O : Journe ensoleille en gnral avec un maximum 25. Rafrachissement en soire... La valeur de l'attribut modal du champ continuer est xe "true". Ce qui entrane la dsactivation de toutes les grammaires sauf celles dnies dans l'lment de formulaire courant, de sorte que la seule grammaire active pendant la dure de ce champ est la grammaire intgre de type boolean. Un utilisateur expriment peut aller beaucoup plus vite (mais il toujours oblig

37 of 212

27/07/2012 22:31

Le langage de balisage extensible vocal (VoiceXML) vers...

http://www.yoyodesign.org/doc/w3c/voicexml20/

d'couter les publicits) : O : Bienvenue sur ce service d'informations mtorologiques ! Achetez la mayonnaise de tante Louise ! O : Quels sont... H (interrompant) : Paris O : Voulez-vous... H (interrompant) : Oui O : N'oubliez pas d'acheter la mayonnaise de tante Louise ce soir ! O : Journe ensoleille en gnral avec un maximum 25. Rafrachissement en soire... 2.1.5.1 Le contrle de l'ordre de collecte des champs On peut personnaliser l'algorithme FIA de plusieurs manires. Une faon consiste assigner une valeur une variable d'lment de formulaire, de sorte que l'lment de formulaire ne soit pas slectionn. Une autre faon est d'utiliser un lment clear pour xer la valeur de la variable d'lment de formulaire " undefined", ce qui force l'algorithme FIA visiter de nouveau l'lment de formulaire. Une autre mthode consiste dnir explicitement l'lment de formulaire suivant visiter au moyen d'une dclaration <goto nextitem>. Ce qui force un transfert immdiat vers cet lment de formulaire, mme si la valeur d'un quelconque attribut cond prsent tait value "false". Aucune variable ni condition ni compteur dans l'lment de formulaire vis ne sera rinitialis. L'invite de l'lment de formulaire sera reproduite mais si elle a dj t visite. Si la dclaration <goto nextitem> apparat au cours d'une action filled, le reste de l'action filled ainsi que toutes les ventuelles actions filled en cours seront sauts. Voici un exemple de dclaration <goto nextitem> excut en rponse l'vnement exit :
<?xml version="1.0" encoding="UTF-8"?> <vxml version="2.0" xmlns="http://www.w3.org/2001/vxml" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.w3.org/2001/vxml http://www.w3.org/TR/voicexml20/vxml.xsd"> <link event="exit"> <grammar type="application/srgs+xml" src="/grammars/exit.grxml"/> </link> <form id="sondage_2000_03_30"> <catch event="exit"> <reprompt/> <goto nextitem="confirmer_quitter"/> </catch> <block> <prompt> Bonjour, vous avez t tir au sort afin de rpondre des questions critiques touchant la politique trangre des tats-Unis.

38 of 212

27/07/2012 22:31

Le langage de balisage extensible vocal (VoiceXML) vers...


</prompt> </block>

http://www.yoyodesign.org/doc/w3c/voicexml20/

<field name="q1"> <grammar type="application/srgs+xml" src="/grammars/boolean.grxml"/> <prompt>tes-vous d'accord avec la position du FMI concernant la privatisation de certains secteurs du ministre de l'agriculture du Burkina Faso ?</prompt> </field> <field name="q2"> <grammar type="application/srgs+xml" src="/grammars/boolean.grxml"/> <prompt>Si ces privatisations avaient lieu, est-ce que ses effets bnficieraient majoritairement Ouagadougou et Bobo-Dioulasso ?</prompt> </field> <field name="q3"> <grammar type="application/srgs+xml" src="/grammars/boolean.grxml"/> <prompt>tes-vous d'accord que la production de sorgho et de millet pourraient augmenter de ce fait jusqu' quatre pour cent l'an ?</prompt> </field> <block> <submit next="enregistrer" namelist="q1 q2 q3"/> </block> <field name="confirmer_quitter"> <grammar type="application/srgs+xml" src="/grammars/boolean.grxml"/> <prompt>Vous avez choisi de ne pas rpondre. tes-vous sr de vouloir le faire, ce qui est susceptible d'affecter ngativement la politique trangre des tats-Unis vis--vis de l'Afrique sub-saharienne pour les dcennies venir ?</prompt> <filled> <if cond="confirmer_quitter"> C'est entendu, mais le Dpartement d'tat des tats-Unis est mcontent. <exit/> <else/> Bon, reprenons o nous avons arrt. <clear namelist="confirmer_quitter"/> </if> </filled> <catch event="noinput nomatch"> <throw event="exit"/> </catch> </field> </form> </vxml>

Si l'utilisateur dit quitter [ndt. exit] supposer que la grammaire ) en rponse n'importe quelle question du sondage, un vnement exit est suscit par la plateforme et captur par le gestionnaire d'vnement catch. Ce gestionnaire force le passage suivant au champ conrmer_quitter . Le champ conrmer_quitter n'aurait pas t visit au cours du remplissage normal du sondage parce que l'lment block prcdent aurait pass le contrle au script d'enregistrement.

2.1.6 L'algorithme d'interprtations des formulaires


Nous avons prsent l'algorithme d'interprtation des formulaires (FIA) un niveau

39 of 212

27/07/2012 22:31

Le langage de balisage extensible vocal (VoiceXML) vers...

http://www.yoyodesign.org/doc/w3c/voicexml20/

conceptuel. Dans ce chapitre, nous le dcrivons de manire plus dtaille. Une description plus formelle est fournie dans l'annexe C. 2.1.6.1 La phase d'initialisation Ds lors qu'on entre dans un formulaire, celui-ci est initialis. Les variables du compteur d'invites interne (dans la porte du dialogue du formulaire) sont rinitialises "1". Chaque variable (les lments var de niveau formulaire et les variables d'lment de formulaire) est initialise, dans l'ordre du document, la valeur "undefined" ou la valeur de l'attribut expr concern. 2.1.6.2 La boucle principale La boucle principale de l'algorithme FIA comporte trois phases : La phase de slection: l'lment de formulaire suivant non rempli est slectionn pour une visite. La phase de collecte : l'lment de formulaire slectionn est visit, ce qui produit une invite de l'utilisateur une entre, l'activation des grammaires appropries puis l'attente et la collecte d'une entre (comme une phrase prononce ou l'appui de touches DTMF) ou d'un vnement (comme une demande d'assistance ou un dpassement du dlai d'entre). La phase de traitement : une entre se traite en remplissant les lments d'entre et en excutant les lments field pour eectuer certaines actions telle qu'une validation d'entre. Un vnement se traite en excutant le gestionnaire d'vnement appropri pour le type d'vnement en question. Remarquez que l'algorithme FIA peut recevoir une entre (un ensemble de couples de valeurs de grammaire attribut/attribut) qui aura t collecte pendant que l'utilisateur tait dans l'interprtation d'un autre formulaire. Auquel cas, la premire itration de la boucle principale saute les phases de slection et de collecte pour aller directement la phase de traitement avec cette entre. Remarquez galement que si une erreur survient au cours de la phase de slection ou de collecte provoquant la gnration d'un vnement, alors l'vnement est suscit et l'algorithme FIA se place directement dans la phase de traitement. 2.1.6.2.1 La phase de slection Le but de la phase de slection consiste slectionner l'lment de formulaire suivant visiter. Elle se droule comme suit : Si un lment goto, trouv dans la phase de traitement de la dernire itration de la boucle principale, comportait la dclaration <goto nextitem>, alors l'lment de formulaire dsign est slectionn. Sinon, le premier lment de formulaire dont la valeur de la condition de veille est "false" est retenu pour une visite. Si une erreur survient pendant la vrication des conditions de veille, l'vnement concern est suscit, ce qui saute la phase de collecte, puis examin dans la phase de traitement. Si aucune condition de veille n'est fausse et que la dernire itration a parcouru le

40 of 212

27/07/2012 22:31

Le langage de balisage extensible vocal (VoiceXML) vers...

http://www.yoyodesign.org/doc/w3c/voicexml20/

formulaire sans rencontrer un transfert de contrle explicite, alors l'algorithme FIA produit implicitement une opration exit (de la mme manire, si l'excution se poursuit hors d'un formulaire, comme lorsqu'une erreur est gnre hors d'un formulaire, sans qu'il y ait de transfert explicite du contrle, alors l'interprteur produira une opration exit implicite). 2.1.6.2.2 La phase de collecte Le but de la phase de collecte consiste recueillir une entre ou un vnement. L'lment de formulaire slectionn est visit, ce qui produit des actions dpendant du type de l'lment de formulaire : Si c'est un lment field, ou record, qui est visit, alors l'algorithme FIA slectionne et met en le d'attente toutes les invites, selon le compteur d'invites de l'lment et les conditions des invites. Ensuite, il active et coute la ou les grammaires de niveau champ et les ventuelles grammaires de niveau suprieur, et attend que l'lment se remplisse ou qu'un vnement soit gnr. Si c'est un lment transfer qui est visit, alors les invites sont mises en le d'attente, selon le compteur d'invites de l'lment et les conditions des invites. Les grammaires des lments sont actives. La le d'attente est excute avant que le transfert n'ait lieu. Si c'est un lment subdialog, ou object, qui est visit, alors les invites sont mises en le d'attente, selon le compteur d'invites de l'lment et les conditions des invites. Les grammaires ne sont pas actives. Au contraire, le comportement de collecte des entres est dni par le contexte excutant du sous-dialogue ou de l'objet. La le d'attente n'est pas lue tant que le sous-dialogue ou l'objet n'ont pas t excuts, mais elle devrait plutt l'tre au cours de la collecte d'entres suivante. Si c'est un lment initial qui est visit, alors l'algorithme FIA slectionne et met en le d'attente les invites, selon le compteur d'invites de l'lment initial et les conditions des invites. Il coute ensuite la ou les grammaires de niveau formulaire et les ventuelles grammaires actives de niveau suprieur. Il attend enn la reconnaissance par une grammaire ou un vnement. Un lment block sera visit en xant la valeur de sa variable d'lement de formulaire "true" puis en valuant son contenu et enn en ignorant la phase de traitement. Aucune entre n'est collecte et l'itration suivante de la boucle principale de l'algorithme FIA est engage. 2.1.6.2.3 La phase de traitement Le but de la phase de traitement consiste traiter l'entre ou l'vnement collects au cours des phases prcdentes, comme suit : Si un vnement s'est produit (tels qu'une non-entre ou un raccrochage), alors l'lment catch applicable est identi puis excut. La slection de l'lment catch applicable commence dans la porte de l'lment de forme courant puis se poursuit vers l'extrieur dans les portes des dialogues englobants. Cela peut entraner l'interruption de l'algorithme FIA (par exemple, s'il eectue une transition vers un dialogue ou un document dirents ou s'il excute un lment exit) ou son basculement dans l'itration suivante de la boucle principale (par

41 of 212

27/07/2012 22:31

Le langage de balisage extensible vocal (VoiceXML) vers...

http://www.yoyodesign.org/doc/w3c/voicexml20/

exemple, lorsque le gestionnaire d'vnement help implicite est excut). Si une entre est ltre par une grammaire dnie par un lment link, alors la transition vers le lien est excute ou son vnement est suscit. Si l'lment link suscite un vnement, celui-ci est trait dans le contexte de l'lment de formulaire courant (par exemple, initial, field, transfer, et ainsi de suite). Si une entre est ltre par une grammaire dans un formulaire autre que celui courant, alors l'algorithme FIA se termine, l'autre formulaire est initialis et l'interprtation de ce formulaire commence avec cette entre dans sa phase de traitement. Si une entre est ltre par une grammaire dans ce formulaire, alors : Le rsultat smantique issu de la grammaire est reli une ou plusieurs variables d'lment de formulaire, comme dcrit dans le chapitre 3.1.6. Les actions filled dclenches par ces assignations sont identies, comme dcrit dans le chapitre 2.4. Chaque action filled identie est excute dans l'ordre du document. Si des lments submit, disconnect, exit, return, goto ou throw sont rencontrs, alors les lments filled restants ne sont pas excuts et l'algorithme FIA soit se termine, soit poursuit dans l'itration suivante de la boucle principale. Un lment reprompt ne termine pas l'algorithme FIA (le nom suggre en eet une action), mais place plutt un drapeau qui aecte le traitement des invites dans l'itration suivante de l'algorithme FIA. Si un vnement est sucit dans la porte d'un lment filled, alors la slection du gestionnaire d'vnement commence dans la porte de l'lment filled en question, ce qui pourrait tre celle d'un lment de formulaire ou du formulaire lui-mme, puis se poursuit vers l'extrieur dans les portes des dialogues englobants. Aprs achvement de la phase de traitement, l'interprtation se poursuit en revenant la phase de slection. On trouvera un algorithme d'interprtation des formulaires plus dtaill dans l'annexe C.

2.2 Les menus


Un menu est un raccourci syntaxique commode pour un formulaire ; il contient un seul champ anonyme qui invite l'utilisateur faire un choix et il eectue une transition vers divers points en fonction de ce choix. Tout comme un formulaire rgulier, sa grammaire peut avoir une porte xe de faon tre active lorsque l'utilisateur excute un autre dialogue. Le menu suivant ore trois choix l'utilisateur :
<?xml version="1.0" encoding="UTF-8"?> <vxml version="2.0" xmlns="http://www.w3.org/2001/vxml" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.w3.org/2001/vxml http://www.w3.org/TR/voicexml20/vxml.xsd"> <menu> <prompt> Bienvenue la maison. Dis ton choix parmi : <enumerate/> </prompt> <choice next="http://www.sports.example.com/vxml/debut.vxml">

42 of 212

27/07/2012 22:31

Le langage de balisage extensible vocal (VoiceXML) vers...

http://www.yoyodesign.org/doc/w3c/voicexml20/

Sports </choice> <choice next="http://www.meteo.example.com/intro.vxml"> Mto </choice> <choice next="http://www.astronomie.example.com/voice/astrojournal.vxml"> Le journal d'astrophysique de l'astronome </choice> <noinput>Veux-tu dire ton choix parmi <enumerate/></noinput> </menu> </vxml>

Ce dialogue pourrait se drouler comme suit : O : Bienvenue la maison. Dis ton choix parmi : sports, mto, le journal d'astrophysique de l'astronome. H : Astrologie. O : Je n'ai pas compris ce que tu as dit (un message implicite propre la plateforme). O : Bienvenue la maison. Dis ton choix parmi : sports, mto, le journal d'astrophysique de l'astronome. H : sports. O : (poursuit vers http://www.sports.example.com/vxml/debut.vxml)

2.2.1 L'lment menu


Cet lment identie le menu et dtermine la porte de ses grammaires. Les attributs de l'lment menu sont :
id

L'identicateur du menu. Il permet aux lments goto et submit de cibler le menu. La porte des grammaires du menu. Si sa valeur est " dialog" (la valeur implicite), alors les grammaires du menu ne sont actives que lorsque l'utilisateur entre dans le menu. Si sa valeur est "document", alors les grammaires sont actives pour la totalit du document (ou si le menu se trouve dans le document racine d'application, pour n'importe quel document charg faisant partie de l'application). Lorsque sa valeur est xe "true", les neuf premiers choix, qui n'auraient pas dni explicitement une valeur pour l'attribut dtmf, recevront les valeurs implicites "1", "2", etc. Les choix restants, qui n'auraient pas dni explicitement une valeur pour l'attribut dtmf, ne recevront pas de valeurs DTMF (et, par consquent, ne pourront pas faire l'objet d'une correspondance via une saisie DTMF). Si des choix dnissent des squences DTMF propres qui sont autre chose que des tonalits "*", "#" ou "0", alors une erreur Tableau 7 : Les attributs de l'lment menu

scope

dtmf

43 of 212

27/07/2012 22:31

Le langage de balisage extensible vocal (VoiceXML) vers...

http://www.yoyodesign.org/doc/w3c/voicexml20/

error.badfetch sera suscite. La valeur implicite de l'attribut est "false". Lorsque sa valeur est xe "exact" (la valeur implicite), alors le texte des lments choice composant le menu dnit la phrase exacte reconnatre. Pour une valeur de accept "approximate", le texte des lments choice dnit une phrase de reconnaissance approximative (comme dcrit dans le chapitre 2.2.5). Chaque lment choice peut surcharger ce rglage.

2.2.2 L'lment choice


L'lment choice a plusieurs usages : Il peut dnir une grammaire vocale au moyen d'un lment grammar ou bien la gnrer automatiquement selon le processus dcrit dans le chapitre 2.2.5. Il peut dnir une grammaire DTMF, comme expliqu dans le chapitre 2.2.3. Son contenu peut servir former la chane de l'invite de l'lment enumerate, comme dcrit dans le chapitre 2.2.4. Il dnit l'vnement qu'il faut susciter ou bien l'adresse URI o aller lorsque le choix est slectionn. Les attributs de l'lment choice sont : La squence DTMF pour ce choix. Elle quivaut une grammaire DTMF simple et les proprits DTMF (voir le chapitre 6.3.3) s'appliquent la reconnaissance de la squence. Contrairement aux grammaires DTMF, les blancs sont optionnels : dtmf="123#" quivaut dtmf="1 2 3 #" . Surcharge le rglage de l'attribut accept de l'lment menu pour ce choix particulier. Lorsque sa valeur est "accept" (la valeur implicite), le texte de l'lment choice dnit la phrase exacte reconnatre. Pour la valeur "approximate", le texte de l'lment choice dnit une phrase de reconnaissance approximative (comme dcrit dans le chapitre 2.2.5). L'adress URI du dialogue ou du document suivre. Dnit une expression valuer comme une adresse URI vers laquelle eectuer une transition au lieu de dnir un attribut next. Dnit un vnement susciter au lieu de dnir un attribut next. Tableau 8 : Les attributs de l'lment choice

dtmf

accept

next

expr

event

44 of 212

27/07/2012 22:31

Le langage de balisage extensible vocal (VoiceXML) vers...

http://www.yoyodesign.org/doc/w3c/voicexml20/

eventexpr

Une expression ECMAScript correspondant au nom de l'vnement susciter. La chane du message fournissant une explication supplmentaire concernant l'vnement qui est suscit. Le message est disponible comme valeur d'une variable dans la porte de l'lment catch concern, voir le chapitre 5.2.2. Une expression ECMAScript correspondant la chane du message. Voir le chapitre 6.1. La valeur implicite est celle de la proprit fetchaudio. Voir le chapitre 6.1. La valeur implicite est celle de la proprit documentfetchhint. Voir le chapitre 6.1. La valeur implicite est celle de la proprit fetchtimeout. Voir le chapitre 6.1. La valeur implicite est celle de la proprit documentmaxage. Voir le chapitre 6.1. La valeur implicite est celle de la proprit documentmaxstale.

message

messageexpr

fetchaudio

fetchhint

fetchtimeout

maxage

maxstale

On doit dnir exactement un seul d'entre les attributs next, expr, event ou eventexpr, sinon un vnement error.badfetch est suscit. On peut indiquer exactement un seul d'entre les attributs message ou messageexpr, sinon un vnement error.badfetch est suscit. Si un lment grammar est dni dans un lment choice, alors la grammaire externe sera utilise au lieu d'une grammaire gnre automatiquement. Cela permet au dveloppeur de contrler prcisment la grammaire associe l'lment choice, par exemple :
<?xml version="1.0" encoding="UTF-8"?> <vxml version="2.0" xmlns="http://www.w3.org/2001/vxml" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.w3.org/2001/vxml http://www.w3.org/TR/voicexml20/vxml.xsd"> <menu> <choice next="http://www.sports.example.com/vxml/debut.vxml"> <grammar src="sports.grxml" type="application/srgs+xml"/> Sports </choice> <choice next="http://www.meteo.example.com/intro.vxml"> <grammar src="meteo.grxml" type="application/srgs+xml"/> Mto </choice> <choice next="http://www.astronomie.example.com/voice/astrojournal.vxml"> <grammar src="astrojournal.grxml" type="application/srgs+xml"/> Le journal d'astrophysique de l'astronome </choice> </menu>

45 of 212

27/07/2012 22:31

Le langage de balisage extensible vocal (VoiceXML) vers...


</vxml>

http://www.yoyodesign.org/doc/w3c/voicexml20/

2.2.3 Les tonalits DTMF dans les menus


Les menus peuvent dpendre seulement de la voix, seulement des tonalits DTMF ou bien d'une combinaison des deux en plaant un lment property dans l'lment menu. Voici un menu uniquement DTMF, chacun des choix recevant une squence DTMF explicite par le biais d'un attribut dtmf :
<?xml version="1.0" encoding="UTF-8"?> <vxml version="2.0" xmlns="http://www.w3.org/2001/vxml" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.w3.org/2001/vxml http://www.w3.org/TR/voicexml20/vxml.xsd"> <menu> <property name="mode_entree" value="dtmf"/> <prompt> Pour les sports : tapez 1, pour la mto : tapez 2, pour le journal d'astrophysique de l'astronome : tapez 3. </prompt> <choice dtmf="1" next="http://www.sports.example.com/vxml/debut.vxml"/> <choice dtmf="2" next="http://www.meteo.example.com/intro.vxml"/> <choice dtmf="3" next="http://www.astronomie.example.com/astrojournal.vxml"/> </menu> </vxml>

On peut, autrement, xer la valeur de l'attribut dtmf de l'lment menu "true" an d'assigner des chires DTMF squentiels chacun des neuf premiers choix, pour autant que ceux-ci n'aient pas dni leur propre squence DTMF : le premier choix ayant une valeur DTMF "1", et ainsi de suite :
<?xml version="1.0" encoding="UTF-8"?> <vxml version="2.0" xmlns="http://www.w3.org/2001/vxml" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.w3.org/2001/vxml http://www.w3.org/TR/voicexml20/vxml.xsd"> <menu dtmf="true"> <property name="mode_entree" value="dtmf"/> <prompt> Pour les sports : tapez 1, pour la mto : tapez 2, pour le journal d'astrophysique de l'astronome : tapez 3. </prompt> <choice next="http://www.sports.example.com/vxml/debut.vxml"/> <choice next="http://www.meteo.example.com/intro.vxml"/> <choice dtmf="0" next="#operateur"/> <choice next="http://www.astronomie.example.com/voice/astrojournal.vxml"/> </menu> </vxml>

2.2.4 L'lment enumerate


L'lment enumerate est une description, gnre automatiquement, des choix disponibles pour l'utilisateur. Il dnit un modle lequel s'applique chacun des choix dans l'ordre o ceux-ci apparaissent dans le menu. En l'absence d'un contenu, c'est un modle implicite listant tous les choix et dtermin par le contexte d'interprtation qui

46 of 212

27/07/2012 22:31

Le langage de balisage extensible vocal (VoiceXML) vers...

http://www.yoyodesign.org/doc/w3c/voicexml20/

est utilis. En prsence d'un contenu, c'est alors le contenu qui dnit le modle. Cette dnition peut faire appel deux variables spciales : _prompt qui reprsente l'invite du choix et _dtmf qui correspond une reprsentation normalise (c'est--dire, un seul blanc entre les atomes DTMF) de la squence DTMF assigne au choix (remarquez que, si aucune squence DTMF n'est assigne l'lment choice ou si une grammaire est dnie dans l'lment choice, alors la variable _dtmf reoit la valeur ECMAScript "undefined"). Par exemple, rcrivons le menu ainsi :
<?xml version="1.0" encoding="UTF-8"?> <vxml version="2.0" xmlns="http://www.w3.org/2001/vxml" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.w3.org/2001/vxml http://www.w3.org/TR/voicexml20/vxml.xsd"> <menu dtmf="true"> <prompt> Bienvenue la maison. <enumerate> Pour <value expr="_prompt"/>, tape <value expr="_dtmf"/>. </enumerate> </prompt> <choice next="http://www.sports.example.com/vxml/debut.vxml"> les sports </choice> <choice next="http://www.meteo.example.com/intro.vxml"> la mto </choice> <choice next="http://www.astronomie.example.com/voice/astrojournal.vxml"> le journal d'astrophysique de l'astronome </choice> </menu> </vxml>

L'invite du menu serait alors : O : Bienvenue la maison. Pour les sports, tape 1. Pour la mto, tape 2. Pour le journal d'astrophysique de l'astronome, tape 3. L'lment enumerate peut servir dans les invites et dans les lments catch associs aux lments menu et field contenant des lments option, comme expliqu dans le chapitre 2.3.1.3. Un vnement error.semantic est suscit si l'lment enumerate est utilis ailleurs (par exemple, un lment enumerate dans un autre lment enumerate).

2.2.5 La gnration des grammaires


Toute phrase de choix dnit un ensemble de mots et de phrases couter. Une phrase de choix se construit partir des donnes de type PCDATA des lments contenus directement ou indirectement dans un lment choice d'un lment menu ou bien dans un lment option d'un lment field. Si la valeur de l'attribut accept est "exact", alors l'utilisateur doit dire les mots de la phrase entire dans le mme ordre que celui o ils apparaissent dans la phrase de choix. Si la valeur de l'attribut accept est "approximate", alors le choix est susceptible d'tre retenu quand l'utilisateur prononce une sous-phrase de l'expression. Par exemple, en

47 of 212

27/07/2012 22:31

Le langage de balisage extensible vocal (VoiceXML) vers...

http://www.yoyodesign.org/doc/w3c/voicexml20/

rponse l'invite Le journal d'astrophysique de l'astronome , l'utilisateur pourrait dire astronome , astrophysique , le journal de l'astronome , le journal d'astrophysique , et ainsi de suite. La grammaire correspondante peut dpendre de la langue et de la plateforme employes. Comme exemple d'utilisation des valeurs "exact" ou "approximate" dans dirents choix :
<?xml version="1.0" encoding="UTF-8"?> <vxml version="2.0" xmlns="http://www.w3.org/2001/vxml" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.w3.org/2001/vxml http://www.w3.org/TR/voicexml20/vxml.xsd"> <menu accept="approximate"> <choice next="http://www.astronomie.example.com/voice/astrojournal.vxml"> Le journal d'astrophysique de l'astronome </choice> <choice accept="exact" next="http://www.physiquehebdo.example.com/voice/example.vxml"> L'hebdo de la physique </choice> <choice accept="exact" next="http://www.gazette-des-particules.example.com/voice/example.vxml"> La gazette des particules </choice> <choice next="http://www.astrojour.example.com/voice/example.vxml"> Astronomie du jour </choice> </menu> </vxml>

Puisque le premier lment choice dnit une valeur "approximate", l'utilisateur peut dire une sous-phrase pour le choisir ; par exemple, dire astronome ou journal d'astrophysique . Par contre, les deuxime et troisime lments dnissant une valeur "exact", seule une phrase complte sera avre : L'hebdo de la physique et La gazette des particules .

2.2.6 Le modle d'interprtation


Un menu se comporte comme un formulaire ayant un seul champ qui endosse tous les rles. Les invites du menu deviennent des invites du champ. Les gestionnaires d'vnement du menu deviennent des gestionnaires d'vnement du champ. Les grammaires du menu deviennent des grammaires du formulaire. Comme pour les formulaires, les correspondances de grammaire dans les menus mettront jour le tableau application.lastresult$. Ces variables sont dcrites dans le chapitre 5.1.5. Les grammaires gnres doivent toujours produire des rsultats simples dont les valeurs d'interprtation et de prononciation sont identiques. Au lancement du menu, les grammaires du menu sont construites et actives puis l'invite est joue. Lorsque l'entre d'utilisateur correspond un choix, le contrle se dplace vers une transition conformment la valeur de l'attribut next, expr, event ou eventexpr de l'lment choice, seul l'un d'entre eux pouvant tre dni. Si on dnit un attribut event sans que son gestionnaire d'vnement n'incite l'interprteur quitter ou dplacer le contrle, alors l'algorithme FIA eacera la variable d'lment de formulaire du champ anonyme du menu, entranant une nouvelle excution du menu.

2.3 Les lments de formulaire


48 of 212 27/07/2012 22:31

Le langage de balisage extensible vocal (VoiceXML) vers...

http://www.yoyodesign.org/doc/w3c/voicexml20/

Un lment de formulaire est un sous-lment de l'lment form pouvant faire l'objet d'une visite au cours de l'interprtaton du formulaire. Ce sont les lments field, block, initial, subdialog, object, record et transfer. Tous les lments de formulaire ont les caractristiques suivantes : Ils ont une variable de rsultat, dnie par l'attribut name. Cette variable peut recevoir une valeur initiale par le biais d'un attribut expr. Ils ont une condition de veille dnie par l'attribut cond. Un lment de formulaire sera visit s'il n'est pas rempli et que son attribut cond n'est pas dni ou que l'valuation de sa valeur, aprs conversion en un boolen, donne " true". Les lments de formulaire se rangent en lments d'entre, lesquels dnissent les variables d'lment d'entre du formulaire, et en lments de commande, lesquels facilitent la collecte des lments d'entre du formulaire. Les lments d'entre (field, subdialog, object, record et transfer) sont gnralement susceptibles de contenir les lments suivants : Des lments filled qui comprennent certaines actions excuter aprs que la variable d'lment d'entre rsultante a t remplie. Des lments property an de dnir les proprits en vigueur pour cet lment d'entre (l'lment de formulaire initial peut galement contenir cet lment). Des lments prompt an de dnir les invites jouer lorsque ce lment est visit. Des lments grammar an de dnir les entres vocales et textuelles permises pour cet lment de formulaire (les lments subdialog et object ne peuvent pas contenir cet lment). Des lments et des abrviations de l'lment catch qui sont en vigueur pour cet lment d'entre (l'lment de formulaire initial peut galement contenir cet lment). chaque lment d'entre est associ un ensemble de variables ctives. Les variables ctives servent renvoyer des rsultats provenant de l'excution d'un lment d'entre, outre la valeur stocke par l'attribut name. Par exemple, il peut se rvler utile de connatre le niveau de abilit obtenu en rsultat de la reconnaissance d'une grammaire dans un lment field. L'appel d'une variable ctive prend la forme nom$.varctive , o nom reprsente la valeur de l'attribut name de l'lment de formulaire et varctive le nom d'une variable ctive particulire. Les variables ctives sont inscriptibles et elles peuvent tre modies par l'application. Par exemple, l'lment field renvoie une variable ctive confidence qui donne un indice de abilit. L'exemple ci-dessous illustre comment utiliser cette variable ctive.
<?xml version="1.0" encoding="UTF-8"?> <vxml version="2.0" xmlns="http://www.w3.org/2001/vxml" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.w3.org/2001/vxml http://www.w3.org/TR/voicexml20/vxml.xsd"> <form id="obtenir_pays"> <field name="pays">

49 of 212

27/07/2012 22:31

Le langage de balisage extensible vocal (VoiceXML) vers...

http://www.yoyodesign.org/doc/w3c/voicexml20/

<prompt> Veuillez dire le nom d'un pays. </prompt> <grammar src="http://mesgrammaires.example.com/payss.gram" type="application/srgs"/> <filled> <if cond="pays$.confidence &lt; 0.4"> <throw event="nomatch"/> </if> </filled> </field> </form> </vxml>

Dans l'exemple, la abilit du rsultat fait l'objet d'un examen : le rsultat est rejet si l'indice de abilit est trop faible.

2.3.1 L'lment field


Un champ dnit un lment d'entre qu'il faut recueillir de l'utilisateur. Les attributs de l'lment field sont : La variable d'lment de formulaire dans la porte du dialogue qui contiendra le rsultat. Le nom doit tre unique parmi les lments de formulaire dans le formulaire. S'il n'est pas unique, alors un vnement error.badfetch est suscit quand le document est appel. Le nom doit respecter les conventions de nommage des variables dcrites dans le chapitre 5.1. La valeur initiale de la variable d'lment de formulaire ; la valeur implicite est la valeur ECMAScript "undefined". Si on initialise la variable, alors l'lment de formulaire ne sera pas visite, moins de l'eacer. Une expression dont l'valuation de sa valeur, aprs conversion en un boolen, doit donner "true" pour que l'lment de formulaire soit visit. L'lment de formulaire pourra galement tre visit si l'attribut n'est pas dni. Le type du champ, savoir le nom d'un type de grammaire intgr (voir l'annexe P). La prise en charge des types de grammaire intgrs par la plateforme est optionnelle. Si la plateforme ne prend pas en charge le type intgr indiqu, alors un vnement error.unsupported.builtin est suscit. Le nom de la facette de grammaire utilise pour peupler la variable (si elle est absente, alors sa valeur implicite est le nom de la variable). Cet attribut trouve une utilit dans le cas o le format de grammaire employ possde un mcanisme permettant de renvoyer des ensembles de couples facette/valeur et que les noms des facettes dirent de ceux des variables des lments de formulaire. Tableau 9 : Les attributs de l'lment field

name

expr

cond

type

slot

50 of 212

27/07/2012 22:31

Le langage de balisage extensible vocal (VoiceXML) vers...

http://www.yoyodesign.org/doc/w3c/voicexml20/

Si sa valeur est "false" (la valeur implicite), alors toutes les grammaires sont actives pendant la collecte des donnes de modal ce champ. Pour la valeur "true", alors seules les grammaires du champ sont actives : toutes les autres sont temporairement dsactives. On donne les variables ctives d'un lment field nomm nom dans le tableau 10. Les valeurs des variables ctives utterance, inputmode et interpretation doivent tre les mmes que celles dans le tableau application.lastresult$ (voir le chapitre 5.1.5). La chane brute des mots reconnus. L'atomisation et l'orthographe exactes sont propres la plateforme (par exemple, cinq cent trente ou 5 cent 30 ou mme 530 ). Dans le cas d'une grammaire DTMF, cette variable contiendra la chane de chires ltre. Le mode dans lequel l'entre d'utilisateur a t fournie : "dtmf" ou "voice".

nom$.utterance

nom$.inputmode

Une variable ECMAScript contenant nom$.interpretation l'interprtation, comme dcrit dans le chapitre 3.1.5. Le niveau de abilit du champ nom , dni dans l'intervalle 0.0-1.0 . Une valeur de "0.0" indique une abilit minimale ; inversement, une valeur de "1.1" indique une abilit maximale. Une plateforme peut se servir de la abilit de l'nonc (la valeur de la variable application.lastresult$.confidence) comme valeur pour nom$.confidence. Cette distinction entre niveau de abilit du champ et niveau de abilit de l'nonc est propre la plateforme. L'interprtation plus spcique d'une valeur de abilit dpend de la plateforme puisque le calcul de celle-ci direra probablement d'une plateforme l'autre. Tableau 10 : Les variables ctives de l'lment field 2.3.1.1. Les champs utilisant des grammaires explicites On peut dnir les grammaires explicitement via une adresse URI absolue ou bien relative :

nom$.condence

51 of 212

27/07/2012 22:31

Le langage de balisage extensible vocal (VoiceXML) vers...

http://www.yoyodesign.org/doc/w3c/voicexml20/

<field name="parfum"> <prompt>Quelle est votre glace favorite ?</prompt> <grammar src="../grammaires/glace.grxml" type="application/srgs+xml"/> </field>

On peut dnir les grammaires directement, par exemple, avec un grammaire ABNF du W3C :
<field name="parfum"> <prompt>Quel est votre parfum favori?</prompt> <help>Dites l'un entre vanille, chocolat ou fraise.</help> <grammar mode="voice" type="application/srgs"> #ABNF 1.0; $options = vanille | chocolat | fraise </grammar> </field>

Si on dnit la fois l'attribut src d'un lment grammar et une grammaire directe, alors un vnement error.badfetch est suscit. 2.3.1.2. Les grammaires explicites et les ressources intgres propres une plateforme La prise en compte par une plateforme de ressources intgres telles que les grammaires vocales, les grammaires DTMF et les chiers sons est optionnelle. Ces ressources sont accessibles au moyen d'adresses URI propres la plateforme, tel que, par exemple, http://localhost:5000/grammar/boolean , ou bien de systmes propres la plateforme tel que le systme couramment employ builtin comme dans builtin:grammar/boolean . Si une plateforme permet l'accs des ressources intgres, alors elle devrait galement permettre l'accs aux grammaires intgres fondamentales (voir l'annexe P) ; par exemple :
<grammar src="builtin:grammar/boolean"/> <grammar src="builtin:dtmf/boolean"/>

Le premier lment grammar appelle la grammaire vocale intgre de type boolean et le second la grammaire DTMF intgre de type boolean. Par dnition, la dclaration :
<field type="type-intgr"> <prompt>Invite pour une grammaire intgre</prompt> </field>

Celle-ci est quivalente la dclaration suivante des grammaires intgres propres une plateforme :
<field> <grammar src="builtin:grammar/type-intgr"/>

52 of 212

27/07/2012 22:31

Le langage de balisage extensible vocal (VoiceXML) vers...

http://www.yoyodesign.org/doc/w3c/voicexml20/

<grammar src="builtin:dtmf/type-intgr"/> <prompt>Invite pour une grammaire intgre</prompt> </field>

O la valeur type-intgr reprsente l'un des types intgrs fondamentaux de champ (c'est--dire, boolean, date, etc.). En outre, on peut utiliser les systmes d'adresse URI intgrs propres une plateforme pour accder aux grammaires reconnues par des contextes d'interprtation particuliers. On recommande pour les noms des grammaires intgres propres une plateforme qu'ils commencent par la chane x- ; cet espace de nommage ne sera pas utilis dans les versions futures de la norme. Exemples de grammaires intgres propres une plateforme :
<grammar src="builtin:grammar/x-type-intgr"/> <grammar src="builtin:dtmf/x-type-intgr"/>

2.3.1.3. Les champs avec des listes d'options Lorsque l'on a simplement besoin d'un ensemble d'alternatives pour dnir les valeurs d'entre lgales d'un champ, il peut se rvler plus commode d'utiliser une liste d'options qu'une grammaire. On reprsente une liste d'options par un ensemble d'lments option compris dans un lment field. Chaque lment option contient des donnes de type PCDATA , lesquelles servent gnrer une grammaire vocale. Cette mthode de gnration de grammaire suit celle dcrite pour l'lment choice dans le chapitre 2.2.5. On peut se servir d'attributs an de dnir une squence DTMF pour chaque option et an de contrler la valeur assigne la variable d'lment de formulaire du champ. Lors du choix d'une option, l'attribut value dtermine la valeur interpretation pour la variable ctive du champ et pour la variable du tableau application.lastresult$. Le champ suivant propose trois possibilits l'utilisateur et assigne la valeur de l'attribut value de l'option slectionne la variable plat_principal :
<field name="plat_principal"> <prompt> Veuillez slectionner une entre. Aujourd'hui, nous vous proposons <enumerate/> </prompt> <option dtmf="1" value="poisson"> de l'espadon </option> <option dtmf="2" value="viande"> du rti de buf </option> <option dtmf="3" value="volaille"> des cuisses de poulet </option> <filled> <submit next="/cgi-bin/platprincipal.cgi" method="post" namelist="plat_principal"/> </filled> </field>

Cela pourrait donner la conversation suivante : O : Veuillez slectionner une entre. Aujourd'hui nous vous proposons de l'espadon ; du rti de buf ; des cuisses de poulet.

53 of 212

27/07/2012 22:31

Le langage de balisage extensible vocal (VoiceXML) vers...

http://www.yoyodesign.org/doc/w3c/voicexml20/

H : cuisses de poulet O : (assigne la valeur volaille la variable plat_principal puis soumet la requte plat_principal=volaille au script platprincipal.cgi ) L'exemple suivant montre un usage correct et un usage erronn de l'lment enumerate dans un lment catch d'un formulaire dont plusieurs champs contiennent des lments option :
<?xml version="1.0" encoding="UTF-8"?> <vxml version="2.0" xmlns="http://www.w3.org/2001/vxml" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.w3.org/2001/vxml http://www.w3.org/TR/voicexml20/vxml.xsd"> <form> <block> Nous avons besoin de quelques prcisions pour prendre votre commande. </block> <field name="couleur"> <prompt>Quelle couleur ?</prompt> <option>rouge</option> <option>bleu</option> <option>vert</option> </field> <field name="taille"> <prompt>Quelle taille ?</prompt> <option>petit</option> <option>moyen</option> <option>grand</option> </field> <field name="quantite"> <grammar type="application/srgs+xml" src="/grammars/number.grxml"/> <prompt>Combien ?</prompt> </field> <block> Merci. Votre commande suit son cours. <submit next="details.cgi" namelist="couleur taille quantite"/> </block> <catch event="help nomatch"> Voici les options possibles : <enumerate/>. </catch> </form> </vxml>

Le droulement du dialogue pourrait tre celui-ci : O : Nous avons besoin de quelques prcisions pour prendre votre commande. Quelle couleur ? H : aide (lance l'vnement help captur par l'lment catch de niveau formulaire). O : Voici les options possibles : rouge, bleu, vert. H : rouge. O : Quelle taille ? H : 7 (lance l'vnement nomatch captur par l'lment catch de niveau formulaire).

54 of 212

27/07/2012 22:31

Le langage de balisage extensible vocal (VoiceXML) vers...

http://www.yoyodesign.org/doc/w3c/voicexml20/

O : Voici les options possibles : petit, moyen, grand. H : petit. Dans la succession d'tapes prcdente, l'lment enumerate dans l'lment catch de niveau formulaire avait quelque chose numrer : les lments option dans les champs couleur et taille . Au contraire, l'lment field suivant est dirent : O : Combien ? H : beaucoup (lance un vnement nomatch captur par l'lment catch de niveau formulaire). L'utilisation de l'lment enumerate par l'lment catch de niveau formulaire entrane le dclenchement d'un vnement error.semantic parce que le champ quantite ne contient aucun lment option susceptible d'numration. Une solution serait de rajouter un lment catch de niveau champ au champ quantite :
<catch event="help nomatch"> Veuillez indiquer le nombre d'articles commander. </catch>

L'vnement nomatch serait alors captur localement, aboutissant probablement la n d'change suivante : O : Veuillez indiquer le nombre d'articles commander. H : 50 O : Merci. Votre commande suit son cours. L'lment enumerate est galement abord dans le chapitre 2.2.4. Les attributs de l'lment option sont : Une squence DTMF optionnelle pour cette option. Elle quivaut une grammaire DTMF simple et les proprits DTMF (voir le chapitre 6.3.3) s'appliquent lors de la reconnaissance de la squence. la dirence des grammaires DTMF, les blancs sont optionnels : dtmf="123#" est quivalent dtmf="1 2 3 #". Si l'attribut n'est pas dni, aucune squence DTMF ne sera associe cette option et elle ne peut donc pas tre ltre au moyen d'une grammaire DTMF.

dtmf

Lorsque sa valeur est xe "exact" (la valeur implicite), alors le texte de l'lment option dnit la phrase exacte accept reconnatre. Pour la valeur "approximate", le texte de l'option dnit une phrase de reconnaissance approximative (comme dcrit dans le chapitre 2.2.5). Tableau 11 : Les attributs de l'lment option

55 of 212

27/07/2012 22:31

Le langage de balisage extensible vocal (VoiceXML) vers...

http://www.yoyodesign.org/doc/w3c/voicexml20/

value

La chane assigner la variable d'lment de formulaire du champ lorsque l'utilisateur slectionne cette option, que cette slection se fasse par la voix ou bien par le biais de tonalits DTMF. L'assignation implicite est le contenu de type CDATA de l'lment option, les blancs de tte et de queue tant supprims. En l'absence d'un contenu, alors c'est la squence DTMF qui sera utilise la place. Si on ne dnit ni contenu de type CDATA ni squence DTMF, alors la valeur implicite de l'assignation est " undefined" et la variable d'lment de formulaire du champ n'est pas remplie.

L'utilisation d'lments option n'empche pas celle d'lments grammar. Le rsultat correspondrait l'une ou l'autre grammaire et non la prsence de deux lments grammar dans le mme lment field reprsentant une disjonction de choix.

2.3.2 L'lment block


C'est un lment de formulaire avec un contenu excutable lequel est excut si la valeur de la variable d'lment de formulaire de l'lment block est "undefined" et si la valeur de son attribut cond, le cas chant, est value "true".
<block> Bienvenue chez Les sept nains , votre magasin de dcorations pour le jardin. </block>

La valeur de la variable d'lment de formulaire est xe automatiquement " true" juste avant que le bloc ne soit visit. C'est pourquoi, les blocs ne sont en gnral excuts qu'une seule fois par invocation du formulaire. Parfois, on peut avoir besoin d'un contrle accru des blocs. Pour ce faire, on peut nommer la variable d'lment de formulaire et en xer ou eacer la valeur an de contrler l'excution de l'lment block. Cette variable se dclare dans la porte du dialogue du formulaire. Les attributs de l'lment block comprennent : Le nom de la variable d'lment de formulaire servant au suivi de l'ligibilit pour excution du bloc ; la valeur implicite est une variable interne inaccessible.

name

La valeur initiale de la variable de l'lment de formulaire ; la valeur implicite est la valeur ECMAScript "undefined". Si elle expr est initialise, alors l'lment de formulaire ne sera pas visit, moins d'eacer la variable d'lment de formulaire. Une expression dont l'valuation, aprs conversion en une cond valeur boolenne, doit valoir "true" pour que l'lment de formulaire soit visit. Tableau 12 : Les attributs de l'lment block

2.3.3. L'lment initial


56 of 212 27/07/2012 22:31

Le langage de balisage extensible vocal (VoiceXML) vers...

http://www.yoyodesign.org/doc/w3c/voicexml20/

Dans un formulaire initiative mixte typique, un lment initial est visit lorsque l'utilisateur fait l'objet d'une invite initiale pour des renseignements concernant l'ensemble du formulaire et que l'utilisateur ne se trouve pas encore dans le mode dirig selon lequel chaque champ est visit individuellement. Comme les lments d'entre, il dispose d'invites, d'lments catch et de compteurs d'vnements. Par contre, il ne comporte aucune grammaire ni action filled. Par exemple :
<?xml version="1.0" encoding="UTF-8"?> <vxml version="2.0" xmlns="http://www.w3.org/2001/vxml" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.w3.org/2001/vxml http://www.w3.org/TR/voicexml20/vxml.xsd"> <form id="obtenir_villes_depart_et_arrivee"> <grammar src="http://www.directions.example.com/grammars/depuis_vers.grxml" type="application/srgs+xml"/> <block> Bienvenue sur Directions de conduite par tlphone. </block> <initial name="sauter_init"> <prompt> D'o partez vous et o voulez-vous aller? </prompt> <nomatch count="1"> Veuillez dire, par exemple, de Bruxelles, en Belgique, Lausanne, en Suisse </nomatch> <nomatch count="2"> Dsol mais je ne comprends toujours pas. Je vous demanderai de fournir les renseignements un par un. <assign name="sauter_init" expr="true"/> <reprompt/> </nomatch> </initial> <field name="ville_depart"> <grammar src="http://www.directions.example.com/grammaires/ville.grxml" type="application/srgs+xml"/> <prompt>De quelle ville partez-vous ?</prompt> </field> <field name="ville_arrivee"> <grammar src="http://www.directions.example.com/grammaires/ville.grxml" type="application/srgs+xml"/> <prompt>Quelle est la ville d'arrive ?</prompt> </field> </form> </vxml>

Si un vnement se produit pendant la visite d'un lment initial, alors un de ses gestionnaires d'vnement s'excute. Comme pour les autres lments de formulaire, l'lment initial reste ligible pour une visite tant que la valeur de sa variable d'lment de formulaire est "undefined" et que son attribut cond vaut "true". Si une ou plusieurs des variables d'lment de formulaire sont xes par une entre d'utilisateur, alors toutes les valeurs des variables d'lment de formulaire de l'lment initial sont xes "true", avant l'excution d'une quelconque action filled. On peut manipuler explicitement la variable d'lment de formulaire d'un lment initial an d'inactiver ou de rtablir son ligibilit vis--vis de l'algorithme FIA. Par exemple, dans le programme prcdent, la valeur de la variable d'lment de

57 of 212

27/07/2012 22:31

Le langage de balisage extensible vocal (VoiceXML) vers...

http://www.yoyodesign.org/doc/w3c/voicexml20/

formulaire de l'lment initial est xe lors du second vnement nomatch. Cela a pour eet de dtourner l'algorithme FIA de l'lment initial vers l'lment de formulaire suivant, savoir un lment field qui produit explicitement une invite pour la ville de dpart. On pourrait tout aussi bien eacer la valeur de la variable d'lment de formulaire de l'lment initial, de sorte que celui-ci devienne nouveau slectionnable par l'algorithme FIA. On peut dnir plusieurs lments initial dans le mme formulaire. Une fois dans le formulaire, seul le premier lment initial, dans l'ordre du document, qui est ligible en vertu de son attribut cond, sera visit. Une fois la premire variable d'lment de formulaire remplie, toutes les variables d'lment de formulaire des lments initial reoivent la valeur "true", ceux-ci ne seront ds lors plus visits. L'eacement explicite des variables des lments initial permet leur rutilisation et mme la slection d'un lment initial dirent lors des itrations suivantes de l'algorithme FIA. L'attribut cond peut aussi servir slectionner quel lment initial utiliser dans une itration donne. Une application pourrait aligner plusieurs lments initial et les marquer avec leur attribut cond en vue d'une utilisation particulire selon les circonstances, par exemple, l'attribut cond tant utilis pour tester la nature d'un mode d'exploitation, pour utilisateur expriment ou bien pour utilisateur novice, et les lments initial ne servant que dans le mode avanc. En outre, si le premier lment initial dans l'ordre du document dnissait une valeur improbable pour son attribut cond, il ne serait alors jamais excut. Si les valeurs des attributs cond de tous les lments initial empchaient leur slection, alors aucun ne serait excut. Les rgles de porte des grammaires s'appliquent pour la visite d'un lment initial, comme dcrit dans le chapitre 3.1.3.. En particulier, aucune grammaire attache un lment field n'est active. Remarque : L'assignation explicite de valeurs des variables d'lment d'entre n'aecte pas la valeur de la variable d'lment de formulaire d'un lment initial. Les attributs de l'lment initial comprennent : Le nom de la variable d'lment de formulaire servant au suivi de l'ligibilit pour excution de l'lment initial ; la valeur implicite est une variable interne inaccessible.

name

La valeur initiale de la variable de l'lment de formulaire ; la valeur implicite est la valeur ECMAScript "undefined". Si elle expr est initialise, alors l'lment de formulaire ne sera pas visit, moins d'eacer la variable d'lment de formulaire.
cond

Une expression dont l'valuation, aprs conversion en une valeur boolenne, doit valoir "true" pour que l'lment de formulaire soit visit. Tableau 13 : Les attributs de l'lment initial

2.3.4 L'lment subdialog


Les sous-dialogues reprsentent un mcanisme permettant la rutilisation de dialogues communs et la constitution de librairies d'applications rutilisables.

58 of 212

27/07/2012 22:31

Le langage de balisage extensible vocal (VoiceXML) vers...

http://www.yoyodesign.org/doc/w3c/voicexml20/

L'lment subdialog invoque un dialogue appel (c'est le sous-dialogue) identi par les attributs src ou srcexpr dans le dialogue appelant . Le sous-dialogue s'excute dans un nouveau contexte d'excution qui comprend toutes les dclarations et informations d'tat du sous-dialogue, le document du sous-dialogue et (le cas chant) la racine de l'application du sous-dialogue, les compteurs tant rinitialiss et les variables initialises. Le sous-dialogue se poursuit jusqu' l'excution d'un lment return ou bien exit, ou jusqu' ce qu'il ne reste plus aucun lment de formulaire susceptible d'une slection par l'algorithme FIA (ce qui quivaut un lment exit). Un lment return entrane le retour du contrle et de donnes au dialogue appelant (voir le (chapitre 5.3.10). Lorsque le sous-dialogue revient, son contexte d'excution est dtruit et l'excution reprend alors dans le dialogue appelant, les ventuels lments filled tant remplis de manire approprie. Le contexte du sous-dialogue et celui du dialogue appelant sont indpendants, mme si les dialogues se trouvent dans le mme document. Les variables dans la chane des portes du dialogue appelant ne sont pas partages avec le sous-dialogue appel : il n'existe aucun partage des instances de variable entre les contextes d'excution. Et, mme quand le sous-dialogue est dni dans le mme document que le dialogue appelant, le contexte d'excution du sous-dialogue contiendra des instances de variables direntes. Lorsque le sous-dialogue et le dialogue appelant sont dans des documents dirents tout en partageant le mme document racine, leurs valeurs d'attribut root sont galement des instances direntes. Toutes les liaisons de variables appliques dans le contexte du sous-dialogue sont perdues au retour dans le contexte appelant. Par contre, dans le contexte du sous-dialogue, les rgles de porte normales des grammaires, des vnements et des variables s'appliquent. Les grammaires actives d'un sous-dialogue comprennent les grammaires implicites dnies par le contexte d'interprtation et les grammaires de porte convenable dnies dans les lments link, menu et form dans le document du sous-dialogue et son document racine. La gestion des vnements et la liaison des variables suit galement la hirarchie normale des portes. Dans une perspective de programmation, les sous-dialogues se comportent diremment des sous-routines dans la mesure o les contextes appelant et appel sont indpendants. Alors qu'une sous-routine peut accder des instances de variables appartenant la routine appelante, un sous-dialogue ne pourra pas accder la mme instance de variable dnie dans le dialogue appelant. De mme, les sous-dialogues n'obissent pas au modle de percolation des vnements trouv dans des langages comme Java, pour lequel un vnement suscit dans une mthode va remonter automatiquement au contexte appelant s'il n'est pas pris en charge dans le contexte appel. Les vnements suscits dans un sous-dialogue sont traits par les gestionnaires d'vnement dnis dans son contexte ; il ne peuvent tre passs au contexte appelant que par un gestionnaire d'vnement local renvoyant explicitement l'vnement au contexte appelant (voir le chapitre 5.3.10). Le sous-dialogue est dsign par l'adresse URI dans l'attribut src ou srcexpr de l'lment subdialog (voir le document [RFC2396]). Si cet appel d'adresse URI contient une adresse absolue ou relative, pouvant contenir une chane de requte, alors cette adresse URI est extraite et le sous-dialogue se trouvera dans le document rsultant. Si l'lment subdialog comporte un attribut namelist, alors les variables composant sa valeur sont ajoutes la chane de requte de l'adresse URI.

59 of 212

27/07/2012 22:31

Le langage de balisage extensible vocal (VoiceXML) vers...

http://www.yoyodesign.org/doc/w3c/voicexml20/

Si l'appel d'adresse URI contient seulement un fragment (c'est--dire, aucune adresse URI absolue ou relative) et s'il n'y a pas d'attribut namelist, alors aucune recherche n'a lieu : le sous-dialogue se trouve dans le document courant. Le fragment d'un appel d'adresse URI indique, le cas chant, le sous-dialogue invoquer. En l'absence d'un fragment, le sous-dialogue invoqu est le premier dialogue lexical dans le document. Si l'appel d'adresse URI n'est pas valide (c'est--dire quand le dialogue ou le document n'existent pas), un vnement error.badfetch doit tre suscit. Remarquez que, en ce qui concerne les erreurs qui se produisent pendant une transition de dialogue ou de document, la porte dans laquelle les erreurs sont censs tre traites est propre la plateforme. Les attributs de l'lment subdialog sont : Le rsultat renvoy depuis le sous-dialogue, savoir un objet ECMAScript dont les proprits sont celles dnies dans l'attribut namemlist de l'lment return. La valeur initiale de la variable de l'lment de formulaire ; la valeur implicite est la valeur ECMAScript "undefined". Si elle est initialise, alors l'lment de formulaire ne sera pas visit, moins d'eacer la variable d'lment de formulaire. Une expression dont l'valuation, aprs conversion en une valeur boolenne, doit valoir "true" pour que l'lment de formulaire soit visit. La liste des variables soumettre. Par dfaut, aucune variable n'est soumise. Si un attribut namelist est dni, alors il peut contenir des rfrences de variables individuelles lesquelles sont soumises avec la mme orthographe que celle employe dans la valeur de l'attribut. On peut appeler les variables VoiceXML et ECMAScript dclares. Si on appelle une variable non dclare dans la liste de noms, alors un vnement error.semantic est suscit (voir le chapitre 5.1.1). L'adresse URI du sous-dialogue. Une expression ECMAScript produisant l'adresse URI du sous-dialogue Voir le chapitre 5.3.8. Voir le chapitre 5.3.8. Voir le chapitre 6.1. La valeur implicite est celle de la proprit fetchaudio.

name

expr

cond

namelist

src srcexpr method enctype fetchaudio

Tableau 14 : Les attributs de l'lment subdialog

60 of 212

27/07/2012 22:31

Le langage de balisage extensible vocal (VoiceXML) vers...

http://www.yoyodesign.org/doc/w3c/voicexml20/

fetchtimeout

Voir le chapitre 6.1. La valeur implicite est celle de la proprit fetchtimeout. Voir le chapitre 6.1. La valeur implicite est celle de la proprit documentfetchhint Voir le chapitre 6.1. La valeur implicite est celle de la proprit documentmaxage. Voir le chapitre 6.1. La valeur implicite est celle de la proprit documentmaxstale.

fetchhint

maxage

maxstale

On doit dnir exactement un seul attribut src ou bien srcexpr, sinon un vnement error.badfetch est suscit. L'lment subdialog peut contenir les lments communs tous les lments de formulaires et aussi des lments param. Les lments param d'un lment subdialog dnissent les paramtres passer au sous-dialogue. Ces paramtres doivent tre dclars comme lments var dans le formulaire excut comme sous-dialogue ou alors un vnement error.semantic sera sucit. Lors de l'initialisation du sous-dialogue, les lments var sont galement initialiss, dans l'ordre du document, la valeur indique par l'lment param dont le nom correspond. Les valeurs paramtres sont calcules en valuant l'attribut expr de l'lment param dans le contexte de l'lment param. Un attribut expr dans l'lment var sera ignor dans ce cas. Si aucun lment param ne correspond un lment var, on utilise un attribut expr comme valeur par dfaut, ou bien la variable prend la valeur " undefined" si l'attribut expr n'est pas dni, comme pour un lment form rgulier. Dans l'exemple suivant, on se sert de la date de naissance d'une personne pour valider son permis de conduire. L'attribut src de l'lment subdialog se rapporte un formulaire dans le mme document. On utilise l'lment param pour passer la valeur de la date de naissance au sous-dialogue.
<?xml version="1.0" encoding="UTF-8"?> <vxml version="2.0" xmlns="http://www.w3.org/2001/vxml" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.w3.org/2001/vxml http://www.w3.org/TR/voicexml20/vxml.xsd"> <!-- Un dialogue de formulaire qui appelle un sous-dialogue --> <form> <subdialog name="resultat" src="#demander_permis_conduire"> <param name="date_naissance" expr="'2000-02-10'"/> <filled> <submit next="http://monservice.example.com/cgi-bin/traiter"/> </filled> </subdialog> </form> <!-- Un sous-dialogue pour obtenir les permis de conduire --> <form id="demander_permis_conduire"> <var name="date_naissance"/> <field name="permis_conduire"> <grammar src="http://grammarlib/grammaire_conduite.grxml" type="application/srgs+xml"/> <prompt> Veuillez indiquer le numro de votre permis de conduire. </prompt> <filled>

61 of 212

27/07/2012 22:31

Le langage de balisage extensible vocal (VoiceXML) vers...

http://www.yoyodesign.org/doc/w3c/voicexml20/

<if cond="permis_conduire_valide(permis_conduire,date_naissance)"> <var name="statut" expr="true"/> <else/> <var name="statut" expr="false"/> </if> <return namelist="permis_conduire statut"/> </filled> </field> </form> </vxml>

La valeur du permis de conduire est renvoye au dialogue appelant, accompagne d'une variable de statut, an d'indiquer si le permis est valide ou non. Cet exemple illustre galement la commodit avec laquelle on transmet des donnes au sous-dialogue an d'y instancier des valeurs sans faire appel un script ct serveur. On donne ci-dessous une autre solution avec un script. Document avec un formulaire appelant un sous-dialogue
<?xml version="1.0" encoding="UTF-8"?> <vxml version="2.0" xmlns="http://www.w3.org/2001/vxml" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.w3.org/2001/vxml http://www.w3.org/TR/voicexml20/vxml.xsd"> <form> <field name="date_naissance"> <grammar type="application/srgs+xml" src="/grammars/date.grxml"/> Quelle est votre date de naissance ? </field> <subdialog name="resultat" src="/cgi-bin/getlib#demanderpermisconduire" namelist="date_naissance"> <filled> <submit next="http://monservice.example.com/cgi-bin/traiter"/> </filled> </subdialog> </form> </vxml>

Document contenant le sous-dialogue (gnr par /cgi-bin/getlib)


<?xml version="1.0" encoding="UTF-8"?> <vxml version="2.0" xmlns="http://www.w3.org/2001/vxml" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.w3.org/2001/vxml http://www.w3.org/TR/voicexml20/vxml.xsd"> <form id="demander_permis_conduire"> <var name="date_naissance" expr="'1980-02-10'"/> <!-- Gnr par un script ct serveur --> <field name="permis_conduire"> <grammar src="http://grammarlib/grammaire_conduite.grxml" type="application/srgs+xml"/> <prompt> Veuillez indiquer le numro de votre permis de conduire.

62 of 212

27/07/2012 22:31

Le langage de balisage extensible vocal (VoiceXML) vers...

http://www.yoyodesign.org/doc/w3c/voicexml20/

</prompt> <filled> <if cond="permis_conduire_valide(permis_conduire,date_naissance)"> <var name="statut" expr="true"/> <else/> <var name="statut" expr="false"/> </if> <return namelist="permis_conduire statut"/> </filled> </field> </form> </vxml>

Dans l'exemple prcdent, un script ct serveur tait charg de gnrer le document et d'incorporer la valeur de la date de naissance. On donne ensuite un dernier exemple qui montre la capture des informations gnrales d'une carte de crdit par un sous-dialogue. On dnit tout d'abord le sous-dialogue dans un document spar car on souhaite le rutiliser dans des applications direntes. Il renvoie un statut, le numro de la carte de crdit et sa date d'expiration ; si une donne est manquante, on renvoie le statut avec la valeur incomplet .

<?xml version="1.0" encoding="UTF-8"?> <vxml version="2.0" xmlns="http://www.w3.org/2001/vxml" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.w3.org/2001/vxml http://www.w3.org/TR/voicexml20/vxml.xsd"> <!-- Exemple de sous-dialogue pour collecter les informations d'une carte de crdit. <!-- Le fichier se trouve http://www.uncertaindomaine.example.com/ncc.vxml --> <form id="demander_cartecredit"> <var name="statut" expr="'incomplet'"/> <field name="numero_carte"> <prompt> Quel est le numro de votre carte de crdit ? </prompt> <help> J'essaye d'obtenir le numro de votre carte de crdit. <reprompt/> </help> <nomatch> <return namelist="statut"/> </nomatch> <grammar src="ncc.grxml" type="application/srgs+xml"/> </field> <field name="date_expiration"> <grammar type="application/srgs+xml" src="/grammars/date.grxml"/> <prompt> Quelle est la date d'expiration de cette carte ? </prompt> <help> J'essaye d'obtenir la date d'expiration associe au numro de carte de crdit que vous avez fourni. <reprompt/> </help> <nomatch>

63 of 212

27/07/2012 22:31

Le langage de balisage extensible vocal (VoiceXML) vers...


<return namelist="statut"/> </nomatch> </field>

http://www.yoyodesign.org/doc/w3c/voicexml20/

<block> <assign name="statut" expr="'resultat'"/> <return namelist="statut numero_carte date_expiration"/> </block> </form> </vxml>

Voici maintenant une application qui prsente un dialogue appelant. Elle demande le nom d'un logiciel et d'un systme d'exploitation au travers d'un dialogue initiative mixte puis sollicite les informations de la carte de crdit au moyen du sous-dialogue prcdent.
<?xml version="1.0" encoding="UTF-8"?> <vxml version="2.0" xmlns="http://www.w3.org/2001/vxml" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.w3.org/2001/vxml http://www.w3.org/TR/voicexml20/vxml.xsd"> <!-- Exemple de programme principal --> <!-- http://www.uncertaindomaine.example.com/principal.vxml --> <!-- on appelle le sous-dialogue ncc.vxml --> <!-- on suppose que c'est dfini par un dialogue --> <var name="nom_utilisateur"/> <form id="acheter_logiciel"> <var name="ncc"/> <var name="exp"/> <grammar src="achatlogiciel.grxml" type="application/srgs+xml"/> <initial name="debut"> <prompt> Veuillez indiquer le logiciel que vous souhaitez acheter et le systme d'exploitation sur lequel il doit tourner. </prompt> <noinput> <assign name="debut" expr="true"/> </noinput> </initial> <field name="logiciel"> <prompt> Quel logiciel souhaitez-vous acheter ? </prompt> </field> <field name="systeme"> <prompt> Sur quel systme d'exploitation le logiciel doit-il tourner ? </prompt> </field> <subdialog name="resultats_cc" src="http://uncertaindomaine.example.com/ncc.vxml"> <filled> <if cond="resultats_cc.statut=='incomplet'"> Dans l'impossibilit d'obtenir les renseignements ncessaires au paiement,

64 of 212

27/07/2012 22:31

Le langage de balisage extensible vocal (VoiceXML) vers...

http://www.yoyodesign.org/doc/w3c/voicexml20/

nous sommes au regret d'annuler cette commande. <exit/> <else/> <assign name="ncc" expr="resultats_cc.numero_carte"/> <assign name="exp" expr="resultats_cc.date_expiration"/> </if> </filled> </subdialog> <block> Nous allons maintenant traiter votre commande. Veuillez patienter. <submit next="www.uncertaindomaine.example.com/traiter_commande.asp" namelist="nom_utilisateur logiciel systeme ncc exp"/> </block> </form> </vxml>

2.3.5. L'lment object


Une plateforme d'implmentation VoiceXML peut orir, au travers de l'lment object, une fonctionnalit propre utilisable par une application VoiceXML. L'lment object utilise directement son propre contenu au cours de l'initialisation (par exemple, un sous-lment param) et de l'excution. Par consquent, on ne peut pas traiter le contenu d'un lment object comme un contenu alternatif. Notez que, l'instar des autres lments d'entre, l'lment object peut produire des invites et comporter des lments catch. Il peut galement comprendre des actions filled. Par exemple, on pourrait accder un objet pour la collecte des informations d'une carte de crdit, propre une plateforme, de cette faon :
<object name="debit" classid="methode://carte-credit/recueillir_et_debiter" data="http://www.enregistrements.example.com/invites/credit/jesse.jar"> <param name="montant" expr="document.amt"/> <param name="vendeur" expr="code_vendeur"/> </object>

Dans cet exemple, l'lment param (voir le chapitre 6.4) sert passer des paramtres l'objet quand on l'invoque. Lorsque cet lment object est excut, il renvoie un objet ECMASCript comme valeur de sa variable d'lment de formulaire. L'lment block suivant prsente les valeurs renvoyes par l'objet de carte de crdit :
<block> <prompt> La carte est de type <value expr="debit.carte"/>. </prompt> <prompt> Le numro de la carte est <value expr="debit.num_carte"/>. </prompt> <prompt> La date d'expiration est <value expr="debit.date_expiration"/>. </prompt>

65 of 212

27/07/2012 22:31

Le langage de balisage extensible vocal (VoiceXML) vers...

http://www.yoyodesign.org/doc/w3c/voicexml20/

<prompt> Le code d'approbation est <value expr="debit.code_approbation"/>. </prompt> <prompt> Le numro de confirmation est <value expr="debit.num_confirmation"/>. </prompt> </block>

Comme autre exemple, supposons qu'un plateforme ait une fonctionnalit selon laquelle l'utilisateur peut saisir des messages textuels arbitraires au moyen d'un clavier tlphonique.
<?xml version="1.0" encoding="UTF-8"?> <vxml version="2.0" xmlns="http://www.w3.org/2001/vxml" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.w3.org/2001/vxml http://www.w3.org/TR/voicexml20/vxml.xsd"> <form id="recueillir_message_teleavertisseur"> <object name="message" classid="builtin://entree-texte-clavier"> <prompt> Tapez le message sur votre clavier une touche par lettre. Pour une espace, tapez toile. Pour terminer, tapez dise. </prompt> </object> <block> <assign name="document.message_teleavertisseur" expr="message.texte"/> <goto next="#confirmer_message_teleavertisseur"/> </block> </form> </vxml>

L'utilisateur est d'abord invit laisser un message puis il le tape. L'lment block copie le message dans la variable document.message_teleavertisseur . Les attributs de l'lment object comprennent :
name

Lorsque l'objet est valu, il assigne cette variable une valeur ECMAScript dont il dnit le type. La valeur initiale de la variable de l'lment de formulaire ; la valeur implicite est la valeur ECMAScript "undefined". Si elle est initialise, alors l'lment de formulaire ne sera pas visit, moins d'eacer la variable d'lment de formulaire. Une expression dont l'valuation, aprs conversion en une valeur boolenne, doit valoir "true" pour que l'lment de formulaire soit visit. L'adresse URI dnissant l'emplacement de l'implmentation de l'objet. Les conventions d'adresse URI dpendent des plateformes. Tableau 15 : Les attributs de l'lment object

expr

cond

classid

66 of 212

27/07/2012 22:31

Le langage de balisage extensible vocal (VoiceXML) vers...

http://www.yoyodesign.org/doc/w3c/voicexml20/

codebase

Le chemin de base utilis pour rsoudre les adresse URI relatives dnies par les attributs classid, data et archive. Par dfaut, c'est l'adresse URI de base du document courant. Le type de contenu des donnes attendues dans le tlchargement de l'objet indiqu par l'attribut classid. Par dfaut, sa valeur est celle de l'attribut type. L'adresse URI dnissant l'emplacement des donnes de l'objet. Si c'est une adresse URI relative, elle se rsoud relativement l'attribut codebase. Le type de contenu des donnes dnies par l'attribut data. Une liste d'adresse URI, spares par des espaces, des archives contenant des ressources concernant l'objet, ce qui peut comprendre les ressources indiques par les attributs classid et data. Les adresses URI relatives se rsolvent relativement l'attribut codebase. Voir le chapitre 6.1. La valeur implicite est celle de la proprit objectfetchhint. Voir le chapitre 6.1. La valeur implicite est celle de la proprit fetchtimeout. Voir le chapitre 6.1. La valeur implicite est celle de la proprit objectmaxage. Voir le chapitre 6.1. La valeur implicite est celle de la proprit objectmaxstale.

codetype

data

type

archive

fetchhint

fetchtimeout

maxage

maxstale

Les implmentations ne sont pas obliges de fournir des objects spciques la plateforme, mais elles doivent grer l'lment object et susciter un vnement error.unsupported.objectname si l'objet particulier propre la plateforme n'est pas reconnu (remarquez que le objectname dans error.unsupported.objectname est une chane xe, qu'on ne doit donc pas remplacer par le nom de l'objet non reconnu). Si une implmentation se comporte ainsi, alors on considre qu'elle gre l'lment object. Il est du ressort de l'objet en question de dterminer la validit des noms ou valeurs des paramtres reus. L'lment object suscite une erreur en cas d'invalidit. L'erreur est soit propre l'objet, soit c'est l'une des erreurs normalises listes dans le chapitre 5.2.6.

2.3.6. L'lment record


L'lment record est un lment d'entre destin recueillir un enregistrement provenant de l'utilisateur. Une rfrence au son enregistr est stocke dans la variable d'lment d'entre, lequel son peut tre jou (en se servant de l'attribut expr sur un lment audio) ou bien envoy un serveur, comme le montre cet exemple :
67 of 212 27/07/2012 22:31

Le langage de balisage extensible vocal (VoiceXML) vers...

http://www.yoyodesign.org/doc/w3c/voicexml20/

<?xml version="1.0" encoding="UTF-8"?> <vxml version="2.0" xmlns="http://www.w3.org/2001/vxml" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.w3.org/2001/vxml http://www.w3.org/TR/voicexml20/vxml.xsd"> <form> <property name="bargein" value="true"/> <block> <prompt> Riley ne peut pas prendre votre appel. </prompt> </block> <record name="msg" beep="true" maxtime="10s" finalsilence="4000ms" dtmfterm="true" type="audio/x-wav"> <prompt timeout="5s"> Laissez un message aprs le bip. </prompt> <noinput> Je n'ai rien entendu, veuillez recommencez. </noinput> </record> <field name="confirmer"> <grammar type="application/srgs+xml" src="/grammars/boolean.grxml"/> <prompt> Voici votre message : <audio expr="msg"/>. </prompt> <prompt> Pour le valider, dites oui ; pour le supprimer, dites non. </prompt> <filled> <if cond="confirmer"> <submit next="sauvegarde_message.pl" enctype="multipart/form-data" method="post" namelist="msg"/> </if> <clear/> </filled> </field> </form> </vxml>

L'utilisateur est invit laisser un message puis il l'enregistre. L'enregistrement se termine dans l'une des conditions suivantes : le dlai de parole est coul, une touche DTMF est presse, la dure d'enregistrement maximale est dpasse ou l'appelant raccroche. L'enregistrement est jou et, si l'utilisateur l'approuve, il est envoy au serveur pour y tre stock au moyen de la mthode POST du protocole HTTP. Notez que, comme les autres lments d'entre, l'lment record peut avoir une grammaire, produire des invites et comporter des lments catch. Il peut galement comporter des actions filled.

68 of 212

27/07/2012 22:31

Le langage de balisage extensible vocal (VoiceXML) vers...

http://www.yoyodesign.org/doc/w3c/voicexml20/

Figure 7 : La temporisation des invites, d'un enregistrement sonore et d'une entre DTMF Lorsqu'un utilisateur raccroche en cours d'enregistrement, l'enregistrement se termine et un vnement connection.disconnect.hangup est suscit. Toutefois, le son enregistr jusqu'au raccrochage reste disponible dans la variable de l'lment record. Les applications, tels les services simples de courrier lctronique vocal, peuvent ainsi renvoyer des donnes sonores un serveur, mme aprs dconnexion :
<?xml version="1.0" encoding="UTF-8"?> <vxml version="2.0" xmlns="http://www.w3.org/2001/vxml" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.w3.org/2001/vxml http://www.w3.org/TR/voicexml20/vxml.xsd"> <form> <record name="msg" beep="true" maxtime="10s" finalsilence="4000ms" dtmfterm="true" type="audio/x-wav"> <prompt timeout="5s"> Laissez un message aprs le bip. </prompt> <noinput> Je n'ai rien entendu, veuillez recommencer. </noinput> <catch event="connection.disconnect.hangup"> <submit next="./serveur_courrielvocal.asp"/> </catch> </record> </form>

69 of 212

27/07/2012 22:31

Le langage de balisage extensible vocal (VoiceXML) vers...


</vxml>

http://www.yoyodesign.org/doc/w3c/voicexml20/

Un enregistrement commence immdiatement aprs la lecture d'une invite (y compris le bip , le cas chant). Pour des raisons d'optimisation, une plateforme peut lancer l'enregistrement ds que l'utilisateur commence parler. Un dlai de temporisation commence immdiatement aprs la lecture d'une invite (y compris le bip , le cas chant) et sa dure est dtermine par la proprit timeout. Si le dlai de temporisation expire avant le commencement de l'enregistrement, alors un vnement noinput est suscit. Une dure maximale commence en mme temps que l'enregistrement et elle est dtermine par un attribut maxtime. Si la dure maximale expire avant que l'enregistrement ne soit ni, alors l'enregistrement est interrompu et la variable ctive de l'attribut maxtime reoit la valeur "true". Un enregistrement se termine lorsque un vnement est suscit, une entre vocale ou DTMF est ltre par une grammaire active ou la dure maximale est dpasse. Pour des raisons d'optimisation, une plateforme peut interrompre un enregistrement aprs un dlai de silence (x par l'attribut finalsilence) indiquant que l'utilisateur a cess de parler. Si aucun son n'est recueilli pendant l'excution de l'lment record, alors la variable d'enregistrement reste vide (voir remarque). Cela peut se produire, par exemple, lorsqu'une entre vocale ou DTMF est reue pendant la lecture de l'invite ou avant que l'intervalle de temporisation n'expire. En particulier, si aucun son n'est recueilli avant que l'utilisateur ne termine l'enregistrement par une entre DTMF correspondant une grammaire DTMF locale (ou quand la valeur de l'attribut dtmfterm est xe "true"), alors la variable d'enregistrement n'est pas remplie (et donc aucune variable ctive n'est xe) et l'algorithme FIA poursuit normalement sans qu'un vnement noinput ne soit suscit. Nanmoins, dans ces situations, on peut accder aux informations concernant l'entre via le tableau application.lastresult$, comme dcrit dans le chapitre 5.1.5. L'lment record contient un attribut dtmfterm pour des raisons de commodit envers les dveloppeurs. Un attribut dtmfterm avec la valeur "true" quivaut la dnition d'une grammaire DTMF locale ltrant toute entre DTMF. L'attribut dtmfterm est prioritaire sur les grammaires DTMF locales dnies. N'importe quelle touche DTMF correspondant une grammaire active termine l'enregistrement. Les touches DTMF qui ne correspondent pas une grammaire active sont ignores (et, de fait, ne terminent ni n'aectent d'une quelconque manire l'enregistrement) et la plateforme peut, en option, les supprimer du signal. La reconnaissance des grammaires vocales par la plateforme pendant l'enregistrement est optionnelle. Si la plateforme gre simultanment la reconnaissance et l'enregistrement, alors une commande vocale ltre par une grammaire vocale non locale peut terminer l'enregistrement et l'algorithme FIA est invoqu, lequel transfre l'excution l'lment contenant la grammaire. La commande vocale terminante est acessible via le tableau application.lastresult$. Par contre, le son de la commande vocale terminante reconnue n'est pas disponible et il ne fait pas partie de l'enregistrement. Remarquez que, au contraire d'une tonalit DTMF, on ne peut pas utiliser une entre de reconnaissance vocale juste pour terminer l'enregistrement : si des grammaires vocales locales sont dnies, elles sont considres inactives (c'est70 of 212 27/07/2012 22:31

Le langage de balisage extensible vocal (VoiceXML) vers...

http://www.yoyodesign.org/doc/w3c/voicexml20/

-dire, qu'elles sont ignores), mme si la plateforme gre la reconnaissance et l'enregistrement simultans. Si la grammaire de terminaison retenue est une grammaire locale, alors l'enregistrement est plac dans la variable d'enregistrement. Sinon, celle-ci est laisse intacte (voir la remarque) et l'algorithme FIA est invoqu. Quel que soit le cas, le tableau application.lastresult$ sera peupl. Remarque : Bien que la variable d'enregistrement ne soit pas remplie dans ce cas, la correspondance d'une grammaire non locale peut nanmoins entraner l'assignation d'une certaine valeur la variable d'enregistrement (voir le chapitre 3.1.6). Les attributs de l'lment record sont :

La variable d'lment d'entre qui va contenir l'enregistrement.


name

Remarquez que l'implmentation de cette variable peut varier d'une plateforme l'autre (bien que toutes les plateformes doivent grer son comportement dans les lments audio et submit, comme dcrit dans cette spcication). La valeur initiale de la variable de l'lment de formulaire ; la valeur implicite est la valeur ECMAScript "undefined". Si elle est initialise, alors l'lment de formulaire ne sera pas visit, moins d'eacer la variable d'lment de formulaire. Une expression dont l'valuation, aprs conversion en une valeur boolenne, doit valoir "true" pour que l'lment de formulaire soit visit. Lorsque sa valeur est "true" (la valeur implicite), alors aucune des grammaires vocales et DTMF non locales n'est active pendant l'enregistrement. Pour une valeur "false", les grammaires vocales et DTMF non locales sont actives. Lorsque sa valeur est "true", une tonalit est produite juste avant l'enregistrement. La valeur implicite est "false" La dure maximale d'enregistrement. Sa valeur est une indication de temps (voir le chapitre 6.5). La valeur implicite est propre la plateforme.

expr

cond

modal

beep

maxtime

Le dlai de silence qui indique la n du discours. Sa valeur est une indication de temps (voir le finalsilence chapitre 6.5). La valeur implicite est propre la plateforme. Tableau 16 : Les attributs de l'lment record

71 of 212

27/07/2012 22:31

Le langage de balisage extensible vocal (VoiceXML) vers...

http://www.yoyodesign.org/doc/w3c/voicexml20/

dtmfterm

Lorsque sa valeur est "true", n'importe quelle touche DTMF non ltre par une grammaire active sera traite comme la correspondance d'une grammaire DTMF locale (anonyme) active. La valeur implicite est "true". Le format de mdia de l'enregistrement rsultant. Les plateformes doivent reconnatre les formats de chier son indiqus dans l'annexe E (d'autres formats peuvent aussi tre grs). La valeur implicite, propre la plateforme, devrait correspondre l'un des formats obligatoires.

type

L'lment record contient les variables ctives suivantes aprs que l'enregistrement a t ralis : nom$.duration La dure de l'enregistrement en millisecondes. nom$.size La taille de l'enregistrement en octets.

Si la valeur de l'attribut dtmfterm est "true" et que l'utilisateur a termin l'enregistrement en appuyant une touche DTMF, alors la valeur de nom$.termchar cette variable ctive est celle de la touche appuye (par exemple, # ). Sinon, la valeur est "undefined". nom$.maxtime C'est un boolen valu "true" si l'enregistrement s'est termin parce que la dure maximale a t atteinte.

Tableau 17 : Les variables ctives de l'lment record

2.3.7. L'lment transfer


L'lment transfer instruit l'interprteur de connecter l'appelant une autre entit (par exemple, une ligne tlphonique ou une autre application vocale. Pendant l'opration de transfert, la session d'interprtation courante est suspendue. Une plateforme d'implmentation peut initier un transfert de diverses manires, dont ceux de type pont , aveugle , redirection de rseau (appel parfois rappel et transfert , transfert par support commutateur , etc. Les transferts de types pont et aveugle sont pris en charge ; les autres types dpendent troitement des fonctionnalits et des congurations spciques des plateformes et des rseaux, c'est la raison pour laquelle ils ne sont pas traits par cette spcication. L'lment transfer est optionnel, bien que les plateformes devraient le prendre en charge. Les plateformes grant l'lment transfer devraient grer les transferts de type pont ou ceux de type aveugle, ou les deux. Celles qui grent l'un ou l'autre type de transfert peuvent grer, en option, les modes d'entre asynchrones des commandes DTMF, ou des commandes vocale, ou les deux, pendant le transfert d'appel an d'annuler la tentative de liaison distante. Les tentatives de transfert de type aveugle peuvent s'annuler tant que l'appel sortant n'a pas encore commenc.

72 of 212

27/07/2012 22:31

Le langage de balisage extensible vocal (VoiceXML) vers...

http://www.yoyodesign.org/doc/w3c/voicexml20/

Les attributs de l'lment transfer sont : Stocke le rsultat d'une tentative de transfert de type pont. Dans le cas d'un transfert de type aveugle, cette variable n'est pas dnie. La valeur initiale de la variable de l'lment de formulaire ; la valeur implicite est la valeur ECMAScript "undefined". Si elle est initialise, alors l'lment de formulaire ne sera pas visit, moins d'eacer la variable d'lment de formulaire. Une expression dont l'valuation, aprs conversion en une valeur boolenne, doit valoir "true" pour que l'lment de formulaire soit visit. L'adresse URI de destination (tlphone, adresse de tlphonie IP). Les plateformes doivent grer la syntaxe URL tel: dcrite dans le document [RFC2806] et peuvent grer d'autres systmes d'adressage fonds sur des adresses URI. Une expression ECMAScript produisant l'adresse URI de destination. Dtermine si la plateforme participe la connexion entre l'appelant et l'appel. bridge="true" Transfert de type pont. La plateforme ajoute l'appel dans la connexion. L'interprtation du document est suspendue jusqu' ce que le transfert de l'appel soit termin. La plateforme demeure dans la connexion pour la dure de l'appel transfr ; pendant le transfert, l'coute est contrle par un ventuel lment grammar inclus. Si l'appelant se dconnecte en raccrochant ou si le rseau dconnecte l'appelant, alors la plateforme suscite un vnement connection.disconnect.hangup. Si la connexion est interrompue pour une quelconque autre raison, ce rsultat est signal dans l'attribut name (voir le tableau suivant). bridge="false" Transfert de type aveugle (par dfaut). La plateforme redirige l'appelant vers l'appel Tableau 18 : Les attributs de l'lment transfer
73 of 212 27/07/2012 22:31

name

expr

cond

dest

destexpr

bridge

Le langage de balisage extensible vocal (VoiceXML) vers...

http://www.yoyodesign.org/doc/w3c/voicexml20/

sans demeurer dans la connexion et elle ne surveille pas le rsultat. La plateforme suscite immdiatement un vnement connection.disconnect.transfer, que le transfert ait russi ou non. Le temps d'attente en essayant de connecter l'appel avant de renvoyer la rponse "noanswer". La valeur connecttimeout est une indication de temps (voir le chapitre 6.5). Ne s'applique que si l'attribut bridge a la valeur "true". La valeur implicite est propre la plateforme. La dure permise pour l'appel ou la valeur "0s" si aucune limite n'est impose. La valeur est une indication de temps (voir le chapitre 6.5). Ne s'applique que si l'attribut bridge a la valeur "true". La valeur implicite est "0s". L'adresse URI de la source sonore jouer pendant la tentative de transfert (avant la rponse distante).
transferaudio

maxtime

Si la ressource ne peut pas tre ramene, alors l'erreur est ignore et le transfert continue ; ce que l'appelant entend est propre la plateforme.

Des informations interapplications (AAI). Une chane contenant les donnes envoyes une application distante, et disponibles dans la variable de session session.connection.aai. La transmission de donnes AAI peut dpendre des passerelles de rseau et des traductions de donnes de la signalisation (par exemple, ISDN vers SIP) ; l'tat des donnes envoyes un site distant n'est pas connu ni signal.
aai

Bien que toutes les plateformes doivent grer l'attribut aai, elles ne sont pas obliges d'envoyer des donnes AAI et n'ont pas besoin de prendre en charge la rception de donnes AAI. Les plateformes qui ne peuvent recevoir de donnes AAI doivent xer la valeur de la variable session.connection.aai la valeur ECMAScript "undefined". Le mcanisme de transmission sous-jacent peut imposer des limites la longueur des donnes.

74 of 212

27/07/2012 22:31

Le langage de balisage extensible vocal (VoiceXML) vers...

http://www.yoyodesign.org/doc/w3c/voicexml20/

aaiexpr

Une expression ECMAScript produisant les donnes AAI.

On ne peut dnir qu'un seul exactement entre les attributs dest ou destexpr, sinon, un vnement error.badfetch est suscit. De mme, on ne peut dnir qu'un seul exactement entre les attributs aai ou aaiexpr, sinon, un vnement error.badfetch est suscit. 2.3.7.1 Le transfert de type aveugle Pour un transfert de type aveugle, il se produit une tentative de connecter l'appelant original l'appel. Toutes les invites prcdant l'lment transfer, ainsi que celles qui y sont contenues, sont mises en le d'attente et joues avant que la tentative de transfert ne commence ; les proprits d'interruption s'appliquent normalement.

Figure 8 : Les connexions sonores pendant un transfert de type aveugle : <transfer bridge="false"> Toute source sonore dsigne par l'attribut transferaudio est ignore, car aucun son ne peut tre jou depuis la plateforme vers l'appelant au cours de la tentative de transfert. Que la connexion russisse ou non, la plateforme d'implmentation ne peut pas reprendre le contrle des connexions. L'tat de la connexion n'est pas disponible. Par exemple, il n'est pas possible de savoir si l'appel tait occup, quand un appel russi se termine, etc. Toutefois, certaines conditions d'erreur peuvent tre signales lorsque la plateforme en a connaissance, comme quand l'appelant n'est pas autoris appeler la destination ou quand l'adresse URI de la destination est malforme. Ces conditions sont propres la plateforme mais elles devraient obir aux conventions de nommage des valeurs de transfert des autres variables d'lment de formulaire. L'appelant peut annuler la tentative de transfert avant que l'appel sortant ne commence, en l'interrompant par une commande vocale ou DTMF qui corresponde une grammaire active, au cours de la lecture de n'importe quel son mis en le d'attente. Auquel cas, la variable d'lment de formulaire est xe tout comme les variables ctives suivantes :

nom$.duration

La dure d'un transfert d'appel en secondes.

Tableau 19 : Les variables ctives de l'lment transfer


75 of 212 27/07/2012 22:31

Le langage de balisage extensible vocal (VoiceXML) vers...

http://www.yoyodesign.org/doc/w3c/voicexml20/

La dure vaut "0" si la tentative d'appel a t termine par l'appelant (au moyen d'une commande DTMF) avant que l'appel sortant ne commence.

Le mode d'entre de la commande de terminaison ("dtmf" ou "voice"), ou la valeur "undefined" si le transfert nom$.inputmode n'a pas t termin par une correspondance de grammaire. Le texte de l'nonc, si le transfert a t termin par une entre de reconnaissance vocale, ou le rsultat nom$.utterance DTMF, si le transfert a t termin par une entre DTMF ; sinon, la valeur "undefined". Le tableau application.lastresult$ sera galement rempli comme dcrit dans le chapitre 5.1.5. Si l'appelant se dconnecte en raccrochant au cours de la tentative de transfert d'appel, avant que la connexion l'appel n'ait commenc, alors un vnement connection.disconnect.hangup sera suscit et l'excution du dialogue passera au gestionnaire de l'vnement hangup (le cas chant). La variable d'lment de formulaire et, par consquent, les variables ctives ne seront pas xes. Une fois le transfert lanc et l'interprteur dconnect de la session, la plateforme suscite un vnement connection.disconnect.transfer et l'interprtation du document se poursuit normalement. Toute connexion entre l'appelant et l'appel reste en place indpendamment de l'excution du document. Valeur de la variable d'lment de formulaire

Action

vnement ou erreur

Cause

le transfert "undefined" commence

Il y a eu une tentative de transfert de connection.disconnect.transfer l'appelant sur une autre ligne et elle ne reviendra pas.

Tableau 20 : Les rsultats d'un transfert de type aveugle

76 of 212

27/07/2012 22:31

Le langage de balisage extensible vocal (VoiceXML) vers...

http://www.yoyodesign.org/doc/w3c/voicexml20/

l'appelant annule le transfert avant que "near_end_disconnect" l'appel sortant ne commence

L'appelant a annul la tentative de transfert via une commande vocale ou DTMF avant que l'appel sortant ne commence (au cours de la lecture des sons en le d'attente). Le transfert est termin mais la cause en est inconnue.

le transfert se termine

"unknown"

2.3.7.2 Le transfert de type pont Pour un transfert de type pont, la plateforme connecte l'appelant l'appel dans une conversation bidirectionnelle simultane.

Figure 9 : Les connexions sonores au cours d'un transfert de type pont : <transfer bridge="true"> Toutes les invites prcdant l'lment transfer, ainsi que celles qui y sont contenues, sont mises en le d'attente et joues avant que la tentative de transfert ne commence ; les proprits d'interruption s'appliquent normalement. La dnition de l'attribut bargeintype est ignore ; sa valeur implicite est "hotword". L'appelant peut annuler la tentative de transfert avant que l'appel sortant ne commence, en l'interrompant par une commande vocale ou DTMF qui corresponde une grammaire active, au cours de la lecture de n'importe quel son mis en le d'attente.

77 of 212

27/07/2012 22:31

Le langage de balisage extensible vocal (VoiceXML) vers...

http://www.yoyodesign.org/doc/w3c/voicexml20/

2.3.7.2.1 L'coute d'une entre d'utilisateur au cours d'un transfert Les platformes peuvent, en option, grer une coute des commandes de l'appelant pour terminer le transfert en dnissant une ou plusieurs grammaires dans l'lment transfer. L'lment transfer est modal, c'est--dire que les grammaires dnies hors de sa porte sont inactives. Pendant la lecture des invites et pendant la totalit des phases de connexion et de discours du transfert, la plateforme surveillera : les entres DTMF de l'appelant correspondant une grammaire DTMF incluse ; les noncs de l'appelant correspondant une grammaire vocale incluse Un ltrage russi terminera le transfert (la connexion l'appel) ; l'interprtation du document se poursuit normalement. Un ltrage non russi sera ignor. Si aucune grammaire n'est dnie, alors la plateforme n'coutera pas les entres de l'appelant. La plateforme ne surveille pas les signaux intrabandes ou les commandes vocales de l'appel. 2.3.7.2.2 La gestion des dconnexions de l'appelant, de l'appel ou du rseau Tout en essayant de se connecter l'appel, la plateforme surveille les indicateurs de progression de l'appel (intrabandes ou hors bande, selon le type de connexion et les protocoles particuliers). Pour la dure d'un transfert russi, la plateforme surveille les vnements tlphoniques (hors bande), telle qu'une dconnexion, aux deux extrmits de la liaison. Si l'appel se dconnecte, alors l'appelant reprend sa session avec l'interprteur. Si c'est l'appelant, alors la plateforme dconnecte l'appel et l'interprtation du document se poursuit normalement. Si l'appelant et l'appel sont tous deux dconnects par le rseau, alors l'interprtation du document se poursuit normalement. Les rsultats possibles pour un transfert de type pont, avant que la connexion l'appel ne soit tablie, sont : Valeur de la variable de l'lment de formulaire

Action

vnement

Cause

l'appelant se dconnecte l'appelant dconnecte "near_end_disconnect" l'appel

connection.disconnect.hangup

L'appelant raccroche. L'appelant a forc la dconnexion de l'appel via une

Tableau 21 : Les rsultats d'un transfert de type pont avant l'tablissement de la connexion
78 of 212 27/07/2012 22:31

Le langage de balisage extensible vocal (VoiceXML) vers...

http://www.yoyodesign.org/doc/w3c/voicexml20/

commande vocale ou DTMF. l'appel est occup le rseau est encombr "busy" L'appel tait occup. Un rseau intermdiaire a refus l'appel. Il n'y a pas eu de rponse dans le temps imparti par l'attribut connecttimeout. Le transfert est interrompu mais la cause en est inconnue.

"network_busy"

l'appel ne "noanswer" rpond pas

---

"unknown"

Les rsultats possibles pour un transfert de type pont, aprs que la connexion l'appel est tablie, sont : Valeur de la variable de l'lment de formulaire

Action

vnement

Cause

l'appelant se dconnecte

connection.disconnect.hangup

L'appelant raccroche. L'appelant a forc la dconnexion de l'appel via une commande vocale ou DTMF. L'appel a t dconnect par la plateforme

l'appelant se "near_end_disconnect" dconnecte

la plateforme "maxtime_disconnect" dconnecte l'appel

Tableau 22 : Les rsultats d'un transfert de type pont aprs tablissement de la connexion
79 of 212 27/07/2012 22:31

Le langage de balisage extensible vocal (VoiceXML) vers...

http://www.yoyodesign.org/doc/w3c/voicexml20/

parce que la dure de l'appel a atteitn la valeur de l'attribut maxtime. le rseau dconnecte "network_disconnect" l'appel l'appel se "far_end_disconnect" dconnecte Le rseau a dconnect l'appel de la plateforme. L'appel a raccroch. Le transfert s'est interrompu mais la cause en est inconnue.

---

"unknown"

Si l'appelant se dconnecte en raccrochant (soit lors du transfert d'appel, soit lors de la tentative de transfert d'appel), alors la connexion l'appel (le cas chant) est abandonne, un vnement connection.disconnect.hangup est suscit et l'excution du dialogue va passer au gestionnaire de l'vnement hangup (le cas chant). La variable d'lment de formulaire et, par consquent, les variables ctives ne seront pas xes. Si l'excution de l'lment transfer se poursuit normalement, alors sa variable d'lment de formulaire est xe, tout comme les variables ctives suivantes :

La dure d'un transfert d'appel en secondes. nom$.duration La dure vaut "0" si le transfert d'appel a t termin par l'appelant (au moyen d'une commande vocale ou DTMF) avant qu'on y rponde.

Le mode d'entre de la commande de terminaison ("dtmf" ou "voice"), ou la valeur "undefined" si le transfert nom$.inputmode n'a pas t termin par une correspondance de grammaire. Le texte nonc, si le transfert a t termin par une commande vocale, ou le rsultat DTMF, si celui-ci a t nom$.utterance termin par une commande DTMF ; sinon sa valeur est "undefined". Tableau 23 : Les variables ctives de l'lment transfer Si le transfert a t termin par une commande vocale, alors le tableau

80 of 212

27/07/2012 22:31

Le langage de balisage extensible vocal (VoiceXML) vers...

http://www.yoyodesign.org/doc/w3c/voicexml20/

application.lastresult$ est rempli normalement. 2.3.7.2.3 Le son au cours d'une tentative de transfert de type pont Au cours d'un transfert de type pont, on peut vouloir jouer un son l'appelant pendant que la plateforme essaye de se connecter l'appel. Par exemple, une publicit ( Achetez la mayonnaise de tante Louise ! ) ou bien un message d'information ( Votre avis nous intresse ; veuillez patienter pendant que nous vous connectons au premier agent disponible. ) seraient susceptibles de remplacer les indications de progression de l'appel (sonnerie, tonalit occup , tat du rseau, etc.). l'instant o commence l'appel sortant, le son dni par l'attribut transferaudio est jou. La lecture du son s'achve lorsque l'tat de la rponse de la connexion distante est dtermin. Cet tat n'est pas toujours connu, car le commutateur distant peut jouer un son (tels qu'une tonalit d'information particulire, une tonalit occup , une tonalit de rseau encombr ou un enregistrement annonant l'impossibilit d'tablir la connexion) sans rpondre rellement l'appel. Si la dure du chier son spci est infrieure au temps ncessaire la connexion distante, alors l'appelant pourra entendre un silence, un son propre la plateforme ou une indication de progression de l'appel, selon la plateforme. 2.3.7.3 Les erreurs et vnement au cours du transfert Au cours d'un transfert, l'un des vnements suivants pourra tre suscit : vnement connection.disconnect.hangup Cause L'appelant raccroche. Type de transfert pont

Une tentative pour transfrer l'appelant sur connection.disconnect.transfer une autre ligne a eu lieu et elle ne reviendra pas.

aveugle

Tableau 24 : Les vnements suscits au cours du transfert Si une tentative de transfert a chou, l'une des erreurs suivantes sera suscite : Erreur Cause L'appelant n'est pas autoris appeler la destination. L'adresse URI de la destination est malforme. Type de transfert aveugle et pont aveugle et pont

error.connection.noauthorization

error.connection.baddestination

error.connection.noroute

La plateforme est dans pont l'impossibilit de placer

Tableau 25 : Les erreurs de l'chec d'un transfert


81 of 212 27/07/2012 22:31

Le langage de balisage extensible vocal (VoiceXML) vers...

http://www.yoyodesign.org/doc/w3c/voicexml20/

un appel vers la destination. La plateforme est dans l'impossibilit d'allouer les ressources pour placer l'appel. La pile de protocoles pour cette connexion a lev une exception qui ne correspond aucun des autres vnements error.connection. La plateforme ne gre pas le transfert de type aveugle.

error.connection.noresource

pont

error.connection.protocole.nnn

pont

error.unsupported.transfer.blind

aveugle

La plateforme ne gre error.unsupported.transfer.bridge pas le transfert de type pont. La platforme ne gre pas le format d'adresse URI employ. La variable spciale _message (voir le chapitre 5.2.2) contiendra la chane "The URI x is not a supported URI format", o la variable x reprsente l'adresse URI indique par l'attribut dest, ou bien destexpr, de l'lment transfer.

pont

error.unsupported.uri

aveugle et pont

2.3.7.4 Exemple L'exemple suivant montre la tentative de transfert de type pont d'un appelant un tiers puis l'attente de la n de la conversation. On peut inclure des invites avant ou dans l'lment transfer : elles peuvent servir informer l'appelant de ce qui se droule, avec un avis tel que Veuillez patienter, nous transfrons votre appel . L'invite de l'lment block et celle de l'lment transfer sont mises en le d'attente puis joues avant le transfert eectif. Aprs purge de la le d'attente des sons, l'appel sortant est initi. Par dfaut, l'appelant est connect la voie tlphonique sortante. L'attribut transferaudio dnit le chier son jouer l'appelant, au lieu du chier son distant, jusqu' ce que l'hte distant rponde. Si la dure de la source sonore est plus longue que celle du temps pour tablir la connexion, alors la lecture du son cessera immdiatement ds la rponse distante.

82 of 212

27/07/2012 22:31

Le langage de balisage extensible vocal (VoiceXML) vers...

http://www.yoyodesign.org/doc/w3c/voicexml20/

Figure 10 : Le diagramme des squences et des temporisations dans un exemple de transfert de type pont
<?xml version="1.0" encoding="UTF-8"?> <vxml version="2.0" xmlns="http://www.w3.org/2001/vxml" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.w3.org/2001/vxml http://www.w3.org/TR/voicexml20/vxml.xsd"> <form id="xfer"> <var name="ma_duree" expr="0"/> <block> <!-- Mis en file d'attente et jou avant le dbut du transfert --> <prompt> Appel de Riley en cours. Veuillez patienter. </prompt> </block> <!-- Joue une musique pendant la tentative de connexion l'hte distant --> <!-- L'attribut bargeintype a la valeur "hotword" seulement pendant la dure de l'attribut transferaudio --> <!-- Attend jusqu' 60 secondes la rponse distante --> <transfer name="mon_appel" dest="tel:+33-1234567890" transferaudio="musique.wav" connecttimeout="60s" bridge="true"> <!-- Mis en attente et jou avant le dbut du transfert --> <!-- Les proprits d'interruption s'applique pour cette invite --> <prompt> Dites annuler pour vous dconnecter tout instant. </prompt>

83 of 212

27/07/2012 22:31

Le langage de balisage extensible vocal (VoiceXML) vers...

http://www.yoyodesign.org/doc/w3c/voicexml20/

<!-- Dfinit une grammaire externe couter pour la commande annuler --> <grammar src="annuler.grxml" type="application/srgs+xml"/> <filled> <assign name="ma_duree" expr="mon_appel$.duration"/> <if cond="mon_appel == 'busy'"> <prompt> La ligne de Riley est occupe. Veuillez rappeller plus tard. </prompt> <elseif cond="mon_appel == 'noanswer'"/> <prompt> Riley ne rpond pas. Veuillez rappeler plus tard. </prompt> </if> </filled> </transfer> <!-- Envoie les statistiques d'appel au serveur --> <block> <submit namelist="mon_appel ma_duree" next="/cgi-bin/rapport"/> </block> </form> </vxml>

2.4 L'lment filled


L'lment filled indique l'action eectuer lorsqu'une certaine combinaison d'lments d'entre est remplie. Il peut apparatre dans deux endroits : comme enfant de l'lment form ou comme enfant d'un lment d'entre. Comme enfant d'un lment form, l'lment filled peut servir accomplir des actions survenant lorsqu'une combinaison d'un ou plusieurs lments d'entre est remplie. Par exemple, l'lment filled suivant eectue une vrication croise an de s'assurer que le champ de la ville de dpart dire du champ de la ville d'arrive :
<?xml version="1.0" encoding="UTF-8"?> <vxml version="2.0" xmlns="http://www.w3.org/2001/vxml" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.w3.org/2001/vxml http://www.w3.org/TR/voicexml20/vxml.xsd"> <form id="obtenir_villes_depart_et_arrivee"> <field name="ville_depart"> <grammar src="http://www.grammars.example.com/voicexml/ville.grxml" type="application/srgs+xml"/> <prompt>Quelle est la ville de dpart ?</prompt> </field> <field name="ville_arrivee"> <grammar src="http://www.grammars.example.com/voicexml/ville.grxml" type="application/srgs+xml"/> <prompt>Quelle est la ville d'arrive ?</prompt> </field> <filled mode="all" namelist="ville_depart ville_arrivee"> <if cond="ville_depart == ville_arrivee"> <prompt> Vous ne pouvez partir d'une ville et y arriver.

84 of 212

27/07/2012 22:31

Le langage de balisage extensible vocal (VoiceXML) vers...


</prompt> <clear/> </if> </filled> </form> </vxml>

http://www.yoyodesign.org/doc/w3c/voicexml20/

Si l'lment filled apparat dans un lment d'entre, alors il indique l'action eectuer aprs que l'lment d'entre a t rempli
<?xml version="1.0" encoding="UTF-8"?> <vxml version="2.0" xmlns="http://www.w3.org/2001/vxml" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.w3.org/2001/vxml http://www.w3.org/TR/voicexml20/vxml.xsd"> <form id="obtenir_ville"> <field name="ville"> <grammar type="application/srgs+xml" src="http://www.livraison.example.com/grammars/villes_desservies.grxml"/> <prompt>Quelle est la ville ?</prompt> <filled> <if cond="ville == 'Novosibirsk'"> <prompt> Notez que Novosibirsk ne sera plus dsservie l'anne prochaine. </prompt> </if> </filled> </field> </form> </vxml>

Aprs chaque recueil d'une entre d'utilisateur, tous les lments d'entre mentionns dans l'entre sont xs et l'interprteur examine alors chaque lment filled, dans l'ordre du document (sans prfrence donne ceux dans les lments d'entre vis--vis de ceux dans le formulaire). Les lments filled dont les conditions vrient l'nonc sont alors excuts dans l'ordre, jusqu' ce qu'il n'y en ait plus, ou jusqu' ce que l'un transfre le contrle ou suscite un vnement. Les attributs de l'lment filled comprennent : L'attribut admet comme valeur soit "all" (la valeur implicite), soit "any". Pour la valeur "any", l'action est excute lorsque n'importe quel des lments d'entre dnis est rempli par la dernire entre d'utilisateur. Pour la valeur "all", l'action est excute lorsque tous les lments d'entre mentionns sont remplis et qu'au moins l'un d'entre eux a t rempli par la dernire entre d'utilisateur. Un lment filled contenu dans un lment d'entre ne peut pas dnir d'attribut mode ; auquel cas, la plate forme suscitera un vnement error.badfetch la lecture du document. Les lments d'entre partir desquels dclencher l'excution. Pour un lment filled dans un formulaire, Tableau 26 : Les attributs de l'lment filled
85 of 212 27/07/2012 22:31

mode

namelist

Le langage de balisage extensible vocal (VoiceXML) vers...

http://www.yoyodesign.org/doc/w3c/voicexml20/

la valeur implicite de l'attribut namelist se compose des noms (explicites et implicites) des lments d'entre du formulaire. Un lment filled dans un lment d'entre ne peut pas dnir d'attribut namelist (dans ce cas, la valeur de l'attribut est le nom de l'lment d'entre) ; si on dnit un attribut namelist, alors la plateforme suscite un vnement error.badfetch la lecture du document. Remarquez que les lments de commande sont interdits dans cette liste ; un vnement error.badfetch sera suscit lorsque le document contiendra un lment filled avec un attribut namelist appelant une variable d'lment de commande.

2.5 Les liens


Un lment link peut avoir une ou plusieurs grammaire dont la porte s'exerce sur l'lment le contenant. Un attribut scope sur l'lment contenant l'lment link n'exerce aucun eet sur la porte des grammaires de l'lment link (par exemple, lorsqu'un lment link est contenu dans un lment form dclarant scope="document", les grammaires de l'lment link s'exercent sur le formulaire, et non sur le document). Les lments grammar contenus dans l'lment link ne peuvent pas dnir d'attribut scope (voir le chapitre 3.1.3 pour des prcisions). Lorsque l'une de ces grammaires correspond, le lien s'active et eectue : Soit une transition vers un nouveau document ou dialogue (comme l'lment goto) ; Soit suscite un vnement (comme l'lment throw). Par exemple, le lien suivant s'active quand on dit livres ou qu'on tape 2 .
<link next="http://www.voicexml.org/livres/principal.vxml"> <grammar mode="voice" version="1.0" root="racine"> <rule id="racine" scope="public"> <one-of> <item>livres</item> <item>livres VoiceXML</item> </one-of> </rule> </grammar> <grammar mode="dtmf" version="1.0" root="r2"> <rule id="r2" scope="public"> 2 </rule> </grammar> </link>

Ce lien mne un dialogue dtermin dynamiquement dans le document courant :


<link expr="'#' + document.helpstate"> <grammar mode="voice" version="1.0" root="racine"> <rule id="racine" scope="public"> help </rule> </grammar> </link>

86 of 212

27/07/2012 22:31

Le langage de balisage extensible vocal (VoiceXML) vers...

http://www.yoyodesign.org/doc/w3c/voicexml20/

L'lment link peut tre enfant des lments vxml, ou form, ou des lments de formulaire field et initial. Les grammaires d'un lment link au niveau de l'lment vxml sont actives pour tout le document. Les grammaires d'un lment link au niveau d'un lment form sont actives tant que l'utilisateur reste dans le formulaire. Si un document racine d'application contient un lien de niveau document, alors les grammaires du lien sont actives, quel que soit le document de l'application excut. Si l'excution se produit dans un lment de formulaire modal, alors les grammaires du lien, que ce soit au niveau formulaire, document ou bien application, ne sont pas actives. On peut aussi dnir un lien qui, ds lors qu'il est activ, suscite un vnement au lieu de mener un nouveau document. L'vnement est suscit l'emplacement courant de l'excution, et non l'emplacement o le lien est dni. Dans l'exemple suivant, si l'utilisateur sollicite la grammaire du lien ou tape 2 au clavier, un vnement help est suscit dans l'lment de formulaire que visitait l'utilisateur et celui-ci est gr par l'lment catch le mieux quali dans la porte de l'lment (voir le chapitre 5.2.4 pour des prcisions) :
<link dtmf="2" event="help"> <grammar mode="voice" version="1.0" root="r5"> <rule id="r5" scope="public"> <one-of> <item>arrgh</item> <item>hlas tout est perdu !</item> <item>allez ! machine de m.....</item> <item>Je n'y comprends rien</item> </one-of> </rule> </grammar> </link>

Lorsque le lien est activ, le tableau application.lastresult$ se remplit. Cela permet de prendre des dcisions en rception dans le ux des appels en fonction du rsultat smantique rel. Voir un exemple dans le chapitre 5.1.5. Conceptuellement, on peut considrer l'lment link comme tant en deux parties : une condition et une action. La condition correspond au contenu de l'lment link, c'est--dire, la ou les grammaires qui doivent tre sollicites pour que le lien soit activ. L' action est dnie par les attributs de l'lment, c'est--dire, vers o eectuer la transition ou quel vnement susciter. La condition est rsolue/value lexicalement tandis que l' action l'est dynamiquement. En particulier, cela signie que : toutes les adresses URI dans le contenu du lien se rsolvent lexicalement, c'est-dire, par rapport l'adresse URI de base en vigueur (voir l'attribut xml:base dans le chapitre 1.5.1) du document dans lequel le lien est dni ; toutes les adresse URI dans les attributs de l'lment link se rsolvent dynamiquement, c'est--dire, par rapport l'adresse URI de base en vigueur lorsque la ou les grammaires du lien correspondent ; toutes les expressions ECMAScript dans les attributs de l'lment link s'valuent dynamiquement, c'est--dire, dans la porte et le contexte d'excution en vigueur lorsque la ou les grammaires correspondent.

87 of 212

27/07/2012 22:31

Le langage de balisage extensible vocal (VoiceXML) vers...

http://www.yoyodesign.org/doc/w3c/voicexml20/

Les attributs de l'lment link sont : L'adresse URI de destination. Elle correspond un document (ventuellement avec une ancre indiquant le dialogue de dpart) ou un dialogue dans le document courant (juste une ancre). Comme l'attribut next, sauf que l'adresse URI est dtermine dynamiquement en valuant l'expression ECMAScript donne. L'vnement susciter lorsque l'entre d'utilisateur correspond l'une des grammaires du lien. Une expression ECMAScript se rduisant au nom de l'vnement susciter lorsque l'entre d'utilisateur correspond l'une des grammaires du lien. Une chane message apportant des explications supplmentaires concernant l'vnement suscit. Le message est disponible en tant que valeur d'une variable dans la porte de l'lment catch, voir le chapitre 5.2.2. Une expression ECMAScript se rduisant la chane message. La squence DTMF du lien. Elle quivaut une grammaire DTMF simple et les proprits DTMF (voir le chapitre 6.3.3) s'appliquent la reconnaissance de la squence. Contrairement aux grammaires DTMF, les blancs sont optionnels : les dclarations dtmf="123#" et dtmf="1 2 3 #" sont quivalentes. L'attribut peut s'utiliser en mme temps que d'autres lments grammar : le lien est activ lorsque l'entre d'utilisateur correspond une grammaire du lien ou la squence DTMF. Voir le chapitre 6.1. La valeur implicite est celle de la proprit fetchaudio. Voir le chapitre 6.1. La valeur implicite est celle de la proprit documentfetchhint. Voir le chapitre 6.1. La valeur implicite est celle de la proprit fetchtimeout. Voir le chapitre 6.1. La valeur implicite est celle de la proprit documentmaxage. Voir le chapitre 6.1. La valeur implicite est celle de la proprit documentmaxstale. Tableau 27 : Les attributs de l'lment link On ne peut dnir qu'un seul exactement entre les attributs next, expr, event ou

next

expr

event

eventexpr

message

messageexpr

dtmf

fetchaudio

fetchhint

fetchtimeout

maxage

maxstale

88 of 212

27/07/2012 22:31

Le langage de balisage extensible vocal (VoiceXML) vers...


eventexpr,

http://www.yoyodesign.org/doc/w3c/voicexml20/

sinon, un vnement error.badfetch est suscit. De mme, on ne peut dnir qu'un seul exactement entre les attributs message ou messageexpr, sinon, un vnement error.badfetch est suscit.

3. L'entre d'utilisateur
3.1 Les grammaires
3.1.1 Les grammaires vocales
L'lment grammar peut servir introduire une grammaire vocale, laquelle : dnit un ensemble d'noncs susceptibles d'tre prononcs par un utilisateur pour eectuer une action ou fournir une information, et lorsque l'nonc est avr, renvoie une interprtation smantique correspondante. Il peut s'agir d'une valeur simple (comme une chane), d'un ensemble non hirarchique de couples attribut-valeur (tel qu'un jour, un mois et une anne) ou d'un objet imbriqu (pour une requte complexe). L'lment grammar est conu de manire s'accommoder de n'importe quel format de grammaire qui satisfait ces deux conditions. Les plateformes VoiceXML doivent reconnatre au moins un format courant, savoir la forme XML dcrite dans la spcication des grammaires de reconnaissance vocale du W3C [SRGS]. Elles devraient reconnatre la forme ABNF dcrite dans cette mme spcication [SRGS]. Les plateformes VoiceXML peuvent choisir de grer d'autres formats que ceux de la spcication SGRS. Par exemple, une plateforme pourrait se servir de la gestion du type PCDATA oerte par l'lment grammar pour introduire directement une dnition de grammaire propritaire ou mettre prot les attributs src et type pour en introduire une externe. Les plateformes VoiceXML doivent correspondre la dnition d'un processeur de grammaire de forme XML conforme donne dans la spcication des grammaires de reconnaissance vocale du W3C [SRGS]. Bien que cette dnition exige d'une plateforme qu'elle puisse traiter des documents ayant un ou plusieurs attributs xml:lang, elle n'exige pas qu'elle soit multilingue. Lorsqu'elle rencontre une langue non reconnue, la plateforme suscite un vnement error.unsupported.language indiquant quelle langue n'est pas reconnue dans sa variable message. Les lments des grammaires SGRS de forme XML Les lments suivants sont dnis pour les grammaires de forme XML dans la spcication des grammaires de reconnaissance vocale du W3C [SRGS] et sont disponibles dans le langage VoiceXML 2.0. Le prsent document ne rednit pas ces lments. Veuillez consulter la spcication des grammaires de reconnaissance vocale du W3C [SRGS] pour les dnitions et des exemples. lment Usage Tableau 28 : Les lments SRGS (forme XML) Chapitre
([SRGS])

89 of 212

27/07/2012 22:31

Le langage de balisage extensible vocal (VoiceXML) vers...

http://www.yoyodesign.org/doc/w3c/voicexml20/

lment grammar meta metadata lexicon rule token ruleref item <one-of>

Usage L'lment racine d'une grammaire XML Une dclaration en-tte du mtacontenu d'un quivalent HTTP Une dclaration en-tte d'un contenu de mtadonnes XML Une dclaration en-tte d'un lexique de prononciation Dclare une extension de rgle nomme d'une grammaire Dnit un mot ou une autre entit qui peut servir d'entre Dsigne une rgle dnie localement ou extrieurement Dnit une extension dont la rptition et la probabilit d'apparition sont optionnels Dnit un ensemble d'extensions de rgles alternatives Un lment contenu dans une dnition de rgle lequel donne un exemple d'entre correspondant la rgle Dnit une chane arbitraire inclure directement dans une extension et qui peut tre utilise pour une interprtation smantique

Chapitre
([SRGS])

4. VF 4.11.1 VF 4.11.2 VF 4.10 VF 3. VF 2.1 VF 2.2 VF 2.3 VF 2.4 VF

example

3.3 VF

tag

2.6 VF

3.1.1.1 Les grammaires directes On peut utiliser l'lment grammar pour dnir une grammaire directe ou bien externe. Une grammaire directe se compose du contenu d'un lment grammar et c'est une grammaire complte :
<grammar type="type-mdia" mode="voice"> grammaire vocale directe </grammar>

Il est parfois ncessaire, dans ce cas, d'englober le contenu dans une section de type CDATA [XML]. Pour les grammaires directes, l'attribut type prcise le type de mdia rgissant l'interprtation du contenu de l'lment grammar. Voici un exemple de grammaire directe de forme XML inspir de la spcication des grammaires de reconnaissance vocale du W3C [SRGS] :
<grammar mode="voice" xml:lang="fr" version="1.0" root="commande"> <!-- La commande consiste en une action sur un objet -->

90 of 212

27/07/2012 22:31

Le langage de balisage extensible vocal (VoiceXML) vers...

http://www.yoyodesign.org/doc/w3c/voicexml20/

<!-- par exemple, "ouvrir une fentre" --> <rule id="commande" scope="public"> <ruleref uri="#action"/> <ruleref uri="#objet"/> </rule> <rule id="action"> <one-of> <item> ouvrir </item> <item> fermer </item> <item> effacer </item> <item> dplacer </item> </one-of> </rule> <rule id="objet"> <item repeat="0-1"> <one-of> <item> le </item> <item> la </item> <item> un </item> <item> une </item> </one-of> </item> <one-of> <item> fentre </item> <item> fichier </item> <item> menu </item> </one-of> </rule> </grammar>

Voici un exemple de grammaire directe quivalent cette fois dans la forme ABNF de la spcication [SRGS]. Les plateformes VoiceXML n'tant pas obliges de grer ce format, sa portabilit est peut-tre moindre :
<grammar mode="voice" type="application/srgs"> #ABNF 1.0; language fr; mode voice; root $commande; public $commande = $action $objet; $action = ouvrir | fermer | effacer | dplacer; $objet = [le | la | un | une] (fentre | fichier | menu); </grammar>

3.1.1.2 Les grammaires externes On dnit une grammaire externe de la manire suivante :
<grammar src="adresse-URI" type="type-mdia"/>

Dans ce cas, le type de mdia est optionnel parce que le contexte d'interprtation essaiera de le dterminer dynamiquement comme dcrit dans le chapitre 3.1.1.4. Si l'attribut src est dni et qu'une grammaire directe se trouve en contenu d'un lment grammar, alors un vnement error.badfetch est suscit.

91 of 212

27/07/2012 22:31

Le langage de balisage extensible vocal (VoiceXML) vers...

http://www.yoyodesign.org/doc/w3c/voicexml20/

Voici l'exemple de l'appel d'une grammaire externe cre dans la forme XML de la spcication des grammaires de reconnaissance vocale du W3C [SRGS] :
<grammar type="application/srgs+xml" src="http://www.grammaire.example.com/date.grxml"/>

L'exemple suivant illustre l'appel d'une grammaire externe cre dans la forme ABNF de la spcication [SRGS] :
<grammar type="application/srgs" src="http://www.grammaire.example.com/date.gram"/>

3.1.1.3 Le poids des grammaires On peut dnir le poids d'une grammaire au moyen de l'attribut weight :
<grammar weight="0.6" src="formulaire.grxml" type="application/srgs+xml"/>

Les lments grammar, y compris ceux dans les lments link, field et form, peuvent recevoir un attribut weight, que la grammaire soit directe, externe ou bien intgre. L'application des poids obit la dnition du poids des alternatives dans la spcication [SRGS 2.4.1]. Un poids est une valeur en virgule ottante positive simple sans exponentielle. Les valeurs lgales prennent les formes "n", "n.", ".n" et "n.n", o n reprsente une squence compose d'un ou plusieurs chires. Symboliquement, un poids est un facteur de multiplication dans la sphre de recherche d'une reconnaissance vocale. Un poids de "1.0" quivaut ne pas fournir de poids du tout. Un poids suprieur "1.0" fait valoir la grammaire de manire positive et, inversement, un poids infrieur "1.0" fait valoir la grammaire de manire ngative. Si on ne dnit pas de poids, alors le poids implicite d'une grammaire vaut "1.0". Si aucun lment grammar n'a d'attribut weight, alors toutes les grammaires ont un poids quivalent.
<link event="help"> <grammar weight="0.5" mode="voice" version="1.0" root="aide"> <rule id="aide" scope="public"> aide <item repeat="0-1"> s'il vous plat </item> </rule> </grammar> </link> <form> <grammar src="formulaire.grxml" type="application/srgs+xml"/> <field name="date_expiration"> <grammar weight="1.2" src="http://www.example.org/grammaire/date"/> </field> </form>

Dans l'exemple prcdent, la smantique des poids quivaut la grammaire XML suivante :
<grammar root="r1" type="application/srgs+xml">

92 of 212

27/07/2012 22:31

Le langage de balisage extensible vocal (VoiceXML) vers...

http://www.yoyodesign.org/doc/w3c/voicexml20/

<rule id="r1"> <one-of> <item weight="0.5"> <ruleref uri="#aide"/> </item> <item weight="1.0"> <ruleref uri="formulaire.grxml"/> </item> <item weight="1.2"> <ruleref uri="http://www.example.org/grammaire/date"/></item> </one-of> </rule> <rule id="aide"> aide <item repeat="0-1"> s'il vous plat </item> </rule> </grammar>

Les grammaires implicites, comme celles des lments option, ne grent pas les poids : utilisez plutt l'lment grammar an de contrler le poids des grammaires. Les poids des grammaires n'aectent que leur traitement. Ils n'inuent pas directement sur le post-traitement des rsultats des grammaires, y compris la prsance des grammaires lorsque l'entre d'utilisateur correspond plusieurs grammaires actives (voir le chapitre 3.1.4). Les poids n'ont pas d'inuence sur les grammaires DTMF (voir le chapitre 3.1.2). Tout attribut weight dni dans un lment grammar dont l'attribut mode vaut "dtmf" sera ignor.
<!-- le poids sera ignor --> <grammar mode="dtmf" weight="0.3" src="http://www.example.org/dtmf/number"/>

Il est dicile de dterminer les poids appropris et l'estimation des poids n'amliore pas toujours les performances de la reconnaissance. Les poids eectifs s'obtiennent gnralement en tudiant les donnes vocales et textuelles relles sur une plateforme particulire. En outre, le poids d'une grammaire est propre la plateforme. Remarquez que des moteurs de reconnaissance vocale automatique peuvent traiter le mme poids diremment. C'est pourquoi, la valeur de poids qui fonctionne bien sur une plateforme particulire peut donner des rsultats dirents sur d'autres plateformes. 3.1.1.4 L'lment grammar Les attributs de l'lment grammar, hrits de la spcication des grammaires de reconnaissance vocale du W3C [SRGS] sont :
version

Dnit la version de la grammaire. L'identicateur de langue de la grammaire (par exemple, "fr-CA" pour le franais canadien). Si omis, la valeur est hrite en descendant la hirarchie du document. Dnit le mode de la grammaire selon les modes de la spcication [SRGS].

xml:lang

mode

Tableau 29 : Les attributs de l'lment grammar hrits de la spcication SRGS

93 of 212

27/07/2012 22:31

Le langage de balisage extensible vocal (VoiceXML) vers...

http://www.yoyodesign.org/doc/w3c/voicexml20/

root

Dnit la rgle qui agit comme rgle racine de la grammaire. Dnit le format du contenu de balise de tous les lments tag dans la grammaire. Dclare l'adresse URI de base partir de laquelle les adresses URI relatives dans la grammaire se rsolvent.

tag-format

xml:base

Cette dclaration de l'adresse URI de base est prioritaire sur celle de l'lment vxml. Si on omet une dclaration locale, alors la valeur est hrite en descendant la hirarchie du document.

L'utilisation et l'interprtation de ces attributs se dterminent comme suit : 1. Pour la forme XML directe SRGS : dtermines par la spcication des grammaires de reconnaissance vocale du W3C, laquelle dclare que l'attribut version est obligatoire et doit avoir la valeur "1.0", que l'attribut root est obligatoire et sa valeur identie la rgle activer et que d'autres attributs sont optionnels (voir la spcication [SRGS] pour des prcisions). 2. Pour la forme ABNF directe SRGS : tous les attributs dnis doivent tre ignors par la plateforme. 3. Pour les formes XML et ABNF externes SRGS : tous les attributs dnis doivent tre ignors par la plateforme. 4. Pour tous les autres types de grammaire : l'utilisation et l'interprtation des attributs dnis dpendent de la plateforme. Les attributs de l'lment grammar rajouts par VoiceXML 2.0 sont :

src

L'adresse URI indiquant l'emplacement de la grammaire et, en option, un nom de cette grammaire, si celle-ci est externe. L'adresse URI s'interprte comme l'appel comme dni dans le chapitre 2.2 de la spcication [SRGS], cependant les forme rgle ne sont pas toutes permises depuis un document VoiceXML. Les possibilits rgles sont dcrites en dtails aprs ce tableau.

scope

L'attribut admet pour valeur soit "document", ce qui rend la grammaire active dan dialogues du document courant (et les documents terminaux d'une application con "dialog", ce qui rend la grammaire active pour le formulaire courant. Si omis, la po grammaire se dtermine en examinant l'lment parent. Voir le chapitre 3.1.3 prcisions sur les portes incluant des comportements prioritaires.

type

Le type de mdia prfr de la grammaire. Le type de mdia de la ressource indiq l'appel d'adresse URI dans l'attribut src peut tre disponible dans plusieurs version peut spcier le type de mdia prfr via l'attribut type. Lorsque le contenu repr adresse URI est disponible dans plusieurs formats de donnes, une plateforme Voi se servir du type de mdia prfr pour inuencer le choix du format qui sera utili exemple, sur un serveur mettant en uvre une ngociation de contenu HTTP, le p peut utiliser le type de mdia prfr pour ordonner les prfrences dans la ngoc

La reprsentation de la ressource issue de la rsolution de l'appel d'adresse URI pe Tableau 30 : Les attributs de l'lment grammar rajouts par VoiceXML
94 of 212 27/07/2012 22:31

Le langage de balisage extensible vocal (VoiceXML) vers...

http://www.yoyodesign.org/doc/w3c/voicexml20/

prvaloir de deux types : le type de mdia dclar qui est la valeur annonce de la le type de mdia rel qui est le format vritable de son contenu. Le type de mdia tre identique au type de mdia dclar, mais ce n'est pas toujours le cas (par exe raison d'un serveur HTTP mal congur qui annonce, pour le type d'un document d grammaire, une valeur "text/plain" au lieu de " application/srgs+xml"). Un systme d URI particulier peut imposer au possesseur de la ressource que celui-ci renvoie tou parfois, ou jamais le type du mdia. Le type de mdia dclar est la valeur renvoy possesseur de la ressource ou, en l'absence de celle-ci, c'est le type de mdia pr dans la grammaire. Le type de mdia dclar peut tre absent si le possesseur de ne renvoie pas de valeur ou si aucun type de mdia prfr n'est indiqu. Si le typ dclar est prsent, alors il fait autorit.

Trois cas particuliers peuvent advenir : le processeur peut ne pas reconnatre le ty dclar, auquel cas la plateforme suscite un vnement error.unsupported.for de mdia dclar est reconnu mais le type de mdia rel ne correspond pas, auqu forme suscite un vnement error.badfetch ; enn, aucun type de mdia n'est d comportement dpend alors du systme d'adressage URI particulier et des capaci processeur de grammaire. Par exemple, le protocole HTTP 1.1 autorise l'introspect document (voir le document [RFC2616], chapitre 7.2.1), le schma de donne se r type de mdia par dfaut, et le mode d'accs au chier local ne dnit aucune sol tableau suivant fournit quelques exemples informatifs : Requte HTTP 1.1 Type de mdia renvoy par le possesseur de la ressource

Accs au chi

text/plain

application/srgs+xml

<none>

Type de mdia Sans objet : le type renvoy est prfr apparaissant prioritaire dans la grammaire Type de mdia dclar text/plain

application/srgs+xml

application/srgs+xml application/srgs+xml

vnement error.badfetch Comportement si le suscit : le type type de mdia rel dclar et le est type rel ne "application/srgs+xml" correspondent pas

Le type dclar et le type rel correspondent : succs si le processeur reconnat le type "application/srgs+xml sinon un vnement error.unsupported.format est suscit

Les types de mdia provisoires du format de grammaire du W3C sont " application/ pour la forme XML et "application/srgs" pour la forme ABNF.
weight

Dnit le poids de la grammaire. Voir le chapitre 3.1.1.3

95 of 212

27/07/2012 22:31

Le langage de balisage extensible vocal (VoiceXML) vers...

http://www.yoyodesign.org/doc/w3c/voicexml20/

fetchhint fetchtimeout maxage maxstale

Voir le chapitre 6.1. La valeur implicite est celle de la proprit grammarfetchhint Voir le chapitre 6.1. La valeur implicite est celle de la proprit fetchtimeout. Voir le chapitre 6.1. La valeur implicite est celle de la proprit grammarmaxage Voir le chapitre 6.1. La valeur implicite est celle de la proprit grammarmaxstale

On doit dnir soit un attribut src, soit une grammaire directe (mais pas les deux en mme temps), sinon un vnement error.badfetch sera suscit. Le langage VoiceXML 2.0 renforce galement l'lment grammar an de permettre les donnes de type PCDATA dans les formats des grammaires directes, paralllement la forme XML de la spcication des grammaires de reconnaissance vocale du W3C [SRGS]. Lors de l'appel d'une grammaire externe, la valeur de l'attribut src est une adresse URI, indiquant l'emplacement de la grammaire, qui comporte un ventuel fragment identiant le nom d'une rgle. Le chapitre 2.2 de la spcication des grammaires de reconnaissance vocale [SRGS] dnit plusieurs formes d'appel de rgle. Voici celles permises sur l'lment grammar dans VoiceXML : Appel d'une rgle nomme dans une grammaire externe : L'attribut src est un appel d'adresse URI absolue ou relative d'une grammaire, laquelle adresse comprend un fragment identiant le nom d'une rgle. Cette forme d'appel de rgle dans une grammaire externe obit au comportement dni dans le chapitre 2.2.2 de la spcication [SRGS]. Si l'adresse URI mne rien ou si le nom de la rgle n'est pas dni dans la grammaire ou si ce n'est pas une rgle publique (activable) de cette grammaire, alors un vnement error.badfetch est suscit. Appel de la rgle racine d'une grammaire externe : L'attribut src est un appel d'adresse URI absolue ou relative d'une grammaire mais qui ne comprend pas de fragment identiant un nom de rgle. Cette forme appelle implicitement la rgle racine de la grammaire, comme dni dans le chapitre 2.2.2 de la spcication [SRGS]. Si l'adresse URI mne rien ou si on ne peut pas appeler la grammaire par sa racine (voir le chapitre 4.7 de la spcication [SRGS]), alors un vnement error.badfetch est suscit. Voici les formes d'appel de rgle dnies par la spcication [SRGS] mais non gres dans VoiceXML 2.0 : Appel de rgle local : Une adresse URI compose seulement d'un fragment n'est pas permise. (Voir une dnition dans le chapitre 2.2.1 de la spcication [SRGS]). Une valeur de ce type pour l'attribut src suscitera un vnement error.semantic. Appel des rgles spciales : Bien qu'une grammaire directe puisse appeler les rgles spciales SRGS (NULL, VOID et GARBAGE, il n'existe aucune prise en charge des appels de rgle spciale sur l'lment grammar mme. (Voir les dnitions dans le chapitre 2.2.3 de la spcication [SRGS]). Cette forme n'ore aucune gestion syntaxique et elle ne peut donc pas gnrer d'erreur.

3.1.2 Les grammaires DTMF


L'lment grammar peut servir introduire une grammaire DTMF, laquelle :
96 of 212 27/07/2012 22:31

Le langage de balisage extensible vocal (VoiceXML) vers...

http://www.yoyodesign.org/doc/w3c/voicexml20/

dnit un ensemble de touches susceptibles d'tre appuyes par un utilisateur pour eectuer une action ou fournir une information, et lorsque l'entre DTMF est avre, renvoie une interprtation smantique correspondante. Il peut s'agir d'une valeur simple (comme une chane), d'un ensemble non hirarchique de couples attribut-valeur (tel qu'un jour, un mois et une anne) ou d'un objet imbriqu (pour une requte complexe). Les plateformes VoiceXML doivent obligatoirement grer le format XML des grammaires DTMF, dni dans l'annexe D de la spcication [SRGS], pour prtendre la portabilit des applications. Une grammaire DTMF se distingue d'une grammaire vocale au moyen de l'attribut mode sur l'lment grammar. L'attribut xml:lang n'a aucune inuence sur la gestion des grammaires DTMF. Ces dirences mises part, les grammaires vocales et DTMF se manipulent de manire identique, dont la possibilit de dnir une grammaire directe ou d'appeler une grammaire externe. La gestion des types de mdia, les rgles de porte et les rgles de recherche sont galement les mmes. Voici un exemple de grammaire DTMF directe de forme XML qui accepte en entre "1 2 3" ou "#" :
<grammar mode="dtmf" version="1.0" root="root"> <rule id="root" scope="public"> <one-of> <item> 1 2 3 </item> <item> # </item> </one-of> </rule> </grammar>

3.1.3 La porte des grammaires


Les grammaires des lments d'entre recouvrent toujours l'lment d'entre contenant, c'est--dire qu'elles sont actives seulement quand l'lment d'entre contenant a t choisi au cours de la phase de slection de l'algorithme FIA. Les grammaires contenues dans les lments d'entre ne peuvent pas dnir de porte, auquel cas un vnement error.badfetch est suscit. Les grammaires des liens reoivent la porte de l'lment contenant le lien. Ainsi, quand elles sont dnies dans le document racine d'application, les liens sont galement actifs dans n'importe quel document charg appartenant l'application. Les grammaires contenues dans les liens ne peuvent pas dnir de porte, auquel cas un vnement error.badfetch est suscit. Les grammaires des formulaires reoivent implicitement une porte de dialogue, de sorte qu'elles sont actives seulement quand l'utilisateur est dans le formulaire. Si elles reoivent une porte de document, alors elles sont actives ds que l'utilisateur est dans le document. Si elles reoivent une porte de document et que le document est celui racine d'application, alors elles sont galement actives ds lors que l'utilisateur est dans un autre document charg appartenant la mme application. On peut donner une porte de document une grammaire de formulaire soit en dnissant l'attribut scope sur l'lment form, soit en le dnissant sur l'lment grammar. Si les deux sont dnis, alors la grammaire tiendra compte de la porte dnie sur l'lment

97 of 212

27/07/2012 22:31

Le langage de balisage extensible vocal (VoiceXML) vers...

http://www.yoyodesign.org/doc/w3c/voicexml20/

grammar. Les grammaires des menus reoivent galement une porte de dialogue implicite et elles sont actives seulement quand l'utilisateur est dans le menu. Cependant, elles peuvent recevoir une porte de document et tre active dans tout le document, et, si celui-ci est le document racine d'application, dans tout document charg appartenant l'application. Les grammaires contenues dans les choix de menu ne peuvent pas dnir de porte, auquel cas un vnement error.badfetch est suscit. Parfois, un formulaire peut avoir besoin que certaines grammaires soient actives dans tout le document et que d'autres ne le soient que dans le formulaire. Ceci an de minimiser les problmes de recoupement. Pour ce faire, on peut donner chaque lment grammar individuel une porte propre dans la mesure o cette porte doit tre dirent de celle de l'lment form :
<?xml version="1.0" encoding="UTF-8"?> <vxml version="2.0" xmlns="http://www.w3.org/2001/vxml" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.w3.org/2001/vxml http://www.w3.org/TR/voicexml20/vxml.xsd"> <form scope="document"> <grammar type="application/srgs"> #ABNF 1.0; language fr; mode voice; root $commande; public $commande = un | deux | trois; </grammar> <grammar type="application/srgs" scope="dialog"> #ABNF 1.0; language fr; mode voice; root $commande2; public $commande2 = quatre | cinq | six; </grammar> </form> </vxml>

3.1.4 L'activation des grammaires


Lorsque l'interprteur attend une entre en rsultat de la visite d'un lment d'entre, voici les grammaires qui sont actives : 1. les grammaires de cet lment d'entre, y compris celles contenues dans les liens de cet lment d'entre ; 2. les grammaires de son formulaire, y compris celles contenues dans les liens de ce formulaire ; 3. les grammaires contenues dans les liens de son document, et les grammaires des menus et des autres formulaires dans son document ayant reu une porte de document ; 4. les grammaires contenues dans les liens de son document racine d'application, et les grammaires des menus et des formulaires dans son document racine d'application ayant reu une porte de document.
98 of 212 27/07/2012 22:31

Le langage de balisage extensible vocal (VoiceXML) vers...

http://www.yoyodesign.org/doc/w3c/voicexml20/

5. les grammaires dnies par les gestionnaires d'vnements implicites de la plateforme, tels que les vnements help, exit et cancel. Dans le cas o une entre est avre dans plusieurs grammaires actives, c'est la liste prcdente qui dnit l'ordre de prsance. Si l'entre est avre dans plusieurs grammaires actives avec la mme priorit, alors la prsance se dtermine dans l'ordre du document : la premire grammaire dans l'ordre du document aura la priorit la plus leve. Si aucune grammaire n'est active dans l'attente d'une entre, alors la plateforme doit susciter un vnement error.semantic. L'erreur sera suscite dans le contexte de l'lment en cours d'excution. Les menus se comportent, en ce qui concerne l'activation des grammaires, comme les formulaires quivalents (voir le chapitre 2.2.1). Si l'lment de formulaire est modal (c'est--dire que son attribut mode a la valeur "true"), alors toutes les grammaires, sauf les siennes, sont neutralises dans l'attente d'une entre. Si l'entre est avre dans la grammaire d'un formulaire (ou d'un menu) autre que le formulaire (ou le menu) courant, alors le contrle passe l'autre formulaire (ou menu). Si, en raison d'une correspondance, le contrle quitte le formulaire courant, alors toutes les donnes du formulaire courant seront perdues. L'activation des grammaires n'est pas aecte par la proprit inputmodes. Par exemple, quand la proprit inputmodes impose une entre vocale, les grammaires DTMF resteront actives mais ne pourront tre sollicites.

3.1.5 L'interprtation smantique de l'entre


La spcication des grammaires de reconnaissance vocale dnit l'lment tag dont le contenu permet l'interprtation smantique des grammaires vocales ou DTMF (voir le chapitre 2.6 de la spcication [SRGS]). La spcication de l'interprtation smantique de la reconnaissance vocale [SISR] dcrit la syntaxe et la smantique de ces lments tag, et dnit comment calculer l'interprtation smantique d'une entre d'utilisateur en utilisant le contenu des lments tag associs aux atomes et rgles qui correspondent. L'interprtation smantique peut s'appliquer dans VoiceXML, comme dcrit dans le chapitre 3.1.6.

3.1.6 L'application des rsultats de l'interprtation smantique au formulaires VoiceXML


L'interprtation smantique issue d'une grammaire SRGS [SRGS] doit tre applique une ou plusieurs variables ECMAScript VoiceXML. Le processus initiateur dire lgrement entre les rsultats de niveau formulaire et ceux de niveau champ ; ces dirences seront examines dans les chapitres suivants. Le format de l'interprtation smantique, utilisant soit le langage de balisage smantique en langue naturelle NLSML [NLSML], soit le format de sortie apparent ECMAScript de la spcication [SISR], ne revt pas d'importance pour cette discussion. Pour les besoins de l'explication, le rsultat rel issu du logiciel de reconnaissance est suppos s'appliquer dans un format apparent ECMAScript identique la reprsentation trouve dans la variable application.lastresult$.interpretation, aborde dans le chapitre 5.1.5. Une grammaire peut ventuellement correspondre mais ne pas renvoyer d'interprtation smantique. Auquel cas, la plateforme utilisera la chane de texte brut de l'nonce comme rsultat smantique. Sinon, ce cas est trait exactement comme si
99 of 212 27/07/2012 22:31

Le langage de balisage extensible vocal (VoiceXML) vers...

http://www.yoyodesign.org/doc/w3c/voicexml20/

l'interprtation smantique consistait en une valeur simple. Chaque lment d'entre a un nom de facette qui peut servir extraire une partie de l'interprtation smantique entire. Le nom de facette corresponde la valeur de l'attribut slot, le cas chant (seulement possible pour les lments field), ou, sinon, la valeur de l'attribut name (pour les lments field sans attribut slot ainsi que pour les autres lments d'entre). Si ni l'attribut slot ni l'attribut name sont prsents, alors le nom de facette n'est pas dni. Le nom de facette sert au cours de la phase de traitement de l'algorithme FIA pour dterminer si un lment d'entre correspond ou non. Il y a correspondance lorsque le nom de facette est le mme que celui d'une proprit de niveau suprieur ou bien lorsqu'un nom de facette sert slectionner une sous-proprit. Une proprit dont la valeur n'est pas dnie (c'est--dire, la valeur ECMAScript " undefined") ne correspondra pas. Tout comme les noms de facette non dnis ne correspondront jamais. On trouvera des exemples dans le chapitre 3.1.6.3. Remarquez qu'une valeur d'attribut slot peut remplir plusieurs lments d'entre si les noms de facette des lments d'entre sont les mmes. Les chapitres suivants traitent de l'application des rsultats de niveau formulaire et de niveau champ. Il y aura galement une brve explication d'autres problmes tels que l'application de la smantique en langue naturelle au langage ECMAScript, le passage des informations issues des rsultats de la reconnaissance vocale automatique au langage VoiceXML et le traitement des contradictions entre le rsultat d'interprtation et le formulaire VoiceXML. 3.1.6.1 L'application des rsultats de niveau formulaire Les grammaires dnies un niveau formulaire produisent un rsultat de niveau formulaire pouvant remplir plusieurs lments d'entre simultanment. Il peut arriver, tout instant, que ce soit dans un lment initial ou bien dans un lment d'entre, qu'une entre d'utilisateur corresponde une grammaire de niveau formulaire active. Prenons le rsultat de l'interprtation de la phrase Je voudrais un verre d'eau et trois grandes pizzas au poivron et aux champignons . L'interprtation smantique peut se copier dans la variable application.lastresult$.interpretation comme :
{ boisson: "eau", pizza: { quantite: "3", taille: "grande", garniture: [ "poivron", "champignon" ] } }

Le tableau suivant illustre comment ce rsultat issu d'une grammaire de niveau formulaire sera aect aux divers lments d'entre dans le formulaire. Remarquez que tous les lments d'entre susceptibles d'tre remplis le sont simultanment. Les valeurs existantes des variables d'lments d'entre correspondants seront crases et ces lments seront marqus pour le traitement filled au cours de la phase de traitement de l'algorithme FIA, comme dcrit dans le chapitre 2.4 et l'annexe C.

100 of 212

27/07/2012 22:31

Le langage de balisage extensible vocal (VoiceXML) vers...

http://www.yoyodesign.org/doc/w3c/voicexml20/

Champ VoiceXML 1. <eld name="boisson"/> --ou-<object name="boisson"/> --ou-<record name="boisson"/>

Valeur ECMAScript aecte "eau"

Explication Par dfaut, un lment d'entre reoit la proprit de rsultat de niveau suprieur dont le nom correspond celui de l'lment d'entre. Lorsqu'il est dni sur un champ, le nom de facette crase le nom du champ pour la slection de la proprit de rsultat. Les attributs name ou slot de l'lment d'entre peuvent slectionner une proprit qui est une variable ECMAScript non scalaire, de la mme faon qu'on slectionne une valeur scalaire dans l'exemple prcdent. Toutefois, l'application doit alors grer l'inspection des composants de l'objet. Cette mthode ne prote pas de l'algorithme de remplissage de formulaire VoiceXML, dans la mesure o les facettes absentes du rsultat ne feraient pas automatiquement l'objet d'une invite. Cela peut sure pour les situations o le serveur est prpar au traitement d'un objet structur. Sinon, une application peut prfrer la mthode dcrite dans

2. <eld name="..." slot="boisson"/>

"eau"

3. <eld name="pizza"/> --ou-<object name="pizza"/> --ou-<record name="pizza"/> --ou-<eld name="..." slot="pizza"/>

{quantite: "3", taille: "grande", garniture: ["poivron", "champignon"]}

Tableau 31 : Les aectations des grammaires de niveau formulaire


101 of 212 27/07/2012 22:31

Le langage de balisage extensible vocal (VoiceXML) vers...

http://www.yoyodesign.org/doc/w3c/voicexml20/

l'exemple suivant. 4. <eld name="..." slot="pizza.quantite"/> "3" <eld name="..." slot="pizza.taille"/> "grande" L'attribut slot peut servir slectionner une sous-proprit du rsultat. Cette approche permet de distribuer le rsultat sur plusieurs champs. La proprit slectionne peut tre un objet composite.

5. <eld name="..." slot="pizza.garniture"/> ["poivron", "champignon"]

On peut expliquer les exemples <eld ... slot="pizza.quelquechose"> prcdents par des rgles qui sont compatibles avec les attributs name et slot (et qui en sont les prolongements directs) de VoiceXML 1.0 : 1. L'attribut slot d'un lment field est une expression ECMAScript (trs limite) qui slectionne une certaine partie du rsultat aecter au champ. Outre la slection de la proprit de rsultat de niveau suprieur, l'attribut peut slectionner des proprits des niveaux d'imbrication arbitraires, en utilisant une liste de noms d'lments/proprits, spars par des points, comme, par exemple, pizza.quantite et commande.pizza.garniture . 2. Si on se sert de l'attribut slot d'un champ pour slectionner une sous-proprit du rsultat et que la sous-proprit n'existe pas dans le rsultat, alors le champ ne correspond pas au rsultat (voir le chapitre 3.1.6). 3.1.6.2 L'application d'un rsultat de niveau champ Les grammaires dnies dans un lment d'entre produisent un rsultat de niveau champ pouvant seulement remplir l'lment d'entre particulier qui les contient. Ces grammaires sont seulement actives quand l'algorithme FIA visite cet lment d'entre particulier. Cela peut se rvler utile, par exemple, pour des dialogues dirigs dans lesquels l'utilisateur fait l'objet d'une invite individuelle pour chaque lment d'entre. Un rsultat de niveau champ remplit l'lment d'entre associ de la manire suivante : Si l'interprtation est un rsultat simple, on aecte celui-ci la variable d'lment d'entre. Si l'interprtation est une structure et que le nom de facette correspond une proprit, alors on aecte la valeur de cette proprit la variable d'lment d'entre. Sinon, on aecte le rsultat smantique entier. Ce processus permet un lment d'entre d'extraire une proprit particulire d'une interprtation smantique. On peut le combiner avec un lment filled pour obtenir un contrle encore plus prcis :
<field name="getdate"> <prompt>Quand voulez-vous voler ?</prompt>

102 of 212

27/07/2012 22:31

Le langage de balisage extensible vocal (VoiceXML) vers...

http://www.yoyodesign.org/doc/w3c/voicexml20/

<grammar src="http://serveur.example.com/date.grxml"/> <!-- Cette grammaire renvoie toujours un objet contenant des valeurs de chane pour les proprits day, month et year --> <filled> <assign name="getdate.datestring" expr="getdate.year + getdate.month + getdate.day"/> </filled> </field>

3.1.6.3 Autres exemples Un nom de facette avr permet un lment d'entre d'extraire une partie d'une interprtation smantique. Prenons ce rsultat modi inspir de l'exemple prcdent :
application.lastresult$.interpretation = { boisson: { taille: 'grande', liquide: 'eau' }, pizza: { quantite: '3', taille: 'grande', garniture: ['poivron', 'champignon'] }, accompagnement: undefined }

Le tableau suivant revoit la dnition du moment o le nom de facette correspond une proprit dans le rsultat : nom de facette undened boisson pizza correspondance ou pas ? ne correspond pas correspond ; proprit de niveau suprieur correspond ; proprit de niveau suprieur

accompagnement ne correspond pas ; aucune valeur dnie taille pizza.taille pizza.liquide ne correspond pas ; non une proprit de niveau suprieur correspond ; sous-proprit ne correspond pas

Tableau 32 : La correspondance des noms de facette On peut aussi comparer les comportements des rsultats de niveau formulaire et ceux de niveau champ. Pour cela, prenons le document suivant :
<?xml version="1.0" encoding="UTF-8"?> <vxml version="2.0" xmlns="http://www.w3.org/2001/vxml" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.w3.org/2001/vxml http://www.w3.org/TR/voicexml20/vxml.xsd"> <form id="exempleFormulaire"> <grammar src="niveauformulaire.grxml"/> <initial> Dites quelque chose. </initial> <field name="x"> <grammar src="fieldx.grxml"/>

103 of 212

27/07/2012 22:31

Le langage de balisage extensible vocal (VoiceXML) vers...


</field> <field name="z" slot="y"> <grammar src="fieldz.grxml"/> </field> </form> </vxml>

http://www.yoyodesign.org/doc/w3c/voicexml20/

Cet exemple dnit deux variables d'lment d'entre : x et z . Les noms de facette correspondant sont respectivement x et y . Le tableau suivant dcrit l'aectation de ces variables selon la grammaire reconnue et le rsultat smantique renvoy. Le raccourci valeurX signie la valeur de rsultat simple ou d'objet structur associe la proprit x . rsultat de rsultat de rsultat de niveau niveau niveau application. formulaire champ dans champ dans lastresult$.interpretation (niveauformulaire.grxml) champ x champ z (eldx.grxml) (eldz.grxml) = 'bonjour' = { x: valeurX } = { y: valeurY } = { z: valeurZ } = { x: valeurX, y: valeurY, z: valeurZ } = { a: valeurA b: valeurB } pas d'aectation ; cycle FIA x = 'bonjour' x = valeurX z = valeurY pas d'aectation ; cycle FIA x = valeurX z = valeurY pas d'aectation; cycle FIA x = valeurX x = { y: valeurY } x = { z: valeurZ } x = valeurX x = { a: valeurA, b: valeurB } z = 'bonjour' z = { x: valeurX } z = valeurY z = { z: valeurZ } z = valeurY z = { a: valeurA, b: valeurB }

Tableau 33 : Les aectations des variables selon la grammaire et le rsultat smantique Au niveau du formulaire, les rsultats simples comme la chane bonjour ne correspondent aucun des lments d'entre ; les objets structurs aectent toutes les variables d'lments d'entre avec les noms de facette correspondants. Au niveau du champ, les rsultats simples sont toujours aects la variable d'lment d'entre ; les objets structurs extraieront la proprit correspondante, si elle existe, sinon, le rsultat smantique entier sera assign la variable d'lment d'entre. 3.1.6.4 Autres problmes 1. L'application depuis une smantique en langue naturelle vers ECMAScript : Si on se sert du langage de balisage smantique en langue naturelle ([NLSML]), il faudra dnir une application depuis la reprsentation NLSML vers des objets ECMAScript. Les deux types de reprsentation ayant des structures imbriques similaires, cette application est assez directe. La spcication NLSML explique en dtails cette application. 2. Le passage des rsultats smantiques de la reconnaissance vocale automatique

104 of 212

27/07/2012 22:31

Le langage de balisage extensible vocal (VoiceXML) vers...

http://www.yoyodesign.org/doc/w3c/voicexml20/

VoiceXML : Le rsultat du traitement des balises smantiques d'une grammaire de reconnaissance vocale automatique du W3C correspond la valeur de l'attribut de la rgle racine une fois que toutes les valuations des rattachements smantiques ont t eectues. En outre, la rgle racine (comme tous les non-terminaux) possde une variable text associe qui contient les sries d'atomes de l'nonc rgi par ce non-terminal. Dans le processus de mise disposition des rsultats de la reconnaissance vocale automatique aux documents VoiceXML, la plateforme VoiceXML n'est pas seulement responsable du remplissage des champs VoiceXML en fonction de la valeur de l'attribut de la rgle racine, comme dcrit prcdemment, mais aussi du remplissage des variables ctives de ces champs. La valeur de la variable ctive nom$.utterance du champ devrait tre la mme que celle de la variable text de la rgle racine de la reconnaissance vocale automatique. La plateforme est galement responsable de l'instanciation de la valeur de la variable ctive nom$.confidence qui dpend des informations fournies par la plateforme de reconnaissance vocale automatique, ainsi que de la variable nom$.inputmode selon qu'il s'agissait d'un traitement vocal ou DTMF. Enn, elle est responsable de la mise en place de ces informations dans le tableau application.lastresult$, dnie dans le chapitre 5.1.5 (particulirement, les variables application.lastresult$.utterance, application.lastresult$.inputmode et application.lastresult$.interpretation), l'exception de la variable application.lastresult$.confidence, dont la plateforme xe la valeur comme tant la valeur de abilit de l'interprtation de l'nonc entier. 3. Les contradictions entre les rsultats smantiques et les champs VoiceXML : L'application des rsultats smantiques VoiceXML s'appuie sur une coordination troite entre la grammaire de reconnaissance vocale automatique et le balisage VoiceXML. tant donn que rien, dans le prsent cadre, ne vient faire respecter la cohrence entre une grammaire et le dialogue VoiceXML associ, il peut survenir des contradictions du fait de l'inattention du dveloppeur. Comme il est dicile de distinguer le comportement du dialogue en prsence de ces contradictions de celui dans certaines situations normales, il est extrmement important de vrier la cohrence des informations. Quelques exemples de contradictions : Les rsultats smantiques contiennent des informations supplmentaires qui ne correspondent pas aux champs VoiceXML. Cela peut se produire cause d'une erreur du dveloppeur ou cause de l'emploi d'une grammaire plus riche que ce qui est demand par l'application VoiceXML. Ces informations supplmentaires seront ignores. L'application VoiceXML attend du rsultat des informations manquantes. Cela peut galement venir d'une erreur du dveloppeur ou du fait que l'utilisateur n'a simplement pas fourni la valeur d'une facette particulire. Auquel cas, l'algorithme FIA poursuit normalement et la valeur manquante sera demande l'utilisateur. Si le problme tait en fait caus par une erreur du dveloppeur et que la grammaire est eectivement incapable de reconnatre la valeur correcte, l'algorithme FIA continuera demander la valeur manquante jusqu' tant qu'il invoque les mesures que la plateforme et l'application ont mis en place en cas d'checs de correspondance rpts. Enn, les informations peuvent tre prsentes la fois dans les champs VoiceXML et dans le rsultat de la reconnaissance vocale automatique mais dans des formats incompatibles. Par exemple, une grammaire de reconnaissance vocale automatique pourrait fournir un objet structur propos d'une boisson, comprenant la taille de cette boisson et une indication selon laquelle celle-ci est
105 of 212 27/07/2012 22:31

Le langage de balisage extensible vocal (VoiceXML) vers...

http://www.yoyodesign.org/doc/w3c/voicexml20/

dittique ou non, mais le formulaire VoiceXML prvoit seulement une chane composant le nom de la boisson. Dans ces situations, le comportement du systme dpendra de ce qui est fait des rsultats. Par exemple, l'objet structur peut avoir t transmis un script ct serveur qui attend une chane, et les consquences dpendraient alors du script ct serveur. An de rpondre ces problmes potentiels, le comit examine diverses approches permettant de garantir une certaine cohrence entre la grammaire et les champs VoiceXML.

4. La sortie du systme
4.1 Les invites
L'lment prompt contrle la sortie de la voix synthtise et des sons prenregistrs. Conceptuellement, les invites sont instantanment mises en le d'attente de lecture, de sorte que l'interprtation se poursuit jusqu'au point o l'utilisateur doive fournir une entre. Les invites sont alors joues et le systme attend une entre d'utilisateur. Une fois l'entre reue du sous-systme de reconnaissane vocale (ou du logiciel de reconnaissance DTMF), l'interprtation se poursuit. L'lment prompt a les attributs suivants : Dtermine si l'utilisateur peut interrompre une invite ou non. Sa valeur implicite est celle de la proprit bargein. Voir le chapitre 6.3.4.

bargein

Fixe le type de l'interruption : vocal pour la valeur "speech" ou par mot magique pour la valeur "hotword". bargeintype Sa valeur implicite est celle de la proprit bargeintype. Voir le chapitre 6.3.4.
cond

Une expression dont l'valuation de la valeur, aprs conversion en un boolen, donne "true pour que l'invite soit joue. La valeur implicite est "true". Un nombre permettant d'mettre des invites direntes lorsque l'utilisateur accompli quelque chose rptitivement. Si l'attribut est omis, alors la valeur implicite est "1". Le dlai de temporisation utilis pour l'entre d'utilisateur suivante. La valeur est du type dsignation de temps (voir le chapitre 6.5). Le dlai de temporisation implicite en l'absence d'une entre est propre la plateforme. L'identicateur de langue de l'invite. Si l'attribut est omis, la valeur implicite est celle indique par l'attribut xml:lang du document. Tableau 34 : Les attributs de l'lment prompt

count

timeout

xml:lang

106 of 212

27/07/2012 22:31

Le langage de balisage extensible vocal (VoiceXML) vers...

http://www.yoyodesign.org/doc/w3c/voicexml20/

xml:base

Dclare l'adresse URI de base partir de laquelle les adresses URI relatives dans l'invite seront rsolues. Cette dclaration d'adresse URI de base est prioritaire sur celle de l'lment vxml. En l'absence d'une dclaration locale, la valeur est hrite en descendant la hirarchie du document.

4.1.1 Le balisage de la parole


Le modle du contenu de l'lment prompt se fonde sur le langage de balisage de la synthse vocale (SSML) 1.0 [SSML]. Les lments de balisage de la parole suivants sont dnis dans la spcication [SSML] et disponibles dans VoiceXML 2.0. Voir les dnitions et les exemples dans le langage de balisage de la synthse vocale 1.0 [SSML]. Chapitre
(dans [SSML])

lment audio break desc emphasis lexicon mark meta metadata p phoneme prosody say-as s

Emploi Dnit les chiers sons jouer et le texte lire. Dnit une pause dans la sortie vocale. Donne une description d'une source audio non-verbale dans l'lment audio. Indique que le texte englob devrait tre prononc avec emphase. Dnit un lexique de prononciation pour l'invite. Ignor par les plateformes VoiceXML. Dnit les proprits meta et http-equiv pour l'invite. Dnit un contenu de mtadonnes pour l'invite. Identie le texte englob comme un paragraphe contenant zro ou plus phrases.

3.3.1 3.2.3 3.3.3 3.2.2 3.1.4 3.3.2 3.1.5 3.1.6 3.1.7

Dnit une prononciation phontique pour le 3.1.9 texte englob. Dnit une information prosodique pour le texte englob. Dnit le type de structure de texte contenu dans l'lment. Identie le texte englob comme une phrase. 3.2.4 3.1.8 3.1.7

Tableau 35 : Les lments SSML disponibles dans VoiceXML

107 of 212

27/07/2012 22:31

Le langage de balisage extensible vocal (VoiceXML) vers...

http://www.yoyodesign.org/doc/w3c/voicexml20/

lment audio sub voice

Emploi Dnit les chiers sons jouer et le texte lire. Dnit un texte sonore de remplacement du texte contenu. Dnit les caractristiques de la voix pour la prononciation du texte.

Chapitre
(dans [SSML])

3.3.1 3.1.10 3.2.1

Lorsqu'on les utilise dans VoiceXML, les lments audio (voir le chapitre 4.1.3) et say-as (voir l'annexe P) acceptent d'autres proprits. Le langage VoiceXML admet galement la prsence des lments enumerate et value dans les lments prompt. La plateforme VoiceXML doit tre un processeur SSML conforme comme dni par la spcication [SSML]. Bien que cette dnition exige d'une plateforme qu'elle puisse traiter des documents ayant un ou plusieurs attributs xml:lang, elle n'exige pas qu'elle soit multilingue. Lorsqu'elle rencontre une langue non reconnue, la plateforme suscite un vnement error.unsupported.language indiquant quelle langue n'est pas reconnue dans sa variable message.

4.1.2 Les invites de base


Nous avons vu des invites dans les exemples prcdents :
<prompt>Veuillez dire le nom de votre ville.</prompt>

On peut abandonner le balisage <prompt> ... </prompt> si :: Il n'est pas ncessaire de dnir un attribut d'invite (comme l'attribut bargein), et L'invite se compose entirement de texte de type PCDATA (c'est--dire, qui ne contient pas de balises vocales) ou bien juste d'un lment audio ou value. Par exemple, il existe aussi des invites ayant cet aspect :
Veuillez dire le nom de votre ville. <audio src="dis_ta_ville.wav"/>

Dans cet exemple, cependant, les balises englobantes de l'lment prompt sont obligatoires en raison de la prsence de balises vocales :
<prompt>Veuillez <emphasis>dire</emphasis> le nom de votre ville.</prompt>

Lorsqu'on indique un contenu d'invite sans utilisation explicite d'un lment prompt, alors les attributs de l'invite se dnissent comme indiqu dans le tableau 34.

4.1.3 L'invite sonore


Les invites peuvent se composer de n'importe quelle combinaison de chiers
108 of 212 27/07/2012 22:31

Le langage de balisage extensible vocal (VoiceXML) vers...

http://www.yoyodesign.org/doc/w3c/voicexml20/

prenregistrs, ux audio ou voix synthtise :


<prompt> Bienvenue chez Graines gogo. <audio src="rtsp://www.piafcauserie.example.com/grive.wav"/> Ce mois-ci nous proposons le barril de 250 kg de graines de chardon <say-as interpret-as="currency">299.95</say-as> frais d'expdition et de transport compris. <audio src="http://www.piafcauserie.example.com/tourterelle.wav"/> </prompt>

On peut jouer un son dans n'importe quelle invite. On peut indiquer le contenu sonore via une adresse URI et aussi, dans VoiceXML, dans un lment audio enregistr prcdemment :
<prompt> Votre message d'accueil enregistr est <audio expr="accueil"/> Pour le renregistrer, tapez 1. Pour le conserver, tapez dise. Pour revenir au menu principal, tapez toile M. Pour quitter, tapez toile, toile Q. </prompt>

L'lment audio peut comporter un contenu de remplacement au cas o l'chantillon audio ne serait pas disponible :
<prompt> <audio src="bienvenue.wav"> <emphasis>Bienvenue</emphasis> sur le portail vocal. </audio> </prompt>

Si le chier son est injouable (par exemple, cause d'attributs src ou expr se rsolvant en une adresse URI invalide, d'un chier dans un format non reconnu, etc.), alors le contenu de l'lment audio sera jou la place. Ce contenu peut comprendre du texte, du balisage vocal ou un autre lment audio. Si le chier son est injouable et que le contenu de l'lment audio est vide, aucun son ne sera jou et aucun vnement d'erreur ne sera suscit. Si l'lment audio contient un attribut expr valu la valeur ECMAScript "undefined", alors l'lment, y compris son contenu de remplacement, sera ignor. Cela permet au dveloppeur de dnir des lments audio ayant un contenu assign dynamiquement qui, si on ne les demande pas, peuvent tre ignors en assignant une valeur nulle leur attribut expr. Par exemple, le code suivant montre comment se servir de cette caractristique pour lire une main de cartes au moyen de clips audio concatns :
<?xml version="1.0" encoding="UTF-8"?> <vxml version="2.0" xmlns="http://www.w3.org/2001/vxml" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.w3.org/2001/vxml http://www.w3.org/TR/voicexml20/vxml.xsd"> <form> <!-- Le script contient la fonction direCarte(type,position)

109 of 212

27/07/2012 22:31

Le langage de balisage extensible vocal (VoiceXML) vers...

http://www.yoyodesign.org/doc/w3c/voicexml20/

qui reoit en entre le type de la description de carte (son ou texte) et sa position dans un tableau, et renvoie la description de carte slectionne la position indique dans le tableau ; s'il n'y a pas de description la position demande, alors elle renvoie la valeur ECAMScript "undefined" --> <script src="jeudecartes.js"/> <field name="prendrecarte"> <grammar type="application/srgs+xml" src="/grammars/boolean.grxml"/> <prompt> <audio src="vous_avez.wav">Vous avez les cartes suivantes : </audio> <!-- on dcrit une main de 5 cartes au maximum --> <audio expr="direCarte(son,1)"><value expr="direCarte(texte,1)"/></audio> <audio expr="direCarte(son,2)"><value expr="direCarte(texte,2)"/></audio> <audio expr="direCarte(son,3)"><value expr="direCarte(texte,3)"/></audio> <audio expr="direCarte(son,4)"><value expr="direCarte(texte,4)"/></audio> <audio expr="direCarte(son,5)"><value expr="direCarte(texte,5)"/></audio> <audio src="une_autre.wav">Voulez-vous une autre carte ? </audio> </prompt> <filled> <if cond="prendre"> <script>prendreAutreCarte()</script> <clear/> <else/> <goto next="./parier.vxml"/> </if> </filled> </field> </form> </vxml>

Les attributs de l'lment audio dnis dans la spcication [SSML] sont : L'adresse URI de l'invite sonore. Voir les formats de chier son obligatoires dans l'annexe E ; on peut utiliser d'autres formats si la plateforme les gre. Tableau 36 : Les attributs de l'lment audio hrits de SSML Les attributs de l'lment audio seulement dnis dans VoiceXML sont :
fetchtimeout

src

Voir le chapitre 6.1. Sa valeur par dfaut est celle de la proprit fetchtimeout. Voir le chapitre 6.1. Sa valeur par dfaut est celle de la proprit audiofetchhint. Voir le chapitre 6.1. Sa valeur par dfaut est celle de la proprit audiomaxage. Voir le chapitre 6.1. Sa valeur par dfaut est celle de la proprit audiomaxstale. Une expression ECMAScript qui dtermine la source du son jouer. Cette expression est soit une rfrence

fetchhint

maxage

maxstale

expr

Tableau 37 : Les attributs de l'lment audio ajouts dans VoiceXML


110 of 212 27/07/2012 22:31

Le langage de balisage extensible vocal (VoiceXML) vers...

http://www.yoyodesign.org/doc/w3c/voicexml20/

un son enregistr prcdemment via l'lment record, soit se rsoud en l'adresse URI d'une resource audio rechercher. On ne peut dnir qu'un seul exactement entre les attributs src ou expr, sinon, un vnement error.badfetch sera suscit. Remarquez que la lecture du son en continu est une optimisation apporte par la plateforme, c'est--dire que la plateforme peut commencer le traitement du contenu audio au fur et mesure qu'il parvient et ne pas attendre son chargement complet. On peut se servir de l'attribut de prchargement fetchhint pour demander le chargement complet du son avant lecture.

4.1.4 L'lment value


L'lment value sert insrer la valeur d'une expression dans une invite. Il a un seul attribut : expr L'expression restituer. Tableau 38 : L'attribut de l'lment value Par exemple, si la variable n vaut "12" dans cette invite :
<prompt> <value expr="n*n"/> est le carr de <value expr="n"/>. </prompt>

Alors le moteur de synthse vocale recevra la phrase 144 est le carr de 12 . La faon dont l'attribut de l'lment value jouera se trouve sous le contrle du balisage de synthse vocale environnant. Par exemple, la valeur peut tre joue comme une date :
<var name="date" expr="'2000/1/20'"/> <prompt> <say-as interpret-as="date"> <value expr="date"/> </say-as> </prompt>

Le texte insr par l'lment value ne fait pas l'objet d'une interprtation particulire et, notamment, il n'est pas analys en tant que document ou fragment de document [SSML]. Les caractres spciaux XML ( & , > et < ) ne sont pas non plus traits spcialement et ils n'ont pas besoin d'tre masqus. On obtiendra la mme chose en insrant littralement le texte calcul par l'lment value dans une section de type CDATA . Par exemple, l'assignation de variable suivante :
<script> <![CDATA[ e1 = 'AT&T'; ]]> </script>

111 of 212

27/07/2012 22:31

Le langage de balisage extensible vocal (VoiceXML) vers...

http://www.yoyodesign.org/doc/w3c/voicexml20/

Si on l'appelle dans un lment prompt comme :


<prompt> L'action <value expr="e1"/> vaut 1. </prompt>

Voici alors la sortie produite .


L'action AT&T vaut 1.

4.1.5 L'interruption
Lorsqu'une plateforme d'implmentation gre les interruptions, l'auteur de l'application peut indiquer si l'utilisateur peut interrompre [Ndt. to bargein] une invite par une commande vocale ou DTMF. Cette caractristique permet d'acclrer la conversation mais elle n'est pas toujours souhaite. Si l'auteur de l'application exige de l'utilisateur qu'il entende la totalit d'un avertissement, d'un avis lgal ou d'une publicit, il faudrait dsactiver l'interruption. C'est le rle de l'attribut bargein :
<prompt bargein="false"><audio src="avis_legal.wav"/></prompt>

Les utilisateurs peuvent interrompre une invite dont la valeur de l'attribut bargein est "true" et ils doivent, au contraire, attendre la n de l'invite pour la valeur " false". Au cas o plusieurs invites sont en le d'attente, c'est l'attribut bargein de chaque invite qui rgit la priode pendant laquelle l'invite concerne est joue. Si une interruption se produit au cours de n'importe quelle invite d'une squence, alors aucune des invites suivantes n'est joue (mme celles dont l'attribut bargein vaut "false". Si l'attribut bargein n'est pas dni, alors c'est la valeur de la proprit bargein qui sera utilise, si elle est xe. Lorsque la valeur de l'attribut bargein est "false, alors l'entre n'est pas mise en mmoire tampon pendant la lecture de l'invite et toute entre DTM tamponne dans un tat transitoire est eace du tampon (le chapitre 4.1.8 dcrit la collecte des entres pendant les tats transitoires). Remarquez que les moteurs de reconnaissance vocale et les plateformes d'implmentation ne gre pas tous l'interruption. Pour qu'une plateforme puisse grer les interruptions, elle doit reconnatre au moins l'un des types d'interruption dcrits dans le chapitre 4.1.5.1.

4.1.5.1 Le type d'interruption


Quand l'interruption est permise, on peut se servir de l'attribut bargeintype pour suggrer le type d'interruption que la plateforme eectuera en rponse une commande vocale ou DTMF. Les valeurs possibles de cet attribut sont : L'invite est interrompue ds qu'une commande vocale ou DTMF est dtecte. L'invite est arrte indpendamment du fait que l'entre corresponde ou non une grammaire, quelles que soient les grammaires actives. Tableau 39 : Les valeurs de l'attribut bargeintype

speech

112 of 212

27/07/2012 22:31

Le langage de balisage extensible vocal (VoiceXML) vers...

http://www.yoyodesign.org/doc/w3c/voicexml20/

hotword

L'invite n'est pas arrte tant qu'une correspondance complte une grammaire active ne sera pas dtecte. L'entre qui ne correspond pas une grammaire est ignore (remarquez que c'est aussi le cas pendant une priode de temporisation) ; par consquent, il ne sera jamais gnr d'vnement nomatch quand l'attribut bargein a la valeur "hotword".

Lorsque l'attribut bargeintype n'est pas dni, alors on utilise la valeur de la proprit bargeintype. Les implmentations prtendant grer les interruptions sont obliges de grer au moins l'un de ces deux types. La prsence simultane de ces types dans la mme le d'attente d'invites est susceptible d'entraner un comportement imprvisible, cette pratique n'est donc pas encourage. Quand l'attribut bargeintype a la valeur "speech", le sens exact du terme commande vocale dpend forcment de l'implmentation, en raison de la complexit de la technologie de reconnaissance vocale. On s'attend ce que l'invite s'arrte ds lors que la plateforme peut dterminer avec certitude que l'entre est vocale. Il est souhaitable d'arrter l'invite aussitt que possible ce qui permet d'viter l'eet de bgaiement selon lequel l'utilisateur s'arrte mi-nonc et recommence en croyant que le systme ne l'a pas entendu.

4.1.6 La slection d'une invite


Les invites dgressives sont celles susceptibles de changer chaque invite. Les invites appelant un renseignement peuvent devenir de plus en plus abruptes, supposer que l'utilisateur se familiarise avec la tche. Les messages d'erreur peuvent devenir plus dtaills, supposer que l'utilisateur a besoin d'assistance. Ou bien les invites peuvent tout simplement changer pour rendre l'interaction plus intressante. Tous les lment d'entre, l'lment initial et l'lment menu intgre un compteur d'invites qui est rinitialis la valeur "1" chaque accs au formulaire ou au menu. Ds lors que le systme slectionne un lment d'entre donn au cours de la phase de slection de l'algorithme FIA, dans laquelle il dtermine la slection et la mise en le d'attente normales des invites (c'est--dire que, comme dcrit dans le chapitre 5.3.6, l'itration prcdente de l'algorithme FIA n'a pas termin sur un gestionnaire de capture qui ne comportait pas d'lment reprompt), le compteur d'invites associ l'lment en question est incrment. Tel est le mcanisme qui sous-tend les invites dgressives. Par exemple, voici un formulaire avec une invite de niveau formulaire et des invites de niveau champ :
<?xml version="1.0" encoding="UTF-8"?> <vxml version="2.0" xmlns="http://www.w3.org/2001/vxml" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.w3.org/2001/vxml http://www.w3.org/TR/voicexml20/vxml.xsd"> <form id="degressif"> <block> <prompt bargein="false"> Bienvenue dans l'enqute sur la consommation des glaces.

113 of 212

27/07/2012 22:31

Le langage de balisage extensible vocal (VoiceXML) vers...

http://www.yoyodesign.org/doc/w3c/voicexml20/

</prompt> </block> <field name="parfum"> <grammar mode="voice" version="1.0" root="racine"> <rule id="racine" scope="public"> <one-of> <item>vanille</item> <item>chocolat</item> <item>fraise</item> </one-of> </rule> </grammar> <prompt count="1">Quel est votre parfum favori ?</prompt> <prompt count="3">Dites chocolat, vanille ou fraise.</prompt> <help>Dsol, on ne peut pas vous aider.</help> </field> </form> </vxml>

Et maintenant, une conversation utilisant ce formulaire : O : Bienvenue dans l'enqute sur la consommation des glaces. O : Quel est votre parfum favori ? (la valeur du compteur d'invites du champs parfum est "1") H : Pcan praline. O : Je ne comprends pas. O : Quel est votre parfum favori ? (la valeur du compteur d'invites est maintenant de "2") H : Pcan praline. O : Je ne comprend pas. O : Dites chocolat, vanille ou fraise. (la valeur du compteur est "3") H : Et si je dteste ces parfums ? O : Je ne comprends pas. O : Dites chocolat, vanille ou fraise. (la valeur du compteur est "4") H : ... Cet exemple illustre juste l'emploi des compteurs d'invites. Un formulaire plus n orirait un ventail de choix plus complet et traiterait les valeurs hors dnition de manire plus souple. l'instant de slectionner une invite, le compteur d'invites est examin. C'est la sous-invite dont la valeur de l'attribut count est infrieure ou gale celle du compteur d'invites qui est retenue. Si une invite n'a pas d'attribut count, alors le compteur est cens avoir la valeur "1". Une invite conditionnelle est celle qui est dite seulement si sa condition est satisfaite.

114 of 212

27/07/2012 22:31

Le langage de balisage extensible vocal (VoiceXML) vers...

http://www.yoyodesign.org/doc/w3c/voicexml20/

Dans cet exemple, l'invite varie chaque visite du formulaire englobant :


<?xml version="1.0" encoding="UTF-8"?> <vxml version="2.0" xmlns="http://www.w3.org/2001/vxml" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.w3.org/2001/vxml http://www.w3.org/TR/voicexml20/vxml.xsd"> <form id="autre_blague"> <var name="r" expr="Math.random()"/> <field name="autre"> <grammar type="application/srgs+xml" src="/grammars/boolean.grxml"/> <prompt cond="r &lt; .50"> Voulez-vous entendre une autre blague sur les lphants ? </prompt> <prompt cond="r &gt;= .50"> Pour une autre blague, dites oui. Pour quitter, dites non </prompt> <filled> <if cond="autre"> <goto next="#choisir_blague"/> </if> </filled> </field> </form> </vxml>

Au moment de choisir une invite, l'ensemble des invites placer en le d'attente est tabli en fonction de l'algorithme suivant : 1. Former une liste ordonne des invites, se composant de toutes les invites dans l'lment englobant, dans l'ordre du document. 2. Supprimer de cette liste toutes les invites dont la valeur de l'attribut cond, aprs conversion en un boolen, est "false". 3. Trouver le compte correct : la valeur d'attribut count la plus leve, parmi les lments prompt encore prsents sur la liste, qui soit infrieure ou gale la valeur d'attribut count courante. 4. Supprimer de la liste tous les lments qui n'ont pas le compte correct . Tous les lments restant sur la liste seront mis en le d'attente pour lecture.

4.1.7 La temporisation
L'attribut timeout indique l'intervalle de silence permis attendre l'entre d'utilisateur aprs la n de la dernire invite. Si cet intervalle est dpass, la plateforme suscitera un vnement noinput. La valeur implicite de cet attribut est celle indique par la proprit timeout (voir le chapitre 6.3.4) l'instant o l'invite est place en le d'attente. En d'autres termes, chaque invite a sa propre valeur de temporisation. La raison de permettre la dnition d'une temporisation comme attribut de l'lment prompt tient dans les temporisations dgressives. Par exemple, l'utilisateur peut disposer de cinq secondes pour la premire tentative d'entre puis de dix secondes pour la suivante. La temporisation de l'lment prompt dtermine celle de l'vnement noinput de l'entre suivante :

115 of 212

27/07/2012 22:31

Le langage de balisage extensible vocal (VoiceXML) vers...

http://www.yoyodesign.org/doc/w3c/voicexml20/

<prompt count="1"> Choisissez la couleur de votre nouveau modle T. </prompt>

<prompt count="2" timeout="120s"> Veuillez choisir la couleur de votre nouvelle Ford modle T de mille neuf cent vingt-qu Les couleurs possibles : noire, noire ou noire. Prenez votre temps. </prompt>

Si plusieurs invites sont places en le d'attente avant une entre de champ, alors c'est la temporisation de la dernire invite qui est utilise.

4.1.8 La mise en le d'attente des invites et la collecte des entres


Un interprteur VoiceXML se trouve, tout instant, dans l'un des tats suivants : en attente d'une entre dans un lment d'entre (tels que field, record ou transfer), ou en transition entre deux lments d'entre suite une entre (comprenant les noncs prononcs, les appuis de touche DTMF et les vnements lis aux entres tels que les vnements noinput ou nomatch) reue dans l'tat d'attente. Dans l'tat de transition, aucune commande vocale n'est collecte ni accepte ni interprte. Par consquent, les grammaires vocales de niveau racine et document (comme celles dnies dans les lments link peuvent ne pas tre tout le temps actives. Au contraire, les commandes DTMF (y compris les informations de temporisation) dans l'tat de transition devraient tre collectes et mises en mmoire tampon. De mme, les vnements asynchrones qui ne sont pas directement lis l'excution de la transition devraient galement tre mis en mmoire tampon jusqu' l'tat d'attente suivant (par exemple, un vnement connection.disconnect.hangup). Les tats d'attente et de transition sont relis aux phases de l'algorithme FIA comme suit : l'interprteur entre nalement en tat d'attente lors de la phase de collecte d'un lment d'entre (au point o l'interprteur attend une entre), et l'tat de transition engloble les phases de traitement et de slection, la phase de collecte des lments de commande (tels que les lments block) et la phase de collecte des lments d'entre jusqu'au point o l'interprteur attend une entre. Cette distinction des tats est destine clarier le modle de programmation. En particulier, une consquence importante de ce modle est celle selon laquelle le dveloppeur de l'application VoiceXML peut compter sur l'excution complte de tout le contenu excutable (tel que le contenu des lments filled et block), parce qu'elle intervient pendant l'tat de transition lequel ne peut tre interrompu par une entre. Pendant l'tat de transition, les diverses invites sont places en le d'attente soit par l'lment prompt dans un contenu excutable, soit par l'lment prompt dans des lments de formulaire. En outre, un son d'attente peut tre plac en le d'attent par l'attribut fetchaudio. Les invites et le son d'attente dans la le d'attente sont jous : soit quand l'interprteur atteint l'tat d'attente, point partir duquel les invites

116 of 212

27/07/2012 22:31

Le langage de balisage extensible vocal (VoiceXML) vers...

http://www.yoyodesign.org/doc/w3c/voicexml20/

sont joues, l'interprteur tant l'coute d'une entre qui corresponde l'une des grammaires actives, soit quand l'interprteur commence le chargement d'une ressource (tel qu'un document) pour lequel un attribut fetchaudio a t dni. Auquel cas, les invites places en le d'attente, avant le son d'attente indiqu par l'attribut fetchaudio, sont joues jusqu'au bout puis, si la ressource doit rellement tre charge (c'est-dire que le dlai de sa mise en cache a expir), alors le son d'attente fetchaudio joue jusqu' la n du chargement. L'interprteur reste dans l'tat de transition et aucune entre n'est accepte au cours du chargement. Remarquez que, lorsque la valeur de l'attribut bargein d'un lment prompt est "false", les entres ne sont pas collectes et les commandes DTMF mises en mmoire tampon pendant un tat de transition sont eaces (voir le chapitre 4.1.5). Lorsqu'une grammaire de reconnaissance vocale automatique correspond, si une commande DTMF a t simultanment consomme par une grammaire DTMF (sans que cela ait abouti une correspondance complte la grammaire DTMF), alors le processeur peut choisir d'carter la commande DTMF. Avant que l'interprteur ne quitte, toutes les invites en le d'attente sont joues jusqu'au bout. L'interprteur reste dans l'tat de transition et aucune entre n'est accepte tant que l'interprteur n'a pas quitt. L'optimisation selon laquelle les invites commencent jouer pendant l'tat de transition avant d'atteindre l'tat d'attente est permise, condition de maintenir une smantique correcte vis--vis du traitement de l'entre audio reue pendant la lecture des invites, par exemple, en ce qui concerne les traitements des interruptions et des grammaires. Les exemples suivants illustrent la mise en uvre de ces rgles dans quelques cas communs. Cas 1 Cas de non-chargement typique : un lment field, suivi par un contenu excutable (tels que des lments block ou filled), suivi par un autre lment field.
dans le document d0 <field name="f0"/> <block> contenu excutable e1 met les invites {p1} en file d'attente </block> <field name="f2"> met les invites {p2} en file d'attente active les grammaires {g2} </field>

En consquence d'une entre reue en cours d'attente dans le champ f0 , voici les actions qui sont entreprises : dans l'tat de transition :
117 of 212 27/07/2012 22:31

Le langage de balisage extensible vocal (VoiceXML) vers...

http://www.yoyodesign.org/doc/w3c/voicexml20/

excuter e1 (sans lment goto) mettre les invites {p1} en le d'attente mettre les invites {p2} en le d'attente simultanment, dans l'tat d'attente : jouer les invites {p1,p2} activer les grammaires {g2} et attendre une entre Cas 2 Cas de chargement typique : un lment field, suivi par un contenu excutable (tels que des lments block ou filled) qui se termine par un lment goto dnissant un attribut fetchaudio et qui aboutit dans un lment field d'un autre document charg d'un serveur.
dans le document d0 <field name="f0"/> <block> contenu excutable e1 met les invites {p1} en file d'attente mne au champ f2 dans le document d1 avec un son d'attente fa </block> dans le document d1 <field name="f2"> met les invites {p2} en file d'attente active les grammaires {g2} </field>

En consquence d'une entre reue en cours d'attente dans le champ f0 , voici les actions qui sont entreprises : dans l'tat de transition : excuter e1 mettre les invites {p1} en le d'attente simultanment : charger le document d1 jouer les invites {p1} jusqu'au bout puis jouer le son d'attente fa jusqu' la n du chargement mettre les invites {p2} en le d'attente simultanment, dans l'tat d'attente : jouer les invites {p2} activer les grammaires {g2} et attendre une entre Cas 3 Comme dans le cas 2, mais sans attribut fetchaudio dni.
dans le document d0 <field name="f0"/>

118 of 212

27/07/2012 22:31

Le langage de balisage extensible vocal (VoiceXML) vers...

http://www.yoyodesign.org/doc/w3c/voicexml20/

<block> contenu excutable e1 met les invites {p1} en file d'attente mne au champ f2 dans le document d1 (sans son d'attente) </block> dans le document d1 <field name="f2"> met les invites {p2} en file d'attente active les grammaires {g2} </field>

En consquence d'une entre reue en cours d'attente dans le champ f0 , voici les actions qui sont entreprises : dans l'tat de transition : excuter e1 mettre les invites {p1} en le d'attente charger le document d1 mettre les invites {p2} en le d'attente simultanment, dans l'tat d'attente : jouer les invites {p1, p2} activer les grammaires {g2} et attendre une entre

5. Le ux de commande et les scripts


5.1 Les variables et les expressions
Les variables VoiceXML sont tous gards quivalentes aux variables ECMAScript : elles font partie du mme espace de variables. Les variables VoiceXML peuvent servir dans un lment script tout comme les variables dnies dans un lment script peuvent servir dans un document VoiceXML. Dclarer une variable au moyen de l'lment var quivaut utiliser une dclaration var dans un lment script. L'lment script peut aussi apparatre partout o l'lment var peut apparatre. Les lments de formulaire peuvent galement dclarer des variables VoiceXML. Les conventions de nommage des variables sont les mmes que dans ECMAScript, hormis les noms commenant par un caractre soulign ( _ ) et ceux nissant par un caractre signe dollar ( $ ) qui sont rservs pour un usage interne. Les variables VoiceXML, y compris les variables d'lment de formulaire, ne doivent pas contenir de mots rservs pour ECMAScript. Elles doivent aussi respecter les rgles ECMAScript de correction rfrentielle. Par exemple, les noms de variable doivent tre uniques et leur dclaration ne doit pas contenir de point ( var x.y est une dclaration illgale dans ECMAScript. Les noms de variable qui violent les conventions de nommage ou bien les rgles ECMAScript provoquent un vnement error.semantic.

5.1.1 La dclaration des variables


On dclare les variables au moyen d'lments var :
<var name="tel_domicile"/>

119 of 212

27/07/2012 22:31

Le langage de balisage extensible vocal (VoiceXML) vers...


<var name="pi" expr="3.14159"/> <var name="ville" expr="'Prigueux'"/>

http://www.yoyodesign.org/doc/w3c/voicexml20/

Elles peuvent aussi tre dclars par les lments de formulaire :


<field name="nbre_tickets"> <grammar type="application/srgs+xml" src="/grammars/number.grxml"/> <prompt>Combien voulez-vous acheter de tickets?</prompt> </field>

Les variables dclares sans valeur initiale explicite sont initialises la valeur ECMAScript "undefined". On doit dclarer les variables avant de les utiliser, dans VoiceXML comme dans ECMAScript. L'utilisation d'une variable non dclare se traduit par une erreur ECMAScript qui transparat comme un vnement error.semantic. On peut utiliser les variables dclares dans ECMAScript au moyen du mot-cl var dans VoiceXML, tout comme on peut utiliser les variables VoiceXML dans ECMAScript. Dans un formulaire, les variables dclares par des lments var et celles dclares par des lments de formulaire sont initialises lorsqu'on accde au formulaire. Les initialisations sont assures de survenir dans l'ordre du document, de sorte que cet exemple est lgal :
<?xml version="1.0" encoding="UTF-8"?> <vxml version="2.0" xmlns="http://www.w3.org/2001/vxml" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.w3.org/2001/vxml http://www.w3.org/TR/voicexml20/vxml.xsd"> <form id="test"> <var name="un" expr="1"/> <field name="deux" expr="un+1"> <grammar type="application/srgs+xml" src="/grammars/number.grxml"/> </field> <var name="trois" expr="deux+1"/> <field name="continuer" type="boolean"> <prompt>Dites oui ou non pour continuer</prompt> </field> </form> </vxml>

Lorsque l'utilisateur visite cet lment form, l'initialisation du formulaire tablit d'abord la variable un et xe sa valeur "1". Puis c'est le tour de la variable deux avec une valeur de "2". Ensuite, la logique d'initialisation dclare la variable trois et lui donne la valeur "3". L'algorithme FIA entre alors dans l'interprtation de sa boucle principale et commence au champ continuer .

5.1.2 Les portes des variables


Le langage VoiceXML utilise une chane de portes ECMAScript qui permet de dclarer des variables des niveaux hirarchiques dirents dans une application. Par exemple, une variable dclare avec une porte de document peut tre appele depuis n'importe o dans ce document, tandis qu'une variable locale dclare dans un lment catch ne sera visible que dans cet lment catch. Pour conserver cette smantique de visibilit, on doit dclarer toutes les variables ECMAScript. L'utilisation d'une variable non dclare se traduit par une erreur ECMAScript qui transparat via un

120 of 212

27/07/2012 22:31

Le langage de balisage extensible vocal (VoiceXML) vers...

http://www.yoyodesign.org/doc/w3c/voicexml20/

vnement error.semantic. On peut dclarer les variables avec les portes suivantes : Ce sont des variables, en lecture seule, qui se rapportent la totalit d'une session d'utilisateur. Elles sont dclares et xes par le contexte d'interprtation. Les documents VoiceXML ne peuvent pas dclarer de nouvelles variables de session. Voir le chapitre 5.1.4.

session

Ce sont des variables dclares par des lments var et script, enfants de l'lment vxml du document racine d'application. Elles sont initialises au chargement du document racine d'application. Elles existent tant que le document racine application d'application est charg et elles sont visibles par le document racine et tout document terminal d'application charg. Remarquez que pour une excution l'intrieur du document racine d'application, l'expression document.x quivaut application.x . Ce sont des variables dclares par des lments var et script, enfants de l'lment vxml. Elles sont initialises au chargement du document. Elles existent tant que le document est charg. Elles ne sont visibles que dans ce document, moins qu'il ne s'agisse d'un document racine d'application, auquel cas les variables sont visibles par les documents terminaux dans la porte de l'application seulement. Chaque dialogue (avec les lments form ou menu) dtermine une porte de dialogue qui existe ds lors que l'utilisateur visite le dialogue et qui est visible par les lments qui le composent. La porte d'un dialogue recouvre les variables suivantes : celles dclares par les lments var et script enfants de l'lment form, celles des lments de formulaire et les variables ctives des lments de formulaire. Les lments enfants var et script de l'lment form sont initialiss la premire visite du formulaire, contrairement aux lments var dans le contenu excutable qui sont initialiss l'excution de celui-ci. Chaque lment block, filled et catch dnit une nouvelle porte anonyme qui va contenir les variables dclares dans l'lment en question. Tableau 40 : Les portes des variables Le diagramme suivant illustre la hirarchie des portes :

document

dialog

(anonyme)

121 of 212

27/07/2012 22:31

Le langage de balisage extensible vocal (VoiceXML) vers...

http://www.yoyodesign.org/doc/w3c/voicexml20/

Figure 11 : La hirarchie des portes Les ches courbes dans ce diagramme montre que chaque porte contient une variables prdnie dont le nom est le mme que celui qui se rapporte la porte en question. Cela permet, par exemple, dans les portes anonymes, dans celles de dialogue et celles de document, d'appeler une variable X dans la porte de document en faisant document.X. Comme autre exemple, la porte des variables d'un lment filled est une porte anonyme locale l'lment filled dont la porte des variables du parent est celle de l'lment form. On dcourage l'emploi des mots session , application , document et dialog comme noms des variables et des lments de formulaire. Bien que ce ne soient pas des mots rservs, les employer clipse les variables prdnies de mme nom cause des rgles de porte ECMAScript utilises par VoiceXML.

5.1.3 L'appel des variables


Les variables sont appeles par les attributs cond et expr :
<if cond="aeroport == 'LAX'"> <assign name="aeroport" expr="'Los Angeles'"/> <elseif cond="aeroport == 'PPT'"/> <assign name="aeroport" expr="'Papeete'"/> <elseif cond="aeroport =='PGX'"/> <assign name="aeroport" expr="'Prigueux'"/> </if> <assign name="var1" expr="var1 + 1"/> <if cond="i &gt; 1"> <assign name="i" expr="i-1"/> </if>

Le langage utilis dans les expressions des attributs cond et expr est prcisment ECMAScript. Remarquez qu'on doit masquer les oprateurs de l'attribut cond < , <= et && dans XML (en &lt; , &lt;= , etc.). Les appels des variables s'inscrivent dans la porte englobante la plus proche selon la

122 of 212

27/07/2012 22:31

Le langage de balisage extensible vocal (VoiceXML) vers...

http://www.yoyodesign.org/doc/w3c/voicexml20/

chane des portes donne prcdemment. On peut prxer un appel avec un nom de porte pour raison de clart ou an de rsoudre une ambigut. Par exemple, an de sauvegarder la valeur d'une variable associe l'un des champs d'un formulaire pour une utilisation ultrieure dans un document :
<assign name="document.ssn" expr="dialog.ssn"/>

Si le document racine d'application contient une variable x, on l'appelle par application.x dans les documents non-racine, et par application.x ou bien document.x dans le document racine d'application. Si le document ne dnit pas d'application racine et contient une variable x, on l'appelle soit par application.x, soit par document.x dans le document.

5.1.4 Les variables de session normalises


session.connection.local.uri Cette variable est une adresse URI qui dsigne l'appareil du contexte d'interprtation. session.connection.remote.uri Cette variable est une adresse URI qui dsigne l'appareil appelant distant. session.connection.protocol.name Cette variable correspond au nom du protocole de connexion. Le nom reprsente galement le nom de sous-objet des informations propres au protocole. Par exemple, si la variable session.connection.protocol.name vaut "q931", alors la variable session.connection.protocol.q931.uui est susceptible de dnir la proprit d'information utilisateur--utilisateur de la connexion. session.connection.protocol.version Cette variable correspond la version du protocole de connexion. session.connection.redirect Cette variable est un tableau reprsentant les chemins des redirections de connexion. Le premier lment correspond au numro original appel et le dernier lment au dernier numro redirig. Chaque lment du tableau contient une proprit uri, pi (information de prsentation, si (information de ltrage) et reason. La proprit reason admet l'une des valeurs suivantes : " unknown", "user busy", "no reply", "deflection during alerting", "deflection immediate response" ou "mobile subscriber not reachable". session.connection.aai Cette variable correspond des informations interapplications transmises pendant l'tablissement de la connexion. session.connection.originator Cette variable appelle directement soit la proprit local, soit la proprit remote (par exemple, l'expression ECMAScript suivante renverra la valeur " true" si le tiers distant a initi la connexion : var appelant_initiateur = connection.originator == connection.remote ).

5.1.5 Les variables d'application normalises


application.lastresult$ Cette variable contient des informations concernant la dernire reconnaissance qui a eu lieu dans cette application. C'est un tableau d'lments dont lequel chaque lment application.lastresult$[i] reprsente un rsultat possible au travers des variables suivantes :
123 of 212 27/07/2012 22:31

Le langage de balisage extensible vocal (VoiceXML) vers...

http://www.yoyodesign.org/doc/w3c/voicexml20/

application.lastresult$[i].confidence Le niveau de abilit de l'nonc entier de cette interprtation dans l'intervalle 0.0-1.0 . Une valeur de "0.0" indique une abilit minimale et une valeur de "1.0" une abilit maximale. L'interprtation plus prcise d'une valeur de abilit dpendra de la plateforme. application.lastresult$[i].utterance La chane des mots bruts qui ont t reconnus pour cette interprtation. L'atomisation et l'orthographe exactes sont propres la plateforme (par exemple, cinq cent trente ou 5 cent 30 ou mme 530 ). Dans le cas d'une grammaire DTMF, cette variable contiendra la chane numrique reconnue. application.lastresult$[i].inputmode Pour cette interprtation, le mode selon lequel l'entre d'utilisateur a t fournie : "dtmf" ou "voice". application.lastresult$[i].interpretation Une variable ECMAScript contenant l'interprtation, comme dcrit dans le chapitre 3.1.5. Les interprtations sont tries par score de abilit, du plus grand au plus petit. Celles ayant le mme score de abilit font l'objet d'un tri supplmentaire en fonction des relations de prsance (voir le chapitre 3.1.4) entre les grammaires produisant les interprtations. Des lments dirents dans le tableau application.lastresult$ direront toujours par leur nonc, leur interprtation, ou les deux. Le nombre d'lments du tableau application.lastresult$ est assur suprieur ou gal un et infrieur ou gal la valeur de la proprit de systme maxnbest. Si le systme n'a gnr aucun rsultat, alors le tableau application.lastresult$ aura la valeur ECMAScript "undefined". En outre, le tableau application.lastresult$ contient lui-mme les proprits confidence, utterance, inputmode et interpretation correspondant celles d'indice "0" dans le tableau ECMAScript. Toutes les variables ctives dcrites prcdemment sont xes immdiatement aprs une reconnaissance quelconque. Selon cette dnition, un vnement nomatch compte pour une reconnaissance et entrane donc le remplissage du tableau application.lastresult$, quoique les valeurs qui y sont stockes dpendent de la plateforme. En outre, les valeurs existantes des variables du champ ne seront pas aectes par un vnement nomatch. l'inverse, un vnement noinput ne modiera pas le tableau application.lastresult$. Aprs que la valeur de la variable application.lastresult$ a t xe, elle persiste ( moins d'tre modie par l'application) jusqu' ce que le navigateur entre dans l'tat d'attente suivant, o sa valeur devient " undefined". Lorsqu'un document racine d'application est charg, cette variable reoit galement la valeur "undefined. La variable application.lastresult$ et tous ses composants sont rinscriptibles et peuvent tre modis par l'application. L'exemple suivant montre comment se servir de application.lastresult$ dans un lment catch de niveau champ pour accder au rsultat de reconnaissance d'une grammaire de liens et pour passer des tats de dialogue dirents en fonction du niveau de abilit :

124 of 212

27/07/2012 22:31

Le langage de balisage extensible vocal (VoiceXML) vers...

http://www.yoyodesign.org/doc/w3c/voicexml20/

<vxml version="2.0" xmlns="http://www.w3.org/2001/vxml" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.w3.org/2001/vxml http://www.w3.org/TR/voicexml20/vxml.xsd"> <link event="menulinkevent"> <grammar src="/grammars/grammaire_liens.grxml" type="application/srgs+xml"/> </link> <form> <field> <prompt> Dites quelque chose </prompt> <catch event="menulinkevent"> <if cond="application.lastresult$.confidence &lt; 0.7"> <goto nextitem="confirmer_dialogue_liens"/> <else/> <goto next="./menu_principal.html"/> </if> </catch> </field> </form> </vxml>

L'exemple suivant montre comment se servir d'un script pour parcourir le tableau de rsultats application.lastresult$, dans lequel chaque lment est reprsent par application.lastresult$[i] :
<?xml version="1.0" encoding="UTF-8"?> <vxml version="2.0" xmlns="http://www.w3.org/2001/vxml" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.w3.org/2001/vxml http://www.w3.org/TR/voicexml20/vxml.xsd"> <form> <field name="couleur"> <prompt> Dites une couleur </prompt> <grammar type="application/srgs+xml" src="couleur.grxml" /> <filled> <var name="compte_fiabilite" expr="0"/> <script> <![CDATA[ // nombre de rsultats var len = application.lastresult$.length; // parcours du tableau for (var i = 0; i < len; i++) { // vrifier si DTMF if (application.lastresult$[i].confidence > .7) { compte_fiabilite++; } } ]]> </script> <if cond="compte_fiabilite > 1"> <goto next="#verifier"/> </if> </filled> </field> </form>

125 of 212

27/07/2012 22:31

Le langage de balisage extensible vocal (VoiceXML) vers...


</vxml>

http://www.yoyodesign.org/doc/w3c/voicexml20/

5.2 La gestion des vnements


La plateforme suscite des vnements ds lors que l'utilisateur ne rpond pas, qu'il ne rpond pas d'une manire comprise par l'application, qu'il demande une assistance, etc. L'interprteur suscite des vnments lorsqu'il rencontre une erreur smantique dans un document VoiceXML ou lorsqu'il rencontre un lment throw. Les vnements sont identis par des chanes de caractres. Chaque lment dans lequel un vnement est susceptible de se produire admet l'ensemble des lments de capture suivant : catch error help noinput nomatch Un lment hrite, au besoin, des lments de capture ( comme par copie ) de chacun de ses lments anctres. Si, par exemple, un champ ne contient pas d'lment catch pour un vnement nomatch mais son formulaire parent oui, alors c'est l'lment de capture de l'vnement nomatch du formulaire qui sera utilis. On peut ainsi dnir un comportement commun de gestion des vnements n'importe quel niveau qui s'appliquera tous les descendants. La smantique comme par copie d'hritage des lments de capture implique que, lors de l'excution d'un lment catch, les variables sont rsolues et les vnements suscits sont manipuls relativement la porte dans laquelle l'vnement original s'est produit, et non relativement la porte contenant l'lment catch. Par exemple, prenons un lment catch dni dans la porte du document manipulant un vnement initi dans un lment field dans le document. Pour un tel lment catch, les appels de variable se rsolvent relativement la porte de l'lment field, et si un vnement est suscit par l'lment catch, alors il est manipul relativement l'lment field. De mme, les appels d'adresse URI relatives dans un lment catch se rsolvent par rapport au document actif et non par rapport au document dans lequel ils sont dclars. Enn, les proprits se rsolvent relativement l'lment dans lequel l'vnement s'est produit. Par exemple, un lment prompt, dni dans une capture de niveau document, utiliserait la valeur de la proprit la plus interne de l'lment de formulaire actif an de rsoudre son attribut timeout si aucune valeur explicite n'est dnie.

5.2.1 L'lment throw


L'lment throw suscite un vnement, lequel peut tre l'un de ceux prdnis ::
<throw event="nomatch"/> <throw event="connection.disconnect.hangup"/>

Ou peut tre dni par l'application :

126 of 212

27/07/2012 22:31

Le langage de balisage extensible vocal (VoiceXML) vers...

http://www.yoyodesign.org/doc/w3c/voicexml20/

<throw event="com.att.portail.machine"/>

Les attributs de l'lment throw sont :


event eventexpr

L'vnement suscit. Une expression ECMAScript donnant le nom de l'vnement suscit. Une chane message fournissant des renseignements supplmentaires sur l'vnement suscit. Pour les vnements prdnis suscits par la plateforme, la teneur du message dpendra de la plateforme. Le message est accessible comme valeur d'une variable dans la porte de l'lment catch, voir ci-dessous. Une expression ECMAScript donnant la chane message. Tableau 41 : Les attributs de l'lment throw

message

messageexpr

On doit dnir exactement un seul d'entre les attributs event ou eventexpr, sinon un vnement error.badfetch est suscit. On peut indiquer exactement un seul d'entre les attributs message ou messageexpr, sinon un vnement error.badfetch est suscit. Sauf dclaration contraire explicite, le langage VoiceXML ne dnit pas quand les vnements sont suscits.

5.2.2 L'lment catch


L'lment catch associe une capture un document, un dialogue ou un lment de formulaire (sauf les lments block). Il contient un contenu excutable.
<vxml version="2.0" xmlns="http://www.w3.org/2001/vxml" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.w3.org/2001/vxml http://www.w3.org/TR/voicexml20/vxml.xsd"> <form id="lancer_missiles"> <field name="id_utilisateur" type="digits"> <prompt>Quel est votre nom d'utilisateur ?</prompt> </field> <field name="mot_de_passe"> <prompt>Quel est le code d'accs ?</prompt> <grammar version="1.0" root="root"> <rule id="racine" scope="public">rutabaga</rule> </grammar> <help>C'est le nom d'un tubercule obscur.</help> <catch event="nomatch noinput" count="3"> <prompt>Tentative d'intrusion !</prompt> <submit next="http://www.example.com/attraper_traitre.vxml" namelist="id_utilisateur"/> </catch> </field> </form>

127 of 212

27/07/2012 22:31

Le langage de balisage extensible vocal (VoiceXML) vers...


</vxml>

http://www.yoyodesign.org/doc/w3c/voicexml20/

La porte des variables anonymes de l'lment catch inclut la variable spciale _event, laquelle contient le nom de l'vnement qui a t suscit. Par exemple, l'lment catch suivant peut manipuler deux types d'vnements :
<catch event="event.foo event.bar"> <if cond="_event=='event.foo'"> <!-- Jouer ceci pour les vnements event.foo --> <audio src="foo.wav"/> <else/> <!-- Jouer cela pour les vnements event.bar --> <audio src="bar.wav"/> </if> <!-- Poursuivre par une manipulation commune l'un ou l'autre vnement --> </catch>

La variable _event est inspecte an de slectionner le son jouer en fonction de l'vnement suscit. Pour un vnement event.foo , ce sera le chier foo.wav et pour un vnement event.bar , le chier bar.wav . Le reste de l'lment catch consiste en un contenu excutable commun pour la manipulation des deux types d'vnements. La porte des variables anonymes de l'lment catch inclut galement la variable spciale _message, laquelle contient la valeur de la chane message issue de l'lment throw correspondant ou bien une valeur dpendant de la plateforme pour les vnements prdnis suscite par la plateforme. Si l'vnement suscit ne donne pas de message, alors la variable _message a la valeur ECMAScript " undefined". Lorsqu'un lment catch contient un lment throw avec le mme vnement, alors il risque de se produire une boucle innie :
<catch event="help"> <throw event="help"/> </catch>

Une platforme pourrait dtecter une telle situation et susciter une erreur smantique la place. Les attributs de l'lment catch sont : Le ou les vnements capturer. On peut dnir une liste d'vnements, spars par des caractres espace, indiquant que l'lment catch capture tous les vnements event mentionns dans la liste. Auquel cas, un compteur d'vnement spar (voir l'attribut count) est mis en place pour chaque vnement. Si l'attribut n'est pas dni, alors tous les vnements seront capturs. L'occurrence de l'vnement (la valeur implicite est "1"). L'attribut count permet de grer les direntes occurrences count du mme vnement de manire distincte. Tableau 42 : Les attributs de l'lment catch
128 of 212 27/07/2012 22:31

Le langage de balisage extensible vocal (VoiceXML) vers...

http://www.yoyodesign.org/doc/w3c/voicexml20/

Chaque lment form, menu et lment de formulaire assure le compte de chaque vnement survenant pendant qu'il est visit. Les compteurs d'vnements de niveau lmentaire servent pour les vnements suscits pendant la visite des lments de formulaire individuels et pendant l'excution des lments filled contenus qui y sont contenus. Les compteurs de niveau formulaire et de niveau menu servent pour les vnements suscits pendant l'initialisation du dialogue et pendant l'excution des lments filled de niveau formulaire. Les compteurs d'vnements de niveau formulaire et de niveau menu sont rinitialiss chaque fois que l'on rentre dans l'lment form ou l'lment menu. Les compteurs d'vnements de niveau formulaire et de niveau menu ne sont pas rinitialiss par l'lment clear. Les compteurs d'vnements de niveau lmentaire sont rinitialiss chaque fois que l'on rentre dans l'lment form contenant l'lment en question. Ils sont galement rinitialiss lorsqu'on rinitialise l'lment en question avec un lment clear. Les compteurs d'vnements de niveau lmentaire ne sont pas rinitialiss quand on rentre dans l'lment en question sans avoir quitt l'lment form. Les compteurs sont incrments par rapport au nom complet de l'vnement et chaque prxe correspondant au nom d'vnement ; par exemple, une occurrence de l'vment event.foo.1 va incrmenter les compteurs de event.foo.1 , plus ceux de event.foo et event . Une expression dont la valeur, aprs conversion en un boolen, vaut "true" pour que l'vnement puisse tre captur. La valeur implicite est "true".

cond

5.2.3 La notation abrge


Les lments error, help, noinput et nomatch sont des abrviations pour les types trs courants de l'lment catch. L'lment error est un raccourci pour <catch event="error"> et capture tous les types d'erreur :
<error> Une erreur est survenue : veuillez rappeler ultrieurement. <exit/> </error>

L'lment help est une abrviation de l'expression <catch event="help"> :


<help>Personne ne peut vous aider !</help>

129 of 212

27/07/2012 22:31

Le langage de balisage extensible vocal (VoiceXML) vers...

http://www.yoyodesign.org/doc/w3c/voicexml20/

L'lment noinput est une abrviation pour <catch event="noinput"> :


<noinput>Je n'ai rien entendu, veuillez rssayer.</noinput>

L'lment nomatch est un raccourci pour <catch event="nomatch"> :


<nomatch>J'ai entendu quelque chose, mais le nom de cette ville m'est inconnu.</nomatch>

Ces lments admettent les attributs :


count

Le compte d'vnements (comme pour l'lment catch). Une condition facultative tester an de vrier si l'vnement est captur par cet lment (comme pour l'lment catch dcrit dans le chapitre 5.2.2). La valeur implicite est "true".

cond

Tableau 43 : Les attributs des abrviations de l'lment catch

5.2.4 La slection de l'lment catch


Un lment hrite, au besoin, des lments catch ( comme par copie ) de chacun de ses lments anctres. Par exemple, si un lment field hrite de l'lment catch du document :
<vxml version="2.0" xmlns="http://www.w3.org/2001/vxml" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.w3.org/2001/vxml http://www.w3.org/TR/voicexml20/vxml.xsd"> <catch event="event.foo"> <audio src="beep.wav"/> </catch> <form> <field name="couleur"> <prompt>Veuillez indiquer une couleur primaire</prompt> <grammar type="application/srgs">rouge | jaune | bleu</grammar> <nomatch> <throw event="event.foo"/> </nomatch> </field> </form> </vxml>

Auquel cas, l'lment catch est copi implicitement dans l'lment field comme s'il tait dni ainsi :
<vxml version="2.0" xmlns="http://www.w3.org/2001/vxml" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.w3.org/2001/vxml http://www.w3.org/TR/voicexml20/vxml.xsd"> <form> <field> <prompt>Veuillez indiquer une couleur primaire</prompt>

130 of 212

27/07/2012 22:31

Le langage de balisage extensible vocal (VoiceXML) vers...

http://www.yoyodesign.org/doc/w3c/voicexml20/

<grammar type="application/srgs">rouge | jaune | bleu</grammar> <nomatch> <throw event="event.foo"/> </nomatch> <catch event="event.foo"> <audio src="beep.wav"/> </catch> </field> </form> </vxml>

Lorsqu'un vnement est suscit, la porte dans laquelle l'vnement est manipul et ses portes englobantes sont examines an de trouver l'lment catch le mieux quali selon l'algorithme suivant : 1. tablir une liste ordonne des captures, compose de toutes les captures dans la porte courante et toutes les portes englobantes (lment de formulaire, formulaire, document, document racine d'application, contexte d'interprtation), range d'abord par porte (en commenant par la porte courante) puis dans chaque porte dans l'ordre du document ; 2. Supprimer de cette liste toutes les captures dont les noms d'vnement ne correspondent pas l'vnement suscit ou ceux dont l'attribut cond, aprs conversion en un boolen, vaut "false" ; 3. Trouver le compte correct : la valeur d'attribut count la plus leve parmi les lments catch encore prsents dans la liste infrieure ou gale la valeur de l'attribut count courant ; 4. Slectionner le premier lment dans la liste ayant le compte correct . Le nom d'un vnement suscit correspond au nom d'vnement de l'lment catch en cas de correspondance exacte ou de correspondance de prxe, ou si l'lment catch ne dnit pas d'attribut event (remarquez qu'on ne peut pas aecter une chane vide l'attribut event ; la dclaration event="" est syntaxiquement erronne). Une correspondance de prxe se produit lorsque l'attribut event de l'lment catch est un prxe atomique du nom de l'vnement suscit, dont le sparateur des atomes est un caractre point, tous les points de queue sont supprims et une chane restante vide reprsente n'importe quel atome. Par exemple :
<catch event="connection.disconnect"> <prompt>J'ai captur un vnement connection point disconnect</prompt> </catch>

La dclaration aura une correspondance de prxe pour un vnement connection.disconnect.transfer.


<catch event="com.exemple.kekchose"> <prompt>J'ai captur un vnement com point exemple point kekchoset</prompt> </catch>

Cette dclaration aura une correspondance de prxe pour les vnements com.exemple.kekchose.evenement1. , com.exemple.kekchose. et com.exemple.kekchose..evenement1 , mais pas pour com.exemple.kekchoses.evenement1 . Finalement :
<catch event=".">

131 of 212

27/07/2012 22:31

Le langage de balisage extensible vocal (VoiceXML) vers...


<prompt>J'ai captur un vnement</prompt> </catch>

http://www.yoyodesign.org/doc/w3c/voicexml20/

Cette dclaration aura une correspondance de prxe pour tous les vnements (comme c'est le cas pour un lment catch sans attribut event). Remarquez que l'algorithme de slection de l'lment catch donne la priorit aux lments catch qui apparaissent tt dans le document sur ceux qui apparaissent tard, mais il ne donne pas la priorit aux lments catch plus spciques sur ceux moins spciques. C'est pourquoi, on conseille, en gnral, de dnir les lments catch dans un ordre allant du plus spcique au moins spcique. Par exemple, il est judicieux de dnir les lments catch des erreurs error.foo et error , dans cet ordre, comme suit :
<catch event="error.foo"> <prompt>J'ai captur un vnement error point foo</prompt> </catch> <catch event="error"> <prompt>J'ai captur un vnement error</prompt> </catch>

Si on avait dni les lments catch dans l'ordre inverse, alors l'lment catch pour error.foo ne serait jamais excut.

5.2.5 Les lments catch implicites


On attend de l'interprteur qu'il fournisse des gestionnaires de capture par dfaut implicites pour les vnements noinput, help, nomatch, cancel, exit et error au cas o l'auteur ne les aurait pas indiqus. Le comportement par dfaut du systme pour les gestionnaires de capture des divers vnements et erreurs est rsum par les dnitions suivantes, lesquelles indiquent (1) si une quelconque rponse audio doit tre fournie ou non, et (2) comment l'excution est aecte. Remarque : si une rponse audio est fournie, son contenu rel dpendra de la plateforme. Type d'vnement cancel error exit help noinput nomatch Rponse audio non oui non oui non oui Action ne pas produire de nouvelle invite quitter l'interprteur quitter l'interprteur produire une nouvelle invite produire une nouvelle invite produire une nouvelle invite

Tableau 44 : Les gestionnaires de capture par dfaut


132 of 212 27/07/2012 22:31

Le langage de balisage extensible vocal (VoiceXML) vers...

http://www.yoyodesign.org/doc/w3c/voicexml20/

maxspeechtimeout

oui

produire une nouvelle invite quitter l'interprteur quitter l'interprteur

connection.disconnect non tous les autres oui

Les plateformes particulires pourront prsenter des invites par dfaut direntes.

5.2.6 Les types d'vnement


Il existe des vnements prdnis et des vnements propres une application ou une plateforme. Les vnements se rpartissent aussi en vnements rguliers (qui se produisent normalement) et en vnements d'erreur (dont les occurrences sont anormales). Les conventions de nommage des erreurs permettent plusieurs niveaux de granularit. Un navigateur conforme peut susciter un vnement, qui prolonge un vnement prdni, tant que son nom d'vnement contient la chane du nom de l'vnement prdni en question comme sous-chane initiale exacte spare par un point. Les applications qui dnissent des gestionnaires de capture pour les vnements prdnis seront interoprables. Celles qui dnissent des gestionnaires de capture pour les noms d'vnement prolongs n'orent pas toutes les garanties d'interoprabilit. Par exemple, si au cours du chargement d'un chier de grammaire une erreur est dtecte, la plateforme doit susciter un vnement error.badfetch. Susciter un vnement error.badfetch.grammar.syntax est une implmentation acceptable. Les composants des noms d'vnement mis en exergue doivent tre remplacs par l'information adquate ; par exemple, dans error.unsupported.lment , on remplace lment par le nom de l'lment VoiceXML qui n'est pas pris en charge, comme error.unsupported.transfer. Tous les autres composants du nom d'vnement sont xes. On peut fournir d'autres renseignements propos de l'vnement dans la variable _message (voir le chapitre 5.2.2). Les vnements prdnis sont : cancel L'utilisateur a demand l'annulation de la lecture de l'invite courante. connection.disconnect.hangup L'utilisateur a raccroch. connection.disconnect.transfer L'utilisateur a t transfr inconditionnellement sur une autre ligne et il ne reviendra pas. exit L'utilisateur a demand quitter. help L'utilisateur a demand une assistance. noinput L'utilisateur n'a pas rpondu dans le dlai imparti. nomatch

133 of 212

27/07/2012 22:31

Le langage de balisage extensible vocal (VoiceXML) vers...

http://www.yoyodesign.org/doc/w3c/voicexml20/

L'utilisateur a entr quelque chose qui n'a pas t reconnue. maxspeechtimeout L'entre d'utilisateur est trop longue et dpasse la valeur de la proprit maxspeechtimeout. Outre les erreurs de transfert (voir le chapitre 2.3.7.3), les erreurs prdnies sont : error.badfetch Le contexte d'interprtation suscite cet vnement quand le chargement d'un document a chou et quand le contexte d'interprtation est arriv au point dans l'interprtation du document o le rsultat du chargement est ncessaire. Les checs de chargement sont ds aux appels dans un systme d'adressage non gr, aux adresse URI malformes, aux abandons des clients, aux erreurs de connexion, aux dpassements de dlai, aux violations de scurit, aux types de ressource non grs, aux dsaccords entre les types de ressource, aux erreurs d'analyse du document et aux diverses erreurs reprsentes par des codes d'erreur propres au systme d'adressage. Si le contexte d'interprtation a eectu le prchargement spculatif d'un document et que ce document se rvle inutile, il ne sera pas suscit d'vnement error.badfetch. De mme, si le chargement d'un lment audio choue et qu'il existe un lment audio imbriqu de remplacement dont le chargement russit, ou s'il existe un texte de remplacement imbriqu, alors il ne sera pas suscit d'vnement error.badfetch. Lorsqu'un contexte d'interprtation eectue une transition vers un nouveau document, il suscite un vnement error.badfetch en cas d'erreur jusqu' ce que l'interprteur puisse excuter le nouveau document, une fois encore seulement l'instant o le nouveau document est rellement demand et pas avant. Le fait de considrer l'initialisation des variables comme faisant partie ou non de l'excution du nouveau document dpendra de la plateforme. error.badfetch.http.code_rponse error.badfetch.protocole.code_rponse En cas d'chec de chargement, le contexte d'interprtation doit employer un type d'vnement prcis indiquant le code de rponse HTTP ou propre un autre protocole particulier qui a t reu. La valeur du code de rponse HTTP est dnie dans le document [RFC2616]. Cette annonce, par exemple, permet aux applications de traiter diremment un document manquant et un document interdit. La valeur du code de rponse d'autres protocoles (tels que HTTPS, RTSP, et ainsi de suite) dpendra du protocole en question. error.semantic Une erreur d'excution a t dtecte dans le document VoiceXML, par exemple, une erreur sur les bornes d'une sous-chane ou l'appel d'une variable non dnie. error.noauthorization Une vnement suscit lorsque l'application essaye d'eectuer une opration non autorise par la plateforme. Comme examples : composer un numro de tlphone invalide ou un numro que l'utilisateur n'est pas autoris appeler, ou essayer d'accder une base de donnes protge au travers d'un lment object propre la plateforme, ou un accs inappropri aux grammaires intgres, etc. error.noresource

134 of 212

27/07/2012 22:31

Le langage de balisage extensible vocal (VoiceXML) vers...

http://www.yoyodesign.org/doc/w3c/voicexml20/

Une erreur d'excution est survenue parce qu'une ressource ncessaire de la plateforme n'tait pas disponible pour l'excution. error.unsupported.builtin La plateforme ne gre pas un type ou une grammaire obligatoires intgrs. error.unsupported.format La ressource demande est dans un format non gr par la plateforme, par exemple, un format de grammaire ou un type de mdia non grs. error.unsupported.language La plateforme ne gre pas la langue de la voix synthtise ou celle de la reconnaissance vocale. error.unsupported.objectname La plateforme ne gre pas un objet particulier propre une plateforme. Remarquez que objectname est une chane xe, qui ne se remplace pas par le nom de l'objet non gr. error.unsupported.lment La plateforme ne gre pas l'lment en question, o lment reprsente un lment VoiceXML dni dans la prsente spcication. Par exemple, si la plateforme ne prend pas en charge l'lment transfer, elle doit susciter un vnement error.unsupported.transfer. Ce mcanisme permet l'auteur une gestion des vnements en fonction des direntes capacits des plateformes. Les erreurs rencontres au cours du chargement d'un document, y compris les erreurs de transport (le document introuvable du code de statut 404 du protocole HTTP, et ainsi de suite) et les erreurs syntaxiques (absence d'un lment vxml, etc.), aboutissent au dclenchement d'un vnement error.badfetch dans le document appelant. Les erreurs qui se produisent aprs le chargement et avant l'entre dans la phase d'initialisation de l'algorithme FIA sont prises en charge de manire spcique la plateforme. Celles qui se produisent aprs la phase d'initialisation, comme les erreurs smantiques, se dclenchent dans le nouveau document. La prise en charge des erreurs rencontres au cours du chargement du premier document d'une session est propre la plateforme. Les types d'vnement propres aux applications et aux plateformes devraient utiliser la convention de nom de domaine Internet inverse pour viter les conits de nommage. Par exemple : error.com.example.plateformevocale.nonautorise L'utilisateur n'est pas autoris aux accs externes sur cette plateforme. org.example.voice.unecertaineapplication.tropdesilences L'utilisateur est trop silencieux. Les captures peuvent concerner des vnements particuliers (cancel) ou tous ceux partageant un prxe (error.unsupported).

5.3 Le contenu excutable


Un contenu excutable se rapporte un bloc de logique procdurale. On trouve des logiques de ce type dans : L'lment de formulaire block ; L'lment d'action filled dans les formulaires et les lments d'entre ; Les gestionnaires d'vnements (catch, help, etc.).
135 of 212 27/07/2012 22:31

Le langage de balisage extensible vocal (VoiceXML) vers...

http://www.yoyodesign.org/doc/w3c/voicexml20/

Les lments excutables sont traits dans l'ordre du document dans leur bloc de logique procdurale. Si un lment excutable gnre une erreur, alors elle l'est immdiatement. Les lments excutables suivants dans ce bloc de logique procdurale ne sont pas excuts. Ce chapitre couvre les lments qui peuvent apparatre dans un contenu excutable.

5.3.1 L'lment var


Cet lment dclare une variable. Il peut apparatre dans un contenu excutable ou comme enfant d'un lment form ou d'un lment vxml. Exemples :
<var name="telephone" expr="'+689 123456'"/> <var name="y" expr="document.z+1"/>

S'il apparat dans un contenu excutable, alors l'lment dclare une variable dans la porte anonyme associe l'lment block, ou l'lment filled, ou l'lment catch englobants. Cette dclaration n'intervient qu'au moment o l'lment var est excut. Si la variable est dj dclare dans cette porte, alors les dclarations suivantes agissent comme des aectations, comme dans le langage ECMAScript. Si l'lment var est un enfant d'un lment form, alors il dclare une variable dans la porte du dialogue de l'lment form. Cette dclaration intervient pendant la phase d'initialisation du formulaire, comme dcrit dans le chapitre 2.1.6.1. L'lment var n'est pas un lment de formulaire, c'est la raison pour laquelle il n'est pas visit dans la boucle principale de l'algorithme FIA. Si l'lment var est un enfant d'un lment vxml, alors il dclare une variable dans la porte du document ; si, en outre, c'est un enfant d'un lment vxml dans un document racine, alors il dclare la variable dans la porte de l'application. Cette dclaration intervient lorsque le document est initialis ; les initialisations ont lieu dans l'ordre du document. Les attributs de l'lment var sont : Le nom de la variable qui contiendra le rsultat. la dirence de l'attribut name de l'lment assign (voir le chapitre 5.3.2), cet attribut ne doit pas indiquer une variable avec un prxe de porte (si une variable est dnie avec un name prxe de porte, alors un vnement error.semantic est suscit). La porte dans laquelle la variable est dnie est dtermine partir de la position dans le document o l'lment est dclar. La valeur initiale de la variable (optionnelle). En l'absence d'un attribut expr, la variable conserve sa valeur courante, le expr cas chant. Les variables ont la valeur initiale ECMAScript "undefined" si elles n'ont pas t initialises. Tableau 45 : Les attributs de l'lment var

5.3.2 L'lment assign

136 of 212

27/07/2012 22:31

Le langage de balisage extensible vocal (VoiceXML) vers...

http://www.yoyodesign.org/doc/w3c/voicexml20/

L'lment assign aecte une valeur une variable :


<assign name="parfum" expr="'chocolat'"/> <assign name="document.cout" expr="document.cout+14"/>

Il est interdit d'aecter une valeur une variable qui n'aura pas t dclare explicitement par un lment var ou par une dclaration var dans un lment script. Une tentative d'aectation d'une variable non dnie suscitera un vnement error.semantic. Remarquez que, lorsqu'un objet ECMASCript, disons obj , a t correctement initialis, alors ses proprits, par exemple obj.prop1 , peuvent tre assignes sans dclaration explicite (en fait, une tentative de dclaration de la proprit d'un objet ECMAScript, telle que obj.prop1 , dclenchera un vnement error.semantic). Les attributs de l'lment assign sont : Le nom de la variable aecte. Comme indiqu dans le chapitre 5.1.2, la variable correspondante devra avoir t dclare au pralable, sinon il sera suscit un vnement error.semantic. Par dfaut, la porte dans laquelle la la name variable se rsoud est la porte englobante la plus proche de l'lment actif courant. Pour lever toute ambigut, on peut prxer le nom de la variable avec un nom de porte, comme dcrit dans le chapitre 5.1.3.
expr

La nouvelle valeur de la variable. Tableau 46 : Les attributs de l'lment assign

5.3.3 L'lment clear


L'lment clear rinitialise une ou plusieurs variables, y compris celles des lments de formulaire. Quel que soit le nom de variable dni, la variable se rsoud relativement la port courante conformment aux indications du chapitre 5.1.3 (pour lever toute ambigut, on peut prxer chaque nom de variable dans l'attribut namelist avec un nom de porte). Une fois la variable dclare identie, on lui aecte la valeur ECMAScript "undefined". En outre, si le nom de la variable correspond celui d'un lment de formulaire, alors le compteur d'invites et les compteurs d'vnements de cet lment de formulaire sont rinitialiss. Par exemple :
<clear namelist="ville departement code_postal"/>

L'attribut de l'lment clear est : La liste des variables rinitialiser ; elle peut comprendre des noms de variable autres que ceux d'lments de namelist formulaire. Si la liste de noms appelle une variable non dclare, alors il sera suscit un vnement Tableau 47 : L'attribut de l'lment clear
137 of 212 27/07/2012 22:31

Le langage de balisage extensible vocal (VoiceXML) vers...

http://www.yoyodesign.org/doc/w3c/voicexml20/

error.semantic (voir le chapitre 5.1.1). En absence de l'attribut, toutes les variables des lments de formulaire du formulaire courant sont eaces.

5.3.4 Les lment if, elseif et else


L'lment if sert dans la logique conditionnelle. Il s'accompagne des lments optionnels else et elseif.
<if cond="total > 1000"> <prompt>Cette dpense est trop importante.</prompt> <throw event="com.ciexyz.compte.tropdepense"/> </if> <if cond="montant &lt; 29.95"> <assign name="x" expr="montant"/> <else/> <assign name="x" expr="29.95"/> </if> <if cond="parfum == 'vanille'"> <assign name="code_parfum" expr="'v'"/> <elseif cond="parfum == 'chocolat'"/> <assign name="code_parfum" expr="'c'"/> <elseif cond="parfum == 'fraise'"/> <assign name="code_parfum" expr="'f'"/> <else/> <assign name="code_parfum" expr="'?'"/> </if>

5.3.5 Les lments prompt


Les invites peuvent apparatre dans un contenu excutable, dans leur gnralit complte, mis part l'attribut count de l'lment prompt qui n'a aucune signication. On peut notamment utiliser l'attribut cond dans un contenu excutable. L'invite peut se trouver englobe dans des balises <prompt> et </prompt>, ou tre reprsente par des caractres de type PCDATA . Partout o l'lment prompt est susceptible d'apparatre, une chane de type PCDATA , par exemple xyz , sera interprte comme si elle tait apparue sous la forme <prompt>xyz</prompt>.
<nomatch count="1"> Pour ouvrir la porte de la nacelle, prononcez clairement votre phrase secrte. </nomatch> <nomatch count="2"> <prompt> C'est votre <emphasis>dernire</emphasis> chance. </prompt> </nomatch> <nomatch count="3"> Accs refus. <exit/> </nomatch>

138 of 212

27/07/2012 22:31

Le langage de balisage extensible vocal (VoiceXML) vers...

http://www.yoyodesign.org/doc/w3c/voicexml20/

5.3.6 L'lment reprompt


L'algorithme FIA attend d'un lment catch qu'il place en le d'attente les invites appropries dans le cadre de la gestion d'un vnement. C'est pourquoi il n'eectue gnralement pas la slection et la mise en le d'attente normales des invites dans l'itration qui suit l'excution d'un lment de capture. Nanmoins, l'algorithme FIA eectuera une slection et un mise en le d'attente normales des invites aprs l'excution d'un lment de capture (catch, error, help, noinput, nomatch) dans deux cas : lorsque l'lment de capture se termine par l'excution d'un lment goto ou submit menant un autre dialogue, ou lorsqu'il se termine par un lment return revenant d'un sous-dialogue ; auquel cas le nouveau dialogue doit avoir l'assurance que son invite initiale reste intacte et ne puisse pas tre supprime ou remplace par un dialogue appelant, ou ; lorsqu'un lment reprompt est excut dans l'lment de capture pour demander que les invites suivantes soient joues. Dans ces deux cas, aprs que l'algorithme FIA a slectionn l'lment de formulaire suivant visiter, il opre le traitement normal des invites, savoir la slection et la mise en le d'attente des invites de l'lment de formulaire et l'incrmentation du compteur d'invites de l'lment de formulaire en question. Par exemple, cette capture noinput attend que l'invite suivante de lment de formulaire soit slectionne puis joue :
<field name="vouloir_glace"> <grammar type="application/srgs+xml" src="/grammars/boolean.grxml"/> <prompt>Voulez-vous une glace pour le dessert ?</prompt> <prompt count="2"> Si vous voulez une glace, dites oui. Si vous ne voulez pas de glace, dites non. </prompt> <noinput> Je n'ai rien entendu. <!-- Entrane la slection et la lecture de l'invite suivante. --> <reprompt/> </noinput> </field>

Un utilisateur silencieux entendrait : O : Voulez-vous une glace pour le dessert ? H : (silence) O : Je n'ai rien entendu. O : Si vous voulez une glace, dites oui. Si vous ne voulez pas de glace, dites non. H : (silence) O : Je n'ai rien entendu.

139 of 212

27/07/2012 22:31

Le langage de balisage extensible vocal (VoiceXML) vers...

http://www.yoyodesign.org/doc/w3c/voicexml20/

O : Si vous voulez une glace, dites oui. Si vous ne voulez pas de glace, dites non. H : Non S'il n'y avait pas d'lment reprompt, l'utilisateur aurait entendu la place : O : Voulez-vous une glace pour le dessert ? H : (silence) O : Je n'ai rien entendu. H : (silence) O : Je n'ai rien entendu. H : Non Remarquez que le fait de sauter la phase de slection des invites, comme dcrit prcdemment, a pour consquence de ne pas incrmenter le compteur d'invites de l'lment de formulaire slectionn par l'algorithme FIA, aprs l'excution d'un lment de capture (celui-ci n'excutant pas d'lment reprompt ni ne quittant le dialogue via un lment goto, submit ou bien return). Remarquez galement que la phase de slection des invites suivant l'excution d'un lment de capture (celui-ci n'excutant pas d'lment reprompt ni ne quittant le dialogue via un lment goto, submit ou bien return) est saute, mme si l'lment de formulaire slectionn par l'algorithme FIA est dirent de l'lment de formulaire prcdent. L'lment reprompt n'a aucun eet en dehors d'un lment de capture.

5.3.7 L'lment goto


L'lment goto sert : eectuer une transition vers un autre lment de formulaire dans le formulaire courant ; eectuer une transition vers un autre dialogue dans le document courant, ou ; eectuer une transition vers un autre document. Pour oprer une transition vers un autre lment de formulaire, utilisez l'attribut nextitem, ou l'attribut expritem si le nom de l'lment de formulaire est calcul au moyen d'une expression ECMAScript :
<goto nextitem="confirmer_ssn"/> <goto expritem="(type==12)? 'confirmer_ssn' : 'rejeter'"/>

Pour aller un autre dialogue dans le mme document, utilisez l'attribut next (ou bien expr) avec seulement un fragment d'adresse URI :
<goto next="#autre_dialogue"/>

140 of 212

27/07/2012 22:31

Le langage de balisage extensible vocal (VoiceXML) vers...


<goto expr="'#' + 'autre_dialogue'"/>

http://www.yoyodesign.org/doc/w3c/voicexml20/

Pour oprer une transition vers un autre document, utilisez l'attribut next (ou bien expr) avec une adresse URI :
<goto next="http://vol.example.com/reserver_place"/> <goto next="./repas_special#menu_vegetarien"/>

L'adresse URI peut tre absolue ou relative au document courant. On peut indiquer le dialogue de dpart dans le document suivant au moyen d'un fragment correspondant la valeur de l'attribut id d'un dialogue. Si on n'indique pas de fragment, alors c'est le premieur dialogue de ce document qui sera choisi. Remarquez que le passage un autre dialogue dans le document courant entrane la perte des variables de l'ancien dialogue, mme quand la transition s'opre sur l'lment en question. De la mme manire, le passage un autre document via une adresse URI absolue ou relative causera l'abandon des anciennes variables de niveau document, mme si le nouveau document est celui initiant la transition. Par contre, les variables des documents persistent dans la transition vers un appel d'adresse URI vide avec un identicateur de fragment. Par exemple, les dclarations suivantes amnent un comportement dirent dans un document dont l'adresse URI est http://unecie.example.com/index.vxml :
<goto next="#foo"/> <goto next="http://unecie.example.com/index.vxml#foo"/>

Selon le document [RFC2396], l'identicateur de fragment (la partie aprs le caractre dise # ) ne faisant pas partie de l'adresse URI, la transition opre par un appel d'adresse URI vide plus un identicateur de fragment ne devrait jamais aboutir un nouveau chargement de document. Par consquent, le fragment #foo dans la premire dclaration correspond un appel d'adresse URI vide avec un identicateur de fragment, et les variables du document sont retenues. Dans la seconde dclaration, le fragment #foo fait partie d'une adresse URI absolue et, ce titre, les variables du document sont perdues. Si on veut que des donnes persistent entre plusieurs documents, il faut stocker ces donnes dans la porte de l'application. Le dialogue vers lequel oprer une transition est dni par l'appel d'adresse URI de l'attribut next ou bien expr de l'lment goto (voir le document [RFC2396]). Si cet appel d'adresse URI contient une adresse absolue ou relative, incluant ventuellement une chane de requte, alors cette adresse URI fait l'objet d'un chargement et le dialogue se trouvera dans le document rsultant. Si l'appel d'adresse URI contient seulement un fragment (c'est--dire que l'adresse URI n'est ni absolue ni relative), alors aucun chargement n'a lieu : le dialogue se trouve dans le document courant. Le cas chant, le fragment de l'appel d'adresse nomme le dialogue vers lequel oprer la transition. En l'absence d'un fragment, le premier dialogue lexical dans le document sera choisi. Si l'lment de formulaire, le dialogue ou le document vers lesquels oprer la transition ne sont pas valides (c'est--dire que l'lment de formulaire, le dialogue ou

141 of 212

27/07/2012 22:31

Le langage de balisage extensible vocal (VoiceXML) vers...

http://www.yoyodesign.org/doc/w3c/voicexml20/

le document n'existent pas), alors il sera suscit un vnement error.badfetch. Remarquez que, en ce qui concerne les erreurs survenant au cours d'une transition vers un dialogue ou un document, c'est la plateforme qui gre la porte dans laquelles elles sont gres. Pour les erreurs qui surviennent au cours d'une transition vers un lment de formulaire, l'vnement est gr dans la porte du dialogue. Les attributs de l'lment goto sont :
next expr nextitem

L'adresse URI vers laquelle oprer la transition. Une expression ECMAScript qui produit l'adresse URI. Le nom de l'lment de formulaire suivant visiter dans le formulaire courant. Une expression ECMAScript qui produit le nom de l'lment de formulaire suivant visiter. Voir le chapitre 6.1. Sa valeur implicite est celle de la proprit fetchaudio. Voir le chapitre 6.1. Sa valeur implicite est celle de la proprit documentfetchhint. Voir le chapitre 6.1. Sa valeur implicite est celle de la proprit fetchtimeout. Voir le chapitre 6.1. Sa valeur implicite est celle de la proprit documentmaxage. Voir le chapitre 6.1. Sa valeur implicite est celle de la proprit documentmaxstale. Tableau 48 : Les attributs de l'lment goto

expritem

fetchaudio

fetchhint

fetchtimeout

maxage

maxstale

On doit dnir exactement un seul d'entre les attributs next, expr, nextitem ou expritem, sinon un vnement error.badfetch est suscit.

5.3.8 L'lment submit


L'lment submit sert soumettre des informations au serveur Web d'origine puis oprer une transition vers le document renvoy en rponse. la dirence de l'lment goto, il permet de soumettre une liste de variables au serveur de documents via une requte HTTP GET ou POST . Par exemple, pour soumettre un ensemble d'lments de formulaire au serveur, on pourrait avoir :
<submit next="journal_requetes" method="post" namelist="nom rang numero_serie" fetchtimeout="100s" fetchaudio="audio/brahms2.wav"/>

Le dialogue vers lequel eectuer la transition est indiqu par l'appel d'adresse URI dans l'attribut next ou attribut expr de l'lment submit (voir le document [RFC2396], chapitre 4.2). L'adresse URI est toujours extraite, mme quand elle ne contient qu'un fragment. Dans le cas d'un fragment, l'adresse URI demande est la l'adresse URI de base du document courant. Par consquent, les deux lments suivants produisent des eets trs dirents :

142 of 212

27/07/2012 22:31

Le langage de balisage extensible vocal (VoiceXML) vers...

http://www.yoyodesign.org/doc/w3c/voicexml20/

<goto next="#obtenir_pin"/> <submit next="#obtenir_pin"/>

Remarquez que, bien que l'adresse URI soit toujours extraite et que la transisition vers le document rsultant ait lieu, certaines requtes par l'lment submit peuvent tre satisfaites par des caches intermdiaires. Cela peut se produire, par exemple, si le serveur Web d'origine fournit une date d'expiration explicite avec la rponse. Si le dialogue ou le document de la transition ne sont pas valides (c'est--dire que le dialogue ou le document n'existent pas), un vnement error.badfetch devra tre suscit. Remarquez que, pour les erreurs qui surviennent au cours de la transition vers un dialogue ou un document, la porte dans laquelle les erreurs seront gres dpendra de la plateforme. Les attributs de l'lment submit sont :
next

L'appel d'adresse URI. Comme pour l'attribut next, hormis le fait que l'appel d'adresse URI est dtermin de manire dynamique en valuant l'expression ECMAScript donne. La liste des variables soumettre. Par dfaut, toutes les variables des lments d'entre nomms sont soumises. Quand on fournit un attribut namelist, il peut contenir des rfrences de variables individuelles qui sont soumises avec la mme qualication que celle utilise dans la liste de nom. Les variables VoiceXML et ECMAScript dclares peuvent tre appeles. Si une variable non dclare est appele dans l'attribut namelist, alors un vnement error.semantic est suscit (voir le (chapitre 5.1.1). La mthode de requte : "get" (la valeur implicite) ou "post". Le type de codage du mdia du document soumis (quand la valeur de l'attribut method est "post"). Sa valeur implicite est "application/x-www-form-urlencoded". Les interprteurs doivent galement grer la valeur "multipart/form-data" mais peuvent prendre en charge d'autres types de codage. Voir le chapitre 6.1. Sa valeur implicite est celle de la proprit fetchaudio. Voir le chapitre 6.1. Sa valeur implicite est celle de la proprit documentfetchhint. Voir le chapitre 6.1. Sa valeur implicite est celle de la proprit fetchtimeout.

expr

namelist

method

enctype

fetchaudio

fetchhint

fetchtimeout

Tableau 49 : Les attributs de l'lment submit

143 of 212

27/07/2012 22:31

Le langage de balisage extensible vocal (VoiceXML) vers...

http://www.yoyodesign.org/doc/w3c/voicexml20/

maxage

Voir le chapitre 6.1. Sa valeur implicite est celle de la proprit documentmaxage. Voir le chapitre 6.1. Sa valeur implicite est celle de la proprit documentmaxstale.

maxstale

On doit dnir exactement un seul d'entre les attributs next ou expr, sinon un vnement error.badfetch est suscit. Lors de la soumission d'une variable ECMAScript au serveur, sa valeur est pralablement convertie en une chane. Si cette variable est un objet ECMAScript, le mcanisme selon lequel elle est soumise n'est pas dni pour l'instant et reste dnir dans une version future. Au lieu de soumettre directement les objets ECMAScript, le dveloppeur de l'application peut soumettre explicitement les proprits de l'objet concern, par exemple, comme dans date.month date.year . Si un lment submit contient une variable appelant un son enregistr et que l'attribut enctype n'a pas la valeur "multipart/form-data", alors le comportement n'est pas dni. galement, essayer d'appliquer un codage d'adresse URL sur une grande quantit de donnes ne constitue probablement pas une bonne ide.

5.3.9 L'lment exit


L'lment exit repasse le contrle au contexte d'interprtation qui dtermine quoi faire ensuite.
<exit/>

Cet lment se distingue de l'lment return en cela qu'il termine tous les documents chargs, tandis que l'lment return revient de l'invocation d'un lment subdialog. Si cet lment subdialog a caus l'invocation d'un nouveau document (ou d'une nouvelle application), alors l'lment return terminera ce document, mais l'excution reprendra aprs l'lment subdialog. Remarquez que, une fois le contrle repass au contexte d'orientation par l'lment exit, le contexte d'interprtation est libre d'agir sa guise : il peut, par exemple, jouer un menu de niveau suprieur pour l'utilisateur, abandonner l'appel en cours ou transfrer l'utilisateur vers un oprateur. Les attributs de l'lment exit comprennent :
expr

Une expression ECMAScript dont l'valuation est la valeur renvoye (par exemple, "0", "'oups !'" ou "champ1").

Les noms des variables renvoyer au contexte d'interprtation. Par dfaut, aucune variable n'est renvoye ; le contexte d'interprtation recevra un objet namelist ECMAScript vide. Si une variable non dclare est appele dans l'attribut namelist, alors il sera suscit un vnement error.semantic (voir le chapitre 5.1.1). Tableau 50 : Les attributs de l'lment exit

144 of 212

27/07/2012 22:31

Le langage de balisage extensible vocal (VoiceXML) vers...

http://www.yoyodesign.org/doc/w3c/voicexml20/

On doit dnir exactement un seul d'entre les attributs expr ou namelist, sinon un vnement error.badfetch est suscit. L'lment exit ne suscite pas un vnement exit.

5.3.10 L'lment return


L'lment return termine l'excution d'un sous-dialogue, et il repasse le contrle, en renvoyant des donnes, au dialogue appelant. Les attributs de l'lment return sont :
event eventexpr

Revient puis suscite cet vnement. Revient puis suscite l'vnement correspondant l'valuation de cette expression ECMAScript. Une chane message prcisant le contexte de l'vnement suscit. Le message est accessible sous forme de la valeur d'une variable dans la porte de l'lment de capture, voir le chapitre 5.2.2. Une expression ECMAScript dont l'valuation correspond la chane message. Les noms des variables renvoyer au dialogue appelant. Par dfaut, aucune variable n'est renvoye ; l'appelant recevra un objet ECMAScript vide. Si une variable non dclare est appele dans l'attribut namelist, alors il sera suscit un vnement error.semantic (voir le chapitre 5.1.1). Tableau 51 : Les attributs de l'lment return

message

messageexpr

namelist

On doit dnir exactement un seul d'entre les attributs event, eventexpr ou namelist, sinon un vnement error.badfetch est suscit. On doit dnir exactement un seul d'entre les attributs message ou messageexpr, sinon un vnement error.badfetch est suscit. Au retour d'un sous-dialogue, un vnement pourra tre suscit au point d'invocation ou des donnes seront renvoyes sous forme d'un objet ECMAScript dont les proprits correspondront aux variables indiques dans l'attribut namelist. Un lment return qui apparatrait en dehors de l'excution d'un sous-dialogue suscitera un vnement error.semantic. L'exemple ci-dessous montre un vnement propag depuis un sous-dialogue vers le dialogue appelant quand le sous-dialogue n'a pas russi obtenir un rsultat reconnaissable. Il montre galement des donnes renvoyes dans les conditions normales :
<vxml version="2.0" xmlns="http://www.w3.org/2001/vxml" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.w3.org/2001/vxml http://www.w3.org/TR/voicexml20/vxml.xsd">

145 of 212

27/07/2012 22:31

Le langage de balisage extensible vocal (VoiceXML) vers...

http://www.yoyodesign.org/doc/w3c/voicexml20/

<form> <subdialog name="resultat" src="#obtenir_nss"> <nomatch> <!-- un vnement nomatch renvoy par le sous-dialogue indique l'chec de la correspondance avec un numro de scurit sociale. --> <goto next="http://monservice.example.com/problemes_nss.vxml"/> </nomatch> <filled> <submit namelist="resultat.nss" next="http://monservice.example.com/cgi-bin/traitement"/> </filled> </subdialog> </form> <form id="obtenir_nss"> <field name="nss"> <grammar src="http://grammarlib/nss.grxml" type="application/srgs+xml"/> <prompt> Veuillez indiquer un numro de scurit sociale.</prompt> <nomatch count="3"> <return event="nomatch"/> </nomatch> <filled> <return namelist="nss"/> </filled> </field> </form> </vxml>

Le gestionnaire d'vnement du sous-dialogue pour l'lment nomatch se dclenche la troisime tentative infructueuse ; le gestionnaire provoque le retour du sous-dialogue en incluant l'vnement nomatch susciter dans le contexte du dialogue appelant. Auquel cas, le dialogue appelant excutera son gestionnaire nomatch, au lieu de l'lment filled, l'action rsultante consistant excuter un lment goto. En conditions normales, l'lment filled du sous-dialogue est excut aprs qu'un numro de scurit sociale reconnu a t obtenu, puis cette valeur est renvoye au dialogue appelant qui en disposera dans la variable resultat.nss .

5.3.11 L'lment disconnect


L'lment disconnect entrane la dconnexion du contexte d'interprtation et de l'utilisateur. En consquence, le contexte d'interprtation suscitera un vnement connection.disconnect.hangup et entrera dans l'tat de traitement nal (comme dcrit dans le chapitre 1.5.4). Le traitement de l'lment disconnect purgera galement la le d'attente des invites (comme dcrit dans le chapitre 4.1.8).

5.3.12 L'lment script


L'lment script qui permet de dnir un bloc de code en langage de script ct client est analogue l'lment <SCRIPT> de [HTML]. Par exemple, ce document contient un script qui calcule une factorielle :
<?xml version="1.0" encoding="UTF-8"?> <vxml version="2.0" xmlns="http://www.w3.org/2001/vxml"

146 of 212

27/07/2012 22:31

Le langage de balisage extensible vocal (VoiceXML) vers...

http://www.yoyodesign.org/doc/w3c/voicexml20/

xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.w3.org/2001/vxml http://www.w3.org/TR/voicexml20/vxml.xsd"> <script> <![CDATA[ function factorielle(n) { return (n <= 1)? 1 : n * factorielle(n-1); } ]]> </script> <form id="formulaire"> <field name="fact"> <grammar type="application/srgs+xml" src="/grammars/number.grxml"/> <prompt> Dites un nombre et je vous donnerai sa factorielle. </prompt> <filled> <prompt> La factorielle de <value expr="fact"/> est <value expr="factorielle(fact)"/> </prompt> </filled> </field> </form> </vxml>

L'lment script peut apparatre dans les lments vxml et form, ou dans un contenu excutable (dans les lments filled, if, block, catch ou les formes abrges de catch. Les scripts dans les lments vxml sont valus juste aprs que le document a t charg, en mme temps que les lments var, dans l'ordre du document. Les scripts dans les lments form sont valus dans l'ordre du document, en mme temps que les lments var et les variables d'lment de formulaire, chaque fois que l'excution entre sur le terrain de l'lment form. Un lment script dans un contenu excutable s'excute, comme tous les autres lments excutables, au fur et mesure de leur apparition. Les attributs de l'lment script sont :
src

L'adresse URI donnant l'emplacement du script, quand celui-ci est externe. Le codage des caractres du script dsign par l'attribut src. Les codages UTF-8 et UTF-16 de la norme ISO/IEC 10646 doivent tre grs (commen dans le langage [XML]), d'autres codages, dnis comme tels par [IANA], pouvant tre grs. La valeur implicite est "UTF-8". Voir le chapitre 6.1. Sa valeur implicite est celle de la proprit scriptfetchhint. Voir le chapitre 6.1. Sa valeur implicite est celle de la proprit fetchtimeout.

charset

fetchhint

fetchtimeout

Tableau 52 : Les attributs de l'lment script

147 of 212

27/07/2012 22:31

Le langage de balisage extensible vocal (VoiceXML) vers...

http://www.yoyodesign.org/doc/w3c/voicexml20/

maxage

Voir le chapitre 6.1. Sa valeur implicite est celle de la proprit scriptmaxage. Voir le chapitre 6.1. Sa valeur implicite est celle de la proprit scriptmaxstale.

maxstale

On doit dnir soit un attribut src, soit un script direct (mais pas les deux), sinon il sera suscit un vnement error.badfetch L'lment script de VoiceXML (contrairement l'lment <SCRIPT> de [HTML]) n'admet pas d'attribut de type ; le langage de script ECMAScript est obligatoire pour VoiceXML. Chaque lment script est excut dans la porte de l'lment qui le contient ; c'est-dire qu'il n'a pas de porte propre. Cela signie, par exemple, que les variables dnies au moyen de l'lment var dans l'lment script sont dclares dans la porte de l'lment contenant l'lment script. (Dans la terminologie ECMAScript, la variable d'object devient la porte courante de l'lment contenant l'lment script). Voici un service d'horloge parlante avec un lment block contenant un lment script qui initialise les variables temporelles dans la porte de dialogue d'un formulaire :
<?xml version="1.0" encoding="UTF-8"?> <vxml version="2.0" xmlns="http://www.w3.org/2001/vxml" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.w3.org/2001/vxml http://www.w3.org/TR/voicexml20/vxml.xsd"> <form> <var name="heures"/> <var name="minutes"/> <var name="secondes"/> <block> <script> var d = new Date(); heures = d.getHours(); minutes = d.getMinutes(); secondes = d.getSeconds(); </script> </block> <field name="entendre_maj"> <grammar type="application/srgs+xml" src="/grammars/boolean.grxml"/> <prompt> Il est <value expr="heures"/> heures, <value expr="minutes"/> minutes et <value expr="secondes"/> secondes. </prompt> <prompt>Voulez-vous entendre l'heure mise jour ?</prompt> <filled> <if cond="entendre_maj"> <clear/> </if> </filled> </field> </form>

148 of 212

27/07/2012 22:31

Le langage de balisage extensible vocal (VoiceXML) vers...


</vxml>

http://www.yoyodesign.org/doc/w3c/voicexml20/

Le contenu d'un lment script est valu dans la mme porte qu'un lment var (voir le chapitre 5.1.2 et le chapitre 5.3.1). La chane des portes ECMAScript (voir le chapitre 10.1.4 dans [ECMASCRIPT]) est xe de telle sorte que les variables dclares soit au moyen d'un lment var, soit dans un lment script s'inscrivent dans la porte associe l'lment dans lequel les lments var ou script apparaissent. Par exemple, la variable dclare dans un lment script contenu dans un lment form aura une porte de dialogue et pourra tre appele en tant que variable de porte de dialogue, comme suit :

<?xml version="1.0" encoding="UTF-8"?> <vxml version="2.0" xmlns="http://www.w3.org/2001/vxml" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.w3.org/2001/vxml http://www.w3.org/TR/voicexml20/vxml.xsd"> <form> <script> var illico = new Date(); <!-- c'est une porte de dialogue--> </script> <var name="secondes" expr="illico.getSeconds()"/> <!-- c'est une porte de dialogue <block> <var name="illico" expr="new Date()"/> <!-- c'est une porte anonyme --> <script> var current = illico.getSeconds(); <!-- "illico" dans la porte anonyme --> var approx = dialog.illico.getSeconds(); <!-- "illico" dans la porte du dialogue </script> </block> </form> </vxml>

On doit dclarer toutes les variables avant de pouvoir les appeler par des scripts ECMAScript, ou par des lments VoiceXML, comme dcrit dans le chapitre 5.1.1.

5.3.13 L'lment log


L'lment log permet une application de gnrer un message de journalisation ou de dbogage dont le dveloppeur peut se servir pour aider au dveloppement de l'application ou pour l'analyse post-excution des performances de l'application. L'lment log peut contenir une combinaison quelconque de texte (de type CDATA ) et d'lment value. Le message gnr est constitu par la concatnation du texte et de la forme textuelle de la valeur de l'attribut expr des lments value. La faon dont le message est ach ou journalis dpend de la plateforme. L'usage de l'attribut label dpend de la plateforme. Les plateformes ne sont pas obliges de prserver les blancs. Les expressions ECMAScript des lments log doivent tre values dans l'ordre du document. L'utilisation d'un lment log ne devrait avoir aucun eet secondaire sur l'interprtation.
<log>La carte avait le numro <value expr="num_carte"/></log>

149 of 212

27/07/2012 22:31

Le langage de balisage extensible vocal (VoiceXML) vers...

http://www.yoyodesign.org/doc/w3c/voicexml20/

Les attributs de l'lment log sont :


label

Une chane optionnelle qui peut servir, par exemple, indiquer le but du journal. Une expression ECMAScript optionnelle dont l'valuation est une chane. Tableau 53 : Les attributs de l'lment log

expr

6. L'environnement et les ressources


6.1 La mise en place des ressources
6.1.1 Le chargement
Un contexte d'interprtation VoiceXML a besoin de charger des documents VoiceXML et d'autres ressources, tels que des chiers sons, des grammaires, des scripts et des objets. Chaque chargement du contenu associ une adresse URI est rgi par les attributs suivants : L'intervalle de temps attendre l'envoi du contenu avant de susciter un vnement error.badfetch. La valeur est une dsignation de temps (voir le fetchtimeout chapitre 6.5). Si l'attribut n'est pas dni, une valeur drive de celle de la proprit fetchtimeout la plus interne sera utilise. Dnit le moment o le contexte d'interprtation devrait ramener le contenu du serveur : la valeur "prefetch" indique un tlchargement du chier au moment du chargement de la page, tandis que la valeur "safe" indique un tlchargement quand c'est rellement ncessaire. Si l'attribut n'est pas dni, une valeur drive de celle de la proprit fetchhint concerne la plus interne sera utilise. Indique que le document accepte d'utiliser un contenu dans la mesure o son ge n'est pas suprieur au temps indiqu en secondes (cf. la proprit max-age du protocole HTTP 1.1 [RFC2616]). Le document n'accepte pas d'utiliser un contenu prim, moins que l'attribut maxstale ne soit aussi dni. Si l'attribut n'est pas dni, une valeur drive de celle de la proprit maxage concerne la plus interne, si prsente, sera utilise. Indique que le document accepte d'utiliser un contenu ayant dpass sa date d'expiration (cf. la proprit Tableau 54 : Les attributs de chargement
150 of 212 27/07/2012 22:31

fetchhint

maxage

maxstale

Le langage de balisage extensible vocal (VoiceXML) vers...

http://www.yoyodesign.org/doc/w3c/voicexml20/

max-age du protocole HTTP 1.1 [RFC2616]). Si l'attribut maxstale a reu une valeur, alors le document accepte d'utiliser un contenu prim mais pas plus du nombre de secondes indiqu. Si l'attribut n'est pas dni, une valeur drive de celle de la proprit maxstale concerne la plus interne, si prsente, sera utilise. Lorsqu'un contenu est charg partir d'une adresse URI, l'attribut fetchtimeout dtermine combien de temps attendre le contenu (en commenant partir du moment o la ressource sera devenue ncessaire) et l'attribut fetchhint dtermine quel moment le contenu sera charg. La politique de mise en cache d'un contexte d'interprtation VoiceXML exploite les attributs maxage et maxstale de la manire dcrite ci-dessous. L'attribut fetchhint, en combinaison avec les diverses proprits fetchhint, donne simplement au contexte d'interprtation un indice sur le moment o il peut lancer le chargement d'une ressource. Indiquer au contexte d'interprtation qu'il peut prcharger une ressource n'impose pas son chargement ; c'est seulement suggrer que cette ressource peut tre prcharge. Toutefois, le contexte d'interprtation est toujours oblig d'honorer la valeur "safe" de l'attribut fetchhint. Lors d'une transition d'un dialogue un autre, que ce soit au travers d'un lment subdialog, goto, submit, link ou bien choice, d'autres rgles viennent aecter le comportement de l'interprteur. Si l'appel d'adresse URI nomme un document (par exemple, document#dialogue ), ou si des donnes de requte sont fournies (au travers de la mthode POST ou GET ), alors un nouveau document sera obtenu (qu'il soit issu d'un cache local, d'un cache intermdiaire ou d'un serveur Web d'origine). Lorsque le document est reu, il entre dans sa phase d'initialisation (c'est-dire, obtenir et initialiser un nouveau document racine d'application au besoin, initialiser les variables de document et excuter les scripts de document). Le dialogue demand (ou le premier venu si aucun n'est indiqu) est alors initialis et l'excution du dialogue commence. En gnral, si un appel d'adresse URI ne contient qu'un fragment (par exemple, #mon_dialogue ), alors aucun document n'est charg et aucune initialisation de ce document n'a lieu. Au contraire, l'excution d'un lment submit se conclut toujours par un chargement, et ce sera aussi le cas si un attribut namelist accompagne le fragment en question. Une autre exception, c'est quand un appel d'adresse URI dans un document terminal rfrence le document racine d'application. Auquel cas, la transition vers le document racine intervient sans chargement ni initialisation, mme si l'appel d'adresse URI se compose d'une adresse URI absolue ou relative (voir le chapitre 1.5.2 et le document [RFC2396]). Par contre, si l'appel d'adresse URI vers le document racine contient une chane de requte, ou un attribut namelist, alors le document racine sera charg. Les lments susceptibles de charger des documents VoiceXML grent galement cet autre attribut :
fetchaudio

L'adresse URI du clip sonore jouer pendant le Tableau 55 : Un autre attribut du chargement

151 of 212

27/07/2012 22:31

Le langage de balisage extensible vocal (VoiceXML) vers...

http://www.yoyodesign.org/doc/w3c/voicexml20/

chargement. Si l'attribut n'est pas dni, alors on utilise la valeur de la proprit fetchaudio, et si la valeur de cette dernire n'est pas xe, aucun son ne sera jou pendant le chargement. Le chargement du clip sonore est rgi par les proprits audiofetchhint, audiomaxage, audiomaxstale et fetchtimeout en vigueur l'instant du chargement. La lecture du clip sonore est rgie par les proprits fetchaudiodelay et fetchaudiominimum en vigueur l'instant du chargement. L'attribut fetchaudio trouve une utilit dans l'amlioration de l'exprience d'utilisateur, lorsque des dlais perceptibles sont susceptibles de se manifester pour le chargement du document suivant. Il peut servir jouer une musique de fond ou une succession d'annonces. Une fois le document charg, la lecture du chier son s'interrompt s'il jouait encore. Si une erreur survient au cours du chargement du son d'attente partir de son adresse URI, aucun vnement error.badfetch ne sera suscit et aucun son ne sera jou pendant le chargement.

6.1.2 La mise en cache


Le contexte d'interprtation VoiceXML, tout comme les navigateurs visuels [HTML], peut utiliser une mise en cache pour amliorer les performances de chargement des documents et des autres ressources ; les enregistrements sonores (qui peuvent tre trs volumineux) sont aussi frquents dans les documents VoiceXML que les images le sont dans les documents HTML. Dans un navigateur visuel, il est courant d'inclure des commandes d'utilisateur nal qui permettent de mettre jour ou de rafrachir un contenu peru comme tant expir. Ce n'est pas le cas dans le contexte d'interprtation VoiceXML en raison de l'absence de commandes d'utilisateur nal quivalentes. C'est pourquoi le rafrachissement du cache reste la discrtion du document au travers de l'emploi appropri des attributs maxage et maxstale. La politique de mise en cache suivie par le contexte d'interprtation VoiceXML doit adhrer aux rgles d'exactitude de cache du protocole HTTP 1.1 ([RFC2616]). Les en-ttes Expires et Cache-Control doivent notamment tre respectes. L'algorithme suivant rsume ces rgles et reprsente le comportement du contexte d'interprtation dans la requte d'une ressource : Si la ressource n'est pas prsente en cache, la charger du serveur en utilisant la mthode get, Si la ressource est en cache : Si l'attribut maxage a une valeur : Si l'ge de la ressource en cache est <= maxage Si la ressource est expire Vrier l'attribut maxstale. Sinon, utiliser la copie en cache. Sinon, la charger du serveur au moyen de la mthode get. Sinon, Si la ressource est expire : Vrier l'attribut maxstale. Sinon, utiliser la copie en cache. La vrication de l'attribut maxstale est la suivante :

152 of 212

27/07/2012 22:31

Le langage de balisage extensible vocal (VoiceXML) vers...

http://www.yoyodesign.org/doc/w3c/voicexml20/

Si l'attribut maxstale est fourni, Si la copie en cache a dpass sa date d'expiration de pas plus de la valeur en secondes de l'attribut maxstale, alors utiliser la copie en cache. Sinon, la charger du serveur au moyen de la mthode get. Sinon, la charger du serveur au moyen de la mthode get. Remarque : Eectuer un rechercher si modi sur un document toujours prsent dans le cache, lorsque la politique requiert un chargement partir du serveur, reprsente une optimisation. Les proprits maxage et maxstale peuvent ne pas avoir la moindre valeur par dfault. Si la valeur n'est pas donne par l'auteur du document et que la plateforme ne fournit pas de valeur par dfaut, alors la valeur est " undefined" et la clause Sinon de l'algorithme s'appliquera. Toutes les autres proprits doivent fournir une valeur par dfaut (qu'elle soit donne par la spcication ou bien par la plateforme). Alors que les attributs maxage et maxstale sont issus du protocole HTTP 1.1 et directement grs par lui, certaines ressources peuvent tre appeles par des adresses URI qui empruntent des protocoles autres que HTTP. Si le protocole ne gre pas la notion d'ge d'une ressource, le contexte d'interprtation calculera l'ge de la ressource partir du moment o elle aura t reue. Si le protocole ne gre pas la notion d'expiration d'une ressource, le contexte d'interprtation considrera que la ressource aura expir immdiatement rception. 6.1.2.1 Le contrle de la politique de mise en cache Le langage VoiceXML permet l'auteur de surcharger le comportement de mise en cache par dfaut pour chaque usage de chacune des ressources (sauf un ventuel document appel par l'attribut application de l'lment vxml, car il n'existe pas de mcanisme de balisage permettant de contrler la politique de mise en cache d'un document racine d'application). Chaque lment reli une ressource peut spcier des attributs maxage et maxstale. Le fait de xer une valeur non nulle l'attribut maxage peut servir obtenir une nouvelle copie d'une ressource qui n'aura pas encore expir dans le cache. On peut demander inconditionnellement une nouvelle copie en xant la valeur de l'attribut maxage "0". L'utilisation de l'attribut maxstale permet l'auteur de dclarer que l'on peut se servir de la copie expire d'une ressource, le dlai d'expiration n'tant pas trop dpass (selon les rgles du protoxole HTTP 1.1). Cela peut procurer une amlioration des performances en liminant un chargement qui, sinon, aurait t ncessaire pour obtenir une nouvelle copie. Cette fonctionnalit est particulirement utile pour les auteurs ne disposant pas de la matrise directe ct serveur des dates d'expiration de chiers statiques volumineux.

6.1.3 Le prchargement
Le prchargement est une fonctionnalit optionnelle qu'un contexte d'interprtation peut mettre en uvre pour obtenir une ressource avant qu'elle ne soit demande. Une ressource susceptible d'un prchargement est identie par un lment dont l'attribut fetchhint a la valeur "prefetch". Lorsqu'un contexte d'interprtation eectue le prchargement d'une ressource, il doit s'assurer que la ressource prcharge est prcisment celle demande. En particulier, si l'adresse URI est calcule au travers

153 of 212

27/07/2012 22:31

Le langage de balisage extensible vocal (VoiceXML) vers...

http://www.yoyodesign.org/doc/w3c/voicexml20/

d'un attribut expr, le contexte d'interprtation ne doit pas dplacer le chargement avant les ventuelles assignations des variables de l'expression valuer. De mme, le chargement eectu partir d'un lment submit ne doit pas tre dplac avant les ventuelles assignations des variables de l'attribut namelist. L'tat d'expiration d'une ressource doit tre vri chaque usage de la ressource et, si la valeur de son attribut fetchhint est "prefetch", elle doit alors tre prcharge. La vrication doit suivre la politique de mise en cache dnie dans le chapitre 6.1.2.

6.1.4 Les protocoles


Les plateformes VoiceXML doivent prendre en charge le systme d'adresse URI http et devraient prendre en charge le protocole https devrait l'tre, d'autres protocoles d'adresse URI pouvant tre grs.

6.2 Les informations de mtadonne


Les informations de mtadonne concernent le document plutt que son contenu. Le langage VoiceXML 2.0 fournit deux lments pouvant exprimer des informations de mtadonne : les lments meta et metadata. L'lment metadata ore un traitement plus gnral et plus puissant des informations de mtadonne que l'lment meta. Le langage VoiceXML ne dnit pas d'informations de mtadonne obligatoires. Cependant, il recommande que les mtadonnes soient exprimes au moyen de l'lment metadata, les informations tant fournies dans le langage du cadre de description des ressources (RDF) [RDF-SYNTAX] en utilisant le schma RDF de l'initiative Dublin Core version 1.0 [DC] (voir le chapitre 6.2.2).

6.2.1 L'lment meta


L'lment meta dnit des mtainformations comme dans le langage [HTML]. Il existe deux types d'lment meta. Le premier type dnit une proprit de mtadonne du document dans son ensemble et s'exprime au travers du couple d'attributs name et content. Par exemple, pour indiquer la personne charge de la mise jour d'un document VoiceXML :
<?xml version="1.0" encoding="UTF-8"?> <vxml version="2.0" xmlns="http://www.w3.org/2001/vxml" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.w3.org/2001/vxml http://www.w3.org/TR/voicexml20/vxml.xsd"> <meta name="maintainer" content="dupond@unesociete.example.com"/> <form> <block> <prompt>Bonjour</prompt> </block> </form> </vxml>

Le second type dnit des en-ttes de rponse HTTP et s'exprime au travers du couple d'attributs http-equiv et content. Dans l'exemple suivant, le premier lment meta xe

154 of 212

27/07/2012 22:31

Le langage de balisage extensible vocal (VoiceXML) vers...

http://www.yoyodesign.org/doc/w3c/voicexml20/

une date d'expiration qui empche la mise en cache du document, le second lment meta xe l'en-tte Date :
<?xml version="1.0" encoding="UTF-8"?> <vxml version="2.0" xmlns="http://www.w3.org/2001/vxml" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.w3.org/2001/vxml http://www.w3.org/TR/voicexml20/vxml.xsd"> <meta http-equiv="Expires" content="0"/> <meta http-equiv="Date" content="Thu, 12 Dec 2000 23:27:21 GMT"/> <form> <block> <prompt>Bonjour</prompt> </block> </form> </vxml>

Les attributs de l'lment meta sont :


name content http-equiv

Le nom de la proprit de mtadonne. La valeur de la proprit de mtadonne. Le nom d'une en-tte de rponse HTTP. Tableau 56 : Les attributs de l'lment meta

On doit dnir exactement un seul d'entre les attributs name ou http-equiv, sinon un vnement error.badfetch est suscit.

6.2.2 L'lment metadata


L'lment metadata est un conteneur dans lequel on peut placer des informations contenant le document en utilisant un schma de mtadonnes. Bien qu'on puisse utiliser n'importe quel schma de mtadonnes avec l'lment metadata, on recommande d'utiliser le schma RDF en conjonction avec les proprits de mtadonne dnies dans l'initiative pour les mtadonnes Dublin Core. Le langage RDF est un langage dclaratif qui permet un emploi normalis du langage XML pour reprsenter des mtadonnes sous forme de dclarations sur les proprits et les relations des lments sur le Web. Les crateurs de contenu devrait consulter les recommandations sur les mtadonnes du W3C [RDF-SYNTAX] et [RDF-SCHEMA] ainsi que l'initiative pour les mtadonnes Dublin Core [DC], qui est un ensemble de proprits de mtadonne lmentaires d'application gnrale (par exemple, Title, Creator, Subject, Description, Copyrights, etc.). On recommande l'emploi des proprits de mtadonne Dublin Core suivantes dans l'lment metadata :
Creator

La principale entit responsable de la fabrication du contenu de la ressource.

Tableau 57 : Les proprits de mtadonne Dublin Core recommandes

155 of 212

27/07/2012 22:31

Le langage de balisage extensible vocal (VoiceXML) vers...

http://www.yoyodesign.org/doc/w3c/voicexml20/

Rights

Des informations concernant les droits dtenus dans et sur la ressource. Le sujet du contenu de la ressource. En gnral, un sujet s'exprimera au travers de mots-cls, de phrases-cls ou de codes de classication. Le bon usage recommand consiste slectionner des valeurs provenant d'un vocabulaire contrl ou d'un systme de classication formel.

Subject

Voici un exemple sur la faon d'inclure des mtadonnes dans un document VoiceXML en utilisant le schma RDF de l'initiative Dublin Core version 1.0 [DC] :
<?xml version="1.0" encoding="UTF-8"?> <vxml version="2.0" xmlns="http://www.w3.org/2001/vxml" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.w3.org/2001/vxml http://www.w3.org/TR/voicexml20/vxml.xsd"> <metadata> <rdf:RDF xmlns:rdf = "http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:rdfs = "http://www.w3.org/TR/1999/PR-rdf-schema-19990303#" xmlns:dc = "http://purl.org/metadata/dublin_core#"> <!-- Mtadonnes concernant le document VoiceXML --> <rdf:Description about="http://www.example.com/meta.vxml" dc:Title="Service de renseignement de l'annuaire" dc:Description="Service de renseignement de l'annuaire de Londre en VoiceXML" dc:Publisher="W3C" dc:Language="fr" dc:Date="2002-02-12" dc:Rights="Copyright 2002 John Smith" dc:Format="application/voicexml+xml" > <dc:Creator> <rdf:Seq ID="CreateursNomOrdreAlphabtique"> <rdf:li>Jackie Crystal</rdf:li> <rdf:li>William Lee</rdf:li> </rdf:Seq> </dc:Creator> </rdf:Description> </rdf:RDF> </metadata> <form> <block> <prompt>Bonjour</prompt> </block> </form> </vxml>

6.3 L'lment property


L'lment property xe la valeur d'une proprit. On se sert des lment property pour xer des valeurs qui aectent le comportement de la plateforme, comme le traitement de reconnaissance, les dlais, la politique de mise en cache, etc.

156 of 212

27/07/2012 22:31

Le langage de balisage extensible vocal (VoiceXML) vers...

http://www.yoyodesign.org/doc/w3c/voicexml20/

On peut dnir des proprits pour l'application entire, pour le document entier au niveau de l'lment vxml, pour un dialogue particulier au niveau des lments form ou menu, ou pour un lment de formulaire particulier. Les proprits s'appliquent leur lment parent et tous les descendants du parent. Une proprit un niveau infrieur surclasse une proprit un niveau suprieur. Lorsque des valeurs direntes sont dnies pour une proprit sur un mme niveau, c'est la dernire dans l'ordre du document qui s'applique. Les proprits dnies dans le document racine d'application fournissent les valeurs implicites des proprits dans chaque document de l'application ; les proprits dnies dans un document individuel surclassent les valeurs de proprit dnies dans le document racine d'application. Si une plateforme dtecte l'invalidit de la valeur d'une proprit, alors elle devrait susciter un vnement error.semantic. Dans certains cas, les lments property dnissent des valeurs par dfaut pour les attributs d'un lment, tels que timeout et bargein. Par exemple, pour supprimer l'interruption implicite de toutes les invites d'un formulaire particulier :
<vxml version="2.0" xmlns="http://www.w3.org/2001/vxml" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.w3.org/2001/vxml http://www.w3.org/TR/voicexml20/vxml.xsd"> <form id="formulaire_sans_interruption"> <property name="bargein" value="false"/> <block> <prompt> Cette invite d'introduction ne peut pas tre interrompue. </prompt> <prompt> Tout comme celle-ci. </prompt> <prompt bargein="true"> Mais celle-ci <emphasis>peut</emphasis> tre interrompue. </prompt> </block> <field type="boolean"> <prompt> Veuillez dire oui ou non. </prompt> </field> </form> </vxml>

Les attributs de l'lment property sont :


name value

Le nom de la proprit. La valeur de la proprit. Tableau 58 : Les attributs de l'lment property

6.3.1 Les proprits propres la plateforme


Un contexte d'interprtation est libre de fournir des proprits propres la plateforme. Par exemple, pour xer le facteur de multiplication de cette plateforme dans la

157 of 212

27/07/2012 22:31

Le langage de balisage extensible vocal (VoiceXML) vers...

http://www.yoyodesign.org/doc/w3c/voicexml20/

porte de ce document :
<?xml version="1.0" encoding="UTF-8"?> <vxml version="2.0" xmlns="http://www.w3.org/2001/vxml" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.w3.org/2001/vxml http://www.w3.org/TR/voicexml20/vxml.xsd"> <form> <property name="com.example.facteur_multiplication" value="42"/> <block> <prompt> Bienvenue </prompt> </block> </form> </vxml>

Par dnition, les proprits propres une plateforme introduisent des incompatibilits qui peuvent nuire la portabilit d'une application. Pour les minimiser, on recommande fortement de suivre les conseils suivants pour le contexte d'interprtation : Les proprits propres une plateforme devraient utiliser des noms de domaine inverss an d'liminer des collisions potentielles comme, par exemple, com.example.foo qui se direncie nettement de net.example.foo Le contexte d'interprtation ne doit pas susciter un vnement error.unsupported.property lorsqu'il rencontre une proprit qu'il ne peut pas traiter et devrait plutt simplement l'ignorer.

6.3.2 Les proprits gnriques des logiciels de reconnaissance vocale


Les proprits gnriques des logiciels de reconnaissance vocale proviennent pour la plupart de l'interface Java Speech API [JSAPI] : Le niveau de abilit de la reconnaissance vocale : une valeur ottante dans l'intervalle "0.0" "1.0". Les rsultats sont rejets (un vnement nomatch est suscit) lorsque la valeur de la variable application.lastresult$.confidence est infrieure ce seuil. Une valeur de "0.0" signie qu'une abilit minimum est demande pour une reconnaissance et, au contraire, une valeur de "1.1" une abilit maximum. La valeur est une dsignation de nombre rel (voir le chapitre 6.5). La valeur implicite est de "0.5". Fixe le niveau de sensibilit. Une valeur de "1.0" signie une haute sensibilit une entre silencieuse et, au contraire, une valeur de "0.0" la plus faible sensibilit au bruit. La valeur est une dsignation de nombre rel (voir le

confidencelevel

sensitivity

Tableau 59 : Les proprits gnriques des logiciels de reconnaissance vocale


158 of 212 27/07/2012 22:31

Le langage de balisage extensible vocal (VoiceXML) vers...

http://www.yoyodesign.org/doc/w3c/voicexml20/

chapitre 6.5). La valeur implicite est de "0.5". Un indice dnissant l'quilibre souhait entre vitesse et prcision. Une valeur de "0.0" signie la reconnaissance la plus rapide et une valeur de "1.0" la meilleure prcision. La valeur est une dsignation de nombre rel (voir le chapitre 6.5). La valeur implicite est de "0.5". La longueur du silence demand, suivant la parole de l'utilisateur, avant que le logiciel de reconnaissance vocale ne nalise un rsultat (soit en l'acceptant, soit en suscitant un vnement nomatch). On utilise la proprit completetimeout lorsque la parole est une correspondance complte une grammaire active. Inversement, on utilise la proprit incompletetimeout lorsque la parole est une correspondance incomplte une grammaire active. Une valeur longue pour la proprit completetimeout repousse la production du rsultat et, de ce fait, augmente le temps de rponse de l'ordinateur. Une valeur courte pour la proprit completetimeout peut entraner la coupure inadquate d'un nonc. Les valeurs raisonnables pour le dlai achev se tiennent en gnral dans un intervalle de 0.3 1 seconde. La valeur est une dsignation de temps (voir le chapitre 6.5). La valeur implicite dpend de la plateforme. Voir l'annexe D. Bien que les plateformes doivent analyser la proprit completetimeout, elles ne sont pas obliges de mettre en uvre son comportement. Les plateformes choisissant de ne pas mettre en uvre le comportement de la proprit completetimeout doivent documenter et ajuster le comportement de la proprit incompletetimeout de la manire dcrite ci-dessous.

speedvsaccuracy

completetimeout

La longueur du silence demand, suivant la parole de l'utilisateur, avant que le logiciel de reconnaissance vocale ne nalise un rsultat. La proprit incompletetimeout s'applique lorsque la incompletetimeout parole prcdent le silence est une correspondance incomplte sur toutes les grammaires actives. Auquel cas, une fois le dlai dclench, le rsultat partiel est rejet (avec un vnement nomatch).

159 of 212

27/07/2012 22:31

Le langage de balisage extensible vocal (VoiceXML) vers...

http://www.yoyodesign.org/doc/w3c/voicexml20/

La proprit incompletetimeout s'applique aussi lorsque la parole prcdent le silence est une correspondance complte une grammaire active, mais quand il est possible de parler encore en correspondance la grammaire. Par contraste, la proprit completetimeout s'utilise lorsque la parole est une correspondance complte une grammaire active et qu'aucun mot en plus ne peut tre dit. Une valeur longue pour la proprit incompletetimeout retarde l'achvement du rsultat et, de ce fait, augmente le temps de rponse de l'ordinateur. Une valeur courte pour la proprit incompletetimeout peut entraner la coupure inadquate d'un nonc. La valeur de la proprit incompletetimeout est en gnral plus grande que celle de la proprit completetimeout an de permettre aux utilisateurs une pause mi-nonc (par exemple, pour reprendre soue). Voir l'annexe D. Les plateformes choisissant de ne pas mettre en uvre la proprit completetimeout (dcrite prcdemment) doivent utiliser la valeur maximum entre les proprits completetimeout et incompletetimeout comme valeur de la proprit incompletetimeout. La valeur est une dsignation de temps (voir le chapitre 6.5).

maxspeechtimeout

La dure maximum de la parole de l'utilisateur. Si cette dure est coule avant que l'utilisateur ait ni de parler, alors l'vnement maxspeechtimeout est suscit. La valeur est une dsignation de temps (voir le chapitre 6.5). La dure implicite dpend de la plateforme.

6.3.3 Les proprits gnriques des logiciels de reconnaissance DTMF


Plusieurs proprits gnriques concernent la reconnaissance des grammaires DTMF : La valeur du dlai entre les chires utiliser interdigittimeout dans la reconnaissance d'une entre DTMF. La valeur est une dsignation de temps (voir le Tableau 60 : Les proprits gnriques des logiciels de reconnaissance DTMF
160 of 212 27/07/2012 22:31

Le langage de balisage extensible vocal (VoiceXML) vers...

http://www.yoyodesign.org/doc/w3c/voicexml20/

chapitre 6.5). La valeur implicite dpend de la plateforme (voir l'annexe D. Le dlai de terminaison utiliser dans la reconnaissance d'une entre DTMF. La valeur est une dsignation de temps (voir le chapitre 6.5). La valeur implicite est "0s" (voir l'annexe D. Le caractre DTMF de terminaison dans une reconnaissance d'entre DTMF. La valeur implicite est "#" (voir l'annexe D).

termtimeout

termchar

6.3.4 Les proprits d'invite et de collecte


Ces proprits s'appliquent au cycle fondamental d'invite et de collecte de la plateforme : L'attribut bargein utiliser pour les invites. Fixer la valeur de cette proprit "true" autorise implicitement les interruptions et, au contraire, xer la valeur "false" les interdit. La valeur implicite est "true". Fixe le type d'interruption : parole ("speech") ou mot-cl ("hotword"). La valeur par dfaut est propre la plateforme. Voir le chapitre 4.1.5.1. Le dlai aprs lequel un vnement noinput sera suscit par la plateforme. La valeur est une dsignation de temps (voir le chapitre 6.5). La valeur par dfaut dpend de la plateforme (voir l'annexe D).

bargein

bargeintype

timeout

Tableau 61 : Les proprits d'invite et de collecte

6.3.5 Les proprits de mise en place


Ces proprits concernent les nouveaux chargements de documents et de ressources (remarquez que les proprits maxage et maxstale peuvent ne pas avoir de valeur par dfaut : voir le chapitre 6.1.2) : Indique la plateforme si celle-ci peut ou non essayer d'optimiser l'interprtation d'un dialogue en prchargeant un chier son. Sa valeur est soit "safe" pour signier que le son ne doit tre charg qu' la demande, jamais avant, soit "prefetch" pour permettre, mais sans obligation, la plateforme de prcharger le son. La valeur implicite est "prefetch". Indique la plateforme l'ge maximum acceptable en secondes des ressources audio

audiofetchhint

audiomaxage

Tableau 62 : Les proprits de mise en place


161 of 212 27/07/2012 22:31

Le langage de balisage extensible vocal (VoiceXML) vers...

http://www.yoyodesign.org/doc/w3c/voicexml20/

mises en cache. La valeur par dfaut est propre la plateforme. Indique la plateforme l'obsolescence maximum acceptable en secondes des ressources audio expires mises en cache. La valeur par dfaut est propre la plateforme. Indique la plateforme si les documents peuvent ou non tre prchargs. La valeurs est soit "safe" (la valeur implicite), soit "prefetch". Indique la plateforme l'ge maximum acceptable en secondes des documents mis en cache. La valeur par dfaut est propre la plateforme. Indique la plateforme l'obsolescence maximum acceptable en secondes des documents expirs mis en cache. La valeur par dfaut est propre la plateforme. Indique la plateforme si les grammaires peuvent ou non tre prcharges. La valeur est soit "prefetch" (la valeur implicite), soit "safe". Indique la plateforme l'ge maximum acceptable en secondes des grammaires mises en cache. La valeur par dfaut est propre la plateforme. Indique la plateforme l'obsolescence maximum acceptable en secondes des grammaires expires mises en cache. La valeur par dfaut est propre la plateforme. Indique la plateforme si le contenu de l'adresse URI de l'objet peut ou non tre prcharg. Les valeurs sont "prefetch" (la valeur implicite) ou "safe". Indique la plateforme l'ge maximum acceptable en secondes des objets mis en cache. La valeur par dfaut est propre la plateforme. Indique la plateforme l'obsolescence maximum acceptable en secondes des objets expirs mis en cache. La valeur par dfaut est propre la plateforme. Indique la plateforme si les scripts peuvent ou non tre prchargs. Les valeurs sont "prefetch" (la valeur implicite) ou "safe".

audiomaxstale

documentfetchhint

documentmaxage

documentmaxstale

grammarfetchhint

grammarmaxage

grammarmaxstale

objectfetchhint

objectmaxage

objectmaxstale

scriptfetchhint

162 of 212

27/07/2012 22:31

Le langage de balisage extensible vocal (VoiceXML) vers...

http://www.yoyodesign.org/doc/w3c/voicexml20/

scriptmaxage

Indique la plateforme l'ge maximum acceptable en secondes des scripts mis en cache. La valeur par dfaut est propre la plateforme. Indique la plateforme l'obsolescence maximum acceptable en secondes des scripts expirs mis en cache. La valeur par dfaut est propre la plateforme. L'adresse URI du chier son jouer en attendant le chargement d'un document. Par dfaut, aucun son n'est jou au cours des dlais de chargement. La proprit fetchaudio ne s'applique pas au chargement des chiers sons, des grammaires, des objets et des scripts. Le chargement du chier son est rgi par les proprits audiofetchhint, audiomaxage, audiomaxstale et fetchtimeout en vigueur au moment du chargement. La lecture du chier son est rgie par les proprits fetchaudiodelay et fetchaudiominimum en vigueur au moment du chargement. L'intervalle de temps attendre au dbut d'un chargement avant de jouer le son de chargement indiqu par la proprit fetchaudio. La valeur est une dsignation de temps (voir le chapitre 6.5). L'intervalle par dfaut dpend de la plateforme (par exemple, "2s"). L'ide est la suivante : quand un dlai de chargement est court, quelques secondes de silence peuvent tre prfrables un bout de son de chargement qui est immdiatement coup. L'intervalle minimum de temps pendant lequel jouer une source de son de chargement, une fois commenc, mme si le rsultat du chargement arrive dans le contretemps. La valeur est une dsignation de temps (voir le chapitre 6.5). La valeur par dfaut dpend de la plateforme (par exemple, "5s"). L'ide est la suivante : le son de chargement ne devrait pas tre arrt trop rapidement une fois que l'utilisateur a commenc l'entendre. Le dlai d'expiration des chargements. La valeur est une dsignation de temps (voir le chapitre 6.5). La valeur par dfaut dpend de la plateforme.

scriptmaxstale

fetchaudio

fetchaudiodelay

fetchaudiominimum

fetchtimeout

6.3.6 Les proprits diverses

163 of 212

27/07/2012 22:31

Le langage de balisage extensible vocal (VoiceXML) vers...

http://www.yoyodesign.org/doc/w3c/voicexml20/

inputmodes

Cette proprit dtermine quelle modalit d'entre utiliser. Les modes d'entre activables : les tonalits DTMF ("dtmf") et la voix ("voice"). Sur les plateformes qui grent les deux modes, la valeur implicite de la proprit inputmodes est "dtmf voice". Pour dsactiver la reconnaissance vocale, xer la valeur de la proprit "dtmf" et pour dsactiver les tonalits DTMF, xer sa valeur "voice". Un usage de la proprit serait de dsactiver la reconnaissance vocale en environnement bruyant. Un autre usage : dsactiver la reconnaissance vocale an de prserver les ressources qu'elle mobilise lorsqu'on sait que l'entre sera toujours de type DTMF. Cette proprit ne contrle pas l'activation des grammaires. Par exemple, les grammaires uniquement vocales peuvent tre actives lorsque le mode d'entre est restreint aux tonalits DTMF. Toutefois, ces grammaires ne seront pas sollicites car la modalit d'entre vocale est inoprante. Les plateformes peuvent, en option, fournir des grammaires de commande universelle propres, telles que des grammaires help , cancel ou exit , qui soient toujours actives (sauf en ce qui concerne les lments d'entre modale : voir le chapitre 3.1.4) et qui gnrent des vnements propres. Les applications de qualit production ont souvent besoin de dnir leurs propres grammaires de commande universelle, par exemple, an d'amliorer la portabilit de l'application ou de fournir une interface distincte. Elles indiquent alors les nouvelles grammaires de commande universelle au moyen d'lments link et dsactivent les grammaires par dfaut au moyen de cette proprit. Les gestionnaires de capture par dfaut ne sont pas aects par cette proprit. La valeur implicite, qui est "none", signie que toutes les grammaires de commande universelle par dfaut de la plateforme sont dsactives. La valeur "all" les active toutes. Les grammaires individuelles s'activent en listant leurs noms, spars par des espaces (par exemple, "cancel exit help"). Cette proprit contrle la dimension maximale du tableau application.lastresult$ ; le tableau ne peut avoir une valeur suprieur celle indique par cette proprit. Elle a une valeur minimale de "1". Sa valeur implicite est "1". Tableau 63 : Les proprits diverses

universals

maxnbest

164 of 212

27/07/2012 22:31

Le langage de balisage extensible vocal (VoiceXML) vers...

http://www.yoyodesign.org/doc/w3c/voicexml20/

Notre dernier exemple montre quelques unes de ces proprits dans plusieurs niveaux :
<?xml version="1.0" encoding="UTF-8"?> <vxml version="2.0" xmlns="http://www.w3.org/2001/vxml" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.w3.org/2001/vxml http://www.w3.org/TR/voicexml20/vxml.xsd"> <!-- Fixe les caractristiques par dfaut de la page --> <property name="audiofetchhint" value="safe"/> <property name="confidencelevel" value="0.75"/> <form> <!-- Surclasse les valeurs par dfaut pour ce seul formulaire --> <property name="confidencelevel" value="0.5"/> <property name="bargein" value="false"/> <grammar src="carnet_adresses.grxml" type="application/srgs+xml"/> <block> <prompt> Bienvenue sur le carnet d'adresse vocal </prompt> </block> <initial name="start"> <!-- Surclasse les valeurs d'expiration par dfaut --> <property name="timeout" value="5s"/> <prompt> Voulez-vous appeler cette personne ? </prompt> </initial> <field name="personne"> <prompt> Dites le nom de la personne que vous souhaitez appeler. </prompt> </field> <field name="ville"> <prompt> Dites la ville de la personne que vous souhaitez appeler. </prompt> </field> <field name="confirmer"> <grammar type="application/srgs+xml" src="/grammars/boolean.grxml"/> <!-- Utiliser l'nonc rel pour jouer les mots reconnus, plutt que les valeurs de facette renvoyes --> <prompt> Vous souhaitez appeler <value expr="personne$.utterance"/> <value expr="ville$.utterance"/>. Est-ce exact ? </prompt> <filled> <if cond="confirmer"> <submit namelist="personne ville" next="http://www.centralmessage.example.com/voix/appeler" /> </if> <clear/> </filled> </field> </form> </vxml>

6.4 L'lment param


165 of 212 27/07/2012 22:31

Le langage de balisage extensible vocal (VoiceXML) vers...

http://www.yoyodesign.org/doc/w3c/voicexml20/

L'lment param sert indiquer les valeurs qui seront passes aux sous-dialogues ou aux objets. Il s'inspire de l'lment [HTML] <PARAM>. Ses attributs sont :
name expr value

Le nom associer ce paramtre quand l'objet ou le sous-dialogue est invoqu. Une expression qui calcule la valeur associe au nom. Associe une valeur de chane littrale au nom. L'une des valeurs "data" (la valeur implicite) ou "ref". Sert indiquer un objet si la valeur associe au nom se compose de donnes ou est une adresse URI. L'lment subdialog ne l'utilise pas car les valeurs sont toujours des donnes. Le type de mdia du rsultat fourni par une adresse URI quand la valeur de l'attribut valuetype est "ref" ; son utilisation n'est pertinente que pour les lments param dans les lments object. Tableau 64 : Les attributs de l'lment param

valuetype

type

On doit dnir exactement un seul d'entre les attributs expr ou value, sinon un vnement error.badfetch est suscit. L'emploi des attributs valuetype et type est, en gnral, optionnel, bien qu'ils puissent tre exigs par des objets particuliers. Lorsque les lments param sont contenus dans un lment subdialog, les valeurs qu'ils indiquent servent initialiser les lments var du sous-dialogue invoqu. Voir le chapitre 2.3.4 pour des prcisions propos de l'initialisation des variables dans les sous-dialogues utilisant des lments param. Lorsque les lments param sont contenus dans un lment object, l'utilisation qui est faite des donnes des paramtres est propre l'objet invoqu, et n'est pas dcrite dans la spcication VoiceXML. Voici un exemple avec des lments param faisant partie d'un lment object. Dans ce cas, les deux premiers lments param comportent des expressions (implicitement valuetype="data"), le troisime param a une valeur explicite et le quatrime est une adresse URI qui renvoie le type de mdia "text/plain". La signication de ces donnes est particulire l'objet :
<object name="debit" classid="method://carte-credit/collecter_et_debiter" data="http://www.enregistrements.example.com/invites/credit/jesse.jar"> <param name="amount" expr="document.amt"/> <param name="vendor" expr="num_vendeur"/> <param name="application_id" value="ADC5678-QWOO"/> <param name="serveur_authentification" value="http://serv-auth.example.com" valuetype="ref" type="text/plain"/> </object>

L'exemple suivant montre des lments param avec un lment subdialog. Dans ce cas, on utilise deux expressions pour initialiser les variables dans la porte du

166 of 212

27/07/2012 22:31

Le langage de balisage extensible vocal (VoiceXML) vers...

http://www.yoyodesign.org/doc/w3c/voicexml20/

formulaire du sous-dialogue : Le formulaire avec un dialogue appelant


<vxml version="2.0" xmlns="http://www.w3.org/2001/vxml" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.w3.org/2001/vxml http://www.w3.org/TR/voicexml20/vxml.xsd"> <form> <subdialog name="resultat" src="http://autre.example.com/#obtenir_nss"> <param name="prenom" expr="document.le_prenom"/> <param name="nom" expr="document.le_nom"/> <filled> <submit namelist="resultat.nss" next="http://unservice.example.com/cgi-bin/traitement"/> </filled> </subdialog> </form> </vxml>

Le sous-dialogue situ http://autre.example.com


<vxml version="2.0" xmlns="http://www.w3.org/2001/vxml" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.w3.org/2001/vxml http://www.w3.org/TR/voicexml20/vxml.xsd"> <form id="obtenir_nss"> <var name="prenom"/> <var name="nom"/> <field name="nss"> <grammar src="http://grammaires/nss.grxml" type="application/srgs+xml"/> <prompt> Veuillez indiquer un numro de scurit sociale. </prompt> <filled> <if cond="nss_valide(prenom,nom,nss)"> <assign name="statut" expr="true"/> <return namelist="statut nss"/> <else/> <assign name="statut" expr="false"/> <return namelist="statut"/> </if> </filled> </field> </form> </vxml>

L'utilisation d'lments param dans un lment subdialog reprsente un moyen commode de passer des donnes un sous-dialogue sans devoir faire appel un script ct serveur.

6.5 Les dsignations des valeurs


167 of 212 27/07/2012 22:31

Le langage de balisage extensible vocal (VoiceXML) vers...

http://www.yoyodesign.org/doc/w3c/voicexml20/

Plusieurs valeurs de paramtre VoiceXML suivent les conventions employes dans la recommandation des feuilles de style en cascade du W3C [CSS2].

6.5.1 Les entiers et les nombres rels


Les nombres rels et les entiers s'expriment seulement en notation dcimale. Un entier se compose d'un ou plusieurs chires de "0" "9". Un nombre rel peut apparatre comme un entier ou se composer de zro chire ou plus, suivis par un point ( . ), suivi par un ou plusieurs chires. Les entiers comme les nombres rels peuvent tre prcds par un caractre moins - ou plus + pour en indiquer le signe.

6.5.2 Les temps


Les dsignations de temps se composent d'un nombre rel non ngatif suivi d'un identiant d'unit de temps. Les identiants d'unit de temps sont : ms : la milliseconde s : la seconde Exemples : "3s", "850ms", "0.7s", ".5s" et "+1.5s".

Annexes
Annexe A : Le glossaire des termes
algorithme FIA (Form Interpretation Algorithm) L'algorithme mis en uvre dans un interprteur VoiceXML qui conduit l'interaction entre l'utilisateur et un formulaire ou un menu VoiceXML. Voir le chapitre 2.1.6 et l'annexe C. application Une collection de documents VoiceXML tiquets d'un attribut application ayant la mme valeur. ASR Automatic speech recognition. auteur Le crateur d'un document VoiceXML. contenu excutable Une logique procdurale qui se droule dans les lments block, les lments filled ou dans les gestionnaires d'vnement. contexte d'interprtation VoiceXML Un logiciel qui emploie un interprteur VoiceXML pour interprter un document VoiceXML et qui peut galement interagir avec la plateforme d'implmentation indpendamment de l'interprteur VoiceXML. dialogue Une interaction avec l'utilisateur dnie dans un document VoiceXML. Les dialogues sont de plusieurs types : les formulaires et les menus. document VoiceXML Un document XML conforme la spcication VoiceXML. DTMF (Dual Tone Multi-Frequency)

168 of 212

27/07/2012 22:31

Le langage de balisage extensible vocal (VoiceXML) vers...

http://www.yoyodesign.org/doc/w3c/voicexml20/

Une composition par tonalits ou par touches. La pression d'un bouton sur un clavier tlphonique gnre un son qui est la combinaison de deux tonalits : l'une de haute frquence et l'autre de basse frquence. ECMAScript Une version normalise du langage JavaScript soutenue par l'European Computer Manufacturer's Association. Voir [ECMASCRIPT] lment de capture Un bloc catch ou l'une de ses formes abrges. Certains lments de capture sont dnis par l'interprteur VoiceXML. lment de commande Un lment de formulaire destin soit contenir un bloc de procdures logiques (block), soit permettre les invites initiales d'un dialogue initiative mixte (initial). lment d'entre Un lment de formulaire destin entrer une variable d'lment d'entre. Les lments d'entre comprennent les lments field, record, object, subdialog et transfer. lment de formulaire Un lment contenu dans un lment form susceptible d'tre visit au cours de l'excution du formulaire : initial, block, field, record, object, subdialog et transfer. vnement Une notication lance par la plateforme d'implmentation, le contexte d'interprtation VoiceXML, l'interprteur VoiceXML ou un code VoiceXML. Les vnements incluent les conditions exceptionnelles (les erreurs smantiques), les erreurs normales (l'utilisateur veut quitter) et les vnements dnis par l'utilisateur. formulaire Un dialogue qui interagit avec l'utilisateur de manire trs souple, l'ordinateur et l'utilisateur partageant l'initiative. grammaire active Une grammaire vocale ou DTMF actuellement active. On le dtermine partir de l'lment en cours d'excution et des lments scope des grammaires actuellement dnies. identicateur de langue Un identicateur de langue tiquette un contenu d'informations comme tant dans une variante d'une langue humaine particulire. D'aprs la spcication XML pour l'identication d'une langue [XML], un identicateur de langue lgal est dtermin par un code RFC 3066 [RFC3066]. Selon le document RFC 3066, le code de langue est obligatoire et le code de pays, ou une autre sous-tiquette d'identicateur, est optionnel. initiative mixte Une interaction homme-machine selon laquelle soit l'ordinateur, soit l'humain prend l'initiative et dcide quoi faire ensuite. interprteur VoiceXML Un logiciel qui interprte un document VoiceXML an de contrler une plateforme d'implmentation dans le but de conduire une interaction avec un utilisateur. invites dgressives Un ensemble d'invites utilis pour varier le message donn un humain. Les invites peuvent tre rduites an d'tre plus concises l'usage (invite de champ) ou plus explicites (invite d'assistance). JSGF

169 of 212

27/07/2012 22:31

Le langage de balisage extensible vocal (VoiceXML) vers...

http://www.yoyodesign.org/doc/w3c/voicexml20/

Java API Speech Grammar Format. Un standard propos pour reprsenter des grammaires vocales. Voir [JSGF] link Un ensemble de grammaires qui, l'utilisateur ayant dit ou saisi quelque chose qui y trouve une correspondance, opre une transition vers un nouveau dialogue, ou un nouveau document, ou bien qui suscite un vnement dans l'lment de formulaire courant. menu Un dialogue qui prsente un ensemble de choix l'utilisateur et entreprend une action en fonction de la slection. objet Une fonctionnalit propre une plateforme disposant d'une interface via VoiceXML. plateforme d'implmentation Un ordinateur pourvu du logiciel et/ou du matriel adquats permettant de grer les types d'interaction dnis par VoiceXML. requte Une collection de donnes comprenant : une adresse URI indiquant un serveur de documents pour les donnes, un ensemble de couples nom/valeur des donnes traiter (optionnel) et une mthode de soumission pour le traitement (optionnel). script Un fragment de logique crit dans un langage de script ct client, en particulier le langage de script ECMAScript lequel doit tre pris en charge par tout interprteur VoiceXML. session Une connexion entre un utilisateur et une plateforme d'implmentation, par exemple, un appel tlphonique vers un systme de rponse vocale. Une session peut impliquer l'interprtation de plusieurs documents VoiceXML. sous-dialogue Un dialogue (ou un document) VoiceXML invoqu depuis le dialogue courant de manire analogue un appel de fonction. Spcication des feuilles de style en cascade du W3C. Voir [CSS2] SRGS (Speech Recognition Grammar Specication) Un format normalis pour les grammaires de reconnaissance vocale contexte libre en cours de dveloppement par le groupe de travail Navigateur vocal du W3C. Les formats ABNF et XML sont tous deux dnis [SRGS]. SSML (Speech Synthesis Markup Language) Un format normalis pour la synthse de la parole en cours de dveloppement par le groupe de travail Navigateur vocal du W3C [SSML]. throw Un lment qui dclenche un vnement. TTS text-to-speech : synthse de la parole. URI Uniform Resource Indicator. URL Uniform Resource Locator. utilisateur Une personne dont l'interaction avec une plateforme d'implmentation est contrle par un interprteur VoiceXML. variable d'lment de formulaire

170 of 212

27/07/2012 22:31

Le langage de balisage extensible vocal (VoiceXML) vers...

http://www.yoyodesign.org/doc/w3c/voicexml20/

Une variable, dnie implicitement ou bien explicitement, associe chaque lment de formulaire dans un formulaire. Si la variable d'lment de formulaire n'est pas dnie, l'algorithme FIA visitera l'lment de formulaire et l'utilisera pour interagir avec l'utilisateur. W3C World Wide Web Consortium http://www.w3.org/

Annexe B : La dnition de type de document VoiceXML


Le DTD de VoiceXML se trouve http://www.w3.org/TR/voicexml20/vxml.dtd . En raison des limitations des DTD, le DTD de VoiceXML n'exprime pas correctement le fait que l'lment metadata puisse contenir des lments issus d'autres espaces de nommage XML. Remarque : Le DTD de VoiceXML contient des lments modis provenant des DTD de la spcication des grammaires de reconnaissance vocale 1.0 [SRGS] et du langage de balisage de la synthse vocale [SSML].

Annexe C : L'algorithme d'interprtation des formulaires


L'algorithme d'interprtation des formulaires (FIA) conduit l'interaction entre l'utilisateur et un formulaire, ou un menu, VoiceXML. On peut assimiler un menu un formulaire contenant un seul champ dont la grammaire et l'action filled sont construites partir des lments choice. L'algorithme FIA doit prendre en charge : L'initialisation du formulaire. Le mcanisme des invites, y compris la gestion des compteurs d'invites qui est ncessaire la rduction des invites. L'activation et la dsactivation des grammaires au niveau du formulaire et des lments de formulaire. L'entre dans le formulaire avec un nonc qui correspondait l'une des grammaires de porte document du formulaire alors que l'utilisateur visitait un formulaire ou un menu dirents. La sortie du formulaire parce que l'utilisateur a touch une autre grammaire de porte document d'un formulaire, d'un menu ou d'un lien. Le traitement de plusieurs remplissages de champs partir d'un seul nonc, y compris l'excution des actions filled concernes. La slection de l'lment de formulaire suivant visiter puis son traitement. Le choix du bon lment de capture pour grer les ventuels vnements suscits au cours du traitement d'un lment de formulaire. Nous dnissons d'abord quelques termes et structures de donnes utiliss dans l'algorithme d'interprtation des formulaires : jeu de grammaires actif L'ensemble des grammaires actives au cours de l'opration de collecte des entres par le contexte d'interprtation VoiceXML.

171 of 212

27/07/2012 22:31

Le langage de balisage extensible vocal (VoiceXML) vers...

http://www.yoyodesign.org/doc/w3c/voicexml20/

nonc Un rsum de ce que l'utilisateur a dit ou saisi, y compris la grammaire particulire qui correspond, et un rsultat smantique consistant en une structure d'interprtation ou, quand il n'y a pas d'interprtation smantique, le texte brut de l'entre (voir le chapitre 3.1.6). Un exemple d'nonc : la grammaire 123 correspond et l'interprtation smantique est {boisson: "eau" pizza: {numero: "3" taille: "grande"}} . excuter Excuter un contenu excutable soit un lment block, soit une action filled ou un ensemble d'actions filled. Si un vnement est suscit au cours de l'excution, l'excution du contenu excutable est abandonne. Le gestionnaire d'vnement adquat est alors excut, ce qui peut entraner une reprise du contrle dans un lment de formulaire, dans l'itration suivante de la boucle principale du formulaire ou bien en dehors du formulaire. Si un lment goto est excut, le transfert intervient immdiatement, et le reste du contenu excutable ne sera pas excut. Voici l'algorithme d'interprtation des formulaires prsent de manire conceptuelle. L'algorithme FIA peut dmarrer sans nonc initial ou avec un nonc initial pass par un autre dialogue :
// // Phase d'initialisation // foreach ( var, script et lment de formulaire, dans l'ordre du document ) if ( l'lment est un var ) Dclarer la variable, en l'initialisant la valeur de l'attribut expr, le cas chant, ou sinon "undefined". else if ( l'lment est un script ) valuer le contenu du script si inscrit directement ou sinon depuis l'emplacement dfini par l'attribut src. else if ( l'lment est un lment de formulaire ) Crer une variable partir de l'attribut name, le cas chant, ou sinon gnrer un nom interne. Assigner cette variable la valeur de l'attribut expr, le cas chant, ou sinon "undefined". foreach ( lment d'entre et lment initial ) Declare a prompt counter and set it to 1. if ( l'utilisateur est entr dans ce formulaire via une parole en correspondance sa grammaire alors qu'il tait dans un autre formulaire ) { Entrer dans la boucle principale ci-dessous, mais commencer dans la phase de traitement et non dans celle de slection : on a dj une collection traiter. } // // Boucle principale : Slectionner l'lment de formulaire suivant et l'excuter. // while ( true ) { // // Phase de slection : Choisir un lment de formulaire visiter.

172 of 212

27/07/2012 22:31

Le langage de balisage extensible vocal (VoiceXML) vers...


//

http://www.yoyodesign.org/doc/w3c/voicexml20/

if ( la dernire itration de la boucle principale a termin par un <goto nextitem> ) Slectionner cet lment de formulaire suivant. else if ( il existe un lment de formulaire ayant une condition de veille non satisfaite ) Slectionner le premier de ces lments de formulaire, dans l'ordre du document. else

Effectuer un exit -- le formulaire est rempli et ne dfinissait pas de transition // // Phase de collecte : Excuter l'lment de formulaire slectionn. // // Mettre en file d'attente les invites de l'lment de formulaire. unless ( moins que la dernire itration de la boucle n'a termin par une capture sans reprompt et que le dialogue actif n'a pas t chang ) { Slectionner les invites appropries pour un lment d'entre ou initial. Mettre en file d'attente les invites slectionnes en vue d'une lecture avant l'opration de collecte suivante. Incrmenter le compteur d'invites de l'lment d'entre ou l'lment initial } // Activer les grammaires de l'lment de formulaire.

if ( l'lment de formulaire est modal ) Fixer le jeu des grammaires actives sur les grammaires de l'lment de formulaire le cas chant. (Remarquez que certains lments de formulaire, par exemple, block, ne peuvent pas avoir de grammaire). else Fixer le jeu des grammaires actives sur les grammaires de l'lment de formulaire et les ventuelles grammaires dans la porte du formulaire, du document courant et du document racine d'application. // Excuter l'lment de formulaire. if ( un lment field a t slectionn ) Collecter un nonc ou un vnement issus de l'utilisateur. else if ( un lment record a t choisi ) Collecter un nonc (avec un couple nom/valeur pour les octets enregistrs) ou un vnement issus de l'utilisateur. else if ( un lment object a t choisi ) Excuter l'objet, en fixant la variable d'lment de formulaire de l'object la valeur ECMAScript renvoye. else if ( un lment subdialog a t choisi ) Excuter le sous-dialogue, en fixant la variable d'lement de formulaire du subdialog la valeur ECMAScript renvoye. else if ( un lment transfer a t choisi ) Effectuer le transfert et (si wait="true") fixer la variable d'lment de formulaire de transfer l'indicateur de statut du rsultat renvoy.

173 of 212

27/07/2012 22:31

Le langage de balisage extensible vocal (VoiceXML) vers...

http://www.yoyodesign.org/doc/w3c/voicexml20/

else if ( un lment initial a t choisi ) Collecter un nonc ou un vnement issus de l'utilisateur. else if ( un lment block a t choisi ) { Fixer la variable d'lment de formulaire du block une valeur dfinie. Excuter le contenu excutable du block. } // // Phase de traitement : Traiter l'nonc ou l'vnement rsultant. // Assigner l'nonc et les autres informations concernant la dernire reconnaissance application.lastresult$. // Doit avoir un nonc if ( l'nonc correspondait une grammaire appartenant un link ) Si l'lment link dfinit un attribut next ou expr, effectuer la transition vers cette adresse. Sinon, si l'lment link dfinit un attribut event ou eventexpr, gnrer cet vnement. else if ( l'nonc correspondait une grammaire appartenant un choice ) Si l'lment choice dfinit un attribut next ou expr, effectuer la transition vers cette adresse. Sinon, si l'lment choice dfinit un attribut event ou eventexpr, gnrer cet vnement. else if ( l'nonc correspondait une grammaire situe hors du form ou menu courant { Effectuer la transition vers cet lment form ou menu, en apportant l'nonc la nouvelle instance FIA. } // Traiter un nonc sollicitant une grammaire provenant de ce formulaire. // Copier d'abord les valeurs de proprit du rsultat de l'nonc dans les // variables d'lment de formulaire correspondantes. Effacer tous les drapeaux juste_rempli . if ( la grammaire est dans la porte du niveau champ ) { // Cette grammaire doit tre incluse dans un lment d'entre. L'lment d'entre // a une variable ECMAScript associe (appele ici variable d'lment d'entre) // et un nom de facette.

if ( le rsultat n'est pas une structure ) Copier le rsultat dans la variable d'lment d'entre. elseif ( une proprit de niveau suprieur dans le rsultat correspond au nom de f ou le nom de facette est un chemin spar par des points correspondant sous-proprit dans le rsultat ) Copier la valeur de cette proprit dans la variable d'lment d'entre. else Copier le rsultat entier dans la variable d'lment d'entre Fixer le drapeau juste_rempli de cet lment d'entre. } else { foreach ( proprit dans l'nonc de l'utilisateur )

174 of 212

27/07/2012 22:31

Le langage de balisage extensible vocal (VoiceXML) vers...


{

http://www.yoyodesign.org/doc/w3c/voicexml20/

if ( la proprit correspond au nom de facette d'un lment d'entre ) { Copier la valeur de cette proprit dans la variable d'lment de formulaire cet lment d'entre. Fixer le drapeau juste_rempli de cet lment d'entre. } } }

// Fixer toutes les variables d'lment de formulaire de l'lment initial, // si chaque lment d'entre est rempli.

if ( toute variable d'lment d'entre est fixe en rsultat de l'nonc de l'utilisa Fixer toutes les variables d'lment de formulaire de initial "true". // Excuter ensuite toutes les actions dclenches par filled. foreach ( action filled dans l'ordre du document ) { // Dterminer les variables d'lment d'entre auxquelles le filled s'applique. N = l'attribut
namelist

de l'lment filled.

if ( N gale "" ) { if ( l'lment filled est un enfant d'lment d'entre ) N = le nom de la variable d'lment de formulaire de l'lment d'entre. else if ( l'lment filled est un enfant de form ) N = les noms des variables d'lment de formulaire de tous les lments d'entre dans ce formulaire. } // Est-ce que le filled est dclench ? if ( toute variable d'lment d'entre du jeu N a t juste_remplie ET ( l'attribut mode de l'lment filled a la valeur "all" ET toutes les variables dans N sont remplies OU l'attribut mode de l'lment filled a la valeur "any" ET toutes les variables dans N sont remplies ) ) Excuter l'action filled.

Si un vnement est suscit au cours de l'excution d'un lment filled, la slection du gestionnaire d'vnement commence dans la porte de l'lmen qui pourrait tre celle d'un lment d'entre ou le formulaire en question. } // Si aucun lment d'entre n'est rempli, juste continuer. }

Au cours de l'excution de l'algorithme FIA, des vnements peuvent tre gnrs en plusieurs points. Ces vnements sont traits diremment selon la phase qui est active. Avant qu'un lment de formulaire ne soit slectionn (c'est--dire, au cours des phases d'initialisation et de slection), les vnements sont gnrs au niveau du

175 of 212

27/07/2012 22:31

Le langage de balisage extensible vocal (VoiceXML) vers...

http://www.yoyodesign.org/doc/w3c/voicexml20/

dialogue. Le gestionnaire de capture correspondant est localis puis excut. Si la capture n'aboutit pas une transition partir du dialogue courant, alors l'excution de l'algorithme FIA se terminera. De mme, les vnements dclenchs aprs qu'un lment de formulaire a t slectionn (c'est--dire, au cours des phases de collecte et de traitement) sont habituellement gnrs au niveau de l'lment de formulaire. Il y a une seule exception : les vnements dclenchs par un lment filled de niveau dialogue sont gnrs au niveau dialogue. Le gestionnaire de capture correspondant est localis puis excut. Si la capture n'aboutit pas une transition, alors la boucle courante de l'algorithme FIA est termine et la phase de slection est ritre.

Annexe D : Les proprits de temporisation


Les diverses proprits de temporisation pour la reconnaissance vocale et DTMF s'accordent pour dnir l'exprience d'utilisateur. Les modalits selon lesquelles ces dirents paramtres de temporisation fonctionnent sont soulignes dans les diagrammes de temporisation ci-dessous. Dans ces diagrammes, le dbut d'attente d'une entre DTMF ou d'une parole de l'utilisateur commence au moment o la dernire invite a ni de jouer.

D.1. Les grammaires DTMF


Les grammaires DTMF utilisent les proprits timeout, interdigittimeout, termtimeout et termchar, dcrites dans le chapitre 6.3.3, pour adapter l'exprience d'utilisateur. Leurs eets sont montrs dans les diagrammes de temporisation suivants : La proprit timeout quand aucune entre n'est fournie Le paramtre timeout dtermine le moment o l'vnement noinput est suscit, parce que l'utilisateur n'a entr aucune tonalit DTMF (Figure 12). Ds que la premire tonalit DTMF a t entre, ce paramtre n'a plus aucun eet.

Figure 12 : Diagramme de temporisation de la proprit timeout quand aucune entre n'est fournie. La proprit interdigittimeout quand la grammaire n'est pas prte terminer Dans la gure 13, la proprit interdigittimeout dtermine le moment o l'vnement nomatch est suscit, parce qu'une grammaire DTMF n'est pas encore reconnue et que l'utilisateur n'a pas entr d'autre tonalit DTMF.

176 of 212

27/07/2012 22:31

Le langage de balisage extensible vocal (VoiceXML) vers...

http://www.yoyodesign.org/doc/w3c/voicexml20/

Figure 13 : Diagramme de temporisation de la proprit interdigittimeout quand la grammaire n'est pas prte terminer. La proprit interdigittimeout quand la grammaire est prte terminer L'exemple ci-dessous montre une situation o une grammaire DTMF pourrait terminer ou se prolonger par l'entre d'autres tonalits DTMF, tandis que l'utilisateur ne s'est pas dcid fournir une autre entre.

Figure 14 : Diagramme de temporisation de la proprit interdigittimeout quand la grammaire est prte terminer. Les proprits termchar et interdigittimeout quand la grammaire peut terminer Dans l'exemple ci-dessous, la proprit termchar n'est pas vide et sa valeur est entre par l'utilisateur avant l'expiration dnie par la proprit interdigittimeout, signiant ainsi que l'entre DTMF de l'utilisateur est complte ; le caractre de terminaison n'est pas inclus avec la valeur reconnue.

177 of 212

27/07/2012 22:31

Le langage de balisage extensible vocal (VoiceXML) vers...

http://www.yoyodesign.org/doc/w3c/voicexml20/

Figure 15 : Diagramme de temporisation des proprits termchar et interdigittimeout quand la grammaire peut terminer. La proprit termchar vide quand la grammaire doit terminer Dans l'exemple ci-dessous, l'entre de la dernire tonalit DTMF a men la grammaire un point de terminaison auquel on n'attend pas d'autre tonalit DTMF. Comme la proprit termchar est vide, aucun caractre de terminaison optionnel n'est autoris : la reconnaissance se termine donc et la valeur reconnue est renvoye.

Figure 16 : Diagramme de temporisation de la proprit termchar vide quand la grammaire doit terminer. Les proprits termchar non vide et termtimeout quand la grammaire doit terminer Dans l'exemple ci-dessous, l'entre de la dernire tonalit DTMF a men la grammaire un point de terminaison auquel la grammaire n'autorise aucune autre tonalit DTMF. Si la proprit termchar est non vide, alors l'utilisateur peut entrer un caractre de terminaison DTMF optionnel dans l'intervalle dni par la proprit termtimeout : la reconnaissance se termine alors et la valeur reconnue est renvoye. Si la valeur de la proprit termtimeout est "0s" (la valeur implicite), alors la valeur reconnue est renvoye immdiatement aprs la dernire tonalit DTMF autorise par la grammaire, sans attendre le caractre de terminaison optionnel. Remarque : la proprit termtimeout s'applique seulement quand la grammaire n'autorise aucune autre entre, sinon, la proprit interdigittimeout s'appliquera.

178 of 212

27/07/2012 22:31

Le langage de balisage extensible vocal (VoiceXML) vers...

http://www.yoyodesign.org/doc/w3c/voicexml20/

Figure 17 : Diagramme de temporisation de la proprit termchar non vide et de la proprit termtimeout quand la grammaire doit terminer. Les proprits termchar non vide et termtimeout quand la grammaire doit terminer Dans cet exemple, l'entre de la dernire tonalit DTMF a men la grammaire un point de terminaison auquel la grammaire n'autorise aucune autre tonalit DTMF. Puisque la proprit termchar est non vide, l'utilisateur entre le caractre de terminaison optionnel dans l'intervalle dni par la proprit termtimeout, provoquant ainsi le retour de la valeur reconnue (en excluant le caractre de terminaison).

Figure 18 : Diagramme de temporisation de la proprit termchar non vide quand la grammaire doit terminer. Les entres DTMF invalides En attendant la premire ou d'autres tonalits DTMF, trois dlais dirents peuvent dterminer l'instant o l'entre d'utilisateur sera considre comme complte : si aucune tonalit DTMF n'a t entre, la proprit timeout s'appliquera ; si une certaine tonalit DTMF a t entre, une tonalit supplmentaire tant valide, alors la proprit interdigittimeout s'appliquera, et si aucune autre tonalit DTMF n'est valide, la proprit termtimeout s'applique alors. Dans chaque cas, l'utilisateur peut entrer une tonalit DTMF interdite par la ou les grammaires actives. Ce qui entrane l'invalidit de la chane DTMF collecte. D'autres chires seront collects jusqu' ce que la touche du caractre de terminaison soit appuye ou bien jusqu' ce que la valeur indique par la proprit interdigittimeout soit dpasse. Un vnement nomatch est alors gnr.

D.2. Les grammaires vocales


179 of 212 27/07/2012 22:31

Le langage de balisage extensible vocal (VoiceXML) vers...

http://www.yoyodesign.org/doc/w3c/voicexml20/

Les grammaires vocales utilisent les proprits timeout, completetimeout et incompletetimeout, dcrites dans le chapitre 6.3.4 et le chapitre 6.3.2, pour adapter l'exprience d'utilisateur. Leurs eets sont montrs dans les diagrammes de temporisation suivants : La proprit timeout quand rien n'est dit Dans l'exemple ci-dessous, la proprit timeout dtermine quand l'vnement noinput est suscit, parce que l'utilisateur n'a rien dit.

Figure 19 : Diagramme de temporisation de la proprit timeout quand rien n'est dit. La proprit completetimeout avec une grammaire vocale reconnue Dans l'exemple prcdent, l'utilisateur fournissait un nonc qui tait reconnu par la grammaire vocale. Aprs l'coulement de la priode de silence indique par la proprit completetimeout, la valeur reconnue est renvoye.

Figure 20 : Diagramme de temporisation de la proprit completetimeout avec une grammaire vocale reconnue. La proprit incompletetimeout avec une grammaire vocale non reconnue Dans l'exemple prcdent, l'utilisateur fournissait un nonc qui n'tait pas encore reconnu par la grammaire vocale tout en tant le prxe d'un nonc lgal. Aprs l'coulement de la priode de silence indique par la proprit incompletetimeout, un vnement nomatch est suscit.

180 of 212

27/07/2012 22:31

Le langage de balisage extensible vocal (VoiceXML) vers...

http://www.yoyodesign.org/doc/w3c/voicexml20/

Figure 21 : Diagramme de temporisation de la proprit incompletetimeout avec une grammaire vocale non reconnue.

Annexe E : Les formats des chiers sons


Le langage VoiceXML demande une plateforme qu'elle gre la lecture et l'enregistrement des formats audio dnis ci-dessous : Format audio Type de mdia

Raw (sans en-tte) 8kHz 8-bit mono mu-law audio/basic (selon [RFC1521]) [PCM] canal seul (G.711) Raw (sans en-tte) 8kHz 8-bit mono A-law [PCM] canal seul (G.711) audio/x-alaw-basic

WAV (en-tte RIFF) 8kHz 8-bit mono mu-law audio/x-wav [PCM] canal seul. WAV (en-tte RIFF) 8kHz 8-bit mono A-law [PCM] canal seul. audio/x-wav

Tableau 65 : Les formats audio que les plateformes doivent grer Le type MIME "audio/basic" s'utilise couramment avec le format d'en-tte au ainsi qu'avec le format 8-bit 8Khz mu-law sans en-tte. Si ce type MIME est indiqu pour l'enregistrement, on doit utiliser le format mu-law. Pour la lecture avec le type MIME "audio/basic", les plateformes doivent grer le format mu-law et elles peuvent grer le format au .

Annexe F : La conformit
Ce chapitre est normatif.

F1. Le document VoiceXML conforme


Un document VoiceXML conforme est un document [XML] bien form qui ne ncessite que les facilits dcrites comme obligatoires dans cette spcication. Un tel document

181 of 212

27/07/2012 22:31

Le langage de balisage extensible vocal (VoiceXML) vers...

http://www.yoyodesign.org/doc/w3c/voicexml20/

doit satisfaire tous les critres suivants : 1. Le document doit se conformer aux contraintes exprimes dans le schma VoiceXML (voir l'annexe O). 2. L'lment racine du document doit tre l'lment vxml. 3. L'lment vxml doit inclure un attribut version avec la valeur "2.0". 4. L'lment vxml doit dsigner l'espace de nommage VoiceXML. On peut le faire en dclarant un attribut xmlns ou un attribut avec un prxe xmlns [XMLNAMES]. L'espace de nommage de VoiceXML est dni comme tant http://www.w3.org /2001/vxml. 5. On recommande que l'lment vxml indique galement l'emplacement du schma VoixeXML (voir l'annexe O) via l'attribut xsi:schemaLocation issu de la spcication [SCHEMA1] :
xsi:schemaLocation="http://www.w3.org/2001/vxml http://www.w3.org/TR/voicexml20/vxml.xsd"

Bien qu'elle ne soit pas obligatoire, le prsent document fournit cette indication dans tous les exemples pour en encourager l'utilisation. 6. Il peut y avoir une dclaration de type de document DOCTYPE dans le document avant l'lment racine. Le cas chant, l'identicateur public inclus dans la dclaration DOCTYPE doit appeler le DTD de VoiceXML (voir l'annexe B) en utilisant son identiant public formel :
<!DOCTYPE vxml PUBLIC "-//W3C//DTD VOICEXML 2.0//EN" "http://www.w3.org/TR/voicexml20/vxml.dtd">

L'identiant systme peut se modier de manire approprie. On ne doit pas utiliser le sous-ensemble de DTD pour surclasser les entits paramtres dans le DTD. Voici un exemple de document VoiceXML conforme :
<?xml version="1.0" encoding="UTF-8"?> <vxml version="2.0" xmlns="http://www.w3.org/2001/vxml" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.w3.org/2001/vxml http://www.w3.org/TR/voicexml20/vxml.xsd"> <form> <block>bonjour</block> </form> </vxml>

Remarquez que cet exemple comprend les attributs recommands xmlns:xsi et xsi:schemaLocation ainsi qu'une dclaration XML. Une dclaration XML comme celle-ci n'est pas obligatoire dans tous les documents. Les auteurs de documents VoiceXML sont fortement encourags employer des dclarations XML dans tous leurs documents. Une telle dclaration est obligatoire lorsque le codage des caractres du
182 of 212 27/07/2012 22:31

Le langage de balisage extensible vocal (VoiceXML) vers...

http://www.yoyodesign.org/doc/w3c/voicexml20/

document dire des codages implicites UTF-8 ou UTF-16 et qu'aucun codage n'a t dtermin par un protocole de niveau suprieur. Le langage VoiceXML ou ces critres de conformit n'indiquent aucune limite de taille sur un aspect quelconque des documents VoiceXML. Il n'y a aucune valeur maximum au nombre des lments, la quantit des donnes textuelles ou au nombre de caractres dans les valeurs des attributs.

F.2 L'utilisation du langage VoiceXML avec d'autres espaces de nommage


On peut utiliser l'espace de nommage VoiceXML avec d'autres espaces de nommage XML selon la spcication [XMLNAMES], bien que de tels documents ne soient pas des documents VoiceXML strictement conformes comme dni prcdemment. Des travaux ultrieurs du W3C proposeront des moyens d'indiquer la conformit des documents mettant en scne plusieurs espaces de nommage.

F.3 Les processeurs VoiceXML conformes


Un processeur VoiceXML est un agent utilisateur capable d'analyser et de traiter des documents VoiceXML conformes. Dans un processeur VoiceXML conforme, l'analyseur XML doit pouvoir analyser et traiter toutes les structures XML bien formes dnies dans les spcications [XML] et [XMLNAMES]. Un processeur VoiceXML conforme n'est pas oblig d'utiliser un analyseur validant. Un processeur VoiceXML conforme doit tre un processeur SSML conforme [SSML] et un processeur de grammaire XML conforme [SRGS], sauf pour les dirences dcrites dans ce document. Si une erreur de syntaxe est dtecte au cours du traitement d'un document de grammaire, alors un vnement error.badfetch doit tre suscit. Un processeur VoiceXML conforme doit grer la syntaxe et la smantique de tous les lments VoiceXML dcrits dans ce document. Par consquent, un processeur VoiceXML conforme ne doit pas susciter d'vnement error.unsupported.<lment> pour tout lment VoiceXML devant tre gr au cours du traitement d'un document VoiceXML conforme. Lorsqu'un processeur VoiceXML conforme rencontre un document VoiceXML conforme contenant des lments ou des attributs non-VoiceXML, lesquels sont propritaires, dnis seulement dans des versions prcdentes du langage VoiceXML ou bien dnis dans un espace de nommage non-VoiceXML et ne pouvant pas tre traits, alors il doit susciter un vnement error.badfetch. Lorsqu'un processeur VoiceXML conforme rencontre un document ayant un lment racine qui dsigne un espace de nommage autre que celui de VoiceXML, son comportement n'est pas dni. Toutefois, il n'y a aucune obligation de conformit concernant les caractristiques des performances du processeur VoiceXML.

Annexe G : L'internationalisation
183 of 212 27/07/2012 22:31

Le langage de balisage extensible vocal (VoiceXML) vers...

http://www.yoyodesign.org/doc/w3c/voicexml20/

Le langage VoiceXML est une application du langage [XML] et, de ce fait, gre [UNICODE] qui dnit un jeu de caractres universel normalis. En outre, le langage VoiceXML fournit un mcanisme permettant le contrle prcis des langues d'entre et de sortie au travers de l'attribut xml:lang. Cette facilit ore : La possibilit de dnir la langue d'entre et de sortie surclassant la langue par dfaut du processeur VoiceXML ; La possibilit de produire une sortie multilangue ; La possibilit d'interprter une entre dans une langue dirente de la langue (ou des langues) de sortie.

Annexe H : L'accessibilit
La voix est au centre des applications VoiceXML, mais n'en est pas la limite. Alors que la parole et l'coute seront les techniques les plus couramment utilises dans la plupart des circonstances et pour la plupart des utilisateurs en interaction avec des applications VoiceXML, certains utilisateurs pourront tre temporairement (ou de faon permanente) incapables de parler et/ou d'couter. Des personnes invalides, notamment celles ayant des dicults pour parler et/ou entendre, peuvent avoir besoin d'interagir autrement avec les applications VoiceXML : 1. Les utilisateurs sourds peuvent lire un texte sur un cran ou (s'ils sont aussi aveugles) lire un texte en Braille au toucher. An de prendre en compte les appareils spciaux employs par les personnes ayant une dcience de la vue et/ou de l'oue, les dveloppeurs sont encourags fournir un quivalent textuel de chaque invite sonore l'intrieur de l'lment audio. Par exemple :
<audio src="bienvenue.wav">Bienvenue</audio>

Cette dclaration ferait en sorte de jouer le chier son bienvenue.wav . Toutefois, si le contexte d'interprtation VoiceXML avait dtect que l'utilisateur voyait l'interaction sur un cran ou touchait un dispositif de sortie Braille, alors le texte Bienvenue serait restitu par l'cran ou le dispositif de sortie Braille. 2. Les utilisateurs dcients de la parole peuvent saisir des squences codes qui sont converties en texte alphabtique avant d'alimenter la plateforme VoiceXML. Un dispositif matriel spcial accoupl un tlphone pourrait convertir, par exemple, les touches d'un clavier QWERTY en un texte alphabtique. Cette conversion pourrait galement tre eectue par un logiciel traduisant les squences de tonalits DTMF d'un clavier tlphonique douze touches en un texte alphabtique. La mise en place de voies alternatives pour la livraison des informations et pour les entres d'utilisateur est au centre de toutes les technologies du W3C destines tre utilises par les personnes. Bien qu'elles aient t conues l'origine pour rendre accessible un contenu l'cran, les directives pour l'accessibilit suivantes, publies par l'Initiative pour l'accessibilit du Web (WAI), s'appliquent aussi au langage VoiceXML :. Les directives pour l'accessibilt du contenu Web 1.0 [WAI-WEBCONTENT] expliquent en dtails comment rendre un site Web accessible aux personnes

184 of 212

27/07/2012 22:31

Le langage de balisage extensible vocal (VoiceXML) vers...

http://www.yoyodesign.org/doc/w3c/voicexml20/

ayant des dciences diverses. Les directives pour l'accessibilit des outils de cration 1.0 [ATAGIO]. Destines aux dveloppeurs de logiciels, elles expliquent comment faire pour que des outils de cration divers soutiennent la production d'un contenu Web accessible et aussi comment rendre le logiciel lui-mme accessible. Les directives pour l'accessibilit des agents utilisateurs 1.0 [UAAGIO]. Destines aux dveloppeurs de logiciels, elles expliquent comment rendre accessibles les navigateurs, les lecteurs multimdias et les technologies d'assistance qui en sont les interfaces. Les directives pour l'accessibilit XML [XAG]. Destines aux dveloppeurs d'applications fondes sur XML, elles expliquent comment assurer l'accessibilit de leurs applications. Voici d'autres directives permettant aux personnes invalides d'accder aux applications VoiceXML : Rutiliser les structures de navigation qui sont trs utilisables et mettent prot un aprentissage entre plusieurs applications, par exemple, les techniques de navigation de la norme ANSI/NISO Z39.86-2002 Digital Talking book Standard, http://www.loc.gov/nls/z3986/. Chaque lment dans lequel un vnement peut se produire devrait dnir des lments de capture, dont l'un avec une fonctionnalit d'chec en douceur ou de rcupration. Permettre aux utilisateurs de contrler la dure avant expiration, le dbit de la synthse vocale et d'autres variables de ce type orant un peu plus de temps pour rpondre ou pour complter une entre, en particulier quand le contexte d'interprtation VoiceXML aura dtermin que l'utilisateur emploie un dispositif auxilliaire au lieu d'couter ou de parler. Ce sont des aspects particulirement importants pour les utilisateurs avec des dicults cognitives. Mettre en avant les modes alternatifs au travers desquels un service quivalent est disponible, dont le transfert vers un oprateur humain, un service tlphonique textuel, etc., ou la disponibilit des mmes informations sur le Web.

Annexe I : La vie prive


Une version future de VoiceXML pourra dnir des critres selon lesquels un processeur VoiceXML protgera la condentialit des donnes personnelles.

Annexe J : Les changements survenus depuis VoiceXML 1.0


Voici un rsum des dirences entre VoiceXML 2.0 et VoiceXML 1.0 [VOICEXML-1.0]. Les dveloppeurs d'application VoiceXML 1.0 devraient faire particulirement attention aux incompatibilits avec VoiceXML 1.0 mentionnes dans les sections Les lments obsoltes et Les lments modis de manire incompatible .

Les lments nouveaux


log pour dnir un message de dboguage (5.3.13) metadata comme moyen de dnir des informations de mtadonne en utilisant
185 of 212 27/07/2012 22:31

Le langage de balisage extensible vocal (VoiceXML) vers...

http://www.yoyodesign.org/doc/w3c/voicexml20/

un schma (6.2, 6.2.2)

Les lments obsoltes


dtmf remplac par grammar avec mode="dtmf" (3.1.2) les lments JSML <emp>, <div>, <pros> et <sayas> ont t remplacs par des lments correspondants dans le langage de balisage de la synthse vocale [SSML] (4.1.1)

Les lments modis de manire incompatible


Chang lang pour xml:lang dans vxml (1.5.1). Ajout l'attribut obligatoire xmlns dans vxml (1.5.1) Remplac l'attribut base par xml:base dans vxml (1.5.1) Chang et prcis que si une implmentation ne gre pas un objet particulier, elle suscite un vnement error.unsupported.objectname. L'vnement error.unsupported.format n'est pas suscit pour les types d'objet non reconnus (2.1.2.1, 2.3.5, 5.2.6) L'attribut type d'un lment field n'indique pas une classe say-as utiliser la prononciation de la valeur du champ. On doit utiliser un lment say-as explicite la place (2.1.4, annexe P) Ajout l'attribut accept aux lments menu et choice (2.2.1, 2.2.2) Un vnement error.badfetch (anciennement error.semantic) est suscit si l'attribut dtmf d'un lment menu est x "true" et que des choix ont des squences DTMF dnies avec autre chose que "*", "#" ou "0" (2.2.1) Supprim la gestion obligatoire de l'accs aux ressources intgres telles que les grammaires et builtin est trait comme un systme d'adresse URI propre la plateforme pour l'accs aux ressources (2.3.1.2, annexe P) Ajout l'attribut accept l'lment option et modi la description de la phrase de choix dans la gnration d'une grammaire (2.3.1.3, 2.2.5) Supprim l'attribut modal de l'lment subdialog (2.3.4) Supprim l'attribut fetchaudio de l'lment object (2.3.5) Supprim la capacit de l'lment value jouer un enregistrement. Seul l'lment audio peut servir jouer un enregistrement (2.3.6, 4.1.3, 4.1.4) Si une plateforme gre la reconnaissance vocale et l'enregistrement simultanment, alors l'entre prononce peut correspondre une grammaire vocale active non locale. Si des grammaires vocales locales sont dnies, elles sont traites comme inactives (c..d. qu'elle sont ignores), mme si la plateforme gre la reconnaissance et l'enregistrement simultans (2.3.6) Remplac le schma d'adresse URI phone par le schma tel dans l'attribut dest (et destexpr) de l'lment transfer (2.3.7) Au cours d'un transfert de type pont, alors que l'interruption opre normalement, l'attribut bargeintype est x "hotword", l'activation de grammaire est modale (seules les grammaires locales sont actives) et le son de chargement commence jouer au point o l'appel sortant commence (2.3.7) Supprim l'quivalence de notation entre l'lment filled dans un champ et un filled de niveau formulaire se dclenchant sur ce champ (2.4) Le traitement de l'attribut type dans l'lment grammar suit les pratiques standard du W3C. Si un type de mdia est renvoy par le protocole, alors il fait autorit : il ne peut pas tre surclass par la plateforme VoiceXML, mme s'il ne correspond pas au type de mdia rel de la ressource ou s'il ne peut pas tre trait comme une grammaire. La valeur de l'attribut type peut servir inuencer la ngociation

186 of 212

27/07/2012 22:31

Le langage de balisage extensible vocal (VoiceXML) vers...

http://www.yoyodesign.org/doc/w3c/voicexml20/

de type de contenu (par exemple, dans HTTP 1.1) et il devient, seulement si aucun type de mdia n'est renvoy par le protocole, le type de mdia autoritaire de la ressource (3.1.1.2, 3.1.1.4) Le contenu TTS des lments choice, prompt, enumerate et audio remplac par une dnition dans le langage de balisage de la synthse vocale [SSML]) Dans un lment audio, si le chier son ne peut tre jou et que le contenu de l'lment est vide, aucun son n'est jou et aucune vnement d'erreur n'est suscit (4.1.3) Supprim les attribut class, mode et recsrc de l'lment value (4.1.4) Supprim la variable de session normalise session.uui. Ajout les nouvelles variables de session gnriques session.connection.protocol.name et session.connection.aai, lesquelles fournissent ces informations et plus (5.1.4) Remplac la variable d'espace session.telephone par l'espace session.connection qui n'est pas propre un protocole et qui est plus souple. Les noms d'erreur correspondants ont aussi chang (5.1.4) Le mcanisme selon lequel les objets ECMAScript, dans l'attribut namelist de l'lment submit, sont soumis, n'est pas dni pour l'instant mais rserv une dnition future. Les dveloppeurs d'application peuvent soumettre explicitement les proprits de l'objet au lieu de l'objet lui-mme (5.3.8) Supprim l'attribut caching (6.1) Ajout les attributs maxage et maxstale (6.1) Supprim "stream" comme valeur de la proprit fetchhint (6.1.1, 6.3.5) Supprim caching des proprits de chargement (6.3.5). Les grammaires de commande universelle propres une plateforme sont optionnelles (6.3.6)

Les lments modis


Les plateformes peuvent faire la distinction entre un champ et le niveau de abilit d'un nonc, c'est--dire que field$.confidence et application.lastresult$.confidence peuvent direr (2.3.1, 3.1.6.4, 5.1.5, 6.3.2 ) Ajout l'attribut srcexpr l'lment subdialog (2.3.4) Ajout la variable ctive maxtime l'lment record (2.3.6) Ajout l'attribut transferaudio l'lment transfer ; ajout "maxtimedisconnect" et "unknown" comme valeurs des transferts de type pont ; ajout plusieurs vnements de type error.connection (2.3.7) Ajout les attributs aai et aaiexpr an de permettre le passage de donnes avec l'lment transfer (2.3.7) Ajout l'attribut dtmf l'lment link (2.5). La forme XML de la spcication des grammaires de reconnaissance vocale du W3C [SRGS] doit tre gre dans l'lment grammar (3.1). Ajout les attributs weight, mode, xml:lang, root et version l'lment grammar (3.1). Ajout l'attribut xml:lang l'lment prompt (4.1). Ajout l'attribut bargeintype l'lment prompt, avec les valeurs "speech" et "hotword" (4.1). Ajout l'attribut expr l'lment audio (4.1.3) Ajout la variable d'application application.lastresult$ dcrivant le dernier rsultat de reconnaissance, y compris n-best (5.1.5). Ajout les attributs event, eventexpr, message et messageexpr aux lments throw, choice, link et return (5.2.1). Ajout la variable _event l'lment catch (5.2.2).

187 of 212

27/07/2012 22:31

Le langage de balisage extensible vocal (VoiceXML) vers...

http://www.yoyodesign.org/doc/w3c/voicexml20/

L'lment catch ne peut plus dnir un attribut event dont la valeur est une chane vide (5.2.2, 5.2.4) Ajout l'vnement error.badfetch.http.<code de rponse> comme type d'erreur prdni (5.2.6) Ajout l'vnement error.badfetch.<protocole>.<code de rponse> comme type d'erreur prdni (5.2.6) Ajout l'vnement maxspeechtimeout (5.2.6) Ajout l'vnement error.unsupported.language comme type d'erreur prdni (5.2.6) Ajout la gestion obligatoire de la valeur "multipart/form-data" pour l'attribut enctype de l'lment submit (5.3.8) L'lment script peut apparatre dans l'lment form (5.3.12) L'chec du chargement du son de chargement partir de son adresse URI n'aboutit pas la gnration d'un vnement error.badfetch : aucun son n'est jou pendant le chargement (6.1.1) Le protocole HTTP est obligatoire (6.1.4) Ajout la proprit maxspeechtimeout (6.3.2) La gestion de la proprit completetimeout par la plateforme est optionnelle. Toutefois, une plateforme qui ne prendrait pas en charge cette proprit doit utiliser le maximum entre les valeurs des proprits completetimeout et incompletetimeout comme valeur de la proprit incompletetimeout, et elle doit le documenter (6.3.2) Ajout la proprit bargeintype (6.3.4) Ajout fetchaudiodelay et fetchaudiominimum aux proprits de chargement (6.3.5) Ajout la proprit de session maxnbest (6.3.6) Ajout la proprit universals (avec une valeur implicite de "none" (6.3.6). Ajout des valeurs implicites aux attributs de chargement, ainsi que les attributs de chargement maxage et maxstale aux lments choice, subdialog, object, link, grammar, audio, goto, submit et script

Les claircissements
Des claircissements sur la faon dont les rsultats de grammaire sont mapps au langage VoiceXML, savoir : la notion d' lment d'entre pour un lment de formulaire qui accepte une entre ; seuls les lments d'entre peuvent tre remplis en rsultat d'une correspondance une grammaire de niveau formulaire ; les correspondances aux grammaires de niveau champ ne peuvent pas remplir d'autres lments d'entre que le champ courant ; prcision selon laquelle l'lment object peut se remplir et peut dclencher des actions filled ; ajout d'un principe de cration pour la correspondance smantique et les eets sur la variable lastresult$, les variables ctives et la phase de traitement dans l'algorithme FIA (1.2.4, 2.1.4, 2.1.5, 2.1.6.2.3, 2.2, 2.3.1, 2.3.1.3, 2.3.5, 2.3.6, 2.3.7.2, 2.4, 2.5, 3.1.1, 3.1.6, 3.1.6.1, 3.1.6.2, 3.1.6.3, 3.1.6.4, annexe C). Si aucune entre, ou sortie, audio n'est disponible, alors un vnement error.noresource doit tre suscit (1.2.5, 5.2.6) Remplac le terme confus lment de champ par lment de formulaire ou lment d'entre , selon les cas (1.3.1, 2.1.6.2.2, 2.3, 2.3.3, 2.3.5, 3.1.6.1, 4.1.3, 5.1.1, 5.1.3, 6.3) Prcis que les grammaires de niveau application peuvent rester actives pour la dure de l'application, selon les rgles d'activation des grammaires dans le chapitre 3.1.4 (1.3.3) Dnitions des documents racine et terminaux, et des transitions entre eux

188 of 212

27/07/2012 22:31

Le langage de balisage extensible vocal (VoiceXML) vers...

http://www.yoyodesign.org/doc/w3c/voicexml20/

(1.5.2). L'appel du document racine d'application et de ses grammaires (1.5.2). Lorsqu'un sous-dialogue est invoqu avec seulement un identicateur de fragment, les pages racines et terminales restent inchanges, et elles servent initialiser les contextes de la racine et des terminaux (1.5.2) Dans une transition racine racine, le contexte d'initialisation racine est dtermin par la politique de mise en cache, mme si l'application courante et celle cible ont le mme nom (1.5.2) claircissement des transitions par adresse URI, notamment les identicateurs de fragment, en relation avec le document RFC2396 (1.5.2, 2.3.4, 5.3.7, 5.3.8, 6.1.1) Un claircissement sur la faon dont les documents racines sont traits dans les applications multi-documents, et les avantages utiliser des documents racines (1.5.2) Un vnement error.badfetch est suscit lorsqu'un document appelle un document racine inexistant et qu'un vnement error.semantic est suscit s'il appelle un document racine appelant son tour un document racine (1.5.2) Un lment subdialog, transfrant le contrle un autre lment subdialog et un autre dialogue, via l'lment goto (1.5.3). Ajout une section dcrivant l'tat de traitement nal quand il n'y a plus de connexion entre l'interprteur et l'utilisateur. Supprim la description du traitement nal dans l'lment catch (1.5.4, 5.2.2) La porte dnie sur les grammaires de formulaire individuel est prioritaire sur la porte de grammaire implicite dans un lment form (2.1). Le comportement lors de l'excution des instances des lments object non reconnus (2.1.2.1, 2.3.5). Dans un lment object, lorsqu'une plateforme ne gre pas un objet particulier, un vnement error.unsupported.objectname est suscit, le terme objectname est une chane xe qui ne se remplace pas par le nom de l'objet particulier en question. En gnral, les composants substituables d'un vnement sont donns en italiques (par exemple, objet dans error.unsupported.objet) (2.1.2.1, 2.3.5, 5.2.6 ) Si une plateforme ne gre pas un lment object particulier, alors un vnement error.unsupported.objectname est suscit (2.1.2) Les multiples lments prompt dans un lment field n'ont pas besoin d'un attribut count. La ou les invites dans un champ sont mises en le d'attente en vue de leur lecture, selon l'algorithme de slection des invites dcrit dans le chapitre 4.1.6 (2.1.4) L'eet de la dclaration <goto nextitem> sur un lment de formulaire (2.1.5). Aucune variable ni aucune condition ni aucun compteur ne sont rinitialiss dans l'utilisation de <goto nextitem> (2.1.5). Prcis que les dialogues initiative mixte ncessitaient des formulaires avec des grammaires de niveau formulaire, et que plusieurs styles de cration existent pour l'initiative mixte, dont utiliser l'lment initial et des attributs cond sur des lments field (2.1.5) La dclaration <goto nextitem> force un transfert immdiat vers l'lment de formulaire indiqu, mme si un quelconque attribut cond sur l'lment de formulaire s'valuait "false" (2.1.5.1) Le comportement des lments transfer, subdialog et object avec la lecture d'un son dans la phase de collecte (2.1.6). La slection d'un gestionnaire d'vnement dans la phase de traitement de l'algorithme FIA et l'lment filled (2.1.6.2). Prcis que, lorsque des erreurs survenues au cours des phases de slection ou

189 of 212

27/07/2012 22:31

Le langage de balisage extensible vocal (VoiceXML) vers...

http://www.yoyodesign.org/doc/w3c/voicexml20/

de collecte de l'algorithme FIA aboutissent la gnration d'un vnement, l'algorithme FIA se place directement en phase de traitement (2.1.6.2, 2.1.6.2.1, 2.1.6.2.3) Lorsqu'une erreur est suscite dans un contenu excutable, aucun des lments excutables suivants du bloc procdural n'est excut et, si aucun transfert explicite du contrle n'a lieu, il se produit un exit implicite (2.1.6.2.1, 5.3) numr les lments d'un contexte excutable qui terminent une excution (2.1.6.2.3). L'lment reprompt ne termine pas l'algorithme FIA (2.1.6.2.3). Prcis que la valeur par dfaut de l'attribut dtmf de l'lment menu est "false" (2.2.1) Prcis la dnition et le comportement des attributs et des sous-lments s'excluant mutuellement( 2.2.2, 2.3.4, 2.3.7, 2.5, 3.1.1.4, 4.1.3, 5.2.1, 5.3.7, 5.3.8, 5.3.9, 5.3.10, 5.3.12, 6.4) Dans un lment menu, c'est une erreur smantique si on a dtmf="true" et que des lments choice ont dni explicitement des valeurs autres que " 0", "*" et "#" pour leur attribut dtmf. S'il y a plus de 9 lments choice n'ayant pas dni d'attribut dtmf, alors aucun attribut dtmf n'aura d'assignation automatique (aucune entre DTMF ne peut correspondre un choix), mais aucune erreur n'est gnre (2.2.3) L'utilisation de l'lment enumerate (2.2.4, 2.3.1) L'lment grammar surclasse les grammaires gnres automatiquement dans l'lment choice (2.2.2). L'attribut expr de l'lment choice est valu l'adresse URI vers laquelle eectuer une transition (2.2.2). Le gestionnaire d'vnement d'un lment choice, sans contrle de la transition, provoque la rexcution du menu (2.2.2). Les squences DTMF indiques par les attributs dtmf des lments choice, option et link sont quivalentes des grammaires DTMF simples, dans lesquelles les proprits DTMF s'appliquent la reconnaissance de la squence. Toutefois, contrairement aux grammaires, les blancs sont optionnels dans les squences DTMF (2.2.2, 2.3.1.3, 2.5) Prcis que les grammaires vocales et DTMF, mais pas les fragments de grammaire, sont permises dans les lments choice (2.2.2) Pour l'lment enumerate, si aucune squence DTMF n'est assigne l'lment choice, ou si un lment grammar est dni dans l'lment choice, alors la variable _dtmf reoit la valeur ECMAScript "undefined" (2.2.4) Pour l'lment enumerate, la valeur de la variable _dtmf est une reprsentation normalise de la squence DTMF, c'est--dire, une seule espace entre les atomes DTMF (2.2.4) Dnition de la gnration de grammaire "approximate" dans les lments menu et choice (2.2.5) Un lment de formulaire est excut s'il n'est pas rempli et que son attribut cond n'est pas dni, ou s'value "true" (2.3, 2.3.1) Rorganis la prsentation des lments de formulaire pour prciser quelles caractristiques s'appliquent tel lment de formulaire. Indiqu galement que l'lment de formulaire initial peut contenir des lments property et catch (2.3) L'valuation d'une expression cond a lieu aprs une conversion en valeur boolenne. Cela concerne l'attribut cond dans les lments de formulaire field, block, initial, subdialog, object, record et transfer (2.3), prompt (4.1) et catch (5.2.2, 5.2.4)

190 of 212

27/07/2012 22:31

Le langage de balisage extensible vocal (VoiceXML) vers...

http://www.yoyodesign.org/doc/w3c/voicexml20/

Prcis que les variables ctives sont rinscriptibles et susceptibles d'tre modies par l'application. Chang la variable application.lastresult$, an qu'elle soit galement rinscriptible et puisse tre modie par l'application (2.3, 5.1.5 ) L'assignation de la variable de champ quand l'attribut dtmf est dni (2.3.1). Le nom d'un champ doit tre unique parmi les noms des lments de formulaire dont son formulaire. Les variables dclares dans un lment script le sont dans la porte de l'lment contenant cet lment script (2.3.1, 5.3.12) Les noms des variable d'lment de formulaire doivent respecter les conventions de nommage des variables ECMAScript (2.3.1, 5.1). Si un type intgr dni d'lment field n'est pas gr par la plateforme, un vnement error.unsupported.builtin est suscit. Si une plateforme gre les types intgrs, alors elle doit grer tous les types intgrs dans le langage en question (2.3.1, 5.2.6, annexe P) L'utilisation des grammaires vocales et DTMF avec le systme d'adresse URI "builtin: (2.3.1.2). La chane renvoye pour une entre DTMF, quand aucun attribut valuestring ni donnes PCDATA ne sont dnis dans un lment option (2.3.1.3). On peut utiliser simultanment les lments option et grammar pour dnir les grammaires d'un lment field (2.3.1.3). Dans un lment option, si ni contenu de type CDATA ni squence DTMF ne sont dnis, alors l'attribut value a la valeur implicite "undefined", et la variable d'lment de formulaire du champ n'est pas remplie (2.3.1.3) Dans un lment option, l'attribut dtmf est optionnel. Si aucune valeur n'est dnie pour l'attribut dtmf, alors aucune squence DTMF n'est associe l'option lequel, de ce fait, ne peut pas tre slectionn par une entre DTMF (2.3.1.3) Les rgles de porte normales des grammaires s'appliquent lors de la visite d'un lment initial : en particulier, aucune grammaire d'lment d'entre n'est active (2.3.3) Prcis qu'un formulaire peut admettre plusieurs lments initial, et comment ils sont slectionns pour l'excution (2.3.3, annexe C) La porte des variables dans un lment subdialog (2.3.4). Le contexte d'un lment subdialog est indpendant du contexte qui l'appelle (les instances de variable ne sont pas partages), mais son contexte suit les rgles de porte normales des grammaires, des vnements et des variables (2.3.4). Dans un lment subdialog, utiliser l'attribut expr pour xer une variable si aucun lment param correspondant n'est dni (2.3.4). Prcis la description du contexte d'excution du sous-dialogue (2.3.4) Prcision sur la faon dont l'lment return, dans un lment subdialog, passe des donnes son dialogue appelant (2.3.4, 5.3.10) Les variables dans les sous-dialogues sont associes aux paramtres par leur nom, et dans l'ordre du document. Les valeurs des paramtres sont values dans le contexte de l'lment param (2.3.4) Un vnement error.badfetch est suscit lors d'une tentative de transition invalide dans les lments subdialog, goto et submit. La porte dans laquelle est gre une erreur au cours d'une transition dpend de la plateforme (2.3.4, 5.3.7, 5.3.8) Prcis qu'un subdialog sans lment return continue jusqu' ce qu'il rencontre un lment exit ou qu'il ne reste aucun lment de formulaire susceptible d'une slection par l'algorithme FIA, ce qui quivaut un lment exit (2.3.4) Prcis qu'une chane de requte autonome n'est pas une adresse URI valide : par

191 of 212

27/07/2012 22:31

Le langage de balisage extensible vocal (VoiceXML) vers...

http://www.yoyodesign.org/doc/w3c/voicexml20/

consquent, ces chanes n'exigent aucune gestion particulire dans les adresses URI intermdiaires dnies dans les lments subdialog et goto (2.3.4, 5.3.7, 6.1.1) Si l'attribut namelist, dans les lments subdialog, submit, clear, exit ou return, appellent une variable non dclare, alors un vnement error.semantic est suscit ( 2.3.4, 5.3.3, 5.3.8, 5.3.9, 5.3.10 ) Dans un lment subdialog, les paramtres doivent se dclarer en tant qu'lments var dans le formulaire excut comme sous dialogue, sinon un vnement error.semantic sera suscit (2.3.4, 6.4) Prcis que l'lment object est lui-mme responsable de dterminer si le nom ou la valeur de paramtre qu'il reoit est invalide. Le cas chant, une erreur est suscite : il peut s'agir d'une erreur standard ou d'une erreur propre l'objet (2.3.5) L'utilisateur qui raccroche au cours d'un enregistrement termine l'enregistrement normalement. Les donnes enregistres avant le raccrochage peuvent tre renvoyes au serveur (2.3.6). L'interprtation des grammaires dans l'lment record (2.3.6). La variable de champ dans un lment record est une rfrence un son enregistr. Pour la soumission des donnes enregistres un serveur, l'attribut enctype de l'lment submit devrait avoir la valeur "multipart/form-data" (2.3.6, 5.3.8). Prcision de comportement lorsque l'attribut dtmfterm de l'lment record a la valeur "false" la rception de l'entre DTMF (2.3.6) Prcision sur le moment o l'enregistrement commence et sur le comportement quand il se termine, avant qu'une quelconque donne audio ne soit collecte (2.3.6) Prcis que la faon dont la variable de l'lment record est mise en uvre peut varier entre les plateformes, bien que toutes les plateformes doivent grer le comportement qu'elle dnit dans les lments audio et submit (2.3.6) Prcis que les valeurs par dfaut des attributs finalsilence et maxtime de l'lment record sont propres la plateforme (2.3.6) Pendant l'excution de l'lment record, si aucun son n'est collect avant que l'utilisateur ait termin l'enregistrement par une entre DTMF correspondant un grammaire DTMF locale (ou si l'attribut dtmfterm a la valeur "true, alors la variable de l'lment record n'est pas remplie (les variables ctives ne sont donc pas xes), et l'algorithme FIA s'applique normalement, sans gnration d'un vnement noinput. Toutefois, dans cette situation, les informations concernant l'entre peuvent tre disponibles via la variable application.lastresult$ comme dcrit dans le chapitre 5.1.5. (2.3.6) Dans l'lment record, l'attribut dtmfterm a priorit sur les grammaires DTMF locales dnies (2.3.6) Dans l'lment record, aucun son ne peut tre collect si l'entre vocale, ou DTMF, est reue pendant la lecture d'une invite ou avant que l'intervalle timeout n'expire (2.3.6) La terminaison de l'lment transfer, par une parole ou une tonalit DTMF, renvoi le statut near_end_disconnect (2.3.7). La valeur de l'attribut dest sur l'lment transfer (2.3.7). La variable d'lment de formulaire de l'lment transfer vaut "undefined" pour un transfert de type aveugle (2.3.7). Rvision de l'lment transfer, comprenant : les vnements d'erreur quand la plateforme est incapable de manipuler les attributs dest/destexpr, une prcision selon laquelle la plateforme est dconnecte immdiatement quand un transfert

192 of 212

27/07/2012 22:31

Le langage de balisage extensible vocal (VoiceXML) vers...

http://www.yoyodesign.org/doc/w3c/voicexml20/

de type aveugle se produit, une dnition des vnements gnrer si la plateforme ne peut raliser un transfert de type pont ou de type aveugle, une prcision selon laquelle le statut de connexion n'est pas disponible pour un transfert de type aveugle (bien que quelques conditions d'erreur puissent tre signales), l'attribut transferaudio est ignor pour un transfert de type aveugle, une prcision sur la lecture audio avant et pendant un transfert de type pont, y compris le cas o le son de chargement se termine avant l'tablissement de la connexionsituation, et le son en le d'attente qui est purg avant le commencement du transfert, une prcision sur les temporisations pour l'coute d'une entre et la lecture du son, ajout les variables ctives nom$.inputmode et nom$.utterance, prcis que la gestion par la plateforme de l'coute d'une entre pendant un transfert est optionnel (2.3.7, 5.2.6) La valeur de l'attribut bargeintype sur un transfer de type pont est xe "hotword" pour la dure de l'appel sortant (2.3.7) Les plateformes qui grent soit le transfert de type aveugle soit celui de type pont peuvent grer les modes d'entre interruptifs vocaux, DTMF, ou les deux, pendant le transfert d'appel pour abandonner la connexion distante. Dans le transfert de type aveugle comme celui de type pont, si le transfert n'a pas t termin par une correspondance de grammaire, la variable ctive nom$.inputmode n'est pas dnie. On ne peut annuler les tentatives de transfert de type aveugle que jusqu'au point o l'appel sortant commence. Dans un transfert de type aveugle, le format des conditions d'erreur propres la plateforme devrait suivre les conventions de nommage des autres valeurs de variable d'lment de formulaire de transfert. L'appelant peut annuler une tentative de transfert de type aveugle, avant que l'appel sortant ne commence, en l'interrompant avec une commande vocale, ou DTMF, correspondant une grammaire active, pendant la lecture de n'importe quel chier son dans la le d'attente : auquel cas la variable d'lment de formulaire est xe, ses variables ctives sont xes, ainsi que la variable application.lastresult$. Si l'appelant se dconnecte en raccrochant au cours d'une tentative de transfert de type aveugle, avant que la connexion avec l'appel ne commence, un vnement connection.disconnect.hangup sera suscit, et l'excution du dialogue se portera vers un gestionnaire de l'vnement hangup. La variable d'lment de formulaire et donc les variables ctives ne seront pas xes. Si l'appelant annule la tentative de transfert de type aveugle via une commande vocale, ou DTMF, avant que l'appel sortant ne commence (pendant la lecture d'un chier son en le d'attente), la variable d'lment de formulaire est xe "near_end_disconnect". Dans un transfert de type pont, l'appelant peut annuler la tentative de transfert, avant que l'appel sortant ne commence, en l'interrompant avec une commande vocale, ou DTMF, correspondant une grammaire active pendant la lecture de n'importe quel chier son en le d'attente (2.3.7) Prcis que la variable de l'lment transfer et les variables ctives ne sont pas xes si l'appelant raccroche pendant un transfert d'appel ou une tentative de transfert d'appel. Si l'appel est termin par l'appelant par une commande vocale, ou DTMF, avant une rponse, la variable ctive duration est xe " 0 (2.3.7.2.2) Prcis que la variable ctive utterance de l'lment transfer est xe la valeur du rsultat DTMF, si le transfert a t termin par une entre DTMF (2.3.7.2.2) Rpondu la situation selon laquelle, dans un transfert de type pont, l'appelant force l'appel se dconnecter via une commande vocale, ou DTMF, avant que la connexion ne soit tablie (2.3.7.2.2) Dans un lment transfer, la variable ctive nom$.inputmode n'est pas dnie si

193 of 212

27/07/2012 22:31

Le langage de balisage extensible vocal (VoiceXML) vers...

http://www.yoyodesign.org/doc/w3c/voicexml20/

le transfert n'a pas t termin par une correspondance de grammaire (2.3.7.2.2) Dans la rencontre d'un document contenant un lment filled dnissant soit un attribut mode, soit un attribut namelist comme enfant d'un lment d'entre, alors un vnement error.badfetch est suscit par la plateforme. En outre, un vnement error.badfetch est suscit lorsque le document contient un lment filled avec un attribut namelist rfrenant une variable d'lment de commande (2.4) Les lments link ont zro grammaire, ou plus (2.5). Ls vnements suscit par un lment link sont grs par le mieux quali des lments catch dans la porte active (2.5). Un lment link ne peut tre un enfant que des lments de formulaire fiel ou initial (2.5) Prcis qu'un attribut scope sur l'lment contenant un lment link n'a aucun eet sur la porte des grammaires de cet lment link (2.5) Prcis que, dans un lment link, toutes les adresses URI dans son contenu (par exemple, celles d'lments grammar) s'valuent/se rsolvent l o l'lment link est dni, alors que toutes les adresses URI et les expressions ECMAScript dans ses attributs s'valuent/se rsolvent dans la porte du dialogue et le contexte actifs (2.5) Dans un lment link, les grammaires ne sont pas autorises dnir de porte comme dcrit dans le chapitre 3.1.3 (2.5) Si l'excution a lieu dans un lment de formulaire modal, alors les grammaires des lments link, au niveau application, ne sont pas actives (2.5) L'attribut xml:lang dans un lment grammar n'exige pas une gestion multilangue de la plateforme (3.1) La langue non gre d'une grammaire aboutit la gnration d'un vnement error.unsupported.language (3.1.1) Une langue non gre peut s'indiquer dans la variable message d'un lment throw (3.1.1). Un type number rsulte en une chane laquelle sera automatiquement convertie en un nombre dans une expression numrique par le langage ECMAScript ; la chane ne doit pas utiliser de zro en tte (3.1.1) Prcis que l'lment SRGS grammar est augment dans VoiceXML 2.0 an de permettre des donnes de type PCDATA pour les formats des grammaires directes, paralllement au format XML de SRGS ( 3.1.1, 3.1.1.4 ) Les grammaires implicites (telles que les options) ne grent pas les poids (3.1.1.3). L'attribut type dans un lment grammar a priorit sur les autres sources possibles de type de mdia. S'il est dni et qu'il entre en conit avec le type de la grammaire, alors une erreur est suscite (3.1.1.2, 3.1.1.4) Prcis l'utilisation et l'interprtation des attributs de l'lment grammar hrits de la spcication SRGS (version, xml:lang, mode, root, tag-format, xml:base). Les grammaires SRGS directes de format XML suivent le comportement dni dans la spcication SRGS. En ce qui concerne les grammaires SRGS de type ABNF, ainsi que les grammaires SRGS externes de type ABNF et de type XML, la plateforme doit ignorer ces attributs. Pour tous les autres types de grammaire, l'utilisation et l'interprtation de ces attributs dpendent de la plateforme (3.1.1.4) Prcis que la rgle racine dans les grammaires SRGS n'a pas besoin d'tre une rgle publique (3.1.1.4) Les formes d'appel de rgle, dnies par la spcication SRGS, et non gres dans VoiceXML 2.0, ne s'appliquent qu'aux appels de grammaires externes utilisant l'attribut src (3.1.1.4)

194 of 212

27/07/2012 22:31

Le langage de balisage extensible vocal (VoiceXML) vers...

http://www.yoyodesign.org/doc/w3c/voicexml20/

Prcis la distinction entre les grammaires de niveau formulaire et celles de niveau champ (3.1.6, 3.1.6.1, 3.1.6.2 ) L'attribut slot peut slectionner des proprits des niveaux d'imbrication arbitraires en utilisant une liste spare par des points ; supprim le passage suggrant que les expressions d'indexation de tableau (par exemple, pizza.toppings[3] ) taient gres (3.1.6.1) Prcis qu'une correspondance des grammaires de niveau formulaire peut surclasser les valeurs existantes dans les lments d'entre, et que le traitement filled de ces lments a lieu selon les descriptions du chapitre 2.4 et de l'annexe C (3.1.6.1) Align la description la description des grammaires DTMF sur celle des grammaires vocales : les grammaires DTMF peuvent renvoyer un ensemble de couples attribut-valeur comme une valeur de chane (3.1.2) Si un document contient une grammaire dnissant un porte et que cette grammaire est contenu dans un lment field, un lment link ou dans un lment choice d'un menu, alors un vnement error.badfetch est suscit (3.1.3) Si aucune grammaire n'est active quand une entre est attendue dans un lment form ou menu, un vnement error.semantic est suscit (3.1.4) La proprit inputmodes n'aecte pas l'activation des grammaires (3.1.4, 6.3.6) Si l'entre correspond plusieurs grammaires actives de mme priorit, alors la premire dans l'ordre du document sera prioritaire (3.1.4) Les travaux se poursuivent en ce qui concerne les attaches smantiques dans un lment grammar (3.1.5) Les variables des lments d'entre peuvent tre xes par les rsultats smantiques d'autres lments d'entre (3.1.6) Les valeurs par dfaut des attributs bargein et bargeintype de l'lment prompt sont dtermins par les proprits bargein et bargeintype (4.1) Prcis qu'un indicateur de temps est un nombre non ngatif qui doit tre suivi par ms ou s . Prcis que les attributs suivants admettent des indicateurs de temps en tant que valeurs : timeout avec l'lment prompt, maxtime (la valeur implicite est dsormais "0s") et connecttimeout avec l'lment transfer, maxtime et finalsilence avec l'lment record. Prcis que les proprits suivantes ont des valeurs d'indicateur de temps : fetchtimeout, completetimeout, incompletetimeout, maxspeechtimeout, interdigittimeout, termtimeout, timeout, fetchaudiodelay, fetchaudiominimum, fetchtimeout ( 4.1, 2.3.6, 2.3.7, 6.1.1, 6.3) L'attribut xml:lang dans un lment prompt ne ncessite pas une gestion multilingue de la part de la plateforme (4.1.1) Une langue de synthse non gre aboutit la gnration d'un vnement error.unsupported.language (4.1.1). Un lment prompt englobant est ncessaire si le texte contient des balises de synthse vocale (4.1.2). Quand un contenu d'invite est dni sans lment prompt explicite, alors les attributs d'invite sont dnis comme indiqu dans le tableau du chapitre 4.1 (4.1.2) Le contenu de remplacement dans l'lment audio (4.1.3). Lorsque l'attribut expr d'un lment audio est valu la valeur ECMAScript "undefined", le contenu de l'lment est ignor. S'il est valu une adresse URI invalide, ou si le format n'est pas gr, etc., alors la stratgie de repli est invoque (4.1.3) Que la plateforme envoie en continu le son d'un lment audio constitue une optimisation (4.1.3)

195 of 212

27/07/2012 22:31

Le langage de balisage extensible vocal (VoiceXML) vers...

http://www.yoyodesign.org/doc/w3c/voicexml20/

Prcis que l'attribut expr d'un lment audio est une expression ECMAScript qui appelle un son enregistr prcdemment dans un lment record, ou qui s'value en l'adresse URI d'une source audio charger (4.1.3) Un lment value autonome est lgale hors d'un lment prompt (4.1.4). Simpli l'valuation de l'attribut expr dans un lment audio de faon ce qu'il ne soit pas trait d'une manire particulire : il s'agit de donnes de type CDATA dans lesquelles les caractres spciaux pour XML n'ont pas besoin d'tre chapps. Il n'est pas trait comme un document SSML ou un fragment de document (4.1.4) Une entre DTMF mise en tampon est eace lorsque l'attribut bargein de l'lment prompt a la valeur "false" (4.1.5). Prcis le comportement selon lequel une interruption se produit pendant une succession d'invites (4.1.5) Prcis que, lorsque l'attribut bargein d'un lment prompt a la valeur "false, aucune entre n'est mise en tampon tandis que l'invite joue, toute entre DTMF dj mise en tampon est eace (4.1.5) L'attribut bargeintype d'un lment prompt s'applique une entre DTMF comme une entre vocale (4.1.5.1) Quand la valeur de l'attribut bargeintype est "speech", l'invite est arrte, sans tenir compte des grammaires actives (4.1.5.1) Quand la valeur de l'attribut bargeintype est "hotword, l'entre qui ne correspond pas une grammaire est ignore, mme pendant la priode indique par l'attribut timeout (4.1.5.1) Les compteurs d'invites sont galement maintenus pour les lments initial dans un formulaire (4.1.6) Dans la slection d'une invite, ds lors que le systme slectionne un lment d'entre donn dans la phase de slection de l'algorithme FIA et que l'algorithme FIA eectue une slection et une mise en le d'attente normales des invites, le compteur d'invites associ l'lment d'entre est incrment (4.1.6) Prcis que chaque lment prompt a sa propre valeur d'expiration et que l'attribut timeout d'un lment prompt a pour valeur implicite la valeur de la proprit timeout au moment o l'invite est mise en le d'attente (4.1.7) Les relations entre la mise en le d'attente des invites et la collecte des entres (4.1.8). Les vnements asynchrones, non apparents l'excution d'une transition (par exemple, un vnement disconnect), sont mis en tampon jusqu' un tat d'attente avant d'tre gnrs (4.1.8) Prcis les relations entre les tats de l'interprteur et l'algorithme FIA, et que l'activation des grammaires et l'attente d'une entre se produisent simultanment la lecture des invites (4.1.8) Prcis que, lorsque l'attribut bargein d'un lment prompt a la valeur "false", l'entre n'est pas collecte, et les tonalits DTMF mises en tampon dans l'tat de transition sont eaces comme dcrit dans le chapitre 4.1.5 (4.1.8) Les plateformes peuvent varier dans la mesure o elles cartent ou non une entre DTMF non correspondante lorsqu'une grammaire ASR correspond avec une entre (4.1.8) Les variables VoiceXML et ECMAScript font partie du mme espace de variables : les variables dclares dans ECMAScript peuvent servir directement dans VoiceXML (5.1). Les noms des variables VoiceXML, y compris les noms des champs, doivent suivre les rgles de nommage ECMAScript ; les dclarations des noms de variable ne peuvent pas contenir de point : le nom de champ a.b est illgal (5.1).

196 of 212

27/07/2012 22:31

Le langage de balisage extensible vocal (VoiceXML) vers...

http://www.yoyodesign.org/doc/w3c/voicexml20/

Les variables VoiceXML et la porte des variables suivent les chanes de porte ECMAScript. Par consquent, l'appel une variable ECMAScript non dclare gnre un vnement error.semantic (5.1.1, 5.1.2) La porte des variables (5.1.2). Prcis la porte des variables, dans l'application et dans le document, dans les documents racines d'application (5.1.2) La porte du dialogue contient les variables des lments de formulaire, non les variables dnies dans chaque lment de formulaire (5.1.2) Seuls certains oprateurs cond ncessitent un chappement (5.1.3). Prcis qu'un document ayant une variable x , mais sans racine d'application dnie, alors la variable peut tre appele par application.x et document.x (5.1.3) Prcis que application.lastresult$ est un tableau ECMAScript (5.1.5) Prcision sur la persistence de la variable d'application lastresult (5.1.5) Les interprtations dans lastresult sont d'abord ranges selon la abilit, puis selon la priorit des portes des grammaires (5.1.5, 2.3.1, 3.1.4) Quand une grammaire DTMF a une correspondance, la variable interpretation de application.lastresult contient la chane numrique qui correspond (5.1.5) Aprs un nomatch, le tableau application.lastresult$ est bien x mais les valeurs dpendent de la plateforme (5.1.5) L'valuation des adresse URI relatives par rapport au document actif (5.2). Prcis que les lments catch se servent de la proprit la plus intrieure de l'lment d'o l'vnement est originaire, et non o l'lment catch est dni (5.2) Le langage VoiceXML ne dnit gnralement pas le moment o les vnements sont gnrs (5.2.1). Les compteurs d'vnements associs aux lment catch sont incrments lorsqu'un vnement se produit avec le mme nom correspondant, entier ou prxe ; cela aecte la slection du gestionnaire de capture avec le compte correct dans le chapitre 5.2.4 (5.2.2) La dnition des attributs event et count de l'lment catch (5.2.2). Aucune limitation inhrente sur l'lment catch, par exemple, dans le cas d'un raccrochage de l'utilisateur (5.2.2). La valeur de l'attribut event d'un lment catch peut tre la chane ".", signiant que tous les vnements sont susceptibles d'tre capturs (5.2.2). Un lment catch sans attribut event dni quivaut l'un dclarant event="." (5.2.2, 5.2.4) Prcis les moments o les compteurs d'vnements des formulaires sont incrments et rinitialiss (5.2.2) L'lment catch s'applique aux lments de formulaire, sauf l'lment block (5.2.2) L'hritage de la capture comme par copie (5.2, 5.2.4). L'algorithme de slection de l'lment catch (5.2.4). Dni la correspondance de prxe comme un correspondance d'atome plutt qu'une correspondance de chane (5.2.4). Dans l'lment catch, un attribut event ayant pour valeur une chane vide est invalide d'un point de vue syntaxique. Pour capturer tous les vnements, on peut omettre l'attribut event, ou lui donner la valeur "." pour ltrer tous les vnements par prxe (5.2.4) Le type d'erreur prdni error.badfetch (5.2.6) Un vnement error.badfetch est suscit tant que le document n'est pas prt pour l'excution. Que l'initialisation des variables fasse partie de l'excution, ou

197 of 212

27/07/2012 22:31

Le langage de balisage extensible vocal (VoiceXML) vers...

http://www.yoyodesign.org/doc/w3c/voicexml20/

non, dpend de la plateforme (5.2.6) Prcision sur les situations dans lesquelles un vnement error.badfetch est suscit. Un navigateur conforme peut galement susciter des vnements dont le nom prolonge celui d'vnements prdnis (5.2.6) Les types d'vnement propres l'application et propres la plateforme devraient suivre la convention de nom de domaine Internet inverse pour viter les conits de nommage (5.2.6) Le protocole HTTPS n'est pas le mme protocole que HTTP (5.2.6) Les erreurs dclenches dans le premier document d'une session, et celles dclenches avant d'entrer dans l'algorithme FIA dans les documents chargs conscutivement sont gres d'une faon propre la plateforme (5.2.6) Supprim la division par 0 comme erreur l'excution, laquelle rsulte dans la gnration d'un vnement error.semantic, le langage ECMAScript ne signalant pas d'erreur (5.2.6) Prcis que l'vnement error.noauthorization est suscit en plus de circonstances que simplement un chec d'authentication la connexion (5.2.6) Prcis que l'vnement error.unsupport.lment n'est gnr que pour les documents VoiceXML 2.0 (5.2.6) L'attribut name d'un lment var dni une variable sans prxe de porte. S'il dnit une variable avec un prxe de porte, alors un vnement error.semantic est suscit (5.3.1) Prcis qu'un vnement error.semantic est suscit en cas de tentative d'assignation d'une variable non dclare. Les proprits des objets ECMAScript objects, par exemple, obj.foo , peuvent tre assignes directement : les tentatives pour les dclarer aboutissent la gnration d'un vnement error.semantic (5.3.2) L'attribut name d'un lment assign doit appeler une variable dj dclare, sinon un vnement error.semantic sera suscit. Par dfaut, la porte dans laquelle la variable se rsoud est la plus proche porte englobante de l'lment actuellement actif. Pour lever les ambiguts, le nom de la variable peut tre prx par un nom de porte (5.3.2) L'attribut namelist d'un lment clear peut dnir des variables autres que les variables d'lment de formulaire qui doivent tre rinitialises (5.3.3) Les appels de variable dans l'attribut namelist de l'lment clear se rsolvent par rapport la porte courante, selon le chapitre 5.1.3 (5.3.3) L'eet d'un lment reprompt dans les lments de capture (5.3.6) Le comportement d'un lment reprompt lorsqu'il est contenu dans un lment catch ayant un lment goto nal (5.3.6) L'algorithme FIA eectue une mise en le d'attente normale des invites aprs l'excution des lments de capture lorsqu'ils se terminent par un lment submit ou return, tout comme un lment goto (5.3.6, annexe C) Prcis qu'un lment reprompt n'a aucun eet en dehors d'un lment catch (5.3.6) L'eet d'une adresse URI dans un lment goto sur les variables de document (5.3.7) Prcis, pour les lments goto, que si des erreurs se produisent au cours de la transition un lment de formulaire, alors l'vnement est gr dans la porte du dialogue (5.3.7) Lorsque l'attribut nextitem, ou expritem, dans un lment goto appelle un lment de formulaire inexistant, alors un vnement error.badfetch est suscit (5.3.7) Les variables dclares dans les langages VoiceXML ou ECMAScript peuvent tre soumises (5.3.8).

198 of 212

27/07/2012 22:31

Le langage de balisage extensible vocal (VoiceXML) vers...

http://www.yoyodesign.org/doc/w3c/voicexml20/

Prcis quelques circonstances dans lesquelles un lment submit peut tre satisfait par des caches intermdiaires (5.3.8) Dans l'lment submit, l'attribut enctype n'est pertinent que si l'attribut method est x "post" (5.3.8) Un lment exit ne gnre pas d'vnement exit (5.3.9) La valeur de l'attribut expr d'un lment exit est une expression ECMAScript (5.3.9) L'excution d'un lment disconnect incite l'interprteur (a) entrer dans l'tat de traitement nal et (b) purger la le d'attente des invites (5.3.11) Aucun attribut type sur l'lment script (5.3.12). L'lment script est valu en mme temps que les lments var et les variables d'lment de formulaire dans un lment form (5.3.12) La dnition de l'attribut charset dans l'lment script (5.3.12) La gestion des lments log dpend de la plateforme (5.3.13) Les attributs label et expr de l'lment log sont optionnels (5.3.13) Revu le prchargement (6.1) L'eet de l'attribut fetchhint (6.1.1) La slection de la politique de mise en cache (6.1.2) La mise en cache suit les rgles d'exactitude du protocole HTTP 1.1 (6.1.2) Prcis qu'il n'existe pas de mcanisme de balisage pour contrler la mise en cache des documents racines d'application (6.1.2.1) Prcis que le premier type d'lment meta est exprim par les attributs name et content, et le second type par les attributs http-equiv et content (6.2.1) Lorsque des valeurs direntes sont dnies au mme niveau pour un lment property, alors le dernier dans l'ordre du document s'applique (6.3) On peut xer les proprits dans les lments d'entre field, mais pas dans les lments d'entre de commande (6.3) Prcis que, si une plateforme dtecte une proprit ayant une valeur illgale, alors elle devrait gnrer un vnement error.semantic (6.3) Le format des proprits propres une plateforme (6.3.1) Les dnitions des proprits des logiciels de reconnaissance vocale completetimeout et incompletetimeout (6.3.2) Les grammaires de commandes universelles sont toujours actives sauf dans le cas d'lments d'entre modaux (6.3.6) Les valeurs des paramtres passs l'lment subdialog sont toujours des donnes (6.4) La dnition des valeurs de dsignation de temps (6.5) Prcis que le format des nombres est celui employ dans la spcication CSS2, et que la valeur des proprits ASR confidencelevel, sensitivity et speedvsaccuracy sont dans ce format (6.5, 6.3.2) Restreint les noms des champs, l'attribut name de l'lment var et l'attribut nextitem de l'lment goto au type NMTOKEN ; augment l'attribut name de l'lment assign comme de type NMTOKEN mais autoris le caractre $ , pour les assignations des variables ctives ; restreint l'attribut namelist de l'lment filled au type NMTOKENS ; augment l'attribut namelist des lments exit, submit, clear et return comme de type NMTOKENS mais autoris le caractre $ , pour les soumissions des variables ctives (annexe B, annexe O) Restreint le modle de contenu de l'lment choice au type PCDATA , et celui des lments grammar ; prcis que l'lment enumerate ne peut pas apparatre dans un autre lment enumerate (annexe B, annexe O, 2.2.4) Prcis que le DTD (conrairement au schma) ne peut pas exprimer correctement

199 of 212

27/07/2012 22:31

Le langage de balisage extensible vocal (VoiceXML) vers...

http://www.yoyodesign.org/doc/w3c/voicexml20/

le fait que l'lment metadata ne puisse pas contenir d'lments provenant d'autres espaces de nommage XML (annexe B) Le DTD dnit l'attribut xmlns de l'lment vxml comme de type FIXED , avec la valeur par dfaut "http://www.w3.org/2001/vxml" (annexe B) Align le DTD et le schma sur le texte, de sorte que l'attribut accept de l'lment choice n'ait pas la valeur implicite "exact", s'il n'est pas dni (annexe B, annexe O) Prcis, dans l'algorithme FIA, qu'une assignation de application.lastresult$ a lieu aprs chaque reconnaissance russie (annexe C) Prcis, dans l'algorithme FIA, les correspondances aux grammaires des lments link l'intrieur du formulaire, ou du menu, courant, et les correspondances aux grammaires des lments choice des menus hors du formulaire, ou du menu, courant (annexe C) Corrig l'algorithme FIA tel que la collecte des grammaires actives n'inclut pas les grammaires des lments dans la chane d'appels de l'lment subdialog (annexe C) Prcis la phase d'initialisation de l'algorithme FIA en ce qui concerne l'initialisation des lments script et des lments de formulaire (annexe C) Prcis que des vnements peuvent tre gnrs en plusieurs points au cours de l'excution de l'algorithme FIA, et que la manire dont ils sont grs dpend de la phase active de l'algorithme FIA (annexe C) Prcis que, dans la phase de collecte de l'algorithme FIA, seules les invites issues des lments d'entre et de l'lment initial sont slectionnes, et leur compteur d'invites incrments. La mise en le d'attente des invites dans un lment block a lieu lors de l'excution de l'lment de formulaire (annexe C) Dans la phase de traitement de l'algorithme FIA, les actions filled ne sont pas seulement dclenches par l'entre d'un nonc, par exemple, elles peuvent aussi tre dclenches quand la valeur de l'attribut maxtime est atteinte au cours de l'excution d'un lment record (annexe C) Prcis l'emploi des divers dlais pour une entre DTMF (annexe D) Si un processeur conforme ne peut pas traiter un lment, ou un attribut, VoiceXML non standard, alors il doit gnrer un vnement error.badfetch (annexe F) Des notes explicatives sur la portabilit de l'utilisation des intgrs et de la prise en charge attendue par les plateformes (annexe P) Le paramtrage des grammaires vocales et DTMF intgres (annexe P). Le passage des paramtres contradictoires au chires intgrs (annexe P). La valeur de rsultat renvoye par le type intgr number (annexe P). Le code montaire non dni si non prononc (annexe P). Seules les grammaires de type "digit" et boolean peuvent tre paramtres (annexe P) La description de la restitution des valeurs intgres au moyen de l'lment say-as (annexe P) Les grammaires vocales et DTMF des lments grammar, dans un lment field avec un type intgr dni, s'ajoutent aux grammaires intgres : elles ne les surclassent pas (annexe P)

Divers
Mis jour les exemples avec l'attribut XML encoding, recommand les attributs du schma et chapp les caractres XML illgaux (<, >, &, etc.) Utilisation des types de mdia temporaires (par exemple, " application/srgs+xml")

200 of 212

27/07/2012 22:31

Le langage de balisage extensible vocal (VoiceXML) vers...

http://www.yoyodesign.org/doc/w3c/voicexml20/

soumis l'approbation de l'IETF Ajout une section dcrivant les origines du langage VoiceXML, et comment il se lie aux autres travaux dans le domaine (1) Dni l'ensemble des formats audio obligatoires pour les lments audio et record (1.2.4). Les capacits des plateformes VoiceXML conformes en ce qui concerne la gestion des grammaires vocales et DTMF, du son, de la synthse vocale, de l'enregistrement et du transfert (1.2.5). Les plateformes devraient s'identier avec l'en-tte HTTP User-Agent (1.2.5). Les types intgrs et les grammaires fondamentales sont informatives et non normatives (2.3.1, 2.3.1.1, 2.3.1.2, annexe P) Mise jour du chapitre en vue de son alignement sur la spcication SRGS 1.0 (3) La description de la faon dont les interprtations smantiques sont associes aux variables de formulaire (3.1.6). Mise jour du chapitre en vue de son alignement sur la spcication SSML 1.0 (4) Rserv la variable d'espace de nommage _$ pour un usage interne (5.1). L'emploi de variables et d'lments de formulaire ayant les noms session , application , document et dialog n'est pas recommand (5.1.2). Ajout une recommandation selon laquelle les informations de mtadonne s'expriment dans un lment metadata plutt que dans un lment meta ; supprim les informations de mtadonne recommandes utilisant l'lment meta ; ajout les informations de mtadonne recommandes utilisant le schma RDF et les proprits Dublin Core (6.2) Chang le comportement de conformit lorsque l'interprteur rencontre une proprit qu'il ne peut traiter : il ne doit pas (au lieu de ne devrait pas ) gnrer d'vnement error.unsupported.property et doit (au lieu de devrait ) ignorer la proprit (6.3.1) Le DTD est maintenant informatif au lieu de normatif (annexe B) L'ensemble des formats audio obligatoires (annexe E). Remplac "audio/wav" par "audio/x-wav" dans les exemples, et ajout une remarque selon laquelle le type de mdia "audio/wav" sera adopt lorsqu'il sera ociellement enregistr auprs de l'IETF (annexe E) Rvis la dnition d'un processeur VoiceXML conforme, comprenant l'obligation de grer la syntaxe et la smantique de tous les lments dcrits dans ce document (annexe F). La section sur les documents conformes rfrence les contraintes de schma plutt que de DTD (annexe F) La dclaration de conformit rete le fait que le DTD est informatif, mais que le schma est normatif. Un document conforme doit dnir l'espace de nommage VoiceXML sur l'lment racine. Une dclaration version="2.0" doit galement y tre prsente. On recommande d'utiliser l'attribut xsi:schemaLocation pour indiquer l'emplacement du schma VoiceXML. La dclaration DOCTYPE est optionnelle. Le comportement d'un processeur VoiceXML n'est pas dni lorsqu'il rencontre des documents dsignant des lments racines non-VoiceXML (annexe F) Rvis la description de la faon dont VoiceXML peut satisfaire aux exigences et aux problmes d'accessibilit (annexe H) Une annexe sur la rutilisabilit (annexe K). Ajout une annexe des rfrences (annexe M) Ajout une annexe dcrivant le type de mdia et le suxe de chier VoiceXML, y compris un lieu vers la note de l'IETF sur l'enregistrement du type de mdia VoiceXML (annexe N) Dnition du schma normatif de VoiceXML. Elle fait appel divers autres

201 of 212

27/07/2012 22:31

Le langage de balisage extensible vocal (VoiceXML) vers...

http://www.yoyodesign.org/doc/w3c/voicexml20/

schmas pour adapter les dnitions des schmas de base dans les spcications des grammaires et de la synthse vocale (annexe O) Vri le schma au moyen de XML Spy 4.4, XSV (version de juin 2002) et Xerces 2 (versions Java et C++) (annexe O) Ajout un lien an de complter l'ensemble des schmas ncessaires VoiceXML 2.0 (annexe O)

Annexe K : La rutilisabilit
K.1 Les composants de dialogue rutilisables
Dnition : Un fragment d'application conditionn, destin tre invoqu par des applications arbitraires ou par d'autres composants de dialogue rutilisables. Un composant de dialogue rutilisable (RDC) encapsule le code d'une interaction avec l'appelant. Les composants de dialogue rutilisables orent des fonctionnalits prt--servir pr-empaquetes qui permettent aux dveloppeurs de construire des applications rapidement, en fournissant, par dfaut, un paramtrage et un comportement normaliss. Ils isolent les dveloppeurs des complexits associes la construction d'un dialogue vocal able, par exemple, l'interprtation du score de abilit, les mcanismes de rcupration des erreurs, la gnration des invites, etc. Le dveloppeur peut, si ncessaire, personnaliser ce comportement an de fournir les invites, le vocabulaire, le paramtrage des nouvelles tentatives, etc., qui soient propres l'application. Dans cette version du langage VoiceXML, les seuls mcanismes d'appel de composants authentiquement rutilisables sont reprsents par les lments subdialog et object. Les composants appels de cette faon obissent un modle similaire aux sous-routines des langages de programmation : le composant est congur par un ensemble bien dtermin de paramtres qui lui sont passs, le composant a une interaction contrainte relativement l'application appelante, le composant renvoie un rsultat bien dni et le contrle revient automatiquement au point d'o le composant a t appel. Le modle runit tous les avantages signicatifs de modularit, de rentre et de facilit de remploi oerts par les sous-routines. Sur les deux types de composant, seuls les composants subdialog sont assurs d'tre aussi portables que le langage VoiceXML lui-mme. Par contre, les composants object peuvent empaqueter des fonctionnalits rutilisables volues qui n'ont pas encore t introduites dans la norme.

K.2 Les gabarits et les chantillons


Bien que les composants de dialogue rutilisables possdent les avantages de modularit, de rentre et de facilit de remploi dcrits ci-dessus, ces composants ont pour inconvnient de demander une conception trs soigneuse, en gardant une vue sur la rutilisation, et mme pour la conception la plus attentionne, le dveloppeur de l'application est susceptible de rencontrer des situations pour lesquelles le composant ne pourra pas tre facilement congur pour tenir les conditions requises par l'application. En outre, alors que l'interaction contrainte d'un composant avec son environnement d'appel est susceptible de permettre un concepteur de crer un composant fonctionnant de manire prvisible dans des
202 of 212 27/07/2012 22:31

Le langage de balisage extensible vocal (VoiceXML) vers...

http://www.yoyodesign.org/doc/w3c/voicexml20/

environnements disparates, elle peut aussi faire que l'interaction de l'utilisateur avec le composant apparaisse dsolidarise du reste de l'application. Auxquels cas, le dveloppeur de l'application peut vouloir rutiliser un code source VoiceXML sous forme d'chantillons et de gabarits, les chantillons tant conus pour tre facilement personnalisables. Un tel code s'adaptera et s'intgrera plus aisment une application particulire, aux dpends de la modularit et de la rentre. On peut crer ces gabarits et ces chantillons en sparant le code VoiceXML intressant du dialogue principal, puis en distribuant ce code par copies utiliser dans d'autres dialogues. Cette forme de rutilisabilit permet l'utilisateur du code VoiceXML copi de le modier au besoin et de continuer utiliser indniment la version modie. Le langage VoiceXML encourage cette forme de rutilisabilit en prservant la sparation d'tat entre les lments form. De ce point de vue, les langages VoiceXML et [HTML] sont similaires. Un tableau HTML peut se copier d'une page HTML une autre, parce que le tableau peut s'acher indpendamment du contexte prcdent ou suivant l'lment <table>. Mme si cette approche peut sacrier les possibilits de paramtrage, la modularit et le suivi, elle a l'avantage d'tre simple, rapide et minemment personnalisable.

Annexe L : Remerciements
Cette spcication du W3C est fonde sur VoiceXML 1.0, soumis par le Forum VoiceXML en mai 2000. Les auteurs du Forum VoiceXML taient : Linda Boyer, IBM ; Peter Danielsen, Lucent Technologies ; Jim Ferrans, Motorola ; Gerald Karam, AT&T ; David Ladd, Motorola ; Bruce Lucas, IBM ; Kenneth Rehor, Lucent Technologies. Cette version a t rdige par les participants du groupe de travaile Navigateur vocal du W3C. Les personnes suivantes ont contribu notablement la rdaction de cette spcication : Paolo Baggia, Loquendo Daniel C. Burnett, Nuance Communications Emily Candell, Comverse Jerry Carter, expert invit Deborah Dahl, expert invit Peter Danielsen, Lucent (jusqu' octobre 2002) Martin Dragomirecky, Cisco Jim Ferrans, Motorola Andrew Hunt, ScanSoft Gerald Karam, AT&T Dave Ladd, Dynamicsoft Paul Lamere, Sun Microsystems Bruce Lucas, IBM Scott McGlashan, HP Mitsuru Oshima, General Magic Brad Porter, Tellme Gavriel Raanan, NMS Communications Ken Rehor, Vocalocity

203 of 212

27/07/2012 22:31

Le langage de balisage extensible vocal (VoiceXML) vers...

http://www.yoyodesign.org/doc/w3c/voicexml20/

Steph Tryphonas, Tellme Le groupe de travail voudrait remercier Dave Raggett et Jim Larson pour leur inestimable soutien.

Annexe M : Rfrences M.1. Les rfrences normatives


[CSS2] La spcication des feuilles de style en cascade (CSS2) , Bos et al. Recommandation du W3C, mai 1998 Voir http://www.w3.org/TR/REC-CSS2/ [ECMASCRIPT] La norme ECMA-262 : spcication du langage ECMAScript , Standard ECMA-262, dcembre 1999. Voir http://www.ecma-international.org/publications/standards/Ecma-262.htm [RFC1521] MIME (Multipurpose Internet Mail Extensions) 1ere partie : les mcanismes de dnition et de description du format des corps des message Internet , IETF RFC 1521, 1993 Voir http://www.ietf.org/rfc/rfc1521.txt [RFC2396] Les identicateurs de ressource uniformes (URI) : la syntaxe gnrique , IETF RFC 2396, 1998. Voir http://www.ietf.org/rfc/rfc2396.txt [RFC2616] Le protocole de transfert hypertexte - HTTP/1.1 , IETF RFC 2616, 1999. Voir http://www.ietf.org/rfc/rfc2616.txt [RFC2806] Les adresse URL pour les appels tlphoniques , IETF RFC 2806, 2000. Voir http://www.ietf.org/rfc/rfc2806.txt [RFC3066] Les tiquettes pour l'identication des langues , IETF RFC 3066, 2001. Remarquez que le langage [XML] a adopt RFC3066 au travers d'un errata en date du 2001-02-22. Le document RFC3066 remplace le document [RFC1766]. Voir http://www.ietf.org/rfc/rfc3066.txt [SCHEMA1] Le schma XML 1ere partie : les structures , Thompson et al. Recommandation du W3C, mai 2001. Voir http://www.w3.org/TR/2001/REC-xmlschema-1-20010502/ [SRGS] La spcication des grammaires de reconnaissance vocale version 1.0 , Hunt et McGlashan. Recommandation propose du W3C, dcembre 2003. Voir http://www.w3.org/TR/2003/PR-speech-grammar-20031218/ [SSML] Le langage de balisage de la synthse vocale version 1.0 , Burnett, Walker et Hunt. Recommandation candidate du W3C, dcembre 2003. Voir http://www.w3.org/TR/2003/CR-speech-synthesis-20031218/

204 of 212

27/07/2012 22:31

Le langage de balisage extensible vocal (VoiceXML) vers...

http://www.yoyodesign.org/doc/w3c/voicexml20/

[UNICODE] Le standard Unicode , The Unicode Consortium. Voir http://www.unicode.org/unicode/standard/standard.html [XML] Le langage de balisage extensible (XML) 1.0 , Bray et al. Recommandation du W3C. Voir http://www.w3.org/TR/2000/REC-xml-20001006 [XML-BASE] XML Base , J. Marsh, rdacteur, Recommandation du W3C, juin 2001. Voir http://www.w3.org/TR/2001/REC-xmlbase-20010627/. [XMLNAMES] Les espaces de nommage dans XML , Bray et al. Recommandation du W3C, janvier 1999. Voir http://www.w3.org/TR/1999/REC-xml-names-19990114/

M.2. Les rfrences informatives


[ATAGIO] Les directives pour l'accessibilit des outils de cration 1.0 , Treviranus et al. Recommandation du W3C, fvrier 2000. Voir http://www.w3.org/TR/2000/REC-ATAG10-20000203/ [DC] L'initiative Dublin Core pour les mtadonnes , un modle de description de contenu simple pour les ressources lectroniques. Voir http://dublincore.org/ [HTML] La spcication HTML 4.01 , Dave Raggett et al. Recommandation du W3C, dcembre 1999. Voir http://www.w3.org/TR/1999/REC-html401-19991224/ [IANA] Les jeux de caractres IANA , IANA. Voir http://www.iana.org/assignments/character-sets [ISO4217] ISO 4217:2001 Codes pour la reprsentation des monnaies et des fonds , ISO, 2001 Voir http://www.iso.ch/ [JSAPI] Java Speech API , Sun Microsystems, Inc. Voir http://java.sun.com/products/java-media/speech/index.jsp [JSGF] JSpeech Grammar Format , Andrew Hunt, Note du W3C, juin 2000. Voir http://www.w3.org/TR/2000/NOTE-jsgf-20000605/ [NLSML] Le langage de balisage smantique des langues naturelles du cadre des interfaces vocales , Deborah A. Dahl. Brouillon du W3C, novembre 2000 Voir http://www.w3.org/TR/2000/WD-nl-spec-20001120/ [RDF-SYNTAX] La spcication du modle et de la syntaxe du cadre de description des ressources (RDF) , Ora Lassila et Ralph R.Swick. Recommandation du W3C, fvrier 1999. Voir http://www.w3.org/TR/REC-rdf-syntax/
205 of 212 27/07/2012 22:31

Le langage de balisage extensible vocal (VoiceXML) vers...

http://www.yoyodesign.org/doc/w3c/voicexml20/

[RDF-SCHEMA] La spcication du schma du cadre de description des ressources (RDF) 1.0 , Dan Brickley et R.V. Guha. Recommandation candidate du W3C, mars 2000. Voir http://www.w3.org/TR/2000/CR-rdf-schema-20000327/ [RFC1766] Les tiquettes pour l'identication des langues , IETF RFC 1766, 1995 Remarquez que le langage [XML] a adopt RFC3066 au travers d'un errata en date du 2001-02-22. Le document [RFC3066] remplace le document RFC1766. Voir http://www.ietf.org/rfc/rfc1766.txt [RFC2119] Les mots-cls utiliser dans les documents RFC pour indiquer les niveaux d'obligation , IETF RFC 2119, 1997. Voir http://www.ietf.org/rfc/rfc2119.txt [RFC2361] Les registres des codecs WAVE et AVI , IETF RFC 2361, 1998. Voir http://www.ietf.org/rfc/rfc2361.txt [SISR] L'interprtation smantique de la reconnaissance vocale , Luc Van Tichelen. Brouillon du W3C, avril 2003. Voir http://www.w3.org/TR/2003/WD-semantic-interpretation-20030401/ [UAAGIO] Les directives pour l'accessibilit des agents utilisateurs 1.0 , Jacobs et al. Recommandation propose du W3C, octobre 2002. Voir http://www.w3.org/TR/2002/PR-UAAG10-20021016/ [VOICEXML-1.0] Le langage de balisage extensible de la voix 1.0 , Boyer et al, Note du W3C, mai 2000. Voir http://www.w3.org/TR/2000/NOTE-voicexml-20000505/ [WAI-WEBCONTENT] Les directives pour l'accessibilit du contenu Web 1.0 , Chisholm et al. Recommandation du W3C, mai 1999 Voir http://www.w3.org/TR/WAI-WEBCONTENT/ [XAG] Les directives pour l'accessibilit du langage XML , Dardailler et al. Brouillon du W3C, octobre 2002 Voir http://www.w3.org/TR/xag.html

Annexe N : Le type de mdia et le suxe de chier


Le groupe de travail Navigateur vocal du W3C a dpos, auprs de l'IETF, une demande d'enregistrement pour un type de mdia du langage VoiceXML. Le type de mdia demand est : application/voicexml+xml . Le groupe de travail Navigateur vocal du W3C a adopt la convention d'utiliser le suxe de nom de chier .vxml pour les documents VoiceXML.

Annexe O : La dnition du schma XML du langage VoiceXML


Cette section est normative.

206 of 212

27/07/2012 22:31

Le langage de balisage extensible vocal (VoiceXML) vers...

http://www.yoyodesign.org/doc/w3c/voicexml20/

La dnition du schma XML du langage VoiceXML se trouve : http://www.w3.org /TR/voicexml20/vxml.xsd . Le schma VoiceXML dpend d'autres schmas dnis dans l'espace de nommage VoiceXML : vxml-datatypes.xsd : la dnition des types de donnes utiliss dans le schma VoiceXML vxml-attribs.xsd : la dnition des attributs et groupes d'attributs utiliss dans le schma VoiceXML vxml-grammar-restriction.xsd : ce schma appelle le schma sans espace de nommage de la spcication des grammaires de reconnaissance vocale 1.0 [SRGS], et il restreint certaines de ses dnitions pour leur incorporation dans l'espace de nommage VoiceXML. vxml-grammar-extension.xsd : ce schma appelle le schma vxml-grammarrestriction.xsd , et il augmente certaines de ses dnitions pour VoiceXML. vxml-synthesis-restriction.xsd : ce schma appelle le schma sans espace de nommage du langage de balisage de synthse vocale 1.0 [SSML], et il augmente comme il restreint certaines de ses dnitions pour leur incorporation dans l'espace de nommage VoiceXML. vxml-synthesis-extension.xsd : ce schma appelle le schma vxml-synthesisrestriction.xsd , et il augmente certaines de ses dnitions pour VoiceXML. Le jeu complet des schmas du cadre des interfaces vocales exigs pour VoiceXML 2.0 est disponible : http://www.w3.org/TR/2004/REC-voicexml20-20040316/vxmlschema.zip .

Annexe P : Les types des grammaires intgres


L'attribut type de l'lment field dans le chapitre 2.3.1 sert indiquer une grammaire intgre de l'un des types fondamentaux. La prise en charge par la plateforme des grammaires intgres fondamentales est optionnelle. Si une plateforme gre les types intgrs, alors elle doit suivre la description donne dans cette annexe, d'aussi prt que possible, y compris tous les grammaires intgres d'une langue donne. Chaque type intgr suit une convention pour le format de la valeur renvoye. Ces valeurs sont indpendantes de la langue et de l'implmentation. Le type renvoy pour les champs intgrs est une chane, sauf pour le type de champ boolean. Pour accder au rsultat rel de la reconnaissance, l'auteur peut appeler la variable ctive nom$.utterance de l'lment field. Autrement, le dveloppeur peut accder au tableau application.lastresult$, dans lequel la variable application.lastresult$.interpretation a la mme valeur que la variable application.lastresult$.utterance. Les types intgrs sont dnis de telle faon qu'un dveloppeur d'application VoiceXML peut compter sur une certaine cohrence de l'entre d'utilisateur travers les implmentations. Cela permet aux messages d'assistance et d'autres invites d'tre indpendants de la plateforme de plusieurs faons. Par exemple, la grammaire de type boolean devrait admettre au moins les rponses oui et non en franais, mais chaque implmentation est libre d'ajouter d'autres choix comme ouais et nan .

207 of 212

27/07/2012 22:31

Le langage de balisage extensible vocal (VoiceXML) vers...

http://www.yoyodesign.org/doc/w3c/voicexml20/

Au cas o une application exige un comportement particulier ou un comportement dirent de celui dni pour un type intgr, elle devrait utiliser une grammaire de champ explicite. Voici des circonstances dans lesquelles une application doit fournir une grammaire de champ explicite, pour assurer la portabilit de l'application avec une interface d'utilisateur cohrente : Une plateforme n'est pas tenue d'implmenter une grammaire qui accepte toutes les valeurs possibles susceptibles d'tre renvoyes par un type intgr. Par exemple, la grammaire intgre de type currency dnit le formatage de la valeur renvoye pour un trs large ventail de monnaies ([ISO4217]). La plateforme n'est pas oblige de gre une entre prononce qui comprend l'une des monnaies mondiales, dans la mesure o cela peut aecter ngativement l'exactitude de la reconnaissance. De mme, la grammaire intgre number peut renvoyer des nombres en virgule ottante, positifs ou ngatifs, mais la grammaire n'est pas oblige de reconnatre tous les nombres en virgule ottante possibles prononcs. Les grammaires intgres sont galement limites dans leur capacit manipuler une entre prononce insusamment dnie. Par exemple, on ne peut rsoudre 20 peso en un code de monnaie particulier [ISO4217], car le peso est le nom de la monnaie de nombreux pays. Auxquels cas, la plateforme doit renvoyer un code de monnaie particulier en fonction de la langue, ou elle peut omettre le code de monnaie. Tous les types intgrs doivent grer la fois les entres vocales et DTMF. L'ensemble des entres prononces acceptes pour chaque type intgr dpend de la plateforme, et il variera selon la langue. La valeur renvoye par un type intgr peut tre lue au moyen de l'lment say-as. Le langage VoiceXML augmente l'lment say-as dans [SSML] en lui ajoutant les valeurs de l'attribut interpret-as, qui correspondent chaque type intgr. Ces valeurs prennent la forme vxml:type , o type est un type intgr. La restitution prcise des types intgrs est propre la plateforme, et elle variera selon la langue. Les types intgrs sont les suivants : Les entres comprennent les phrases armatives et ngatives appropries dans la langue courante. DTMF 1 est armatif tandis que DTMF 0 est ngatif. Le rsultat est la valeur ECMAScript "true" pour l'armatif et "false" pour le ngatif. La valeur sera soumise en tant que chane true ou false . Si la valeur de champ est utilise ensuite dans un lment say-as avec un attribut interpret-as x "vxml:boolean", elle sera prononce comme une armation, ou une ngation, approprie dans la langue courante. Les entres prononces valides comprennent les phrases qui indiquent une date, incluant le jour, le mois et l'anne. Les entres DTMF se composent de quatre chires pour Tableau 66 : Les types intgrs
208 of 212 27/07/2012 22:31

boolean

date

Le langage de balisage extensible vocal (VoiceXML) vers...

http://www.yoyodesign.org/doc/w3c/voicexml20/

l'anne, suivis de deux chires pour le mois et de deux chires pour le jour. Le rsultant est une chane de longueur xe de format aaaammjj , par exemple, 20000704 . Si l'anne n'est pas indique, le composant yyyy est renvoy comme tant ???? , si c'est le mois, le composant mm est renvoy comme ?? , et si c'est le jour, jj est renvoy comme ?? . Si la valeur est utilise ensuite dans un lment say-as avec un attribut interpret-as x "vxml:date", elle sera prononce comme une date approprie dans la langue courante. Les entres prononces ou DTMF valides comprennent un ou plusieurs chires, de 0 9. Le rsultat est une chane de chires. Si le rsultat est utilis ensuite dans un lment say-as avec un attribut interpret-as x "vxml:digits", il sera prononc comme une squence de chires approprie dans la langue courante. Un utilisateur peut dire, par exemple, un neuf deux sept , mais pas dix-neuf cent vingt-sept . Une plateforme peut grer des constructions comme deux (deux fois cinq) huit .

digits

Les entres prononces valides comprennent les phrases qui indiquent une quantit montaire. Pour une entre DTMF, l'toile * fera oce de point dcimal. Le rsultat est une chane dont le format est UUUmm.nn , o UUU reprsente les trois caractres de l'indicateur montaire, selon le standard ISO 4217 [ISO4217], ou currency mm.nn , si l'utilisateur ne dit pas l'unit montaire ou si celle-ci ne peut pas tre dtermine avec abilit (par exemple, dollar et peso sont ambigus). Si le champ est utilis ensuite dans un lment say-as avec un attribut interpret-as x "vxml:currency", il sera prononc comme une quantit montaire approprie dans la langue courante. Les entres prononces valides comprennent les phrases qui indiquent des nombres, tel que cent vingt-sept , ou cinq point trois . Les entres DTMF valides comprennent les nombres positifs saisis en utilisant les touches de chires et l'toile * pour reprsenter le sparateur dcimal. Le rsultat est une chane de chires, de 0 9, qui peut inclure, en option, un point dcimal ( . ) et/ou un signe plus + ou - . Le langage ECMAScript convertit automatiquement les chanes rsultats en valeurs numriques utilises dans les expressions numriques. Le rsultat ne doit pas contenir de zro de tte (ce qui le ferait interprter comme un nombre octal par ECMAScript). Si le champ est utilis ensuite dans un lment say-as avec un attribut interpret-as x "vxml:number", il sera prononc comme un nombre appropri dans la langue courante.

number

209 of 212

27/07/2012 22:31

Le langage de balisage extensible vocal (VoiceXML) vers...

http://www.yoyodesign.org/doc/w3c/voicexml20/

phone

Les entres prononces valides comprennent les phrases qui indiquent un numro de tlphone. L'toile DTMF * reprsente x . Le rsultat est une chane contenant un numro de tlphone compos d'une chane de chires contenant, en option, le caractre x , lequel indique un numro de tlphone avec une extension. Pour l'Amrique du Nord, on aurait, par exemple, 8005551234x789 . Si le champ est utilis ensuite dans un lment say-as avec un attribut interpret-as x "vxml:phone", il sera prononc comme un numro de tlphone appropri dans la langue courante. Les entres prononces valides comprennent les phrases qui indiquent une heure, incluant les heures et les minutes. Le rsultat est une chane compose de cinq caractres dans le format hhmmx , o x prend la valeur a pour AM, p pour PM, h pour une heure sur 24 heures ou ? pour indiquer une heure ambigu. Il peut y avoir une entre via DTMF. En l'absence de convention DTMF pour indiquer AM/PM, le rsultat se terminera toujours par h ou ? . Si le champ est utilis ensuite dans un lment say-as avec un attribut interpret-as x "vxml:time", il sera prononc comme une heure approprie dans la langue courante.

time

Un exemple d'lment field avec un type de grammaire intgre :


<field name="repas_dietetique" type="boolean"> <prompt> Voulez-vous un repas dittique sur ce vol ? </prompt> <help> Dittique signifie moins de 10 grammes de lipides, et moins de 250 calories. </help> <filled> <prompt> J'ai entendu <emphasis><say-as interpret-as="vxml:boolean"> <value expr="repas_dietetique"/></say-as></emphasis>. </prompt> </filled> </field>

Dans cet exemple, le type boolean indique que les entres auront la forme d'armations ou de ngations diverses. La valeur rellement place dans le champ sera soit "true", soit "false". Le champ sera lu en se servant de la rponse approprie, armative ou ngative, faite dans les invites. Dans l'exemple suivant, le type digits indique que l'entre prendra la forme de chires prononcs ou saisis. Le rsultat est stock comme une chane et restitu comme chires en utilisant un lment say-as dont l'attribut interpret-as a la valeur "vxml:digits", c'est--dire un deux trois , et non pas cent vingt-trois . L'action filled teste le champ an de vrier s'il a 12 chires. Dans le cas contraire,

210 of 212

27/07/2012 22:31

Le langage de balisage extensible vocal (VoiceXML) vers...

http://www.yoyodesign.org/doc/w3c/voicexml20/

l'utilisateur entend le message d'erreur :


<field name="ticket_num" type="digits"> <prompt> Lisez les 12 chiffres du numro de votre ticket. </prompt> <help>Le nombre 12 chiffres se trouve en bas gauche.</help> <filled> <if cond="num_ticket.length != 12"> <prompt> Dsol, je n'ai pas entendu les 12 chiffres. </prompt> <assign name="num_ticket" expr="undefined"/> <else/> <prompt>J'ai entendu <say-as interpret-as="vxml:digits"> <value expr="num_ticket"/></say-as> </prompt> </if> </filled> </field>

Les grammaires intgres des types boolean et digits peuvent se paramtrer. On le fait en appelant explicitement les grammaires intgres au moyen d'un systme d'adresse URI builtin propre la plateforme et d'une syntaxe de requte de style URI de la forme type?paramtre=valeur , dans l'attribut src d'un lment grammar ou bien dans l'attribut type d'un lment field, par exemple :
<grammar src="builtin:dtmf/boolean?y=7;n=9"/> <field type="boolean?y=7;n=9"> <prompt> Si c'est exact, dites oui, ou pressez sept, sinon dites non, ou pressez neuf. </prompt> </field> <field type="digits?minlength=3;maxlength=5"> <prompt>Veuillez saisir votre code d'authentification</prompt> </field>

Dans lequel, l'lment grammar paramtre la grammaire DTMF intgre, le premier lment field paramtre la grammaire DTMF intgre (la grammaire vocale sera active normalement) et le second lment field paramtre la fois les grammaires intgres vocale et DTMF. Les paramtres indnis pour un type de grammaire donn seront ignors, par exemple, builtin:grammar/boolean?y=7 . Les grammaires intgres de type digits et boolean peuvent se paramtrer comme suit : Une chane d'au moins n chires. Applicable aux grammaires vocale et DTMF. digits?minlength=n Si minlength entre en conit avec l'attribut length ou bien l'attribut maxlength, alors un vnement error.badfetch est suscit. Tableau 67 : Le paramtrage des grammaires de type digit et boolean

211 of 212

27/07/2012 22:31

Le langage de balisage extensible vocal (VoiceXML) vers...

http://www.yoyodesign.org/doc/w3c/voicexml20/

Une chane d'au plus n chires. Applicable aux grammaires vocale et DTMF. digits?maxlength=n Si maxlenght entre en conit avec l'attribut length ou bien l'attribut minlength, alors un vnement error.badfetch est suscit. Une chane d'exactement n chires. Applicable aux grammaires vocale et DTMF. Si length entre en conit avec l'attribut minlength ou bien l'attribut maxlength, alors un vnement error.badfetch est suscit. Une grammaire qui traite la touche d comme une rponse armative. Applicable seulement la grammaire DTMF. Une grammaire qui traite la touche d comme une rponse ngative. Applicable seulement la grammaire DTMF.

digits?length=n

boolean?y=d

boolean?n=d

Remarquez que l'on peut indiquer plusieurs paramtres, spars par un caractre ; , comme illustr prcdemment. Lorsqu'un lment grammar, avec un attribut mode x "voice" (la valeur implicite), est dni dans un lment field, la grammaire s'ajoute la grammaire vocale par dfaut implique par l'attribut type de l'lment field. De la mme faon, lorsqu'un lment grammar avec un attribut mode x "dtmf" est dni dans un lment field, la grammaire s'ajoute la grammaire DTMF par dfaut de l'lment field. Table des matires

212 of 212

27/07/2012 22:31

S-ar putea să vă placă și