Lezione 5. HAWHAW il "multicanale". Christian Lacetera |
|
Il PHP nutre
una folta schiera di appassionati tra i quali nascono progetti molto interessanti,
uno di questi è sicuramente HAWHAW (HTML and WML hybrid adapted Webserver) una
libreria che permette di realizzare contenuti compatibili con HTML, WAP, XHTML, HDML, i-modeTM, MML ed anche
VoiceXML ! Questa libreria mette a disposizione un set di metodi che generano autonomamente il contenuto, rispettando le specifiche dei diversi standard, permettendo ad esempio di realizzare un'applicazione multimodale fruibile sia via WAP che a mezzo telefono. Andiamo a realizzare un banale esempio di autenticazione utente, dove Username e Password sono numeriche e la definizione degli oggetti avviene attraverso il concetto di deck (mutuato dal WML). Ogni deck conterra' al suo interno delle parti che potranno essere caselle di testo/vocali, etichette e bottoni.
// Include class to generate output
require('hawhaw.inc.php');
// Abilita il deck
$page = new HAW_deck("Immetti le credenziali",HAW_ALIGN_LEFT,HAW_OUTPUT_VOICEXML);
//creiamo la pagina con il link del form
$form = new HAW_form("pwdSubmit.php");
// Create a submit button for the form
$submit = new HAW_submit("Submit");
//Generiamo i campi di input (user_number)
$campo1 = new HAW_input("user_num", "", "Numero Utente:");
$campo1->set_size(6);
$campo1->set_maxlength(6);
$campo1->set_voice_text("Prego immettere il codice utenza");
$campo1->set_voice_type("digits?length=6");
//Generiamo i campi di input (password)
$campo2 = new HAW_input("Password", "", "Password:");
$campo2->set_size(8);
$campo2->set_maxlength(8);
$campo2->set_voice_text("Prego immettere l'utenza");
$campo2->set_voice_type("digits?length=8");
// Una volta dichiarati li colleghiamo al form della pagina
$form->add_input($campo1);
$form->add_input($campo2);
$form->add_submit($submit);
//aggiungiamo il form alla pagina
$page->add_form($form);
//ed infine generiamo il documento
$page->create_page();
Il principio di funzionamento di questa classe è piuttosto noto, e sicuramente molti di voi l'avranno già utilizzato in qualche framework di programmazione. Per i meno esperti invece descrivo brevemente come si utilizzano questo tipo di classi: in pratica ogni elemento di una pagina (VoiceXML, HTML o WML) viene rappresentato da un metodo del framework, e generando la pagina si aggiungono elementi generici, che poi verrano rappresentati correttamente nelle diverse forme. Quindi come prima cosa dobbiamo creare l'oggetto HAWHAW tramite $page = new HAW_deck. Questo metodo ha tre parametri dei quali, alla fine della corretta generazione VoiceXML, il fondamentale sara' HAW_OUTPUT_VOICEXML che predisporra' la classe alla generazione del codide VoiceXML. Il passo successivo è quello di dichiarare il form $form = new HAW_form() che utilizzeremo successivamente per contenere i campi, è da notare che come parametro viene passato il nome dello script PHP che gestira' l'input, in questo caso pwdSubmit.php. Successivamente andiamo ad aggiungere nel form l'elemento di submit (che nel caso del VoiceXML non ha un impatto diretto nel senso che è un oggetto intrinseco del form), previa una dichiarazione dei campi input $campo1 = new HAW_input() dove possiamo specificare il nome del campo, il suo valore di default, e la descrizione del form. Lo stesso oggetto ha altri metodi che permettono di impostarne la lunghezza massima ed il tipo e degli attributi esclusivi per il VoiceXML quali set_voice_type e $campo1->set_voice_type che specificano rispettivamente la label vocale da presentare all'utente e il tipo di grammatica da applicare. Come passo finale aggiungiamo i campi al form, e il form alla pagina attraverso $page->add_form($form) e $page->create_page(). Ora il contenuto del documento VoiceXML, può venire generato attraverso $page->create_page(); Notiamo infine l' estrema flessibilità della classe è rappresentata dal fatto che cambiando il terzo parametro del costruttore new HAW_deck() della pagina/deck è possibile generare una pagina XHTML (HAW_OUTPUT_XHTML), oppure VML/WAP (HAW_OUTPUT_WAP).
|
Torna alla LEZIONE
4
|