[LinuxFocus-icon]
<--  | Mappa  | Indice  | Cerca

News | Archivo | Link | Cose LF
Questo documento è disponibile in: English  ChineseGB  Deutsch  Italiano  

[Photo of the Author]
Luca Bariani
<lucabariani /at/ ferrara.linux.it>

L'autore:

Nato a Ferrara (Italia) nel 1977 e laureato in ingegneria elettronica a Ferrara nel 2002. Membro del Ferrara Linux User Group e del gruppo di GNU Bayonne. Per lavoro sviluppa servizi telefonici IVR e Sms. All'interno del progetto GNU Bayonne si occupa di documentazione e divulgazione mediante aricoli e presentazioni e curando il sito bayonne.it di cui è autore.



Tradotto in Italiano da:
Luca Bariani <lucabariani /at/ ferrara.linux.it>

Contenuto:

 
PDF

Bayonne: l'opensource nei servizi telefonici IVR

[Illustration]

Premessa:

Bayonne è il server telefonico e IVR del progetto GNU, questo software è libero, gratuito ed opensource.

IVR è l'acronimo di Interactive Voice Response, ovvero sistema Interattivo a Risposta Vocale. Un sistema IVR si interfaccia alla rete telefonica (mediante un hardware opportuno) e può interagire con i comandi che si ricevono attraverso essa (segnali a toni dei tasti premuti o, a volte, veri e propri comandi vocali). I sistemi IVR permettono la creazione e la gestione di servizi telefonici in modo completamente automatico e senza l'intervento di operatori umani.

_________________ _________________ _________________

 

I sistemi ed i servizi telefonici IVR

Oggigiorno chiunque ha avuto a che fare con un sistema IVR (magari senza rendersene conto), in quanto sono largamente utilizzati da tutti gli operatori telefonici fissi e mobili per i propri call center e/o centri servizi (per rendersene conto basti pensare a quante volte si sono ascoltate delle voci automatiche e preregistrate che propongono un menù informativo/di navigazione prima di parlare con un operatore umano). I server IVR interagiscono in vario modo con le risorse di sistema locali e remote accedendo ai filesystem, ai database e alle rete, quindi possono facilmente integrarsi in strutture e sistemi preesistenti o far parte di architetture di server distribuiti.

I servizi realizzabili con i sistemi IVR sono molteplici, eccone qui alcuni esempi:

La particolare natura dei sistemi IVR permette l'integrazione con altri sistemi vocali quali i TTS (Text To Speech: sintetizzatori vocali) e gli ASR (Asynchronous Speech Recognition: sistemi di riconoscimento vocale). Con i primi i sistemi IVR sono in grado di vocalizzare parole e frasi a partire da testi scritti e non preregistrati, con i secondi i sistemi IVR sono in grado di riconoscere comandi vocali. Con questi sistemi i server IVR permettono la realizzazione di ulteriori servizi:

In generale un sistema IVR può offrire, sui canali telefonici, tutti i servizi e tutte le informazioni che i comuni server Web forniscono nei comuni siti internet, quindi le possibilità e le applicazioni sono innumerevoli; in aggiunta, come già detto, i canali telefonici sono bidirezionali, quindi con i server IVR è possibile realizzare servizi ed applicazioni che contattano direttamente l'utente/cliente (particolarità che un servizio Web non può avere).

 

Bayonne

I sistemi IVR sono stati per lungo tempo monopolio di soluzioni proprietarie legate a determinati produttori di hardware, Bayonne è la risposta del mondo opensource e del progetto GNU a tale situazione.

Il sito ufficiale di Bayonne è www.gnu.org/software/bayonne dove si possono trovare e scaricare i sorgenti e la documentazione (manuale di installazione, amministrazione, numerosi esempi ed alcuni HowTo). Su bayonne.sourceforge.org è possibile trovare anche le ultime release delle versioni di sviluppo. Per accedere al CVS dei sorgenti di Bayonne si deve consultare savannah.org (per la versione 1.2 attualmente considerata stabile) e sourceforge.org (per la versione 1.3/2.0 in fase di sviluppo).

Il principale scopo di Bayonne, e la sua principale caratteristica, sono la possibilità di offrire una piattaforma indipendente dall'hardware utilizzato, infatti Bayonne non è legato a nessuna soluzione hardware particolare, ma supporta le principali marche di schede IVR (anche se non ancora tutte), per ognuno di questi tipi di schede Bayonne ha dei driver modulari che definiscono un insieme comune di funzioni le quali definiscono un ambiente astratto, generico e indipendente dall'hardware nel quale sviluppare i propri servizi e le proprie applicazione IVR (quindi in caso di cambio del tipo di scheda IVR o duplicazione dei servizi su un sistema con una scheda IVR differente non occorre in modificare l'applicazione desiderata).

La gamma di hardware IVR supportato da Bayonne è molto vario, dalle schede a 2 linee a quella a 120 linee, inoltre (a seconda dei driver e delle particolari schede) può utilizzare più schede IVR delle stesso tipo contemporaneamente (con il Bayonne correntemente in fase di sviluppo si possono utilizzare schede IVR di produttori differenti), quindi è possibile realizzare server che gestiscono centinaia di linee telefoniche contemporaneamente. Purtroppo al momento non sono ancora supportati i comuni modem seriali o usb (analogici, isdn o gsm).

Per provare Bayonne (o in generale per fare dei test) non occorre alcuna (costosa) scheda IVR, infatti è sufficiente una normalissima scheda audio: Bayonne è dotato di un driver apposito che simula, dal proprio punto di vista, il comportamento di una connessione telefonica attraverso una tastiera, un microfono ed un paio di altoparlanti, quindi Bayonne si può provare su qualsiasi normalissimo PC.

Per realizzare le applicazioni IVR Bayonne offre un proprio linguaggio di scripting: il CcScript (è un componente esterno per la versione 1.2 mentre è stato incorporato nel server nelle versioni 1.3/2.0 in fase di sviluppo). Questo linguaggio è molto semplice, computazionalmente completo e con i principali costrutti: strutture condizionali, iterative, salti condizionati e non, subroutine....

La principale caratteristica del CcScript è data dalle istruzioni a "tempo finito": prima dell'inizio esecuzione di una istruzione è noto qual è il suo massimo tempo di esecuzione (per operazioni che coinvolgono componenti esterne quali filesystem, database o connessioni di rete è specificato un timeout oltre il quale l'operazione fallisce). Dal punto di vista di un server questa caratteristica è molto importante perché permette a Bayonne di offrire servizi in modo deterministico e più affidabile.

Le capacità computazionali di Bayonne non sono minimamente limitate dal Ccscript, infatti si interfaccia e consente l'utilizzo di linguaggi altamente evoluti come Perl e Python senza alcuna difficoltà. Grazie a questa interfaccia diretta Bayonne eredita tutte le innumerevoli librerie disponibili per questi linguaggi: qualsiasi operazione computazionale, qualsiasi algoritmo di letteratura, elaborazione di qualsiasi dato, accesso a qualsiasi database o a qualsiasi altro server (web,di posta, LDAP,condivisione file,....). Quindi con Bayonne è possibile effettuare qualsiasi elaborazione richiesta.

Anche senza l'ausilio di Perl e Python, Bayonne è in grado di interfacciarsi direttamente ai database MySql e PostgreSql facendo query ed operazioni direttamente in CcScript, analogamente è in grado di accedere al filesystem e a connettersi via rete a risorse remote; inoltre è in grado si utilizzare direttamente sintetizzatori vocali TTS quali Flite, Theta (che al momento sono solo in lingua inglese) e Festival (che è multilingua, tra cui l'italiano). L'integrazione con i riconoscitori vocali ASR non è ancora disponibile ma è in fase di sviluppo.

Per la creazione dei maggior parte dei servizi IVR Bayonne non necessita di sistemi Text To Speech esterni, infatti è dotato di librerie vocali multilingua (in inglese, francese, italiano) che permettono la sintesi dei numeri (ordinali e cardinali), delle date, delle ore... (queste librerie sono completamente personalizzabili), l'utilizzo di tali librerie con voci umane preregistrate permette la realizzazione dei più diffusi servizi telefonici.

Bayonne supporta diverse modalità di gestioni degli input sia da parte della connessione telefonica che dal sistema stesso: gestione sincrona, in cui Bayonne attende un determinato input, ad esempio la pressione di un tasto telefonico da parte dell'utente, o gestione asincrona, in cui Bayonne riceve la notifica che si è verificato un determinato evento, come la pressione di un tasto o la scadenza di un timeout programmato, senza che fosse atteso in modo specifico. La combinazione di queste due modalità di gestione degli input permette a Bayonne di reagire prontamente agli eventi generati dall'utente o dal sistema.

Poiché Bayonne è stato progettato per gestire contemporaneamente numerose linee telefoniche, ha a disposizione i comandi per la gestione del multithreading: i singoli thread possono interagire mediante una opportuna gestione di segnali che permette loro di scambiarsi dati e sincronizzarsi, inoltre è possibile mettere in comunicazione due thread che servono chiamate su linee differenti.

Tutte queste caratteristiche fanno sì che Bayonne possa essere facilmente utilizzato per la creazione sia di servizi "domestici" con poche linee telefoniche che per servizi "su larga scala" con centinaia di linee, sia per realizzare servizi "semplici e veloci" che per quelli "molto articolati" con sistemi esterni; quindi Bayonne risulta essere adatto a qualsiasi tipo di esigenza per servizi IVR.

 

Discussioni su quest'articolo

ogni articolo possiede una sua pagina di discussione, da questa pagina puoi inviare un commento o leggere quelli degli altri lettori:




Webpages maintained by the LinuxFocus Editor team
© Luca Bariani
"some rights reserved" see linuxfocus.org/license/
http://www.LinuxFocus.org
Translation information:
en --> -- : Luca Bariani <lucabariani /at/ ferrara.linux.it>
en --> it: Luca Bariani <lucabariani /at/ ferrara.linux.it>

2005-03-29, generated by lfparser version 2.52