Les services vocaux par Fabien SCAGNELLI
Le Voice XML (Voice eXtended Markup Language)
Le Voice XML est une norme définie au niveau mondial par le W3C. Il permet, entres autres, de :
- Jouer des sons, de la parole
- Interpréter les DTMF, reconnaissance vocale
- Enregistrer des messages vocaux
- Transférer des appels
- etc.
Quelques bases du VXML
- Les prompts : <prompt></prompt>
Les prompts contiennent un simple message pour l'utilisateur. Ils peuvent contenir soit du texte à synthétiser (<block>Message à synthétiser</block>), soit des fichiers sons (<audio src="file.wav">Fichier non trouvé</audio>).
- Les menus : <menu></menu>
Les menus peuvent contenir des prompts. Sinon, ils doivent avoir aussi une série de <choice>Choix n°...</choice>.
Le contenu du tag <noinput>...</noinput> est exécuté lorsque qu'aucun choix n'est fait.
<enumerate/> permet de synthétiser la liste des choix disponibles.
- Un formulaire
Un formulaire permet de passer à une page suivante lorsqu'un choix est fait. On peut aussi faire passer des paramètres à la page appelée.
Un formulaire peut très bien contenir des prompts.
Il contient une liste de champs, indiqués par le tag <field id="name"/>.
Le contenu du tag <filled>...</filled> est exécuté lorsque tous les champs on été remplis. Le plus souvent, c'est ici que l'on fait appel à la page suivante, grâce à <submit next="page.jsp" namelist="params"/>. params est en fait le nom d'un ou plusieurs champs que l'on a rempli et que l'on veut faire passer à la nouvelle page.
- Un field
- Enregistrer un message
- Transférer un appel
- Les variables
- session.connection.local.uri, qui représente l'uri appelée
- session.connection.remote.uri, qui représente l'uri appelante
- session.connection.redirect, un tableau qui indique si c'est un appel transféré
Un field est un champs de formulaire, dans lequel on peut retrouver des prompts.
Pour remplir un field grâce à un menu, on utilise le tag <option>Choix n°...</option>.
<record name="msg" beep="true" maxtime="10s" finalsilence="4000ms" dtmfterm="true" type="audio/x-wav"></record> permet d'enregistrer un message vocal, et de stocker sa référence sous le nom msg. Ce nom est vu comme un field dans un formulaire, on peut ainsi faire passer le message à une page suivante, comme un script CGI, par exemple. Le but étant de pouvoir traiter le message facilement.
beep permet de jouer ou non le bip sonore.
maxtime est la durée maximum du message à enregistrer.
finalsilence est le temps de silence au bout duquel on considère que l'utilisateur a terminé de dire son message.
dtmfterm donne la possibilité ou non à l'utilisateur d'indiquer qu'il a terminé de déposer son message en appuyant sur une touche du téléphone.
type est le format audio dans lequel le message est enregistré.
Le transfère d'appel se fait par le tag <transfer dest="sip:master@sixteam.org" bridge="yes"/>, où dest est le destinataire du transfert, tandis que bridge indique si le service vocal reste en coupure ou non de l'appel transféré.
Pour lire une variable, on utilise <value expr="mavariable"/>.
Pour affecter une variable, on utilise <assign name="mongroupe" expr="'sixteam'"/>. A noter que le guillemet + l'apostrophe dans l'attribut expr indique qu'il ne faut pas interpréter la valeur.
Aussi, il y a quelques variables prédéfinies, comme;
Un exemple de page VoiceXML
<?xml version="1.0" encoding="UTF-8"?>
<vxml
version="2.0"
xmlns="http://www.w3.org/2001/vxml"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.w3.org/2001/vxml
http://www.w3.org/TR/voicexml20/vxml.xsd">
<form
id="temps_info">
<block>
Bienvenue sur le service de météo.</block>
<field name="pays">
<prompt
>Pour la météo de Paris, tapez 1,
pour la météo de Brest, tapez 2,
enfin pour le temps de Nice, tapez 3.</
prompt>
<option
dtmf="1"
value="paris">Paris</
option>
<option
dtmf="2"
value="brest">Brest</
option>
<option
dtmf="3"
value="nice">Nice</
option>
</field>
<filled>
<submit
next="/temps.vxml"
namelist="ville"
method="post"/>
</filled>
</form>
</vxml>
La reconnaissance vocale >> |