Documente Academic
Documente Profesional
Documente Cultură
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.
1 of 212
27/07/2012 22:31
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.
2 of 212
27/07/2012 22:31
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 .
3 of 212
27/07/2012 22:31
http://www.yoyodesign.org/doc/w3c/voicexml20/
4 of 212
27/07/2012 22:31
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
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
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
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
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.
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
http://www.yoyodesign.org/doc/w3c/voicexml20/
10 of 212
27/07/2012 22:31
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).
11 of 212
27/07/2012 22:31
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.
12 of 212
27/07/2012 22:31
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.
13 of 212
27/07/2012 22:31
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).
14 of 212
27/07/2012 22:31
http://www.yoyodesign.org/doc/w3c/voicexml20/
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
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
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
http://www.yoyodesign.org/doc/w3c/voicexml20/
lment record
Objectif
Chapitre
17 of 212
27/07/2012 22:31
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>
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.
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>
19 of 212
27/07/2012 22:31
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
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
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
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.
23 of 212
27/07/2012 22:31
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>
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
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 .
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
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).
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.
27 of 212
27/07/2012 22:31
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.
record
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
http://www.yoyodesign.org/doc/w3c/voicexml20/
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
30 of 212
27/07/2012 22:31
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
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
http://www.yoyodesign.org/doc/w3c/voicexml20/
<filled> <if cond="(type_carte == 'amex' || type_carte =='american express') && 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' && type_carte !='american express' && 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 < 1 || mm > 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
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
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.
35 of 212
27/07/2012 22:31
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' && pays == undefined"> <assign name="pays" expr="'France'"/> </if> </filled> </field>
36 of 212
27/07/2012 22:31
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
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
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.
39 of 212
27/07/2012 22:31
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
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
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.
42 of 212
27/07/2012 22:31
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)
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
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.
dtmf
accept
next
expr
event
44 of 212
27/07/2012 22:31
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
http://www.yoyodesign.org/doc/w3c/voicexml20/
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>
46 of 212
27/07/2012 22:31
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).
47 of 212
27/07/2012 22:31
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 .
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
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 < 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.
name
expr
cond
type
slot
50 of 212
27/07/2012 22:31
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
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
http://www.yoyodesign.org/doc/w3c/voicexml20/
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
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
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
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.
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
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
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
58 of 212
27/07/2012 22:31
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
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
60 of 212
27/07/2012 22:31
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
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>
62 of 212
27/07/2012 22:31
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
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
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>
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
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
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.
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
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
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
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 :
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
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.
72 of 212
27/07/2012 22:31
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
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
http://www.yoyodesign.org/doc/w3c/voicexml20/
aaiexpr
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
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
Il y a eu une tentative de transfert de connection.disconnect.transfer l'appelant sur une autre ligne et elle ne reviendra pas.
76 of 212
27/07/2012 22:31
http://www.yoyodesign.org/doc/w3c/voicexml20/
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
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
connection.disconnect.hangup
Tableau 21 : Les rsultats d'un transfert de type pont avant l'tablissement de la connexion
78 of 212 27/07/2012 22:31
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"
---
"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
Tableau 22 : Les rsultats d'un transfert de type pont aprs tablissement de la connexion
79 of 212 27/07/2012 22:31
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
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
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
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
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>
84 of 212
27/07/2012 22:31
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
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.
86 of 212
27/07/2012 22:31
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
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
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
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])
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
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
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
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
93 of 212
27/07/2012 22:31
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
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
95 of 212
27/07/2012 22:31
http://www.yoyodesign.org/doc/w3c/voicexml20/
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.
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>
97 of 212
27/07/2012 22:31
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>
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.
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
http://www.yoyodesign.org/doc/w3c/voicexml20/
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
"eau"
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.
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
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
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
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
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
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.
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.
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
107 of 212
27/07/2012 22:31
http://www.yoyodesign.org/doc/w3c/voicexml20/
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])
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.
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.
http://www.yoyodesign.org/doc/w3c/voicexml20/
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
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
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.
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
http://www.yoyodesign.org/doc/w3c/voicexml20/
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.
speech
112 of 212
27/07/2012 22:31
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.
113 of 212
27/07/2012 22:31
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
http://www.yoyodesign.org/doc/w3c/voicexml20/
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
http://www.yoyodesign.org/doc/w3c/voicexml20/
<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.
116 of 212
27/07/2012 22:31
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
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
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
119 of 212
27/07/2012 22:31
http://www.yoyodesign.org/doc/w3c/voicexml20/
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 .
120 of 212
27/07/2012 22:31
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
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.
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 < , <= , etc.). Les appels des variables s'inscrivent dans la porte englobante la plus proche selon la
122 of 212
27/07/2012 22:31
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.
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
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 < 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
http://www.yoyodesign.org/doc/w3c/voicexml20/
126 of 212
27/07/2012 22:31
http://www.yoyodesign.org/doc/w3c/voicexml20/
<throw event="com.att.portail.machine"/>
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.
127 of 212
27/07/2012 22:31
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
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
129 of 212
27/07/2012 22:31
http://www.yoyodesign.org/doc/w3c/voicexml20/
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
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
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>
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
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.
http://www.yoyodesign.org/doc/w3c/voicexml20/
maxspeechtimeout
oui
Les plateformes particulires pourront prsenter des invites par dfaut direntes.
133 of 212
27/07/2012 22:31
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
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).
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.
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
136 of 212
27/07/2012 22:31
http://www.yoyodesign.org/doc/w3c/voicexml20/
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
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
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.
138 of 212
27/07/2012 22:31
http://www.yoyodesign.org/doc/w3c/voicexml20/
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
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.
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
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
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.
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
http://www.yoyodesign.org/doc/w3c/voicexml20/
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
143 of 212
27/07/2012 22:31
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.
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
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.
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
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 .
146 of 212
27/07/2012 22:31
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
147 of 212
27/07/2012 22:31
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
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.
149 of 212
27/07/2012 22:31
http://www.yoyodesign.org/doc/w3c/voicexml20/
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
fetchhint
maxage
maxstale
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
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.
152 of 212
27/07/2012 22:31
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
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.
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
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>
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.
155 of 212
27/07/2012 22:31
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>
156 of 212
27/07/2012 22:31
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>
157 of 212
27/07/2012 22:31
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.
confidencelevel
sensitivity
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
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.
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
bargein
bargeintype
timeout
audiofetchhint
audiomaxage
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
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
163 of 212
27/07/2012 22:31
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
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>
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
http://www.yoyodesign.org/doc/w3c/voicexml20/
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.
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].
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
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
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
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/
171 of 212
27/07/2012 22:31
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
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
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
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
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.
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
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
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
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.
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
http://www.yoyodesign.org/doc/w3c/voicexml20/
Figure 21 : Diagramme de temporisation de la proprit incompletetimeout avec une grammaire vocale non reconnue.
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.
181 of 212
27/07/2012 22:31
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
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.
Annexe G : L'internationalisation
183 of 212 27/07/2012 22:31
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
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.
http://www.yoyodesign.org/doc/w3c/voicexml20/
186 of 212
27/07/2012 22:31
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)
187 of 212
27/07/2012 22:31
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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.
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
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.
204 of 212
27/07/2012 22:31
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/
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
206 of 212
27/07/2012 22:31
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 .
207 of 212
27/07/2012 22:31
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
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
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
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
http://www.yoyodesign.org/doc/w3c/voicexml20/
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
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