Où comment utiliser les technologies liées au VB

"Bonjour le monde", ou comment créer sa 1ère application VoiceXML ?

Introduction

Depuis un peu plus de 6 mois, je pratique et découvre tous les jours le VoiceXML, ou VXML 2.0. Ce standard, peu répandu encore en France, est destiné à l’élaboration de services vocaux intéractifs (SVI), ou d’applications télécoms. Vous savez ? "Taper 1, pour …, 2 pour …, ou * pour joindre un correspondant". C’est exactement ceci.

Plusieurs billets seront donc consacrés à cette nouvelle technologie. Je combine également ce standard à l’ASP .net (mon outil de programmation, lié à Visual Studio 2005), pour réaliser des applications vocales avec intérogation d’un serveur spécialisé, et des bases de données (en l’occurence, SQL Server).

Je vais donc parler VXML, mais aussi ASP .net, pour donner des astuces, des exemples de code que je j’utilise lors du développement de mes applications. En effet, ce standard tend à être connu et reconnu.

En parlant code, vous allez pouvoir dans la section suivante, découvrir le principe de ce langage avec deux exemples à la clé.

Le langage VXML

Le langage VXML est un langage composé de balises, dérivé du XML. Le VXML signifie Voice Extensible Markup Language, ou"langage de balisage extensible vocal" . Semblable au HTML, il permet de créer des applications télécoms. Ce langage s’articule autour de 3 notions qui sont :

  1. la reconnaissance vocale,
  2. une voix synthétisé,
  3. les touches DTMF.

Pour concevoir une application VXML, un simple éditeur suffit.

Bonjour le monde

À titre d’exemple, le programme ci-dessous joue un fichier son qui contient le traditionnel "hello world !"

<?xml version="1.0" encoding="UTF-8"?>
 <vxml version="2.1" xmlns="http://www.w3.org/2001/vxml"
  xml:lang="en-GB">
 <var name="strMediaExt" expr="('video' ==
      session.connection.callmode)?'.3gp':'.wav'"/>
 <form id="formHello">
     <block>
         <audio expr="'media/helloworld'+strMediaExt"/>
     </block>
 </form>
</vxml>

Comme on peut le voir, tout l’aspect du langage tourne autour des balises, ce qui explique la dérivation du XML. <form>, <block>, <audio> sont des instructions propres au langage, mais l’élément qui définit une application vxml à la base est la balise… <vxml></vxml>.

Acquittement d’un appel

Un second exemple plus complexe, de code est celui que j’ai écrit pour l’une de mes applications. Il s’agit de l’acquittement d’un appel téléphonique, et le transfert de celui-ci vers une page spécifique :

<?xml version="1.0" encoding="UTF-8"?>
<vxml version="2.1" xmlns="http://www.w3.org/2001/vxml"
      xml:lang="en-GB">
     <property name="inputmodes" value="dtmf"/>
     <var name="now" expr="new Date()"/>
     <var name="dtdebut" expr="now.toLocaleString()"/>
     <var name="essai" expr="0" />

     <catch event="connection.disconnect.hangup">
         <var name="statut" expr="'NOK'" />
         <submit next="Ticket.aspx" method="get" namelist="statut
fulldate session.telephone.dnis session.telephone.ani
  session.connection.callid"/>
     </catch>

     <form id="bienvenue">
         <!-- Acceuil de l'utilisateur -->
         <block>
             <audio src="media/bonjour.wav" />
             <!-- Transfer le controle vers le formulaire
  'saisie' -->
             <submit next="suite.aspx" namelist="essai
              dtdebut" />
         </block>
     </form>
 </vxml>

Nous avons plusieurs éléments dans ce deuxième exemple comme des instructions (les "fameuses" balises décrites plus haut), et des éléments variables (comme les propriétés, et les variables : la date de début d’appel, et le nombre d’essais réalisés).

Le principe de ce code est le suivant : au déclenchement de l’appel, le son "bonjour.wav" est joué, puis on transfert cet acquittement au traitement qui se situe dans la page "suite.aspx". En cas d’erreur, c’est l’événement "catch" qui est exécuté. Et là, on transfert le traitement à la page "ticket.aspx" (qui écrit un ticket contenant l’erreur).

Dans cet exemple, l’intégration avec le .net est évident ! Cela permet de concevoir des applications sophistiquées (validation d’un paiement par carte bancaire, récupération de messages vocaux, par un identifiant, … les exemples sont nombreux).

Les applications dynamiques, telles que décrient ici, ne sont pas forcément dédiées au .net. Il est également possible d’utiliser des langages comme le php, perl, cgi, python, …

On le voit, le VoiceXML est un langage ouvert !

Les plateformes IVR (Interactive Voice Response)

Afin que notre code ci-dessus puisse fonctionner, il est nécessaire de pouvoir les exécuter par un interpréteur.

Pour cela, nous avons besoin d’une plateforme spécifique sachant lire le code VXML.

Actuellement, il en existe de deux catégories.

  1. Des plateformes en ligne comme Plums, ou Voxeo,

  2. Des plateformes à installer sur notre PC, comme Voxpilot

Grâce à ces environnements, nous allons pouvoir développer nos propres applications télécoms.

Pour ma part, j’utilise l’architecture de Voxpilot. C’est donc tout naturellement que je l’ai également installé sur mon PC personnel. Il est possible d’obtenir et / ou de renouveller une licence gratuie pour 3 mois.

Sachant qu’il s’agit là d’un standard, il est tout à fait possible d’utiliser un autre service… avec le même code !

Conclusion

Voici donc un aperçu d’un langage porteur. Les applications orientées "téléphonies" se développent en effet rapidement, et l’aboutissement d’un standard facilite la création des applications sans nécessité de matériel ou développement lourd, comme ce fût le cas par le passé.

Les prochains billets tenteront d’expliquer le langage lui-même ainsi que les différents événements associés au VXML, mais nous ferons aussi un petit tour vers le CCXML, compagnon complémentaire du VXML orienté "événements", sans oublier l’intégration à des langages dynamiques comme le .net.

Bref, un langage plein d’avenir et de très belles réalisations en perspective.

À suivre…


Tagged as: , , , , , , , , , , ,

Comments

Trackbacks

There are no trackbacks



Recent Archives