Nessun risultato. Prova con un altro termine.
Guide
Notizie
Software
Tutorial

VoiceXML e ASP: il prompt

Elaborare un prompt generato da uno script ASP
Elaborare un prompt generato da uno script ASP
Link copiato negli appunti

Questa parte della guida mostra come integrare alcuni linguaggi server side con il VoiceXML. Per farlo usiamo degli esempi. Iniziamo con il primo esempio in classic-ASP per realizzare un'autenticazione di un utente. Il progetto prevede la realizzazione di due diversi file:

  • login.asp: che darà il benvenuto all'utente e gli richiederà i dati
  • verifica.asp: che cercherà il dato dell'utente nel db e provvederà all'autenticazione

Per cominciare prepariamo la nostra pagina di accesso (login.asp), e generiamo, attraverso lo script ASP (sul web server), il codice VoiceXML da inviare al client (gateway vocale).

Dobbiamo ricordarci infatti che il gateway vocale si comporta come un client rispetto al server web dove abbiamo la nostra applicazione ASP.

Listato 4.1: gerazione documento VoiceXML

<%@ Language=VBScript %>
<%
Response.ContentType = "text/xml"
Response.Write("<?xml version= ""1.0"" encoding=""ISO-8859-1""?>")

%>
<vxml version="2.0">

Queste tre righe di codice creano una nuovo documento VoiceXML.

Fatto questo creiamo tre variabili che contengano il numero di telefono dell'utente, la sua userid e la password, che per comodità gli chiediamo di digitare.

Oltre al form per l'inserimento dei dati vogliamo inoltre creare un piccolo prompt di benvenuto, dove il messaggio sia dipendente dall'ora.

Listato 4.2: Form in ASP+VoiceXML

....
<var name="userid"/>
<var name="passv"/>

<form id="welcome">
<block>

<prompt>
<%
' frase apertura dipendente dall'ora
Dim OraAttuale as String
OraAttuale = FormatDateTime(Now(), 4)

if OraAttuale <= "12.00" and OraAttuale >= "0.00" then
  welcomemsg = "Buongiorno"

Elseif OraAttuale <= "18.00" and OraAttuale >= "12.00" then
  welcomemsg = "Buon pomeriggio"

Else
  welcomemsg = "Buona sera"
End if
%>
<%=welcomemsg%>! Benvenuto nel sistema di prova

</prompt>
....

In questo esempio abbiamo unito il codice VoiceXML con quello ASP per generare un prompt che dica "buongiorno, buon pomeriggio, buona sera" in funzione dell'ora, semplicemente creando una variabile ASP chiamata "welcomemsg", e riutilizzandola all'interno del prompt.

Inoltre abbiamo creato le due variabili "userid" e "passv" per il voicexml dichiarandole a livello di documento.

Dopo il prompt, dobbiamo completare il nostro form, che abbiamo chiamato "welcome", scrivendo il codice per i due fields e gestire gli eventi di nomatch, noinput ed il filled.

Listato 4.3: Field Userid

....
<field name="userid" type="digits">
  <grammar mode="dtmf" type="application/x-loquendo-dtmf">
  6 , 6 , 0123456789
  </grammar>
   <prompt>
    Per favore digita il tuo codice utente per farti riconoscere
   </prompt>

  <noinput>
   <prompt>
    Non ho sentito il tuo codice utente, per favore digita il tuo codice utente.
   </prompt>
  </noinput>

  <nomatch>
   <prompt>
    Il tuo codice utente deve essere di 6 cifre, per favore controlla e digita nuovamente.
   </prompt>
  </nomatch>

  <filled>
    <assign name="document.userid" expr="userid"/>
    <goto next="#pass"/>
  </filled>
 </field>
 </form>
.....

In questo listato abbiamo definito il campo "userid" per il nostro primo form, e gli abbiamo associato una grammatica di tipo dtmf in linea.

Non appena l'interprete riceve le informazioni circa lo user id, esegue il codice contenuto nella sezione di filled, e passa il valore della variabile del form a quella che abbiamo creato per l'intero documento.

Per fare questo abbiamo utiilizzato <assign> che ci permette di assegnare un valore, attraverso l'attributo "expr" alla variabile indicata nell'attributo "name".

Fatto questo dobbiamo spostare il flusso su un nuovo form, che sarà quello che chiederà all'utente la sua password, e questo è realizzabile attraverso il tag <goto>, dove all'interno dell'attributo "next" indicheremo il riferimento dell'elemento al quale vogliamo spostarci.

A questo punto non ci resta che scrivere il codice per il form della password che sarà il seguente:

Listato 4.4: Field Password

....
<form id="pass">
 <field name="passv" type="digits">
  <grammar mode="dtmf" type="application/x-loquendo-dtmf">
   1, 9, 0123456789
  </grammar>
  <prompt>
   Ora digita la tua password
  </prompt>
  
  <noinput>
  <prompt>
   Non ho sentito la tua password, per favore digita la tua password.
  </prompt>
  </noinput>

  <nomatch>
  <prompt>
   La password digitata non e' valida. per favore digita nuovamente la tua password
  </prompt>
  </nomatch>
  
  <filled>
   <assign name="document.passv" expr="passv"/>
   <goto next="#invia"/>
  </filled>
 </field>
</form>
....

Anche in questo caso abbiamo indicato al form di collezionare l'informazione della password attraverso una grammatica DTMF, e di passarla alla variabile esplicitata nel documento voicexml, e di spostare il controllo sul form "invia".

Non ci resta che inviare queste informazioni ad una pagina che faccia una query sul database per verificare a quale utente corrispondano.

Listato 4.5: Invio Dati

...
 <form id="invia">
 <block>
  <var name="loginname" expr="document.userid"/>
  <var name="loginpw" expr="document.passv"/>
  <submit next="vlogin.asp" method="get" namelist="loginname loginpw"/>
 </block>
 </form>
</vxml>
....

Quando vogliamo inviare dei dati attraverso il protocollo Http, possiamo usare il tag <submit> che ci permette di indicare:

  • a quale file inviare le informazioni: attraverso l'attributo "next"
  • quale metodo utlizzare per l'invio: attraverso l'attributo "method"
  • quali informazioni inviare: inserendo i diversi valori separati da uno spazio all'interno dell'attributo "namelist"

Fatto questo, possiamo chiudere il nostro file VoiceXML e dedicarci alla pagina di autenticazione.

Ti consigliamo anche