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
|