Bayonne: l'opensource nei servizi telefonici IVR

ArticleCategory: [Choose a category, translators: do not translate this, see list below for available categories]

Applications

AuthorImage:[Here we need a little image from you]

[Photo of the Author]

TranslationInfo:[Author + translation history. mailto: or http://homepage]

original in en Luca Bariani 

en to it Luca Bariani 

AboutTheAuthor:[A small biography about the author]

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.

Abstract:[Here you write a little summary]

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.

ArticleIllustration:[One image that will end up at the top of the article]

[Illustration]

ArticleBody:

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.