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 2. Leggere i dati da un database.    Christian Lacetera    

<!-- INIZIO LEZIONE --!>
Nell'esempio precedente abbiamo mostrato com'� semplice integrare il codice del PHP con il VoiceXML.
L'uso di un linguaggio server side quale il PHP sembrerebbe pero' non essere giustificato, perch� nelle applicazioni vocali disponiamo gi� del JavaScript che ci permette di interagire all'interno del documento.
JavaScript non ci permette pero' di leggere o scrivere da un database. Questo il motivo per cui si utilizza un linguaggio di scripting quale il PHP in grado di generare pagine dinamiche, una modalit� questa ben conosciuta da molti webmaster.


login.php

<?php
header("Content-type: application/voicexml+xml");
$connection = mysql_connect("localhost", "utenza", "password");
mysql_select_db("database");
$result = mysql_query("SELECT username,name FROM VIUG_USERS WHERE pin = '" . $_POST["pin"]
. "'");
if (mysql_num_rows($result) > 0) {
 $rs = mysql_fetch_assoc($result);
 $auth="yes";
} else{
$auth="no";
}
?>
<vxml version="2.0" xmlns="http://www.w3.org/2001/vxml">
<var auth="'<?php =$auth;?>'">
<form id="main">
  <if cond="auth='yes'">
   <goto src="#login">
  <else/>
   <goto src='#nologin'>
  </if>
</form> 
<form id="login">
 <block>
   <prompt>
      Benvenuto <?php =rs['name']: ?> ora puoi accedere alla tua pagina personale
   </prompt>
   <goto src="personal.php">
 </block>
</form>
<form id="login">
 <block>
   <prompt>
      Mi dispiace il codice inserito non � valido
   </prompt>
   <goto src="index.php">
 </block>
</form>
</vxml>




Come l'esempio della prima Lezione (index.php) defininiamo i content type appropriato e scriviamo l'intestazione per il documento XML.

Dopo aver fatto tutto ci�, possiamo, attraverso le funzioni intergrate del PHP, leggere i dati da un database in questo caso MySQL e memorizzarle dentro delle variabili.

In questo esempio si � scelto di gestire all'interno dello stesso documento sia l'autenticazione andata a buon fine che quella errata, in modo di mostrare la possibilit� di integrazione tra logica del codice e VoiceXML, nulla vietava ad un utente pi� smaliziato di utilizzare un header http per il redirezionamento in base alla situazione:


<?php
$connection = mysql_connect("localhost", "utenza", "password");
mysql_select_db("database");
$result = mysql_query("SELECT username,name FROM VIUG_USERS WHERE pin = '" . $_POST["pin"]
. "'");
if (mysql_num_rows($result) > 0) {
header('Location: login_ok.php'); 
} else{
header('Location: login_ko.php'); 
}
?>


Questo perch� l'interprete VoiceXML si comporta come un browser e segue le specifiche per le richieste HTTP.

Tornando all'esempio, si vede che viene definita una variabile chiamata "auth" nel documento VoiceXML e attraverso il tag <if> viene scelto quale form eseguire.

Spesso in situazioni reali � consigliabile usare uno stesso documento per gestire le diverse situazioni, e utilizzare delle chiamate a subdocumenti per analizzare le risposte.

Cio' e' possibile attraverso il tag <submit> che permette di eseguire un post ad un subdocumento e di ritornare in maniera automatica al form di partenza senza doverlo ricaricare.
<!-- FINE LEZIONE --!>


Torna alla LEZIONE 1     /     Vai alla LEZIONE 3