Comments
Description
Transcript
Presentazione
Configurabilità del servizio Voicemail in Asterisk Università degli studi di Pisa Facoltà di Ingegneria Laurea specialistica in Ingegneria Informatica Candidato: Gabriele Montori Relatori: Luigi Rizzo Marco Avvenuti Sommario • Obiettivo: configurabilità dell’applicazione Voicemail per il software Asterisk • Descrizione del funzionamento di un servizio di Voicemail • Descrizione delle modifiche introdotte nella Voicemail di Asterisk • Risultati e conclusioni Il servizio Voicemail • • • • Che cosa è una Voicemail Distinzione tra utente e proprietario L’utente deposita messaggi vocali Il proprietario: – configura il servizio Voicemail – interagisce con la propria casella tramite il telefono Voicemail lato utente • Depositare messaggi in caso di destinatario: – Non connesso – Non disponibile – Attualmente occupato • Risponditore automatico Voicemail lato proprietario • Possibilita' di configurazione del funzionamento del servizio • Interazione con la segreteria: le voci guida dei menu' e le opzioni disponibili • Operazioni a disposizione del proprietario sui messaggi presenti: – Riproduzione, eliminazione, inoltro, salvataggio – Reply, Callback – Servizi di personalizzazione Obiettivo • Scopo dell’estensione: – Configurabilità della struttura dei menù e dei loro contenuti in opposizione alla staticita' dell'attuale servizio presente in Asterisk Descrizione del lavoro svolto • Introduzione di un file di configurazione per il funzionamento della voicemail La realizzazione dell'estensione ha portato all'introduzione per l'applicazione di: – Verifica dinamica della disponibilità delle opzioni nei menù – Creazione di un set di istruzioni per la navigazione tra menù – Raggruppamento delle operazioni del modulo in funzioni richiamabili tramite file di configurazione Il file di configurazione [menu1] init = play('welcome') default = play('error') 1 = IF(${MSG_SELECTED}),play_msg(current) 2 = IF($(NOT_LAST_MSG)),play_msg(next) 3 = jump(IF(${MSG_SELECTED}),menu2,menu3) 4 = call(menu4) 5 = exit() [menu2] init = play('instr_menu2') 1 = save_to(WORK),jump(menu1) 2 = save_to(FAMILY),jump(menu1) [menu3] init = play('instr_menu3') 1 = change_folder(NEW),jump(menu2) 2 = change_folder(OLD),jump(menu2) [menu4] init = play('instr_menu4') 1 = return(1) 2 = IF(${MSG_SELECTED}),reply() Il file di configurazione (2) • Le azioni di init e di default • Le voci di menu' sono realizzate con la funzione – play('file') • Le istruzioni di salto permettono di muoversi tra menu' – call(),jump(),return() • Le funzioni di modulo sono le operazioni svolte dalla voicemail – play_message(),change_folder(),save_to() Le entry delle sezioni menù • Associazioni tra comando impartito e operazioni da eseguire • Sono composte da – Pattern – Condizioni (opzionali) – Lista di azioni pattern = IF(conditions),actions Pattern pattern = IF(conditions),actions • Rappresenta l'input immesso dall'utente mediante la tastiera telefonica • Algoritmo di ricerca longest match [menu_esempio_pattern] 1 = azione1, 12 = azione2, 123 = azione3, 1234 = azione4, ... ... ... ... Entry condizionate pattern = IF(conditions),actions • Abilitazione di una entry • Dinamicità delle opzioni disponibili: [menu_entry_condizionate] 1 = IF(condizione1),azione1 ... 1 = IF(condizione2),azione2, ... 1 = IF(condizione3),azione3, ... 1 = IF(condizione4),azione4, ... Entry condizionate (2) • Condizioni che possono essere verificate sono di due tipi: – Variabili di canale – Funzioni di dialplan Entry condizionate (3) Le variabili di canale • Sono associate alla chiamata corrente • Sono state aggiunte variabili di canale per supportare il funzionamento della Voicemail [menu_variabili_canale] 1 = IF(${MSG_SELECTED}), ... Entry condizionate (4) Le funzioni di dialplan • Routine di Asterisk messe a disposizione per eseguire operazioni runtime • Varie tipologie di funzioni disponibili • Esempio di utilizzo pattern = IF(VMCOUNT(${VM_ID}, “OLD”)), ... Le azioni pattern = IF(conditions),actions[, action, ...] • Lista composta da una o piu' azioni • Le possibili azioni sono: – Funzionalità del modulo: le operazioni di una casella vocale – Routine di dialplan: funzioni di ogni tipo inerenti ad un pbx – Istruzioni di salto: navigazione tra menù Le azioni (2) Le funzionalita' del modulo • Riproduzione file sonori: – play() • Operazioni sui messaggi – play_msg() – forward_msg() – delete(), undelete() Le azioni (3) Le funzionalita' del modulo • Gestione delle directory di lavoro: – change_folder(), save_to() • Risposte ai messaggi – callback(), reply() – Operazioni esterne: – dialout(), leave_mess() Le azioni (4) Le istruzioni di salto • Permettono di muoversi tra i menù • Tipologie di salto: con o senza memoria • Le disponibili realizzate sono: – call(menu) – return(n) – jump(condition,menu1,menu2) Conclusioni • Realizzazione di un servizio configurabile dal punto di vista di funzionamento e dal punto di vista di organizzazione delle strutture dei menù • Possibile impiego come alternativa a soluzioni esistenti • Possibile utilizzo al di fuori del contesto della semplice Voicemail