Où comment utiliser les technologies liées au VB

Autour du VB… .net : création d’une application VXML en utilisant le flux HTTP !

Introduction

Parallèlement au VXML, j’entame aujourd’hui une nouvelle série autour de mon langage de prédilection : VB .Net. En effet, les deux technologies sont complémentaires. Si l’une sert pour réaliser des SVI, l’autre sert à les préparer. Il est donc nécessaire, afin de les maitriser efficacement, de posséder les compétences adéquates sur ces deux environnements.

Ces billets, chacun de leur côté, vous donneront, je l’espère, les moyens de créer des applications vocales performantes. Du débutant à l’expert confirmé, nous verrons comment construire du code clair et fonctionnel.

Mais n’allons pas trop vite. Avant d’en arriver là, il faut pouvoir réaliser de simples applications web. En effet, le VXML utilise du flux http. Nous allons donc découvrir comment, grâce au dotnet, réaliser une application VXML puissante.

Nous allons reprendre pour cela notre projet “HelloWorld” présenté dans le billet précédent, et le transcrire en application dotnet !

Préparation du projet

CreateProjectAfin de réaliser cette application, nous allons créer un nouveau projet web. Pour cela, les différentes étapes sous Visual Studio sont :

  1. Création du projet,
  2. Création des fichiers nécessaires au projet,
  3. Écriture du code,
  4. Publication du projet,
  5. Paramétrage de l’interface VoiceXML (Voxpilot),
  6. Exécution du code.

Nous appellerons notre solution “HelloVXML”.

Création des pages

Il faut ajouter à notre solution plusieurs fichiers nécessaires à son exécution, dont 2 webforms :

  1. “Default.aspx”, qui sera notre page maître,
  2. “HelloWorld.aspx” qui contiendra notre traitement principal.

Pour ces deux pages, il faudra que la partie HTML soit en fait du vxml afin qu’il puisse être interprêté par le VoiceXML (les balises n’ont rien d’extraordinaire, voir là aussi le billet précédent pour de plus amples détails). On trouvera donc le code suivant :

<?xml version=”1.0” encoding=”UTF-8“?>

<!DOCTYPE vxml PUBLIC ‘-//Voxpilot/DTD VoiceXML 2.1//EN’ ‘http://dtd.voxpilot.com/voice/2.1/voxpilot_voicexml-2.1.dtd’>

 

<%@ Page Language=”VB” AutoEventWireup=”false” CodeFile=”Default.aspx.vbInherits=”_Default” %>

 

<!–

* Acceptation de l‘appel et transfert au traitement principal

*

*

–>

<vxml version=”2.1” xmlns=”http://www.w3.org/2001/vxml” xml:lang=”en-GB“>

 

<form id=”bienvenue“>

 

<!– Transfert le contrôle vers le formulaire de bienvenue –>

<block>

<submit next=”HelloWorld.aspx” />

</block>

</form>

</vxml>

 

Toujours dans notre projet, nous avons également :

- un fichier son “Helloworld.wav” qui joura le son de bienvenue de notre exemple. Pour cela, on peut reprendre celui de voxpilot. Afin d’organiser correctement notre solution, il est nécessaire de créer un nouveau dossier que nous appellerons… media.

- un fichier de dialogue qui comportera le code vxml à exécuter. Tout comme pour le fichier ci-desssus, nous allons ajouter un nouveau dossier : dialogs.

Solution_ExplorerVous devriez voir notre solution comme le montre l’image ci-contre.

Ensuite, il faut :

  1. Créer le flux vxml dans un fichier de dialogue (nous verrons en effet par la suite qu’il est plus simple d’intégrer le flux vxml dans des fichiers séparés afin de traiter les processus spécifiques à nos applications),
  2. Générer le flux et  l’envoyer grâce à la page aspx.

Création du flux VXML

Il nous faut donc créer notre dialogue. Pour rappel, ce langage est dérivé de l’XML. Donc, nous allons ajouter une nouvelle page XML dans notre projet, et la renommer en “HelloWorld.vxml”. Une fois cela réalisé, copié dans cette page le code ci-dessous :

 

<?xml version=”1.0″ encoding=”UTF-8″?>

<!– * Exemple de flux VXML * –>

<vxml version=“2.1″ xmlns=“http://www.w3.org/2001/vxml” xml:lang=“en-GB”>

 

<form id=“formHello”>

<block>

<audio expr=“‘media/helloworld.wav’”/>

</block>

</form>

 

</vxml>

 

N’oublier pas de sauvegarder le contenu (Ctrl-S).

Génération de la page VB

Dans notre page aspx “HelloWorld.aspx”, au niveau du code behind, nous allons préparer notre flux, à savoir :

1. vérifier l’existance du dialogue pour éviter toutes erreurs,

2. envoyer le dialogue vers le flux http en ayant pris soin d’ajouter son en-tête. Nous avons pour cela plusieurs méthodes de l’objet Response : WriteFile pour l’envoi d’un fichier complet, ou Write pour l’envoi d’une variable. Ces deux méthodes vont nous être très utiles.

Afin que notre code puisse être exécuté dès le chargement de notre page, nous allons écrire notre flux dans l’événement “load” de celui-ci :

‘Pour obtenir des informations sur le fichier Dim fs_helloworld As FileInfo ‘Page du dialogue à envoyer vers le flux Const helloworld As String = “dialogs/HelloWorld.vxmlDim helloworld_filename As String ‘Préparation de la réponse HTTP Response.Clear() Response.ClearContent() Response.ClearHeaders() Response.Buffer = True Response.BufferOutput = True ‘Initialisation des fichiers VXML helloworld_filename = Server.MapPath(helloworld) fs_helloworld = New FileInfo(helloworld_filename) If fs_helloworld.Exists Then Trace.Write(”fichier existant lg=” + CStr(fs_helloworld.Length)) Response.ContentType = “Text/xml” Response.AddHeader(”Content-Length“, CStr(fs_helloworld.Length)) ‘Envoi du fichier vers le flux http Response.WriteFile(helloworld_filename) Response.Flush() Response.Close() Else Trace.Warn(”Le fichier : ” & helloworld_filename & “n’existe pas.“) End If

Exécution du code

Pour que notre application puisse fonctionner, il suffit de publier notre site web dans le répertoire local de IIS, sans avoir bien sûr, préalablement, oublié de créer l’application IIS.

voxpilot Il ne reste plus qu’à configurer notre IVR afin qu’il puisse exécuter “Hello World!”. Pour cela, avec voxpilot, ouvrir la console d’administration, puis se rendre dans la section “Application”. Saisir l’uri de l’application :

http://localhost/HelloVXML/Default.aspx

Et voilà. L’application est terminée. Vous avez ainsi pu réaliser un premier SVI plein d’avenirs.

Conclusion

Cet exemple est donc très simple mais permet de se faire une idée sur la façon de créer des applications vocales puissantes et performantes. Ce procédé à l’avantage en effet de pouvoir intégrer dans notre flux toutes sortes de données diverses : des variables bien sûrs, ou des combinaisons de dialogues, après intérogation de bases de données. Nous verrons comment au fil des prochains billets.

Pour entendre le résultat de notre application, il nous faut un téléphone compatible avec la norme sip. En voici deux : le premier, il s’agit de Sjphone, que l’on peut trouver à cette adresse : http://www.sjlabs.com/sjp.html, et pour le second, il s’agit de Kapanga, que l’on trouve ici : http://www.kapanga.net/IP/home.cfm. Ce dernier offre l’avantage d’ajouter la vidéo en plus du son.

Vous pouvez télécharger la solution ci-dessous sur votre pc.

Nous allons continuer dans nos prochains billets à explorer cet univers, et découvrir les secrets et la puissance du VoiceXML lié au dotnet.

Download Solution - HelloVXML.zip

 


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

Comments

  • sesyepirway said:

    газ и уголь в России

    Админ я не могу зарегестрироваться может я просто не то делаю ?

  • BoadaUnfofe said:

    Всегда думал, что такой пост обычный человек написать не сможет. Ведь чтобы запостить такое, надо быть настоящим специалистом, хорошо разбираться в предмете, иметь самое широкое представление о теме. Но вот, оказывается, я ошибался. Главное - уметь красиво писать, а там и пост получится интересным. Спасибо автору и респект ему!

Trackbacks

There are no trackbacks



Recent Archives