TUTORIELS 
Les balises de VoiceXML

Page 1 | 2

Présentation de la structure de données VoiceXML, et de quelques-unes des principales balises de ce langage.
 (28 octobre 2002 )
 

Introduction
Dérivé direct du langage XML, VoiceXML a été créé pour permettre d'apporter simplement le contenu Web à des applications vocales, éliminant ainsi la contrainte de la programmation bas-niveau pour les développeurs.
Un document VoiceXML spécifie l'ensemble des dialogues interactifs devant être conduit par l'interpréteur VoiceXML. Une session utilisateur consiste ainsi en plusieurs dialogues/documents chargés selon les réponses de l'utilisateur.

Le balisage de VoiceXML cherche à:
- minimiser les interactions client/serveur en spécifiant plusieurs intéractions par document,
- dégager les développeurs des contraintes de la programmation bas-niveau et des spécificités de plateforme,
- séparer le code d'intéraction utilisateur (VoiceXML) de la logique du serveur (scripts CGI, ASP, PHP et autres...),
- promouvoir la portabilité au travers des plateformes d'implementation
- être facile d'utilisation, tout en fournissant un langage complet permettant de soutenir des dialogues complexes.

Balises
Décomposons un exemple de base: le traditionnel "Hello World".

(fichier helloworld.vxml)
<?xml version="1.0"?>
<vxml version="2.0" xmlns="http://www.w3.org/2001/vxml">
  <form>
    <block>
      <prompt>Hello World!</prompt>
    </block>
  </form>
</vxml>

Hors la balise d'entête XML, obligatoire, nous allons aborder ici quatre balises, que nous rencontrerons souvent dans l'écriture d'applications VoiceXML.
<vxml>: c'est l'élément de premier niveau, obligatoire dans toute application VoiceXML, et servant de contenant pour les dialogues. Il existe deux types de dialogues: les formulaires (qui présentent l'information et recoivent les entrées de l'utilisateur) et les menus (qui offrent un choix pour la direction à prendre dans le dialogue). Les attributs version et xmlns sont requis.
<form>: un formulaire de dialogue, comme décrit ci-dessus. Il faut inclure une balise <goto> ou <submit> dans le formulaire, sans quoi la complétion du formulaire termine l'application.
<block>: contient du code exécutable non-intéractif (l'utilisateur ne peut pas l'interrompre).
<prompt>: envoi à l'utilisateur une information via la synthèse vocale TTS (Text To Speech). Dans notre cas, l'information n'est constituée que de texte, et donc on aurait pu ommettre cette balise: le texte aurait quand même été "dit" à l'utilisateur. A l'aide de l'attribut bargein="true"|"false", on peut déterminer si la lecture peut être interrompue par l'utilisateur ou non (sauf ici, car prompt est contenu dans block).


Nous allons maintenant aborder les balises supplémentaires utilisées dans le second exemple de notre article de présentation de VoiceXML:
<field>: déclare un champ d'entrée dans un formulaire. L'utilisateur doit donner une réponse pour pouvoir continuer le formulaire. L'attribut type="xxx" permet de forcer l'entrée d'un type de réponse donné: boolean, date, digits, currency, number, phone et time.
<option>: spécifie une option d'un champ. C'est la manière la plus simple de proposer un choix sans devoir spécifier une grammaire donnée: la grammaire est générée automatiquement grâce à la liste des options. On peut utiliser la balise <enumerate> pour lire automatiquement à l'utilisateur la liste des options, comme on l'a montré dans le premier exemple de notre présentation de VoiceXML.
<filled>: contiens les actions à executer quand le formulaire a été rempli. Cette balise ne peut avoir d'atributs spécifiant le lancement de son action que si elle est un sous-élément de <form>. Ici, c'est un sous-élément de <field>, donc elle ne peut avoir d'attributs: son action sera lancée quand l'utilisateur aura rempli l'entrée du champ.
<if>: permet, avec <else> et <elseif> en option, de conditionner l'execution d'actions. L'attribut cond="xxx" est une expression JavaScript qui doit donner un bouléen.
<clear>: remet à zéro (javascript undefined) une ou plusieurs variables de formulaire, et relance le formulaire
<assign>: assigne une valeur à une variable. Les attribus requis sont name="xxx", le nom de la variable de destination, et expr="xxx", l'expression JavaScript qui sera assignée à la variable. Par exemple, pour additionner deux nombres dans une variable: <assign name="x" expr="Number(a) + Number(b)"/>.
<goto>: Renvoi vers un autre élément du formulaire, vers un autre dialogue du même document, ou vers un document différent. Son attribut nextitem="xxx" permet de donner l'URI de l'élément du formulaire actuel vers lequel goto doit renvoyer.
<subdialog>: invoque un autre dialogue en tant que sous-dialogue de l'actuel. Il s'agit là d'un mécanisme pour réutiliser des dialogues courrants et pour construire des bibliothèques d'applications réutilisables. En bref, c'est une sorte d'appel de fonction.
<param>: passe un paramètre dans un <subdialog> ou un <object>.

Ce sont là quelques-unes des principales balises VoiceXML. Nous en abordons d'autres à la page suivante...

Page 1| 2

 
[ Xavier Borderie,JDNet
 
Accueil | Haut de page