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 )
 

Nous allons maintenant aborder d'autres balises fondamentales de VoiceXML, au travers de petites applications simples.

<?xml version="1.0" ?>
<vxml version="2.0">
  <menu accept="approximate">
    <prompt bargein="true">
      Bienvenue sur le Journal du Net.
      <enumerate> Pour 
        <value expr="_prompt"/>, tapez <value expr="_dmtf"/>.
      </enumerate>
    </prompt>
    <choice next="dev/index.vxml">Développeurs</choice>
    <choice next="sol/index.vxml">Solutions</choice>
    <choice next="tel/index.vxml">Téléchargement</choice>
  </menu>
</vxml>

Résultat: "Bienvenue sur le Journal du Net. Pour Développeurs, tapez 1. Pour Solutions, tapez 2. Pour Téléchargement, tapez 3."

<menu>: défini un menu. Il permet à l'utilisateur de choisir une "destination" parmi plusieurs proposées.
<choice>: défini un élément de menu. Il a plusieurs buts: définir les éléments de grammaire vocale et/ou DMTF qui determinent quand un choix a été fait, fournir le contenu à la balise <enumerate>, et spécifier l'URI où aller une fois le choix fait.
<enumerate>: génère automatiquement une sortie audio qui énumère les options d'un champ ou d'un menu. Il peut être vide (<enumerate/>), auquel cas l'énumération se fait directement. Il peut aussi contenir la phrase d'énumération, comme ici, a vec l'énumération spécifiée par <value expr="_prompt">.
<value>: insère la valeur d'une expression dans une sortie audio.
Exemple: <value expr="n*n"/> est le carré de <value expr="n"/>.


<?xml version="1.0" ?>
<vxml version="2.0">
  <form id="test">
    <field name="couleur">
      <prompt>Quelle est votre couleur préférée ? </prompt>
      <prompt count="2">Choisissez une couleur plus courante.</prompt>
      <grammar>[ rouge vert jaune bleu orange ]</grammar>
      <filled>
        <prompt>Votre couleur préférée est: <value expr="couleur"/>.</prompt>
      </filled>
    </field>
  </form>
  <noinput>
    Désolé, ce choix est impossible.
    <reprompt/>
  </noinput>
</vxml>

Résultat:
Ordinateur: "Quelle est votre couleur préférée ?"
Utilisateur: "Grenat"
Ordinateur: "Désolé, ce choix est impossible. Choisissez une couleur plus courante."
Utilisateur: "rouge"
fin du dialogue.

<grammar>: spécifie une certaine grammaire de reconnaissance, c'est-à-dire les mots clés qui seront reconnus comme étant valides. Il existe deux grammaires définies par le W3C: ABNF et XML. Nous en parlerons plus longuement dans un prochain article.
<noinput>: entre en action quand aucune entrée de la part de l'utilisateur n'a été détectée.
<reprompt>: relance la synthèse vocal et incrémente le compteur de <prompt> de 1 (ce qui permet de préciserla question si l'utilisateur ne l'a pas comprise.

Voici enfin une petite application permettant d'enregistrer un message vocale:

<?xml version="1.0" ?>
<vxml version="2.0">
  <form id="enregistrement">
    <record name="message" beep="true" maxtime="10s" finalsilence="2000ms">
      <prompt>
        Donnez votre message après le bip.
      </prompt>
      <noinput>
        Je n'ai rien entendu.
        <reprompt/>
      </noinput>
    </record>
    <field name="confirm" type="boolean">
      <prompt>
        Voici votre message: <value expr="message"/>.
        Pour le conserver, dites oui. Pour en faire un autre, dites non.
      </prompt>
      <filled>
        <if cond="confirm">
          <prompt>Votre message est sauvegardé</prompt>
          <submit method="post" namelist="message" next="messages.jsp"/>
        <else/>
          <prompt>Nous allons recommencer.</prompt>
          <clear namelist="greeting confirm"/>
        </if>
      </filled>
    </field>
  </form>
</vxml>


<record>: enregistre un son donné par l'utilisateur. Dans notre exemple, le message est stocké dans la variable de formulaire "message". Le début de l'enregistrement est indiqué à l'utilisateur par un bip, et la fin de l'enregistrement se fera au bout de deux secondes de silence.
<submit>: envoi une valeur vers le serveur.

Ce ne sont là que quelques-unes des balises spécifiées dans la norme VoiceXML: notre article est loin d'en donner une idée exhaustive. Néanmoins, il vous permettra de vous faire une idée plus précise des capacités et du fonctionnement de VoiceXML.

Page 1 | 2

 
[ Xavier Borderie,JDNet
 
Accueil | Haut de page