In questo capitolo uniamo quanto visto fin ora per realizzare un progetto VoiceXML di un lettore di feed RSS. Per fare questo utilizzeremo sia file VoiceXML, SSML, grammatiche ed un pò di linguaggio server side (ASP).
Lo scopo è quello di capire come queste parti possano essere unite per produrre un progetto funzionante.
Per la sezione riguardante l'ASP non ci preoccuperemo troppo del codice in se stesso, ma piuttosto della sua integrazione.
Per preparare il lavoro creiamo tre cartelle separate sul nostro computer che chiameremo:
- vxml: che conterrà le pagine VoiceXML
- grm: dove metteremo le nostre grammatiche
- wav: dove metteremo i file audio
Il flusso del progetto
L'utente approda ad una pagina di presentazione del servizio, "inizio.vxml", dove gli viene chiesto quale argomento gli interessa.
Una volta effettuata la scelta viene indirizzato su un altro file, "argomento.asp" dove gli offriamo la possibilità di navigare all'interno delle notizie disponibili per il singolo argomento.
Supponendo che i tempi per elaborare le risorse RSS attraverso ASP siano sensibili, ma più che altro per esercizio, prepariamo un file audio in formato .wav, che chiameremo "attesa.wav" che invieremo all'utente mentre aspetta di passare da un argomento all'altro.
Cominciamo subito con lo scrivere il file "inzio.vxml"
<?xml version="1.0"?>
<!DOCTYPE vxml PUBLIC '-//Voxpilot/DTD VoiceXML 2.0//EN' 'http://dtd.voxpilot.com/voice/2.0/voxpilot_VoiceXML-2.0.dtd'>
<vxml version="2.0" xml:lang="it-IT">
<meta name="creator" content="Fabrizio Gramuglio"/>
<form id="start">
<block>
<!-- qui impostiamo il bargein uguale a false per fare si che l'utente non possa interrompere la frase di benvenuto -->
<prompt bargein="false">
<!-- utilizziamo l'attributo xml:lang per impostare la lingua -->
<p xml:lang="it-IT">
<!-- qui utilizziamo emphasis del linguaggio SSML per dare risalto al nome del progetto -->
<s xml:lang="it-IT">
Benvenuto nel <emphasis level="moderate">lettore di feed rss</emphasis>
</s>
<s xml:lang="it-IT">
Ti ricordo che puoi interrompermi, se conosci il sistema e che se desideri conoscere i comandi disponibili puoi dire <emphasis level="moderate">aiuto</emphasis>
</s>
</p>
</prompt>
</block>
Dopo aver dato il benvenuto all'utente creiamo il form per decidere quale argomento vuole ascoltare.
<form id="scelta_argomento">
<field name="argomento">
<grammar src="../grm/argomento.grxml"/>
<prompt>
<p><s> Quale argomento vuoi ascoltare?.</s></p>
</prompt>
<filled>
<!-- se l'utente chiede aiuto -->
<if cond="argomento== 'aiuto' ">
<prompt>
<p><s>Gli argomenti disponibili sono: news di Html.it, schede di Virus, recensioni di download, recensioni di libri.</s></p>
</prompt>
<!-- altrimenti lo inviamo al file argomento.asp -->
<else/>
<submit next="argomento.asp" namelist="argomento" fetchaudio="../wav/attesa.wav"/>
</if>
</filled>
</field>
</form>
Da notare in questo file che all'interno del tag "goto" abbiamo utilizzato l'attributo fetchaudio per far suonare un file audio mentre la risorsa che chiamiamo viene elaborata. Questo perchè la risorsa invocata attraverso il tag goto non sarà subito disponibile, in quanto il file asp, come vedermo, dovrà elaborare l'informazione e creare il file VoiceXML, questo richiederà un tempo sensibile, e durante questo tempo non possiamo lasciare l'utente al telefono senza alcun segno dalla nostra applicazione.