[LinuxFocus-icon]
LinuxFocus article number 372
http://linuxfocus.org

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

Über den Autor:

Ich wurde 1977 in Ferrara (Italien) geboren und graduierte 2002 in Ferrara mit einem Abschluss in Elektronik und Ingenieurwesen. Ich bin ein Mitglied der Ferrara Linux User Group und der GNU Bayonne-Gruppe. Ich entwickle IVR- und SMS-Dienste. Innerhalb des GNU Bayonne-Projektes erstelle ich einige Dokumentationen und Artikel, ich spreche über Bayonne bei einigen OpenSource-Treffen und verwalte die italienische Webseite bayonne.it.

Übersetzt ins Deutsche von:
Hermann J. Beckers <hj.beckers/at/onlinehome.de>

Bayonne: das quelloffene Projekt in Telefon- und IVR-Diensten

[Illustration]

Zusammenfassung:

Bayonne ist der IVR- und Telefon-Server des GNU-Projektes, und daher eine freie und quelloffene Software.

IVR (Interactive Voice Response) steht für interaktive Sprachdienste. Ein IVR-System verbindet die Computerwelt mit Telefonnetzwerken (mit entsprechender Hardware) und kann mit diesen über entsprechende Befehle agieren, die es von ihnen empfangen hat (durch Tastendrücke erzeugte Tonsignale oder auch manchmal durch echte Sprachbefehle). IVR-System ermöglichen die Erstellung und Verwaltung vollständig automatisierter Telefondienste ohne menschliche Bedienungskräfte.

_________________ _________________ _________________

 

IVR-Systeme und Dienste

Heutzutage hat fast jeder schon mindestens einmal eine Verbindung mit einem IVR-System gehabt (vielleicht ohne es zu merken). Tatsächlich werden sie von jeder Telefongesellschaft (mobil oder nicht) für ihre eigenen Call- oder Dienstzentren benutzt. Denken Sie nur daran, wie oft Sie von automatischen und aufgezeichneten Stimmen aufgefordert wurden, aus einem Menu einen Dienst zu wählen oder bevor Sie mit einem menschlichen Operator verbunden wurden. IVR-Server können auf verschiedenste Weise mit lokalen und entfernten Ressourcen agieren, und auch auf Dateisysteme, Datenbanken, Netzwerke usw. zugreifen ... daher können IVR-Systeme leicht in bestehende Systeme integriert oder Teil eines verteilten Systems werden.

Mit IVR-Systemen können eine Vielzahl von Telefondiensten erstellt und genutzt werden, einige Beispiele:

IVR-Systeme arbeiten auf Telefonleitungen mittels Audio für Eingaben vom und Ausgaben zum Anwender, was eine sehr einfache Integration mit Sprachsystemen wie TTS (Text To Speech, Text-zu-Sprache; Audiosynthesizer, der geschriebenen Text in Sprache wandelt) und ASR (Asynchronous Speech Recognition, asynchrone Spracherkennung: Stimmanalysator, der menschliche Sprache in geschriebenen Text wandelt). Die ersteren ermöglichen es IVR-Systemen, Sprachausgabe von geschriebenen Text zu verwenden und nicht nur von aufgezeichneten Stimmen, die letzteren ermöglichen IVR-Systemen die Erkennung sprachlicher Befehle der Eingabestimme.

Mit TTS- und ASR-Systemen können wir weitere IVR-Dienste anbieten:

Allgemein gesprochen, kann ein IVR-System in einem Telefonnetzwerk jeden Dienst und jedes Stück Information anbieten, die von einem Webserver auf einer üblichen Webseite angeboten werden. Eine Menge an Diensten und Möglichkeiten kann daher über IVR-Systeme verfügbar gemacht werden. Aber IVR-Systeme können mehr bieten: Telefonnetzwerke und Kanäle sind bidirektional, daher können IVR-Systeme Dienste anbieten, die Anwender direkt anrufen (Webdienste verfügen nicht über diese Fähigkeit).

 

Bayonne

Für eine lange Zeit waren IVR-Systeme ein Monopol geschlossener, nicht freier Software-Lösungen von einigen IVR-Board-Herstellern. Jeder von ihnen entwickelte IVR-Server für die eigene Hardware; Bayonne ist die Antwort der OpenSource-Welt und des GNU-Projektes auf diese Situation.

Haupt- und offizielle Webseite von Bayonne ist www.gnu.org/software/bayonne, wo Sie die Quellen und Dokumentation (Installations- und Administrations-Handbücher, eine Menge an Beispielen und einige HowTos) finden. Unter bayonne.sourceforge.org gibt es Referenzen zu externen Ressourcen und die aktuellste Entwickler-Version. Für Bayonne gibt es einen öffentlichen (nur-Lese-)CVS-Zugang zu den Quellen: auf savannah.org ist die Version 1.2 (die derzeit stabile Version für Produktions-Anwendungen) verfügbar, während auf sourceforge.org die Version 1.3/2.0 (die Entwickler- und Experimental-Version) zu finden ist.

Hauptzweck und Charakteristika von Bayonne ist es, eine virtuelle IVR-Plattform zu bieten, die unabhängig ist von der benutzten Hardware. Tatsächlich kann Bayonne mit verschiedenen IVR-Board-Familien arbeiten (noch nicht mit allen), ohne irgendeine von ihnen zu benötigen. Für jede IVR-Board-Familie und/oder -Hersteller enthält Bayonne einen modularen Treiber, der einen gemeinsamen Instruktionssatz bietet und eine virtuelle Umgebung für die allgemeine Benutzung und ohne jeden Hardware-Bezug. Innerhalb dieser virtuellen Umgebung können wir unsere IVR-Dienste entwickeln, ohne auf die verwendete Hardware zu achten; daher erfordert der Wechsel des IVR-Boards oder die Portierung eines IVR-Dienstes auf ein anderes System mit einem anderen Board keine Änderung im Dienst-Code.

Wie bereits angegeben, unterstützt Bayonne verschiedene Boards, auch sehr verschiedene, von 2 bis 120 Leitungen (analog oder digital). Weiterhin kann Bayonne mehrere Boards der gleichen Familie zur gleichen Zeit nutzen (in der neuen Bayonne-Version können wir sogar Boards verschiedener Familien zur gleichen Zeit nutzen), so dass Hunderte verschiedener Telefonleitungen gleichzeitig behandelt werden können. Leider unterstützt Bayonne keine seriellen/USB-Modems (analog, ISDN oder GSM).

Um Bayonne auszuprobieren oder allgemein für Tests benötigen wir kein teueres IVR-Board. Tatsächlich benötigen wir nur eine Soundkarte, da Bayonne einen Treiber bereitstellt, der ein IVR-Board emuliert und Ein-/Ausgabe über Tastatur, Mikrofon und Lautsprecher des PCs durchführt: Bayonne kann auf Ihrem Arbeitsplatz-PC laufen.

Zum Erstellen von IVR-Diensten verfügt Bayonne über eine eigene Skriptsprache namens CcScript (eine externe Komponente für Version 1.2, für die Entwicklungsversion 1.3/2.0 in das Hauptpaket integriert). Diese Sprache ist recht einfach, mit vollständigen Berechnungsfähigkeiten und wesentlichen Programmstrukturen: bedingte Blöcke, Schleifen, bedingte und unbedingte Sprünge, Unterroutinen ... Eine Haupteigenschaft von CcScript sind "zeitbegrenzte" Instruktionen: bevor eine Anweisung ausgeführt wird, kennt die Sprache die maximale Ausführungszeit. Für Operationen, die externe Systeme wie Dateisysteme, Datenbanken und Netzwerkverbindungen berühren, gibt es einen Timeout-Parameter; wenn die Ausführungszeit den Timeout überschreitet, wird die Operation abgebrochen. Aus Serversicht ist diese Fähigkeit sehr wichtig, da sie es Bayonne ermöglicht, deterministische und verlässliche Dienste anzubieten.

Bayonnes Berechnungsfähigkeiten sind absolut nicht auf die Fähigkeiten von CcScript beschränkt. Tatsächlich kann Bayonne ohne Probleme mit Hochsprachen wie Perl und Python zusammenarbeiten. Aufgrund dieser direkten Integration erbt Bayonne alle Bibliotheken und Module, die für diese Sprachen verfügbar sind: jede Berechnungsoperation, gewöhnliche und ungewöhnliche Algorithmen, Datenmanipulation, Verbindungen zu Datenbanken oder externen Server (Web, Email, LDAP, gemeinsame Dateibenutzung) ... Daher kann Bayonne alles berechnen, was erforderlich ist.

Selbst ohne Perl und Python kann Bayonne direkte Verbindungen mit MySql- und Postgres-Datenbanken erstellen und SQL-Abfragen selbst innerhalb von CcScript durchführen. Auf die gleiche Weise kann Bayonne auf Dateisysteme zugreifen und sich per Netzwerk mit entfernen Ressourcen verbinden. Weiterhin kann Bayonne direkt mit Stimm-Synthesizer-TTS-Systemen wie Flite, Theta (nur englische Stimmen verfügbar) und Festival (mehrsprachig) zusammenarbeiten. Bayonne kann sich derzeit nicht direkt mit Spracherkennungssystemen verbinden, aber diese Fähigkeit ist in Entwicklung.

Für einen Großteil der IVR-Dienste benötigt Bayonne keine externen Text-zu-Sprache-Systeme, da es über eigene mehrsprachige Stimm-Module verfügt (Englisch, Französisch , Italienisch und Russisch), welche Zahlen (Ordinal- und Kardinalzahlen), Datums- und Zeitwerte aussprechen können (diese Module und die Audioausgabe sind vollständig anpassbar). Diese Sprachmodule umfassen menschliche, voraufgezeichnete Stimmen und können benutzt werden, um die meisten IVR-Telefondienste direkt innerhalb des Bayonne-Rahmenwerks zu realisieren.

Bayonne kann Eingaben von Telefonverbindungen und Eingaben vom System auf verschiedene Arten verwalten: synchrone Verwaltung, wobei Bayonne auf eine bekannte Eingabe wartet (z. B. einen Tastendruck des Anwenders), und asynchrone Verwaltung, wobei Bayonne eine Benachrichtigung erhält, wenn ein definiertes Ereignis eintritt (z. B. ein Tastendruck oder ein Zeitablauf), ohne darauf ausdrücklich zu warten. Diese beiden Eingabeverwaltungsmodi ermöglichen Bayonne eine schnelle Reaktion auf Anwender- und Systemereignisse ohne Zeit zu vergeuden.

Wie bereits erwähnt, wurde Bayonne entwickelt, um eine große Anzahl von Telefonleitungen gleichzeitg zu verwalten, daher verfügt es über Befehle und Instruktionen für Multithread-Verwaltung. Jeder Thread kann mit anderen über Signale interagieren. Dies ermöglicht Thread-Synchronisation und Datenaustausch zwischen Threads und darüberhinaus die Verbindung von zwei Threads, die verschiedene Telefonleitungen nutzen (z. B. können so zwei Anwender durch Bayonne miteinander sprechen).

Alle diese Fähigkeiten machen Bayonne nützlich in einem weiten Bereich von Situationen. Es kann sowohl für kleine IVR-Telefondienste mit wenigen Telefonleitungen als auch für große Service-Zentren benutzt werden, die hunderte von Leitungen verwalten. Mit Bayonne können wir "schnelle und einfache" Dienste oder komplexe Dienste, die auch externe Systeme involvieren, erstellen. Daher ist Bayonne der richtige IVR-Server für jede Art von IVR-Diensten.



Der LinuxFocus Redaktion schreiben
© Luca Bariani
"some rights reserved" see linuxfocus.org/license/
http://www.LinuxFocus.org
Autoren und Übersetzer:
en --> -- : Luca Bariani <lucabariani/at/ferrara.linux.it>
en --> de: Hermann J. Beckers <hj.beckers/at/onlinehome.de>

2005-07-22, generated by lfparser_pdf version 2.51