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

Form. La parola agli utenti

Uso dei form ed introduzione alle grammatiche
Uso dei form ed introduzione alle grammatiche
Link copiato negli appunti

L'elemento <form>, a differenza del <menu>, che consente solo la selezione da una sequenza di opzioni prestabilite, ci permette di rivolgere all'utente una domanda diretta: ad esempio "in quale città ti trovi?", e di ascoltarne ed interpretare la risposta.

Vediamo subito come è fatto un form:

Listato 2.4: il nostro primo form

<?xml version="1.0" encoding="UTF-8"?>
<vxml version="2.0" xmlns="http://www.w3.org/2001/vxml"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.w3.org/2001/vxml
http://www.w3.org/TR/voicexml20/vxml.xsd">

<form id="start">

<field name="pinvalue">

<grammar src="../grammar/dtmf.grxml" />

<prompt>Digita il tuo pin</prompt>

<noinput>
<prompt>Non ho sentito: quale 柩l tuo pin?</prompt>
</noinput>

<nomatch>
<prompt>Non ho capito: quale 柩l tuo pin?</prompt>
</nomatch>

<filled>
<prompt>Il tuo pin &grave <value expr="pinvalue"/> </prompt>
</filled>

</field>

</form>
</vxml>

Esaminiamo in dettaglio il nostro listato per capire la funzione dei singoli elmenti.

<form>: questo tag indica all'interprete VoiceXML che ci troviamo all'interno di un form, tutto il codice contenuto al suo interno è funzionale alla risoluzione del form stesso, e soprattutto viene interpretato tenendo conto delle regole scritte all'interno dell'Algoritmo di Interpretazione del Form (FIA).

In questa lezione non scenderemo troppo in dettaglio sul funzionamento del FIA, quello che ci basta sapere è che le azioni che vengono eseguite sono:

  • Selezionare e riprodurre uno o più prompt
  • Ricevere l'input dell'utente o gestire eventuali errori
  • Attribuire un valore ai campi contenuti al suo interno

Per maggiori informazioni sul FIA riferirsi alle specifiche VoiceXML 2.0

Analogamente a quanto visto per il menu, abbiamo usato l'attributo id per indicare il nome del form.

<field>: il field (campo) è un elemento di input il cui valore può essere ottentuto attraverso la pressione dei tasti (DTMF) o attraverso il riconoscitore vocale (ASR). All'interno di un form possono esistere diversi campi.

<prompt>: conosciamo già questo tag, esso ci permette di leggere all'utente un testo o suonare un file preregistrato.

Grammatiche di riconoscimento

Un elemento nuovo all'interno del form è <grammar>. Prima di spiegare il funzionamento di questo tag, introduciamo il concetto di grammatiche di riconoscimento, o molto più semplicemente, grammatiche.

Ogni qualvolta ci troviamo all'interno di un campo, oppure invochiamo un riconoscimento vocale tramite il motore di ASR, dobbiamo indicare al nostro riconoscitore un dizionario di riferimento. Questo dizionario deve contenere tutte le combinazioni possibili di valori che l'utente può pronunciare, qualora si tratti di una grammatica di tipo "voce" o digitare, nel caso di grammatiche "dtmf". Torneremo sul concetto di grammatiche e sulla loro costruzione più avanti nel corso della guida.

Per capire meglio come siano connessi tra di loro questi elementi, esaminiamo nel dettaglio cosa accade quando un utente si trova all'interno di un elemento di tipo form.

  1. Viene inizializzato il form dal tag <form>

  2. Il controllo si sposta al primo field, e carica la grammatica corrispondente. A questo punto possono accadere diverse cose:

    • l'utente digita o pronucia un elemento presente nella grammatica, in questo caso il valore del riconoscimento viene associato ad una variabile di field che ha lo stesso id del field: ovvero pinvalue="input utente". L'esecuzione si sposta al tag <filled>, che contiene la sezione di codice da eseguire nel caso in cui il field venga riempito da un valore valido,
    • l'utente pronuncia o digita un valore non esistente nella nostra grammatica, viene invocato un evento di "nomatch",
    • l'utente non seleziona alcuna voce, in questo caso viene eseguito il codice all'interno del tag .

Per leggere all'utente il valore del field appena riempito abbiamo usato:

<prompt>Il tuo pin è <value expr="pinvalue"/> </prompt>

all'interno del tag . Soffermiamoci sul tag <value>. Questo tag ci permette di inserire il valore di una variabile all'interno di un prompt. expr="..." è il suo unico attributo e specifica il nome o il percorso della variabile da utilizzare.

Ti consigliamo anche