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
Scarica

Presentazione