Alles, was über Telefonie hinausgeht, macht den wirklichen Mehrwert von Asterisk aus: Sprachportale beispielsweise, die Fluggäste identifizieren und informieren, bei einer frostigen Wohnung warnen oder den Admin mimen, wenn die User ihre Passwörter verschusselt haben.
Streik, alle Jahre wieder. Als wären die Arbeitskämpfe bei Fluglinien oder Bahn nicht schon nervig genug, informieren diese ihre Kunden meist schlechter, als es sein müsste (Abbildung 1). Beim Ausstand im Sommer 2008 beispielsweise, just zur Urlaubszeit, bekleckerte sich die Lufthansa mit ihrer Kundenhotline nicht mit Ruhm. Seine Erlebnisse mit dem Sprachportal hinter der 0800-Nummer waren zumindest für den Autor vor allem eines: nervtötend.

Abbildung 1: Hier läuft alles prima am Flughafen. Sobald aber die Angestellten streiken, muss die Fluggesellschaft gestrandete Passagiere informieren – am besten mit einem Audioportal.
Statt einer (im Doppelsinne) zielführenden Auskunft über Flugausfälle und Umbuchungen, vertrödelte das System dessen Zeit erst mal mit Gedudel. Die Spracheingabeversuche im Sprachportal scheiterten angesichts schlechter Handyverbindung schon fast zwangsläufig, sodass er nach mehreren Fehlversuchen schließlich zu einem Lufthansa-Mitarbeiter weiterverbunden wurde – wiederum mit Umweg über eine Warteschleife.
Dabei könnten die Systeme der Gesellschaft den Fluggast eigentlich anhand der Kundennummer identifizieren und mit seinen gebuchten Flügen abgleichen – das bekommt jeder regelmäßig am Automaten vorgeführt, der seine Miles&More-Karte beim Einchecken ins Lesegerät steckt. Das legt doch nahe, ein Streik-Informationsportal so zu gestalten, dass es genau diese Kundennummer nutzt.
Sein Hotline-Erlebnis veranlasste den Autor dazu, zum Spaß auf seinem Asterisk-Server ([1], [2]) innerhalb weniger Tage einen Portalprototyp zu entwickeln, der an der Miles&More-Nummer einen Kunden und dessen Buchungen erkennt, persönlich begrüßt und per Sprachausgabe zielgerichtet informiert, welche gebuchten Flüge ausgefallen sind und welche nicht. Der Anrufer erhält diese Informationen zusätzlich per E-Mail und bekommt außerdem noch Ersatzflüge vorgeschlagen. Zum Schluss verbindet Asterisk den Anrufer zu einem Buchungsmitarbeiter aus Fleisch und Blut. Mit ihm erörtert der nunmehr vorinformierte Streikgeschädigte die Alternativen und entscheidet sich für einen neuen Flug.
Sprachansage-Portal
Die geschilderte Ablauflogik inklusive Datenbankanbindung war mit Asterisk und etwas AGI-Scripting mit Perl leicht auf die Beine gestellt. Beim Audioportal-Design widerstand der Autor dem Drang nach technischer Eleganz und verzichtete auf eine Spracheingabe zu Gunsten der Eingabe per Telefontastatur. Damit erreicht er selbst bei schlechter (Mobilfunk)-Verbindungsqualität eine gute Funktionssicherheit. Asterisk böte zwar eine Spracheingabe, doch selbst das Asterisk-Buch [3] räumt ein: “If text-to-speech is rocket science, speech recognition is science fiction.” Die Dateneingabe per Tastatur wahrt zudem die Vertraulichkeit beispielsweise im Flughafencafe, da die Umgebung nicht zum Mithörer wird.
Für die Sprachausgabe sorgt beim Autor Cepstral [4]. Die Text-to-Speech-Lösung weist eine deutlich bessere Sprachqualität auf als das freie Festival [5]. Ein einzelnes Cepstral-Stimmset ist mit 30 Dollar sogar erschwinglich. Nur sind die beiden deutschen bei Cepstral erhältlichen Stimmen nicht besonders gut gepflegt, was Aussprache und Intonation angeht. Wer – wie der Autor – ein englischsprachiges Portal mit seinem Lufthansa-Beispiel kreiert, fährt mit der amerikanischen Stimme “Allison” weit besser.
Tipps zur Sprachausgabe
Wenn die Intonation trotzdem unbefriedigend ist, lohnt es sich, nach folgendem Schema zu experimentieren:
- Gleichlautende Wörter (Homonyme) versuchen: “Too in
the morning” statt des korrekten “two”. - Verwenden sinngleicher Wörter (Synonyme), soweit das in
dem betreffenden Kontext möglich ist: “Flight
plan” ist am Satzende besser zu verstehen als “Flight
schedule”. - Das Einfügen von Bindestrichen ändert die Betonung,
ebenso wie Kommata oft die Intonation des Satzes. - Auch Pausen »<break time=’100ms’/>«
können die Betonung von Wörtern und die Intonation im
Satz beeinflussen. Sinnvolle Werte liegen meist zwischen 50 und 300
Millisekunden. - Phonetische Eingabe des Textes, um kurze, bekannte Passagen in
Sprache umzusetzen. Das Verfahren ist komplett Handarbeit und setzt
phonetische Kenntnisse sowie die Lektüre der
Cepstral-Dokumentation voraus. - Für den kommerziellen Einsatz empfiehlt es sich, den
Hersteller dafür zu bezahlen, dass er die verwendete Stimme
anpasst und optimiert.
Wer es trotz streikender Fluglotsen geschafft hat, die Stadt zu verlassen, kann von seinem Asterisk noch mehr profitieren. Voraussetzung ist eine Temperaturüberwachung der eigenen Wohnung, ähnlich wie sie der Autor in seinem Büro seit mehr als zehn Jahren mit einem Rechner und einem per RS232-USB-Schnittstellenwandler angeschlossenen Digitalmultimeter betreibt. Damit lässt sich der Temperaturverlauf auf einer Webseite aus der Ferne verfolgen [2].
Temperatur-Alarm
Da die Daten ohnehin vorliegen, ist es obendrein ein Leichtes, sie per Asterisk telefonisch abfragbar zu machen, einschließlich eines Vergleichs zum letzten 24-Stunden-Schnitt, um Veränderungen zu erkennen. Fast als Abfallprodukt entsteht eine automatische Sprach-Alarmierung, die informiert, sobald die Temperatur einen eingestellten Wertebereich verlässt – hilfreich bei plötzlichen Kälteeinbrüchen (Abbildung 2). Asterisk ruft den Reisenden an und der wiederum einen Nachbarn, der die Heizung einschaltet. Das ist besser als das Heizen auf Verdacht und spart Kosten.

Abbildung 2: Wenn die Wohnung bei langer Abwesenheit ein bisschen frostig wirkt, hilft vielleicht ein Nachbar. Nur informieren müsste ihn jemand, beispielsweise Asterisk. (Bild: © macroslk, Photocase.com)
Zum praktischen Teil: Die folgende Zeile wandelt den Alarmierungstext unter Zuhilfenahme von Cepstral [4] in eine Asterisk-geeignete WAV-Datei um:
/usr/local/bin/swift -n Allison -p audio/sampling-rate=8000,audio/channels=1 -o warning_temp_file.wav "The lower temperature limit has been reached."
Danach trägt der Asterisk-Admin die Datei »warning_temp_file.wav« – ohne Dateiendung! – wie in Listing 1 in den Dialplan ein.
Das automatische Auslösen eines Anrufs übernimmt Cron, der jede Minute ein Perl-Skript startet, das in einer Datei mit Temperaturmesswerten nachsieht, ob der letzte Wert innerhalb des erlaubten Bereichs liegt. Die Messwertdatei selbst erhält beim Autor ihre Einträge laufend von einem Programm, das ein Digitalmultimeter per RS232 ausliest.
Schlittert der Temperaturwert aus dem eingestellten Bereich, dann erzeugt das Perl-Skript außerhalb des Asterisk-Spooldirectory (wichtig!) ein passendes Asterisk-Callfile. Der neutrale Ort hindert Asterisk daran, das Callfile abzuarbeiten, weil es unter Umständen noch nicht vollständig ist. Aus dem gleichen Grund darf später kein »cp« das Callfile in das Spool-Directory »/var/spool/asterisk/outgoing« befördern, sondern ein »mv«, das einen atomaren, nicht unterbrechbaren Vorgang gewährleistet.
Beim Callfile aus Listing 2 sorgt Zeile 2 dafür, dass Asterisk per ISDN die Rufnummer 0171-987 65 43 wählt. Die optionalen Ziffern davor sparen dabei ein paar Cent und gehören einem Call-by-Call-Provider. Sobald der Angerufene den Hörer abnimmt, verbindet Asterisk zur Priorität 1 der Extension »alarm_temp1« im Kontext »alarm« des Dialplans (siehe Zeile 2 in Listing 1). Dort spielt ihm dann Zeile 3 per »Playback()« die Audiodatei vor, die das Cron-Perl-Skript erzeugt hat. Väterchen Frost kann kommen.
|
Listing 1: Dialplan |
|---|
01 [alarm] 02 exten => alarm_temp1,1,NoOp() 03 exten => alarm_temp1,n,Playback(/var/spool/asterisk/tmp_voice/warning_temp_file) 04 exten => alarm_temp1,n,Hangup() |
|
Listing 2: Callfile |
|---|
01 # Dial parameters, including destination number and channel type 02 Channel: CAPI/g1/0102701719876543 03 Callerid: 0891234567 04 05 # Call parameters 06 WaitTime: 120 07 RetryTime: 8 08 MaxRetries: 2 09 10 # Where to go in the dialplan, once the connection is established 11 Context: alarm 12 Extension: alarm_temp1 13 Priority: 1 |
Bei Anruf Account-Reset
Ein Beratungskunde des Autors aus dem IT-Servicebereich verriet ihm unlängst, dass bei ihm rund zehn Prozent aller Supportanrufe der Zuteilung neuer Kennwörter dienen. Asterisk und Admins mit ähnlichen Erfahrungen werden womöglich dicke Freunde – selbst wenn sie Flugangst und eine Heizkosten-Flatrate haben. Denn die freie Telefonanlage kann das Passwortändern für sie erledigen.
Auch hier war ein Asterisk-Prototyp schnell programmiert, denn die Mechanismen aus den vorhergehenden Beispielen eignen sich auch hier. Asterisk fragt den Anrufer nach seiner Vertragsnummer, seiner PIN und nach der Applikation, für die er das Kennwort benötigt. Er bekommt daraufhin das neue Kennwort per E-Mail geschickt – und das zu jeder Tages- und Nachtzeit.
PINs, Kennwörter und Rufnummern in die Ast-DB
Wer wie im Lufthansa-Beispiel die Miles&More-Nummer oder im Kennwort-Reset-Beispiel die Vertragsnummer sowie die PIN zur Authentifizierung überprüfen muss, der sollte diese Werte nicht im Dialplan fest verdrahten. Besser liegen sie in der Ast-DB, die Asterisk gewöhnlich in der Datei »/var/lib/asterisk/astdb« vorhält [7]. Natürlich überleben die Datenbankinhalte auch einen Reboot.
Zum einen bietet Ast-DB die Möglichkeit, die gespeicherten Werte durch einen entsprechenden Dialplan-Eintrag per Anruf von einem Telefon aus zu ändern. Zum anderen können andere Programme darauf zugreifen, indem sie Asterisks Fernsteuerungs-Mechanismus verwenden. So zeigt das Shellkommando
asterisk -rx 'database show'
alle Datenbankinhalte an. Die entsprechende Programmierung im Asterisk-Dialplan vorausgesetzt, setzt die nahezu selbsterklärende Zeile
asterisk -rx 'database put callbackpin 01719876543 123'
für den Mobilanrufer 0171-987 65 43 die PIN auf »123«.
Fazit: Dass man mit Asterisk telefonieren kann, hat sich herumgesprochen. Doch das eigentliche Potenzial der freien Anlage liegt in Bereichen, von denen Johann Philipp Reis und Alexander Graham Bell noch nichts ahnen konnten. (jk)
|
Infos |
|---|
|
[1] Asterisk: [http://www.asterisk.org] [2] Stefan Wintermeyer, Artikelserie zu Asterisk (4 Teile): Linux-Magazin 01 bis 04/08 [3] Van Meggelen, Madsen, Smith, “Asterisk: The Future of Telephony” [4] Cepstral-Stimmen: [http://cepstral.com/applications/] [5] The Festival Speech Synthesis System: [http://www.cstr.ed.ac.uk/projects/festival/] [6] Temperatur im Büro des Autors: [http://www.dignatz.de/temp455] [7] Stefan Wintermeyer, “Das Asterisk Buch”,Kapitel 10 – Asterisk-Datenbank: [http://www.das-asterisk-buch.de/1.0/datenbank-einleitung.html] |
|
Der Autor |
|---|
|
|







