Tecnologie Assistive VoIP per Utenti Affetti da

Transcript

Tecnologie Assistive VoIP per Utenti Affetti da
UNIVERSITÀ DEGLI STUDI DI FERRARA
FACOLTÀ DI INGEGNERIA
Corso di Laurea in Ingegneria dell’Informazione
Tecnologie Assistive VoIP per Utenti Affetti da
Disabilità Visive
Tesi di Laurea di:
Relatore:
Nicola Di Trani
Chiar.mo Prof. Ing. Cesare Stefanelli
..............................................................
..............................................................
Anno Accademico 2008-2009
1
2
Alla mia famiglia
3
4
Indice:
Introduzione
7
Capitolo 1. Le disabilità visive
9
1.1 Legislazione italiana e internazionale
9
1.1.1 Legge n.4, 09/01/04-Legge Stanca
10
1.1.2 SECTION 508: “The Road to Accessibility”
12
1.2 Tecnologie Assistive
12
Capitolo 2. La telefonia VoIP e Asterisk
2.1 Panoramica sul VoIP
2.2 Introduzione ad Asterisk
2.3 Il Private Branch eXchange (PBX) e le sue funzioni
2.4 Asterisk: un PBX software dalle grandi potenzialità
15
15
18
18
19
2.4.1 Open Source è meglio
19
2.4.2 Punti chiave di Asterisk: Leggerezza, Scalabilità e Costi contenuti
19
Capitolo 3. Il software VoIP Accessibile
3.1 Requisiti di Progetto
3.2 Requisiti Funzionali
3.3 L’architettura dell’Applicazione
21
21
21
22
3.3.1 L’interfaccia utente
23
3.4 Realizzazione dell’Applicazione
25
3.4.1 Il package “blogics”
25
3.4.2 Il package “globale”
28
3.5 Le API Asterisk-Java
3.6 Java Access Bridge
3.7 Visione d’insieme sull’Applicazione
Capitolo 4. Test dell’Applicazione con l’utente
4.1 Allestimento hardware della postazione
4.2 Allestimento software della postazione
Appendice: Guida all’uso e configurazione
Guida all’uso dell’Applicazione
29
30
30
33
33
33
35
35
Modalità dell’Applicazione
35
5
Funzioni dell’Applicazione:
35
Guida alla configurazione dell’Applicazione
37
Configurazione Server Asterisk
37
Configurazione Server MySQL
38
Configurazione Client Java Virtual Machine
38
Configurazione Client Screen Reader Jaws
38
Configurazione Client Java Access Bridge
39
Conclusioni
41
Bibliografia
42
6
Introduzione
Nella moderna società dell’informazione comunicare è fondamentale. Negli ultimi due secoli
sono stati sviluppati strumenti sempre nuovi con lo scopo di trasferire, nel più breve tempo, la
maggior quantità possibile d’informazione. Solitamente lo sviluppo di tecnologie innovative, causa
l’abbandono di tecnologie più obsolete. Il telefono invece, nonostante la generale tendenza
all’abbandono, continua a essere uno degli strumenti per comunicare più diffusi al mondo.
Nell’ultimo decennio c’è stata la tendenza a trasferire il servizio telefonico dalla sua storica
infrastruttura di rete a commutazione di circuito alle più flessibili, scalabili, versatili, reti a
commutazione di pacchetto (di cui Internet ne è l’esempio principe). Da quest'idea è nato, e si è
sviluppato negli anni, il mondo della comunicazione vocale su reti IP (Voice Over IP).
In questi anni è in corso una progressiva e graduale migrazione verso i servizi di telefonia
VoIP. Per facilitare questo trasferimento si è cercato di mantenere il più alto livello possibile di
compatibilità d’interfaccia con il vecchio sistema, consentendo agli utenti di svolgere le stesse
funzioni con gli stessi metodi precedenti. Si pensi a un centralinista. Esso dovrà svolgere
fondamentalmente le seguenti azioni: rispondere alle chiamate in ingresso, trasferire le chiamate a
degli interni specifici, gestire chiamate multiple contemporanee. Se per eseguire le suddette azioni
si usassero metodi troppo innovativi, il centralinista impiegherebbe del tempo per imparare a usarli
e per tornare, per esempio in ambito aziendale, a essere “produttivo” al 100%. Ecco perché sono
stati progettati e realizzati apparecchi telefonici, del tutto simili a quelli tradizionali, ma che si
basano su una tecnologia radicalmente differente.
Tuttavia, esistono categorie di utenti che, pur mantenendo la retrocompatibilità, e purtroppo a
volte, indipendentemente da essa, potrebbero avere delle difficoltà a usare certi strumenti. Stiamo
parlando degli utenti affetti da disabilità. Per venire incontro a questi casi esistono direttive e linee
guida molto stringenti che fissano, per legge, dei vincoli di progetto entro i quali muoversi per
realizzare dispositivi accessibili e usabili, eventualmente avvalendosi di tecnologie assistive
specifiche per il particolare tipo di disabilità.
7
È questo dunque il contesto in cui ci muoveremo nei prossimi capitoli, andando ad
approfondire puntualmente le tecnologie assistive per disabili, il mondo della telefonia VoIP, il
progetto e la realizzazione di un software che svolge funzioni di controllo su un terminale telefonico
VoIP facente le funzioni di centralino aziendale. Il tutto rispettando le direttive e le linee guida per
l’usabilità e accessibilità definite, a livello nazionale, dalla “Legge Stanca” (Legge n.4 del 09/01/04
in tema di “Disposizioni per favorire l'accesso dei soggetti disabili agli strumenti informatici”) e
successivo D.M. 08/07/2005, che definisce i requisiti tecnici e i diversi livelli per l'accessibilità agli
strumenti informatici.
In particolare nella prima parte del primo capitolo si faranno alcune distinzioni sulle diverse
tipologie di disabilità. Nella seconda parte si esaminerà invece il panorama legislativo italiano in
materia di accessibilità e usabilità del software con qualche riferimento finale alla normativa
americana definita nella Section 508 del Rehabilitation Act.
Il secondo capitolo è un’introduzione al mondo del VoIP e dei Private Branch Exchange, con
riferimento particolare ad Asterisk, un PBX Open Source.
Nel terzo capitolo, si entrerà gradualmente e in modo sempre più approfondito nel software
realizzato, discutendo delle scelte effettuate e dei dettagli implementativi come pure dei problemi
legati alla sicurezza della comunicazione su rete IP.
Nel quarto capitolo sono riportati i risultati dei test effettuati con l’utente disabile.
L’appendice finale contiene informazioni utili all’uso e configurazione dell’applicazione realizzata.
8
Capitolo 1. Le disabilità visive
Le disabilità visive sono suddivise in relazione al livello d'invalidità che provocano. Il livello
d'invalidità è misurato con parametri oggettivi che valutano l’acutezza visiva e l’ampiezza del
campo visivo. Con il primo parametro, noto anche come “Visus”, si misura in decimi la capacità
visiva del paziente. La misura viene effettuata ponendo il paziente a una distanza prestabilita da un
pannello raffigurante caratteri alfanumerici di dimensione decrescente dall’alto verso il basso.
L’ampiezza del campo visivo è un parametro più rigoroso del precedente, si misura in modo
strumentale e fornisce informazioni sulla forma e l’estensione del campo visivo. Sulla base di questi
parametri la legge definisce e classifica i soggetti non vedenti.
1.1 Legislazione italiana e internazionale
La prima legge che si può citare è la n. 155 del 5 marzo 1965, la quale all'art. 2 recita: "Si
intendono privi della vista coloro che sono colpiti da cecità assoluta o hanno un residuo visivo non
superiore a un decimo in entrambi gli occhi con eventuale correzione." Questa formula è ripetuta in
varie leggi, da ultimo nell'art.1 comma 4 della legge n. 68 del 12 marzo 1999 sul collocamento
obbligatorio dei disabili. Il Ministero della Sanità con nota DPV.4/H-d1/466 in data 22 giugno 2001
ha precisato che tale definizione deve intendersi valida per qualsiasi legge che contenga
disposizioni a favore dei non vedenti senza altre specificazioni.
Con la legge 138 del 3 aprile 2001 è stata recepita la classificazione dell'Organizzazione
Mondiale della Sanità, che individua i ciechi e gli ipovedenti non solo sulla base del visus, cioè
dell'acutezza visiva, ma tenendo conto anche dell'ampiezza del campo visivo, cioè della porzione di
spazio che l'occhio è in grado di vedere davanti a sé. La legge definisce i concetti di "cieco
assoluto", "cieco parziale", "ipovedente grave", "ipovedente medio-grave" e "ipovedente lieve",
comprendendo nelle ultime due categorie i soggetti con un'acutezza visiva da 1 a 3 decimi.
Le leggi in materia di collocamento lavorativo, in attesa di un pronunciamento analogo del
Ministero del Lavoro, adottano tuttora esclusivamente il parametro dell'acutezza visiva o visus.
9
Tradizionalmente i non vedenti sono stati avviati ad alcune professioni: centralinista,
massaggiatore, fisioterapista, insegnante, musicista. Nel corso degli anni il Parlamento ha emanato
leggi speciali che facilitano l'inserimento dei ciechi in questi ambiti. È da segnalare in particolare la
legge n. 113 del 1985, che prevede l'obbligo di assumere un centralinista non vedente per le aziende
pubbliche e private che presentino determinati requisiti. Peraltro il progresso tecnologico ha reso
tale legge superata e di sempre più difficile applicazione. Per poter usufruire di tale legge il non
vedente dev'essere iscritto all'albo speciale dei centralinisti telefonici, cui si accede mediante
concorso, da sostenere dopo aver frequentato un apposito corso professionale oppure dopo aver
svolto effettivamente la mansione di centralinista presso un'azienda per almeno sei mesi.
1.1.1 Legge n.4, 09/01/04-Legge Stanca
Con l’intento di fornire pari diritti e dignità ai lavoratori disabili, dopo pressioni e
sollecitazioni da parte delle associazioni nazionali di disabili, si è giunti alla discussione e
successiva approvazione in parlamento della Legge n.4, del 09/01/04 in tema di “Disposizioni per
favorire l'accesso dei soggetti disabili agli strumenti informatici”. La Legge si applica a tutta
l'amministrazione pubblica, alle aziende private concessionarie di servizi pubblici e alle
municipalizzate.
La Legge definisce i seguenti termini:
“accessibilità”: la capacità dei sistemi informatici, nelle forme e nei limiti consentiti dalle
conoscenze tecnologiche, di erogare servizi e fornire informazioni fruibili, senza discriminazioni,
anche da parte di coloro che a causa di disabilità necessitano di tecnologie assistive o configurazioni
particolari;
“tecnologie assistive”: gli strumenti e le soluzioni tecniche, hardware e software, che
permettono alla persona disabile, superando o riducendo le condizioni di svantaggio, di accedere
alle informazioni e ai servizi erogati dai sistemi informatici.
Inoltre, la Legge si occupa di stabilire gli obblighi previsti per garantire l'accessibilità, gli
strumenti per la verifica dell'accessibilità e le responsabilità in caso di mancata attuazione delle
10
procedure previste. Di tali procedure si occupa il Decreto Ministeriale (DM 08/07/05) definendo i
requisiti tecnici e i diversi livelli di accessibilità agli strumenti informatici. Per quello che ci
compete in questa sede, faremo riferimento in particolare all'allegato D del Decreto che definisce i
“Requisiti tecnici di accessibilità per l’ambiente operativo, le applicazioni e i prodotti a scaffale”.
Per ciascun requisito viene indicato il numero d’ordine, l’enunciato, il riferimento agli standard
definiti nella Section 508 del Rehabilitation Act,
Requisito n. 1: “Le funzioni previste dall’interfaccia utente devono poter essere attivate anche attraverso
comandi da tastiera nei casi in cui possa essere fornita una descrizione della funzione stessa o del risultato della sua
esecuzione.” [Section 508: 1194.21 (a)]
Requisito n. 2:”Comandi e funzionalità dell’interfaccia utente non devono limitare o disabilitare le
caratteristiche e le funzionalità di accessibilità dell’ambiente operativo documentate e rese disponibili dal
produttore dell’ambiente stesso.” [Section 508: 1194.21 (b)]
Requisito n. 3: “L’applicazione deve rendere disponibili sufficienti informazioni, quali gli elementi
identificativi, le operazioni possibili e lo stato, sugli oggetti contenuti nell’interfaccia utente affinché le
tecnologie assistive possano identificarli interpretandone le funzionalità.” [Section 508: 1194.21 (d)]
Requisito n. 4: “Nel caso di simboli grafici utilizzati per identificare controlli, indicatori di stato o
altri elementi di programma, il significato assegnato a tali simboli deve essere coerente nell’ambito
dell’intera applicazione, ivi compresa l’interfaccia utente.” [Section 508: 1194.21 (e)]
Requisito n. 5: “Le informazioni di tipo testuale devono essere fornite utilizzando le funzionalità
dell’ambiente operativo previste per la visualizzazione del testo; in particolare devono essere disponibili il
contenuto testuale, la locazione del punto di inserimento e gli attributi del testo.” [Section 508: 1194.21 (f)]
Requisito n. 6: “L’applicazione che utilizza segnalazioni audio deve prevedere una funzionalità
equivalente di tipo visivo, seguendo le eventuali convenzioni dell’ambiente operativo.” [Section 508:
1194.31 (c)]
Requisito n. 7: “Per fornire informazioni, per indicare o per richiedere azioni non devono essere
utilizzati unicamente animazioni, elementi grafici o sonori e differenze di colori.” [Section 508: 1194.21 (i)
(h)]
11
Requisito n. 8: “Enunciato: Le applicazioni non devono sovrapporsi alle scelte effettuate dall’utente
riguardo a livelli di contrasto, colori ed altri attributi di visualizzazione.” [Section 508: 1194.21 (g)]
Requisito n. 9: “L’interfaccia utente non deve contenere elementi di testo, oggetti o altri elementi
lampeggianti aventi una frequenza di intermittenza maggiore di 2Hz e minore di 55Hz.” [Section 508:
1194.21 (k)]
Requisito n. 10: “L’elemento attivo “focus” di una interfaccia utente deve essere chiaramente
identificabile; la identificazione e la variazione del focus devono essere segnalate a livello di interfaccia di
programmazione (API) affinché le tecnologie assistive possano gestirle; vanno altresì adeguatamente
segnalati gli elementi che richiedono obbligatoriamente un’azione da parte dell’utente.” [Section 508:
1194.21 (c)]
Requisito n. 11:”La documentazione di supporto al prodotto e le caratteristiche di accessibilità
devono essere rese disponibili anche in formato elettronico accessibile.” [Section 508: 1194.41]
1.1.2 SECTION 508: “The Road to Accessibility”
La normativa, le linee guida e i requisiti citati sono stati recepiti dalla “Section 508 Rehabilitation Act” che è la corrispettiva normativa vigente negli Stati Uniti d’America, “pionieri”
in questo campo fin dal 1998, in materia di accessibilità: agli strumenti informatici, ai contenuti
multimediali, ai siti web e agli strumenti software.
1.2 Tecnologie Assistive
Per consentire agli utenti disabili di interagire con gli strumenti informatici si rendono
necessari, a seconda del tipo specifico di disabilità, degli ausili, definiti dalla legge Stanca, noti
come: “tecnologie assistive”. Nel particolare caso in esame si farà riferimento a tutte quelle
tecnologie che consentono ai soggetti non vedenti di usare agevolmente gli strumenti informatici
indipendentemente dal loro handicap.
Per i soggetti ipovedenti lievi sono sufficienti alcuni accorgimenti software come: Screen
Magnifier (componenti software che consentono di ingrandire particolari aree di interesse dello
12
schermo) e modalità di funzionamento speciali, con caratteri grandi e combinazioni di colori a
contrasto elevato.
Differenti sono le tecnologie assistive per i non vedenti e gli ipovedenti gravi. In particolare
non sono più sufficienti, e in alcuni casi risultano persino inutili, soluzioni software come le
precedenti. C’è la necessità di avere componenti hardware e software che svolgano funzioni
specifiche:
Barra Braille, riproduce in alfabeto Braille il testo visualizzato sullo schermo riga per riga.
L’utente ha a disposizione delle rotelline per scorrere il testo sullo schermo e, di conseguenza,
visualizzarlo sulla barra;
Screen Reader, dispositivo concettualmente simile alla barra Braille ma che riproduce su
output sonoro per mezzo di una voce sintetizzata le informazioni visualizzate sullo schermo (in
questo campo, uno standard “di fatto” in ambiente MS Windows è rappresentato da JAWS)
13
14
Capitolo 2. La telefonia VoIP e Asterisk
2.1 Panoramica sul VoIP
VoIP, Voice Over IP (Internet Protocol) è una tecnologia che consente di distribuire su reti IP
il servizio di telefonia. Il vantaggio di questa tecnologia è che sfrutta una rete, per sua natura, a
commutazione di pacchetto rispetto alla tradizionale rete telefonica PSTN, a commutazione di
circuito. Questa differenza sostanziale va a vantaggio del VoIP se si usa la banda impegnata come
criterio di valutazione. Le reti a commutazione di pacchetto infatti, consento di non impegnare
banda se non per il tempo effettivo di comunicazione (quando gli utenti parlano). Nella PSTN a
commutazione di circuito invece, il canale viene impegnato per tutta la durata della conversazione,
indipendentemente dal fatto che i due utenti stiano parlando oppure no.
Quasi in una sorta di principio di azione e reazione, a un vantaggio è associato sempre uno
svantaggio. Il problema più grande delle reti IP è che non forniscono nativamente il supporto alla
qualità di servizio (QoS), ovvero a quegli strumenti che consentono di avere una comunicazione
non affetta da consistenti perdite di pacchetti o ritardi eccessivi.
Parametri utili per valutare la qualità di servizio in una comunicazione sono:
•perdita di pacchetti: percentuale di pacchetti smarriti rispetto ai pacchetti trasmessi; nel
VoIP è tollerabile un tasso di perdita di pacchetti non superiore al 5%. Entro questo limite si
possono adottare tecniche di correzione che consentono la ricostruzione dei pacchetti senza che
l’orecchio percepisca variazioni nella qualità del parlato.
•ritardo: tempo che impiega il pacchetto (già costruito) ad attraversare la rete fino al
destinatario. Questo parametro è da intendersi come “ritardo medio”. Le variazioni rispetto al
ritardo medio sono identificate dal termine jitter. Per ovviare a questo fenomeno indesiderato si
introducono al ricevitore dei buffer che annullano il jitter ma incrementano il ritardo complessivo
che, in ambito VoIP, può essere compreso fra i 150 e i 200 milli secondi e non deve superare nella
15
peggiore delle ipotesi i 400ms Al raggiungimento, o peggio, al superamento di questa soglia la
comunicazione diventa insostenibile.
•consegna fuori ordine: per contenere il ritardo, a livello 4 nello stack protocollare OSI, si è
scelto UDP come protocollo di trasporto. Tale scelta è dovuta al fatto che in applicazioni real time è
preferibile perdere un pacchetto piuttosto che attendere una sua ritrasmissione. UDP inoltre esclude
l’esistenza di meccanismi di controllo dell’ordine dei pacchetti che, seppur trasmessi nell’ordine
corretto, a causa del possibile instradamento su percorsi differenti, possono raggiungere il
destinatario in ordine diverso. Questo vuol dire che al ricevitore sarà necessario un apparato che
riordini i pacchetti nel modo corretto prima di inviarli alle elaborazioni successive; ancora una volta
si va a incrementare il ritardo globale.
Nelle immagini seguenti (Figura 2.1, Figura 2.2, Figura 2.3) sono raffigurati i passaggi
necessari rispettivamente per la costruzione del pacchetto VoIP, per la rimozione del jitter e per
ristabilire l’ordine dei pacchetti al destinatario. In Tabella 2.1 sono riportate delle stime dei ritardi
medi necessari alla conversione digitale, compressione, costruzione del pacchetto e trasmissione
sulla rete. Le stime sono fornite da Cisco Systems.
Conversione
Analogico/Digitale
Codifica
(compressione)
Costruzione del Pacchetto
IP
UDP
UDP
INFORMAZIONE
(Payload)
Figura 2.1. Conversione Digitale, Compressione da PCM a ITU-T G.729, Generazione del Pacchetto con
gli header IP, UDP, RTP (Real-Time Transfer Protocol)
16
Buffer di Dejitter
(Ristabilisce il ritmo dei pacchetti)
Ritmo costante ristabilito
Fenomeno di Jitter
(Irregolarità dei tempi interarrivoi)
Tempo di
Immagazinamento
Figura 2.2. Buffer per la rimozione del jitter. Il tempo di immagazzinamento nel buffer è una delle cause di
ritardo aggiuntivo nella trasmissione del pacchetto VoIP.
Immagazzinamento e rilancio
(ristabilisce l’ordine dei pacchetti)
Ordine ristabilito
I pacchetti arrivano da percorsi
diversi e non rispettano
l’ordine
Tempo di
accodamento
Figura 2.3. Riordinamento dei pacchetti. Il tempo di accodamento nel buffer è una delle cause di ritardo
aggiuntivo nella trasmissione del pacchetto VoIP.
Causa di ritardo
Stima
Costruzione pacchetto
~ 25 ms
Accodamento
~ 5 ms
Propagazione
~ 30 ms
Serializzazione
~ 5 ms
Dejitter
~ 50 ms
Totale
~ 115 ms
Attraversamento rete
sconosciuto a priori
Tabella 2.1. Stime dei ritardi. Per restare nel limite dei 150ms - 200ms, il tempo di attraversamento della
rete dev'essere compreso fra i 35 ms e gli 85 ms
17
2.2 Introduzione ad Asterisk
Uno schema di massima per rappresentare una rete telefonica mista, VoIP-PSTN, è
rappresentato in Figura 2.4. In questo capitolo ci si concentrerà sul componente indicato in figura
come PBX (Private Branch eXchange) andando ad analizzare le sue funzioni e le sue possibili
implementazioni, sia hardware che software, in ambito VoIP.
Internet
(VoIP)
Router
Router
Telefono IP
Gateway
PC
PSTN
Telefono
tradizionale
PBX
Figura 2.4 Schema di massima di una Rete VoIP-PSTN
2.3 Il Private Branch eXchange (PBX) e le sue funzioni
Il Private Branch eXchange (Centrale Telefonica Privata) è un componente d'interfaccia fra la
tradizionale rete telefonica PSTN a commutazione di circuito e una rete telefonica privata di
qualsiasi natura (PSTN o VoIP). Il PBX tradizionalmente svolge la funzione di “centralino”, ovvero
di un apparato in grado di mettere in comunicazione un terminale sulla rete interna con la rete
esterna PSTN, oppure due terminali sulla rete interna. Tutti i terminali connessi attraverso il PBX
possono eseguire operazioni semplici come la ricezione, l’inoltro e il trasferimento di chiamata o
operazioni più complesse (segreteria telefonica, conferenze, menu vocali, musica d’attesa, ecc..).
Risulta chiaro quindi che il numero di funzioni o servizi aggiuntivi, dipende esclusivamente dalla
18
versatilità e dalla capacita del centralino stesso d'implementarli, motivo per cui, sotto quest’aspetto,
una soluzione software è da preferirsi senza dubbio a un PBX hardware. Altri punti a favore del
PBX software sono dati principalmente da: eterogeneità, capacità di connettere fra loro terminali di
natura diversa (es. terminali VoIP e terminali su rete PSTN); scalabilità, la possibilità di aggiungere
un numero indefinito di terminali connessi fra loro; altro punto a favore è dato dalla tolleranza ai
guasti (fault tollerance) che dipende esclusivamente dall’hardware della macchina su cui è eseguito
il software e non da hardware dedicato soggetto a possibili guasti per cui risultano necessari
interventi, a volte, onerosi. Soffermandosi dunque su questi punti, si può concludere che un PBX
software permette un consistente abbattimento dei costi (schede d'interfaccia, schede di espansione,
ecc..) senza evidenti controindicazioni che farebbero preferire una soluzione hardware.
2.4 Asterisk: un PBX software dalle grandi potenzialità
Tra i PBX si trovano soluzioni sia in ambiente proprietario, che open source. Tra i primi si
possono citare ad esempio Cisco CallManager e Nortel CS 1000, mentre nella famiglia dei PBX
open source figurano Asterisk, Openser e Callweaver.
2.4.1 Open Source è meglio
La scelta spesso ricade sui software open source principalmente per motivi legati ai costi
praticamente nulli. Questo tuttavia non è il solo fattore che influenza la scelta. C’è una forte spinta
verso il mondo open source dovuta al fatto che in quell’ambiente “nulla è mai fermo”, le
applicazioni sono in continua evoluzione e miglioramento, si può contare sul supporto costante di
un’intera comunità di sviluppatori.
2.4.2 Punti chiave di Asterisk: Leggerezza, Scalabilità e Costi contenuti
Detto questo sul mondo Open Source, perché proprio Asterisk? A parità di costi, pressoché
nulli, Asterisk è senza dubbio, in ambito open source, il PBX software maggiormente riconosciuto e
supportato sul web. Siti competenti in materia lo propongono di fatto come uno standard e la sua
popolarità, derivante dall’affidabilità, dalla sua leggerezza e dalla forte scalabilità, è in aumento
costante.
19
La vera forza di Asterisk però sta nel permettere agli utenti che lo useranno, una fortissima
personalizzazione delle configurazioni, delle funzioni e dei servizi, mettendo a disposizione
dell’utente numerose interfacce che consentono ad applicazioni esterne di comunicare con il
software. Gli sviluppatori quindi stanno gradualmente spostando la loro attenzione da Asterisk, alle
applicazioni che interagiscono con Asterisk.
Asterisk fornisce un’interfaccia chiamata “AGI” (Asterisk Gateway Interface) che consente
agli sviluppatori d'implementare nuove funzioni nel linguaggio che preferiscono (Perl, PHP, C,
Pascal, Bourne Shell) e richiamarle direttamente dal dialplan di Asterisk (il file che contiene le
istruzioni su come gestire le chiamate in transito attraverso il centralino).
Asterisk fornisce inoltre un’interfaccia manager chiamata AMI (Asterisk Manager Interface) a
cui una macchina remota si può connettere per monitorare lo stato di Asterisk, i canali attivi, il
dialplan, gestire gli eventi e comandare azioni specifiche. L’unica pecca di quest'interfaccia riguarda
la sicurezza. Per la connessione all’interfacccia manager infatti, si usa il protocollo Telnet che da
notevoli problemi legati alla trasparenza dei dati in transito sulla rete. Per aggirare questo
problema , se il contesto applicativo lo rende necessario, si usano tecniche di tunneling via Ssh.
20
Capitolo 3. Il software VoIP Accessibile
L’obiettivo del progetto è stato sviluppare un’interfaccia VoIP da integrare nel sistema
telefonico attualmente esistente e in servizio presso il Comune di Cento.
L’interfaccia sviluppata rispetta oltre ai normali requisiti previsti per la pubblica
amministrazione, anche i requisiti di accessibilità previsti dalla legge per gli utenti non vedenti.
(vedi Capitolo 1).
Di seguito si farà riferimento all’interfaccia VoIP realizzata con il termine: “l’Applicazione”.
Saranno utilizzati termini come: “Ambiente Operativo” e “Tecnologie Assistive”, definiti dalla
Legge. (vedi Capitolo 1).
3.1 Requisiti di Progetto
É richiesta la realizzazione di una Applicazione multipiattaforma, open source e accessibile. Il
primo requisito è dettato dall’impossibilità di conoscere a priori l’ambiente operativo e il contesto
in cui l’applicazione andrà a lavorare. Pertanto è necessario garantire la massima interoperabilità fra
piattaforme differenti. Per venire incontro a questa esigenza le strade sono due: realizzare una
Applicazione Web, da eseguire in un browser, oppure realizzare una Applicazione basata su Java, da
eseguire in una Macchina Virtuale Java, disponibile per qualsiasi piattaforma. L’avere come
requisito la realizzazione di un software Open Source è da intendersi come uno stimolo e un invito
al miglioramento continuo dell’Applicazione, ed eventualmente in futuro, all’ampliamento delle sue
funzioni. Terzo e ultimo requisito di progetto è garantire l’accessibilità e l’usabilità
dell’Applicazione, in modo da renderla conforme alle particolari esigenze di un utente non vedente.
3.2 Requisiti Funzionali
L’Applicazione deve poter svolge le funzioni base di un centralino telefonico:
• Ricezione e Inoltro di chiamate;
• Trasferimento di chiamate;
21
• Trasferimento Automatico;
• Modalità Notturna.
Oltre alle operazioni base, l’Applicazione deve implementare anche il servizio “Rubrica”.
3.3 L’architettura dell’Applicazione
L’Applicazione è realizzata, come in ogni software Object Oriented, su strati multipli. [Figura
3.1]. Ogni strato, procedendo dal basso verso l’alto, aggiunge un livello di astrazione in più rispetto
al sottostante. Questo tipo di approccio consente di utilizzare, ad esempio a livello d’interfaccia
utente, dei metodi di alto livello in grado di gestire autonomamente al loro interno eventuali
possibili eccezioni a runtime nell’Applicazione e, conseguentemente, nascondere la complessità
stessa dell’Applicazione sottostante. Questo tipo di struttura software favorisce una
programmazione modulare basata sui principi della programmazione a oggetti.
I livelli dell’Applicazione sono fondamentalmente tre. In riferimento alla Figura 3.1, partendo
dal più alto e andando verso il basso abbiamo: Interfaccia Utente (GUICentralinoVoIP), le Logiche
di Business (blogics) e infine lo strato dei Servizi (globale).
G.U.I. Centralino VoIP
blogics
globale
Figura 3.1 Struttura a livelli dell’Applicazione
22
3.3.1 L’interfaccia utente
L’interfaccia è il punto chiave dell’applicazione. Visto il particolare tipo di utente a cui
l’Applicazione è destinata, un requisito fondamentale, come previsto dalla Legge, è che l’interfaccia
grafica (GUI - Graphical User Interface) sia completamente navigabile attraverso la tastiera per
mezzo delle “Access Keys”, tasti speciali presenti su tutte le tastiere QWERTY che consentono di
spostare il focus fra i componenti dell’interfaccia e interagire con essi (esempio: Tab, Barra
Spaziatrice, Invio, Escape, Frecce..ecc..). Per far si che l’interfaccia sia semplice ed essenziale, è
stata dotata dei soli componenti strettamente necessari a eseguire le funzioni richieste. Inoltre,
l’interfaccia implementa una “macchina a stati”. Ogni stato mappa una particolare modalità di
funzionamento del centralino.
Le possibili modalità di funzionamento del software sono:
• Idle: il centralino è attivo e pronto a ricevere o inoltrare chiamate;
• Selezione: il centralinista vuole comporre un numero per incominciare una nuova chiamata
o per trasferirne una in corso;
• Comunicazione: è attiva la chiamata su un canale e il centralinista sta parlando;
OPZIONI
NOTTURNA
TRANSFALL
IDLE
COMUNICAZIONE
accetta
componi
pausa
trasferisci
termina
RUBRICA
SELEZIONE
Figura 3.2 Schema di Macchina a Stati che mostra le transizioni possibili fra le modalità dell’interfaccia
23
• Transfall: trasferimento automatico delle chiamate per, ad esempio, assenze brevi del
centralinista. Tutte le chiamate in ingresso al centralino vengono quindi deviate a un altro ufficio;
• Notturna: le chiamate in ingresso vengono trasferite a un risponditore automatico che
riproduce un messaggio informativo preregistrato;
• Opzioni: modalità che consente d'impostare i valori di alcune variabili globali
dell'Applicazione (come il numero degli interni a cui trasferire automaticamente le chiamate);
In particolare, per accedere alla modalità opzioni, si pone automaticamente il centralino in
“trasferimento automatico” (transfall) in modo che l’operatore non sia disturbato da chiamate in
ingresso mentre sta modificando i parametri dell’Applicazione.
L’applicazione è in grado di gestire chiamate multiple con un sistema a coda. Gli utenti che
cercano di contattare il centralino mentre questo è impegnato in un'altra conversazione, vengono
informati attraverso un messaggio vocale del numero degli eventuali utenti in coda prima di loro e
del tempo di attesa stimato.
All’avvio, il software è in modalità notturna. Questa modalità è caratterizzata dal
trasferimento di tutte le chiamate in ingresso al centralino a un risponditore automatico, informando
il chiamante che gli uffici comunali sono momentaneamente chiusi.
Dalla modalità notturna, si può passare in IDLE, ovvero in modalità di “attesa”. Il centralino
in questa modalità è attivo e pronto a ricevere chiamate in ingresso.
Qualora sia il centralinista a voler inoltrare una chiamata, esso ha a disposizione più modi per
farlo: comporre direttamente il numero sul telefono VoIP (l’Applicazione si accorge di questo
evento e va in modalità “Comunicazione”); attraverso l’Applicazione, passando in modalità
“Selezione”, componendo il numero (eventualmente ricercato in rubrica) e inoltrando la chiamata
(si passa in modalità “Comunicazione”).
24
3.4 Realizzazione dell’Applicazione
Si riporta in Figura 3.3 un pezzo di diagramma UML che rappresenta la classe
GUICentralinoVoIP.java. Entrando nei dettagli del linguaggio di programmazione Java, per
implementare l’interfaccia e le sue modalità, sono stati utilizzati come contenitori, dei componenti
javax.Swing.JPanel che vengono richiamati e nascosti alternativamente e in modo automatico
sfruttando le potenzialità del CardLayout, uno dei layout predefiniti di Java che consentono una
semplice “navigazione” nelle interfacce utente multipannello.
GUICentralinoVoIP
Attributi
- private boolean TRASFERIMENTOINCORSO
- private ManagerConnection connection
- private JPanel jPanComunicazione
- private JPanel jPanIdle
- private JPanel jPanSelezione
- private JPanel jPanNotturna
- private JPanel jPanTransfall
- private JPanel jPanOpzioni
Metodi
+ public GUICentralinoVoIP ( )
+ public void gotoIdle ( )
+ public void gotoComunicazione ( )
+ public String getModalita ( )
+ public void idleSettings ( )
+ public void notturnaSettings ( )
+ public void transfallSettings ( )
+ public void opzioniSettings ( )
+ public void selezioneSettings ( )
+ public void comunicazioneSettings ( )
+ public static void main ( String args [0..*] )
Figura 3.3 Diagramma UML - Classe GUICentralinoVoIP. Sono riportati solo i metodi e gli attributi
principali, tralasciando i componenti javax.Swing secondari
3.4.1 Il package “blogics”
Questo Package contiene le “Logiche di Business” ovvero l’insieme delle classi che
costituiscono il cuore dell’applicazione. In questo package la classe fondamentale è
“Centralino.java”, [Figura 3.4] una cui istanza, creata usando un pattern “Singleton”, viene creata
25
all’avvio dell’Applicazione e passata all’interfaccia (GUICentralinoVoIP.java) che può accedere ai
metodi pubblici della classe Centralino.java per comandare le azioni che esso può svolgere.
Tra i metodi principali di questa classe abbiamo: “doConnetti”, “doChiama”, “doTrasferisci”
e “doChiudi”. I metodi preceduti dal “do” sono chiamati dall’interfaccia utente e restituiscono un
valore booleano che indica, in una logica transazionale, se le operazioni sono state eseguite
correttamente. Questi metodi di alto livello richiamano i loro corrispettivi di basso livello:
“componi”, “trasferisci” e “termina”, passandogli l’oggetto “connection” che rappresenta la
connessione al Server Asterisk.
Al package blogics appartiene la classe di servizio “Database.java” [Figura 3.5] e la classe
“Chiamata.java” [Figura 3.6] che rappresenta la singola chiamata gestita dal centralino.
Il metodo statico della classe Database “getElementsFromRubrica” restituisce un ArrayList
composto di oggetti della classe Contatto.java [Figura 3.7]. La scelta di posizionare questa classe
all’interno del package blogics, e non in “globale”, come sarebbe più logico, è stata dovuta dal non
voler frammentare troppo l’Applicazione, essendo “Database” una classe non fondamentale per
l’Applicazione stessa.
Centralino
Centralino
Attributi
- private ManagerConnection connection
Metodi
+ public Centralino ( GUICentralinoVoIP gui )
+ public boolean isNotturna ( )
+ public boolean isTransfall ( )
+ public boolean doConnetti ( )
+ public boolean doChiudi ( )
+ public boolean doTrasferisci ( )
+ public void setConnection ( ManagerConnection connection )
+ public Chiamata popChiamata (Chiamata chiamata )
+ public void pushChiamata (Chiamata chiamata )
+ public boolean existUniqueID ( Chiamata chiamata )
+ public int getNumeroChiamateAttiva ( )
+ public Chiamata getChiamateAttiva ( )
+ public void termina (ManagerConnection connection, Chiamata chiamata )
+ public void componi (ManagerConnection connection, Chiamata chiamata )
+ public void trasferisci ( ManagerConnection connection, Chiamata chiamataattiva, String numtrasf )
+ public void onManagerEvent ( ManagerEvent event )
Figura 3.4 Diagramma UML - Classe Centralino
26
Database
Attributi
Metodi
+ public void setNotturnaOFF ( )
+ public void setNotturnaON ( )
+ public ArrayList getElementsFromRubrica ( String estensione )
+ public ArrayList getElementsFromRubrica ( )
+ public boolean doChiudi ( )
Figura 3.5 Diagramma UML - Classe Database
Chiamata
Attributi
- private String callerid
- private String channel
- private String channelCentralino
- private String context
- private String exten
- private Integer priority
- private Long timeout
- private String uniqueid
- private String uniqueidCentralino
Metodi
+ public String toString ( )
Figura 3.6 Diagramma UML - Classe Chiamata.
Centralino, gestisce un’array di istanze di Chiamata
Contatto
Attributi
- private String exten
- private String descrizione
Metodi
+ public Contatto ( String descrizione, String exten )
+ public void setExten ( String exten )
+ public String getExten ( )
+ public void setDescrizione ( String descrizione )
+ public String getDescrizione ( )
Figura 3.7 Diagramma UML - Classe Contatto
27
3.4.2 Il package “globale”
Il package “globale” è al livello più basso dell’Applicazione. Contiene classi e costanti
richiamate in ogni punto dell’Applicazione e a tutti i livelli. È composto dalle classi Fifo.java
[Figura 3.8] e Costanti.java [Figura 3.9], la prima rappresenta una struttura a coda secondo la logica
FIFO (First In First Out) usata dall’istanza di blogics.Centralino per gestire la coda delle chiamate
attive, la seconda contiene i parametri e le costanti globali dell’Applicazione.
Fifo
Attributi
- private ArrayList lista
Metodi
+ public Fifo ( )
+ public int size ( )
+ public void push ( Object oggetto )
+ public Object pop ( )
+ public Object pop ( Object oggetto )
+ public Object get ( Object oggetto )
+ public Object get ( )
+ public Object get ( int posizione )
Figura 3.8 Diagramma UML-Classe Fifo
Costanti
Attributi
- public String UID_AMI
- public String PWD_AMI
- public String SERVER_VOIP
- public String NUMCENTRALINO
- public String CONTEXT
- public String TRANSFALLEXTEN
- public String NOTTURNAEXTEN
- public String CONNECTIONSTRING
- public String NOTTURNA
- public String TRANSFALL
- public String ATXFER
- public String BLXFER
- public Long TIMEOUT
- public Integer PRIORITY
- public String PROTOCOLLO
- public String AGENT
Metodi
Figura 3.9 Diagramma UML-Classe Costanti
28
3.5 Le API Asterisk-Java
L’Applicazione descritta finora, interagisce costantemente con il server Asterisk, inviando
comandi, ricevendo risposte, e gestendo eventi generati dal server. Per dialogare con il server
Asterisk, l’Applicazione sfrutta l’interfaccia Manager.
L’interfaccia Manager di Asterisk è attiva via Telnet di default sulla porta TCP 5038. Tutti i
comandi, le risposte e gli eventi, sono gestiti in modalità testuale (stream di caratteri). Per rendere
più agevole il lavoro dello sviluppatore software, sono state implementate delle Api (Application
Programming Interface) in linguaggio java che consentono di lavorare e manipolare, con metodi di
alto livello, gli stream di caratteri inviati e ricevuti attraverso l’interfaccia Manager di Asterisk.
Le classi e le interfacce di interesse appartenti al package “asteriskjava” sono in particolare:
• ManagerEventListener: interfaccia che espone il metodo onManagerEvent() da
implementare in un apposito gestore. Nell’Applicazione, il gestore è la classe Centralino che
implementa il metodo onManagerEvent. Al verificarsi di un evento generato dal server Asterisk,
viene chiamato il metodo onManagerEvent sull’istanza di Centralino.
• ManagerConnection: Classe che modella l’oggetto che gestisce la connessione all’Asterisk
Manager. Espone i metodi: login() e logoff().
• ManagerConnectionFactory: Classe di servizio il cui scopo unico è generare un’istanza di
ManagerConnection sulla base delle credenziali di login fornite.
• Package “asterisk.events.*”: Contiene le classi che modellano gli eventi generati
dall’Asterisk Manager. Gli eventi sono gestiti nel metodo onManagerEvent dell’istanza di
Centralino che implementa l’interfaccia ManagerEventListener.
29
3.6 Java Access Bridge
Per rendere l’Applicazione realizzata compatibile con le tecnologie assistive è necessario, in
ambiente Windows, disporre di un ulteriore componente: il Java Access Bridge, un software che fa
da ponte fra l’Applicazione java con la sua interfaccia, e il sistema operativo della macchina su cui
sono in esecuzione la Java Virtual Machine e le Tecnologie Assistive.
Il Java Accessibility Utility Classes, rappresentato in Figura 3.10, è un package che contiene
classi astratte e interfacce che tutti i componenti accessibili devono implementare. Le interfacce
grafiche realizzate con componenti Swing, come quest'applicazione, normalmente implementano
già tali interfacce.
Non è stato necessario altro lavoro in questa direzione. È stato sufficiente installare il
componente Java Access Bridge e lo Screen Reader, e constatare che l’Applicazione, come c’era da
aspettarsi, interagisse correttamente con le Tecnologie Assistive.
Figura 3.10 Interazioni fra l’Applicazione Java, Java Accessibility, Java Access Bridge, Sistema Operativo e
Tecnologie Assistive.
3.7 Visione d’insieme sull’Applicazione
Sempre in riferimento all’immagine precedente [Figura 3.10], l’Applicazione realizzata,
rappresentata nella sua visione d’insieme in Figura 3.11, si colloca nel blocco “Java App.”. In figura
3.12 e 3.13 si mostrano alcuni screenshot dell’Applicazione.
30
GUICentralinoVoIP
globale
blogics
Centralino
Fifo
Costanti
Chiamata
Database
asteriskjava
<< interface >>
ManagerEventListener
Contatto
Figura 3.11 Diagramma UML dell'Applicazione - Visione d’insieme
Figura 3.12 Finestra principale dell’Applicazione
Figura 3.13 Finestra di composizione dell’Applicazione
31
32
Capitolo 4. Test dell’Applicazione con l’utente
4.1 Allestimento hardware della postazione
• Telefono VoIP: Terminale telefonico fisico da usare come centralino, controllato
dall’Applicazione;
• PC con sistema operativo Ms Windows XP: costituisce l’ambiente operativo definito
dalla Legge;
• Cuffie auricolari con microfono integrato;
• Server Asterisk;
• Server MySql.
4.2 Allestimento software della postazione
• Java Virtual Machine: Macchina Virtuale Java, necessaria a eseguire l’Applicazione;
• Java Access Bridge: componente software d'interfaccia tra l’Applicazione e le Tecnologie
Assistive messe a disposizione dall’Ambiente Operativo;
• Software Screen Reader Jaws v.10: Tecnologia Assistiva che interagisce con
l’Applicazione attraverso il Java Access Bridge.
I test sono stati effettuati partendo da PC spento per verificare che l’utente disabile fosse in
grado di avviare la macchina. L’applicazione parte automaticamente all’avvio grazie a uno script
batch. Per segnalare l’avvenuta apertura, l’applicazione invia dei feedback sonori.
L’utente ha da subito acquisito familiarità con le Tecnologie Assistive riuscendo fin da subito
a utilizzare la propria postazione di lavoro per l’uso prestabilito, riuscendo a navigare fra le
modalità dell’Applicazione descritte nel capitolo 3, paragrafo 3.2.1, e a gestire correttamente le
chiamate in ingresso/uscita e i trasferimenti di chiamata. Non si esclude che, in futuro, imparando a
usare la tastiera e a sfruttare al meglio le potenzialità che lo screen reader offre, l’utente possa usare
appieno tutte le funzioni del PC (software di videoscrittura, accesso a internet..ecc..).
33
34
Appendice: Guida all’uso e configurazione
Guida all’uso dell’Applicazione
Premessa: L’applicazione è interamente accessibile e navigabile attraverso la pressione dei
tasti (accesskeys) “TAB” e “SPAZIO” presenti sulla tastiera; è data la possibilità di usare dei tasti di
scelta rapida (ESCAPE, F1, F2, F3, F4, F5, F6). Per navigare fra i componenti dell’interfaccia usare
il tasto TAB, per selezionare un componente (ad esempio un pulsante) dell’interfaccia usare il tasto
SPAZIO.
Modalità dell’Applicazione
• Attesa: il software è pronto a ricevere e inviare chiamate;
• Selezione: il software attende la composizione di un numero telefonico (eventualmente
selezionato dalla rubrica);
• Comunicazione: c’è una chiamata in corso;
• Trasferimento: il software attende la composizione del numero telefonico a cui trasferire la
chiamata;
• Trasferimento Automatico: le chiamate dirette al centralino vengono automaticamente
deviate verso un altro interno. Per modificare l’interno è necessario accedere al pannello Opzioni;
• Notturna: tutte le chiamate in ingresso al centralino sono deviate verso un risponditore
automatico.
Funzioni dell’Applicazione:
• Inviare direttamente una chiamata:
1.Sollevare il telefono VoIP;
2.Comporre il numero;
3.Riagganciare il telefono al termine della comunicazione.
• Inviare una chiamata attraverso il software:
35
1.Dalla modalità “Attesa” raggiungere il pulsante “Chiama” e selezionarlo (tasto di scelta
rapida: F1);
2.Comporre il numero (inserire le cifre del numero telefonico o il nome della persona da
chiamare);
3.Al termine dell’inserimento del numero, spostarsi con il tasto TAB sul pulsante “Invia la
chiamata” e selezionarlo (tasto di scelta rapida: F2). Il software passa in modalità
comunicazione. Oppure selezionare “Torna in Attesa” per non inviare la chiamata (tasto di
scelta rapida: ESCAPE);
4.Per terminare la chiamata, premere il tasto “Termina la chiamata” (tasto di scelta rapida:
F4) o riagganciare semplicemente il telefono.
• Trasferimento di chiamata:
1.Dalla modalità “comunicazione” selezionare il pulsante “Trasferisci la Chiamata”. Il
software va in modalità “trasferimento” (tasto di scelta rapida: F3);
2.Comporre il numero a cui trasferire la chiamata;
3.Premere il tasto TAB e selezionare il pulsante “Trasferisci la chiamata” (tasto di scelta
rapida: F2);
4.Il telefono darà il segnale di “Occupato”. Riagganciare.
• Trasferimento automatico:
1.Dalla modalità “Attesa” selezionare il pulsante “Trasferimento Automatico” (tasto di
scelta rapida: F5);
2.Per tornare in “Attesa” selezionare il pulsante “Torna in Attesa” (tasto di scelta rapida:
ESCAPE).
• Notturna:
1.Dalla modalità “Attesa” selezionare il pulsante “Modalità Notturna” (tasto di scelta
rapida: F6);
36
2.Per tornare in “Attesa“ selezionare il pulsante “Torna in Attesa” (tasto di scelta rapida:
ESCAPE).
Alla chiusura, il software attiva automaticamente la modalità Notturna (opzione
configurabile).
Guida alla configurazione dell’Applicazione
Configurazione Server Asterisk
• Registrare un agent per la gestione delle chiamate in coda in “agents.conf”;
agent => 11, 4321, Centralino
• Inserire le estensioni necessarie alla comunicazione fra i telefoni in “extensions.conf”;
[nicola]
; ### Ora di sistema
exten => 9002,1,SayUnixTime(,,AdBY R)
exten => 9002,n,Wait(1)
exten => 9002,n,Playback(vm-goodbye)
exten => 9002,n,Hangup()
; ### Echo test audio
exten => 9003,1,SayUnixTime(,,AdBY R)
exten => 9003,n,Echo()
exten => 9003,n,Hangup()
; ### Chiamate standard
exten => _[1]x,1,Dial(SIP/${EXTEN},360,tT)
; ### Agent Login
exten => 2001,1,AgentCallbackLogin(||${CALLERIDNUM}@nicola)
; ### Agent Logout
exten => 2002,1,AgentCallbackLogin(||1)
; ### Gestione della coda del centralino
exten => 2020,1,Answer()
exten => 2020,n,Ringing()
exten => 2020,n,Wait(2)
exten => 2020,n,Queue(CodaCentralino)
exten => 2020,n,Hangup()
• Registrare un account per la connessione all’asterisk manager in “manager.conf”;
[voip]
secret = ******
permit = 10.15.0.0/255.255.0.0
read = system,call,log,verbose,command,agent,user,config
write = system,call,log,verbose,command,agent,user,config
• Registrare una coda e impostare staticamente il telefono VoIP come agent in “queues.conf”;
[CodaCentralino]
37
music=default
strategy=ringall
timeout=15
retry=5
wrapuptime=0
maxlen=0
announce-frequency=20
announce-holdtime=yes
member => Agent/11
• Registrare un account per il telefono VoIP che farà le funzioni di Centralino in “sip.conf”;
[11]
type=friend
username=11
callerid=”11”<11>
secret=******
context=nicola
host=dynamic
disallow=all
allow=alaw
dtmfmode=rfc2833
canreinvite=yes
Configurazione Server MySQL
• Creare nel database “voip” usato da Asterisk la tabella centralinovoip che conterrà i
parametri di configurazione del software;
• Creare un account per poter accedere da remoto al database “voip”. L’account necessita dei
soli permessi “SELECT” e “UPDATE” sulle tabelle: “telefoni”, “configuratori” e
“centralinovoip”.
Configurazione Client Java Virtual Machine
• Scaricare e installare l’ultima versione della Sun Java Virtual Machine per il sistema
operativo in uso. Non è richiesta alcuna configurazione particolare.
Configurazione Client Screen Reader Jaws
• Acquistare una licenza dello Screen Reader Jaws;
• Scaricare e installare Jaws;
• Impostare la lingua.
38
Configurazione Client Java Access Bridge
• Scaricare e installare l’ultima versione disponibile del Sun Java Access Bridge. Non è
richiesta alcuna configurazione particolare.
39
40
Conclusioni
L'Applicazione realizzata fa da interfaccia per un terminale telefonico VoIP hardware, è
dedicata a utenti affetti da disabilità visive ma può essere ugualmente utilizzata da utenti
normodotati.
L'Applicazione è fatta e configurata sulla base delle esigenze specifiche dell'ente Comune di
Cento. Nonostante ciò, consente una personalizzazione pressochè totale, che le permette di
funzionare, previa modifica dei parametri di configurazione, in qualsiasi altra realtà aziendale o
privata.
L'Applicazione è scritta in linguaggio Java, il ché la rende, in accordo con il punto
precedente, totalmente indipendente dalla piattaforma su cui è eseguita (Applicazione CrossPlatform). Per funzionare infatti, necessita unicamente dell'installazione sulla macchina host di una
Java Virtual Machine.
Lo sviluppo dell’Applicazione ha richiesto circa 2 mesi ed ha coperto tutta la durata del
tirocinio presso l’ufficio Sistemi Informativi del Comune di Cento (Fe) e, nella parte iniziale, presso
l’ufficio Reti e Sistemi dell’Università di Ferrara.
La prima parte del tirocinio presso l’ufficio Reti e Sistemi è stata fondamentale per acquisire
le conoscenze sul VoIP, sui suoi protocolli e sul Server Asterisk. Mi sono stati messi a completa
disposizione dal personale dell’ufficio un server Asterisk e alcuni telefoni VoIP, in modo da avere
una configurazione hardware di base per poter testare le funzioni dell’Applicazione durante le fasi
preliminari dello sviluppo. A tal proposito si ringraziano in modo particolare l’ing. Federico
Fergnani, l’ing. Luca Tebaldi e l’ing. Enrico Ardizzoni
La seconda parte del tirocinio si è svolta prevalentemente presso l’ufficio Sistemi Informativi
del Comune di Cento, in modo da poter testare l’Applicazione con l’utente non vedente, nella sua
sede finale di utilizzo. Per la collaborazione in questa parte del progetto si ringrazia l’ing. Leonardo
Busi e il dott. Ennio Barbieri.
41
Bibliografia
• J. Davidson, J. Peters, Fondamenti di Voice over IP, McGraw-Hill
• D. Gosmar, G. Innamorato, D. Osler, S. Osler, Asterisk. Il mondo VoIP Open Source,
Apogeo.
• J. Van Meggelen, L. Madsen, J. Smith. Asterisk: The Future of Telephony, O'Reilly.
• P. J. Deitel, H. M. Deitel, Programmazione Java. Tecniche avanzate Pearson Education
Italia
• Cay S. Horstmann, Progettazione del software e design pattern in Java Apogeo
• S. Mazzanti, V. Milanese, Programmazione di applicazioni grafiche in Java Apogeo
42