
Warum soll ausgerechnet für einen Anrufbeantworter ein Rechner rund um die Uhr laufen? Schließlich gibt es für deutlich unter 100 DM Stand-alone-Geräte mit erprobter Technik.
Weil, um es etwas hochgestochen auszudrücken, Computer Integrated Telephonie eine ganze Menge Vorteile bietet. Denn die aufgenommenen Anrufe liegen als Datei vor und können im Netz weitergeleitet oder archiviert werden, während eine Kassette im handelsüblichen Anrufbeantworter irgendwann voll ist.
Die hier vorgestellte Lösung verfügt außerdem über eine Web-Schnittstelle, um von einem beliebigen Punkt im Internet aus seine Anrufe kontrollieren zu können. Basis ist, wie so oft, Linux, das seit Kernel-Version pre2.0.4 einen optionalen ISDN-Audiosupport bietet.
Durch die Zustimmung auf die Frage Support Audio via ISDN während der Konfiguration des Kernels wird dieser in das Link-Level-Modul isdn.o eingebunden. Die Erweiterung schlägt sich dabei als Ergänzung im Befehlsumfang des Modememulators um audiospezifische AT- Kommandos nieder. Audioanwendungen sind somit auf die Character-Devices (ttyIx, cuix) aufzusetzen. Einen Überblick über die zusätzlichen Kommandos liefert die Datei README.audio im Verzeichnis /usr/src/linux/Documentation/isdn der Kernel-Sources.
Neben dem von Marc Eberhard stammenden vgetty, das für den Einsatz mit realen Voice-Modems konzipiert ist, existiert seit einiger Zeit ein speziell auf isdn4linux zugeschnittenes vboxgetty. Letzteres gehört zu dem von Michael Herold stammenden vbox-Paket, das in der Version 1.0 den isdn4k-utils-2.0 beiliegt. Wie bei vielen der zu diesen Utilities gehörenden Programme ist inzwischen auch hier eine neuere Version (1.1) verfügbar. Auf vgetty basierend kommen zur Wiedergabe und zum Konvertieren der vom vboxgetty gespeicherten Audiodaten die vgetty-Nutzern bekannten pvftools zum Einsatz. Sie sind, wie das vgetty selbst, Bestandteil von mgetty-0.99. Wer mgetty bereits zusammen mit isdn4linux oder einem Modem nutzt, sollte die pvftools daher bereits auf seinem Rechner finden. Zum Umfang des vbox-Paketes gehören, neben dem eigentlichen vboxgetty, das auf ncurses basierende Anrufbeantworter-Tool vbox sowie die Motif-Answering-Machine (mam). Für all die, die über keine Motif-Entwicklungsumgebung verfügen, ist mam auch als statisch gelinktes Binary getrennt erhältlich. Abgerundet wird das Anrufbeantworter-Kit durch Scripts zur automatischen Generierung von Mails bei eingegangenen Anrufen und den Anrufzähler xvboxled.
Vor der Installation des vbox-Pakets sind systemspezifische Anpassungen im zugehörigen Makefile und unter settings.h vorzunehmen. Insbesondere ist hierbei der Blick auf die Variablen VBOXPLAYCMD und VOICE_COMPRESSION_MODE zu richten, die innerhalb der settings.h gesetzt werden. Während VBOXPLAYCMD das zur Wiedergabe von Anrufen notwendige Shell-Script vboxplay lokalisiert, legt VOICE_COMPRESSION_MODE die Kodierung der Audiodaten durch das vboxgetty fest. In der Regel passen jedoch hier und auch in allen anderen Fällen die Default-Werte. Dem Übersetzen und Installieren des vboxgettys und seiner Tools mit make vbox und make vbox-install sollte ein make vbox-spooldir folgen. Dies generiert das Spool-Verzeichnis für Ansagen und eingehende Anrufe (default: /var/spool/vbox). Die Unterverzeichnisse für einzelne Benutzer hingegen erzeugt vboxgetty zur Laufzeit. Soweit gewünscht, müssen die Motif-Answering-Machine sowie die xvboxled jeweils gesondert übersetzt und installiert werden.
|
Per Browser lassen sich Anrufe aus der Ferne abhören oder löschen. |
Die Aktivierung des vboxgettys gestaltet sich einfach. Für jeden Benutzer kann, sofern dieser über eine eigene MSN verfügt, ein gesondertes vboxgetty gestartet werden. Die User-spezifischen Daten stehen beim Start des vboxgetty in der Datei .vboxrc im Home-Verzeichnis des Benutzers. In dieser können sämtliche von einem normalen Anrufbeantworter her bekannten Einstellungen wie Anzahl der Klingelzeichen vor dem Abnehmen, Wahl zwischen reinem Ansage- und Aufzeichnungsbetrieb, maximale Aufzeichnungszeit pro Anrufer et cetera festgelegt werden. Zudem besteht bei fast allen Parametern die Möglichkeit, sie global oder in Abhängigkeit von der Rufnummer anzugeben. So ist es zum Beispiel problemlos möglich, jeder Gegenstelle eine persönliche Ansage zukommen zu lassen, soweit deren Rufnummer bekannt ist und übermittelt wird.
Zu beachten ist, daß die Anzahl der bis zum Abnehmen verstreichenden RINGS wenig mit der Anzahl der von einem Telefon abgegebenen Klingelzeichen zu tun hat. Zwischen letzterer und der in der Datei .vboxrc angegebenen liegt etwa der Faktor fünf. Ein Beispiel der .vboxrc eines Benutzers, basierend auf der aktuellen Version vbox-1.1, zeigt Listing 1. Nach dem Erstellen der .vboxrc kann der Anrufbeantworter zum Beispiel mit einem Eintrag in der /etc/inittab aktiviert werden:
i2:3:respawn:/usr/local/sbin/vboxgetty -d /dev/ttyI3 -i ATZ&E4711 -u marc
Wie bei allen auf den Modememulator aufsetzenden Anwendungen muß auch hier dem Device per Init-String ATZ&E<MSN> die eigene MSN beziehungsweise EAZ mitgeteilt werden. Die Angabe -u marc bewirkt an dieser Stelle das Auswerten der .vboxrc des Benutzers marc für dieses vboxgetty. Weiterhin landen dadurch alle Anrufe mit exklusiven Benutzerrechten in seinem Spool-Verzeichnis (default:/var/spool/vbox/<user>/incoming). Ein Setzen der Option -p <Programm-Name> bewirkt zusätzlich das Aktivieren des angegebenen Programms nach Eingehen eines Anrufs. Neben eigenen Scripts bieten sich hierzu insbesondere die beiden beiliegenden, vboxnotify und vboxmime, an. Beide erzeugen aus den ihnen übergebenen Parametern (Audiodatei, Rufnummer und Mail-Adresse) eine Informations-Mail. Die Zieladresse kann -a <Zieladresse> angeben. Bei Wegfallen dieser Option wird der Benutzername ausgewertet. vboxmime ergänzt die Mail zusätzlich um die Audiodatei in Form eines Mime-kodierten Attachements. Durch geringe Änderungen im Script ist ein Verschicken der Datei im Sun-Audioformat (.au) möglich (vgl. vboxplay). Dies ist sinnvoll, da eine Vielzahl von Mail-Tools inzwischen eine direkte Wiedergabe von Sun-Audiodateien unterstützt.
Zur Generierung der per default unter /var/spool/vbox/<user>/messages/ zu speichernden Ansagetexte bestehen mehrere Möglichkeiten. Zum einen können sie durch einen simplen Selbstanruf aufgesprochen und danach von /incoming nach /messages kopiert werden. Wer über einen internen S0-Bus verfügt, für den ist dies nicht nur die einfachste, sondern zugleich die qualitativ hochwertigste Methode. Einen anderen Weg stellt die Aufnahme des Textes via Soundkarte nebst anschließender Konvertierung dar. In Abhängigkeit von der Art der Ursprungsdatei sind dabei zum Teil mehrere Konvertierungsschritte mit sox und den pvftools erforderlich, welche die Qualität der Ansage in Mitleidenschaft ziehen. Wem zwölf Pfennig für eine tadellose Ansage nicht zu teuer sind, dem sei auch ohne internen S0-Bus das direkte Aufsprechen der Ansage angeraten.
Die Wiedergabe der Anrufe unter Zuhilfenahme von vbox oder mam setzt die Existenz des Programmes vboxplay voraus (Listing 2). In seiner Ausführung als Shell-Script ermöglicht es die Konvertierung der Audiodatei in das gewünschte Ausgabeformat vor der eigentlichen Wiedergabe. Hierbei ist die bei der Aufzeichnung durch das vboxgetty verwendete Kodierung zu beachten. Die fünf verschiedenen Kodierungen sind anhand des Audio-Headers unterscheidbar. Listing 2 zeigt hierzu ein von der Kodierung unabhängiges Shell-Script. Der Default-Wert für die Kodierung durch das vboxgetty ist ADPCM-4. Er kann in der Datei settings.h bei Bedarf geändert werden.
Die Nutzung von mam und vbox ist primär lokal ausgerichtet. Das Exportieren des Spool-Verzeichnisses per NFS oder der Einsatz eines externen X-Servers mit integrierten NAS (Network-Audiosystem) ermöglicht jedoch auch eine Wiedergabe auf einem entfernten Rechner. Trotzdem grenzen diese Erweiterungen nicht wenige Plattformen innerhalb eines heterogenen Netzes von der Nutzung des vboxgettys aus. Zur Erschließung sämtlicher Rechner innerhalb eines Netzes drängt sich daher die Nutzung eines Web-Browsers als Wiedergabemedium auf. Die einfachste Implementierungsmöglickeit stellt ein um die passenden CGI-Programme erweiterter Apache dar. Die hierzu notwendigen CGIs in Form von Perl-Scripts, die die Anzeige, Wiedergabe und das Löschen von Anrufen erledigen, sind aus Platzgründen nicht abgedruckt, sondern per EMail anzufordern.
Zur korrekten Funktion muß die Umgebungsvariable REMOTE_USER vom HTTP-Server gesetzt sein. Ein Authentifizieren des Benutzers gegenüber dem Server über Auth basic oder, soweit implementiert, Auth digest ist somit unabdingbar. Weiterhin ist die Ausführung der Scripts unter den jeweiligen Benutzerrechten erforderlich. Die aktuelle Version des Apache (1.2b4) unterstützt dieses in seiner Suexec-Funktion. Somit ist durch sorgsame Konfiguration des HTTP-Servers bezüglich der Zugriffsrechte auf die CGI-Programme gewährleistet, daß dem jeweiligen Benutzer allein die Verarbeitung seiner persönlichen Anrufe erlaubt ist.
Das vbox-Paket rundet die für isdn4linux verfügbaren Tools perfekt ab. Weiterentwicklungen des vboxgettys, zum Beispiel eine erweiterte Steuerung aus der Ferne durch Auswertung von MfW-Kennungen, werden eine interessante Interaktivität mit dem Anrufer ermöglichen. Solche Funktionen sollten die Möglichkeiten bezahlbarer herkömmlicher Anrufbeantworter weit übersteigen.
MARC NEITZNER
studiert Elektrotechnik an der Universität Hannover.
Literatur
[1] Oliver Raupach, Dirk Steinberg; ISDN für Linux; Auf zwei Beinen; Zwei Lösungen für die direkte WAN-Anbindung; iX 7/95, S. 164
[2] Marc Neitzner; Linux im WAN; ISDN serienmäßig; isdn4linux: Funktion und Inbetriebnahme; iX 12/96, S.142
Dieser Text ist der Zeitschriften-Ausgabe 02/1997 von iX entnommen.
iOS, Android, Windows Phone 7 und HTML5 - das neue Sonderheft von heise Developer führt Einsteiger und Profis in die Programmierung mobiler Geräte ein.