VoiceXML Italian User Group

Home page  VoiceXML Links  VoiceXML Tutorial  News dai Working Groups Voice Browser e Multimodal Interaction del World Wide Web Consortium  Articoli  Accessibilita' del web mediante la voce

Libri Voice & Speech technologies  La nostra Newsletter  Il nostro Forum  Contatti  Gli eventi a cui lo User Group ha partecipato o partecipera'  Parlano (speriamo bene:-)) di noi...



TUTORIAL VOICEXML e PHP

Lezione 3. PHP Voice, generare VXML da PHP.    Christian Lacetera    

<!-- INIZIO LEZIONE --!>

Il PHP e' un linguaggio molto versatile che vanta una comunita' di sviluppatori molto attiva, e cosi' non poteva mancare una implementazione, naturalmente open source, per generare dinamicamente delle pagine VoiceXML.

Stiamo parlando di PHP Voice scaricabile dal sito di SourceForge.

Questo pacchetto mette a disposizione una serie di classi che facilitano lo sviluppatore nella realizzazione sia delle pagine VoiceXML che CCXML e delle grammatiche.

Una volta scaricato il pacchetto siamo pronti a realizzare la nostra prima applicazione usando PHP Voice, per comodita' si utilizzera' come riferimento l'esempio helloworld.php presente nella directory samples.

Prima di iniziare e' da sottolineare la modularita'del pacchetto, e' infatti possibile estendere a proprio piacimento queste librerie per adattarle alle proprie esigenze, in pratica ogni modulo ha il compito di generare un form o una sua parte dentro le pagine VXML, in questa implementazione troviamo ad esempio message, menu, navigator, etc...etc...


samples\helloworld.php

<?php
    include ("../vxml.class.php");
    $app = new gonx_vxml;
    $app->start_vxml(,,'en',,,'2.0');
    app->load("message", array("","Hello World !","","hello.wav"));
    $app->end_vxml();
    $app->generate();
?>



il codice VXML generato sara':

<?xml version="1.0" encoding="UTF-8"?>
<vxml xml:lang="en" xmlns="http://www.w3.org/2001/vxml" version="2.0">
 <form>
 <block>
  <audio src="hello.wav">Hello World !</audio>
 </block>
</form>
</vxml>

Analizziamo ora il codice riga per riga.
All'inizio troviamo l'inclusione della libreria attraverso il comando include:

include ("../vxml.class.php");

ora e' possibile chiamare il costruttore della classe ed inizializzare l'oggetto gonx_vxml

$app = new gonx_vxml;
$app->start_vxml(,,'en',,,'2.0');


questo costruttore ha sei parametri che sono nell'ordine:
  • application
  • xml_base
  • xml_lang
  • xmlns_xsi,
  • xsi_schemaLocation
  • vxml_version


  • In questo esempio utilizziamo solo xml_lang e vxml_version; il codice che verra' generato sara' il seguente:

    <?xml version="1.0" encoding="UTF-8"?>
    <vxml xml:lang="en" xmlns="http://www.w3.org/2001/vxml" version="2.0">


    il restante codice mostra la procedura per chiamare un modulo aggiuntivo, e come passagli dei parametri:

    $app->load("message", array("","Hello World !","","hello.wav"));

    il modulo in questione si chiama message (lo trovate in vxml_mods/message.class.php) e ha come argomenti l'id del form, il messaggio, l'eventuale prossimo form, e il file adudio da riprodurre, di seguito trovate l'output vxml del modulo:

    <form>
     <block>
     <audio src="hello.wav">
      Hello World !
    </audio>
    </block>
    </form>

    In ultimo troviamo le istruzioni necessarie a chiudere il blocco VoiceXML aperto da start_vxml, e a generare tutta la pagina in VoiceXML:

    $app->end_vxml();
    $app->generate();


    Analizzando gli altri esempi potrete comprendere meglio l'utilita' di queste preziose classi, esse infatti permettono di separare il codice PHP dal VoiceXML. Cio' oltre a rendere le applicazioni piu' facilmente leggibili e manutenibili, ne' permette un piu' rapido e semplice sviluppo.

    L'unico svantaggio a mio avviso e' rappresentato dalla documentazione non troppo esaustiva che non permette ad utenti meno esperti di prendere immediatamente confidenza con questo ottimo strumento. Speriamo che nel futuro prossimo, il team di PHP Voice metta mano anche ad essa.
    <!-- FINE LEZIONE --!>


    Torna alla LEZIONE 2     /     Vai alla LEZIONE 4