Asterisk-Toolkits wie das auf deutsche Verhältnisse angepasste Projekt mit dem schönen Namen Gemeinschaft helfen den Admins und Systemintegratoren, eine Telefonanlage ab mittlerer Größe mit überschaubarem Aufwand zu migrieren und zu betreiben.
In den ersten drei Artikeln dieser Serie [1] haben Sie das Handwerkszeug für die manuelle Installation und Programmierung einer Asterisk-Telefonanlage bekommen. Wer für zu Hause, das Büro oder für eine kleine Firma eine Telefonielösung sucht, einen älteren PC oder Server sowie Zeit besitzt, der findet auf die gezeigte Weise in Asterisk [2] seine ideale Telefonanlage.
Wenn aber eine Firma mit 100 Mitarbeitern ihre alte proprietäre Anlage gegen eine mit einem normalen Asterisk austauschen will, dann sieht die Rechnung anders aus. Je nach Stundenlohn und eingesetzter Hardware kostet eine solche Anlage sehr schnell zwischen 30000 und 50000 Euro – trotz wegfallender Lizenzkosten. Außerdem goutieren Benutzer und Geschäftsführung die wundervollen Neuerungen in der modernen VoIP-Telefonie nicht im gleichen Maße, wie sie weggefallene Features der alten Anlage vermissen. Beispielsweise erweist sich eine einfache Gesprächsgebührenerfassung mit Asterisk oft als unlösbar.
Ein anderes Problem ist oft, das zentrale Telefonbuch der alten Anlage auf die neuen SIP-Telefone zu migrieren, was bedeutet, den kompletten Dialplan und die Logik von Grund auf neu zu programmieren. Aus Kostengründen ergibt es deshalb in den meisten Fällen keinen Sinn, mit Asterisk bei null anzufangen. Für die gängigen Szenarien gibt es nämlich sehr gute Standardlösungen, die auf Asterisk aufbauen und die Sie auf Wunsch selbst erweitern können.
Asterisk++
Im Prinzip erweitern alle verbesserten Lösungen eine normale Asterisk-Installation um einen Apache mit PHP und meist eine Datenbank. Im Betrieb erzeugen die einen dann bei jedem Update der Konfiguration einen neuen, statischen Dialplan. Die anderen speichern alle Einstellungen in einer Datenbank und rufen die Werte im laufenden Betrieb aus dem Dialplan ab. Dies sind die drei wahrscheinlich wichtigsten Player unter den aufgebohrten Asterisk-Setups:
- Trixbox [3] ist ein Oldie – angefangen als Asterisk@Home
und mittlerweile ein eigenständiges Unternehmen, bietet es
eine praktische Community-Edition an, die der User selbst erweitern
kann. Im Dezember 2007 gab es Unruhe in der Community, weil Trixbox
mehr oder weniger heimlich Befehle auf der Anlage ausführen
konnte [4]. - Switchvox [5] bietet ähnliche Funktionalität und
lässt sich ebenso per Web administrieren. Switchvox war
offenbar so gut, dass Digium die Firma kurzerhand vor ein paar
Monaten gekauft und das Produkt in die eigene Produktpalette
aufgenommen hat. - Ob Digiums ursprüngliche Eigenentwicklung Asterisk Now [6]
den Kauf des technisch weit überlegenen Switchvox
überleben wird, ist zweifelhaft. Die Entwicklung jedenfalls
scheint seit einigen Monaten zu ruhen. Es ist aber auch nicht
auszuschließen, dass Digium Switchvox-Elemente in Asterisk
Now integriert.
Alle sind für den amerikanischen Markt konzipiert und bereiten darum hierzulande Probleme. Das fängt bei fehlenden deutschen Sprachbausteinen an und hört bei mangelnder oder gar nicht vorhandener Unterstützung von ISDN auf. Wen das nicht weiter stört, der sieht sich jedoch mit einer völlig anderen Telefonanlagenlogik konfrontiert. So sind die für Deutschland so typischen Durchwahlen in den USA unbekannt. Die dortigen Extensions bilden nur auf den ersten Blick eine Alternative, denn welche mittelständische Firma möchte schon alle Anrufe über eine zentrale IVR (Interactive Voice Response, Sprachnavigation bei Telefonanlagen) schicken und neue Visitenkarten drucken lassen?!
|
Asterisk-Tag |
|---|
|
Wer einmal Mark Spencer, den Erfinder von Asterisk und Gründer der Firma Digium, oder einige der Hauptentwickler der Asterisk-Community persönlich kennenlernen will, kann den Plan fassen, Ende Mai nach Berlin zu reisen. Dort findet nämlich der Asterisk-Tag 2008 statt [http://www.asterisk-tag.org], der an zwei Tagen Asterisk- und VoIP-Vorträge und -Workshops anbietet. Der Termin – 26. und 27. Mai – liegt übrigens in derselben Woche wie der Linuxtag – ein Fall für zwei Fliegen und eine Klappe. |
Gemeinschaftskunde
Um ein erweitertes Asterisk zu bauen, das besser in den deutschsprachigen Raum passt, hat die deutsche Amooma das Projekt Gemeinschaft [7] ins Leben gerufen und gerade den ersten Code ins Netz gestellt. Der Name Gemeinschaft stammt aus dem Grundgedanken, dass mit diesem Kit auch mehrere Asterisk-Server in einem Cluster und damit in einer Gemeinschaft arbeiten dürfen.
Eine komplette Installationsbeschreibung von Gemeinschaft passt nicht in einen Artikel. Muss sie auch nicht, denn Gemeinschaft ist modular aufgebaut und Sie können einzelne Komponenten in eigenen Setups benutzen – oder auch nicht. Die Cluster-Funktionalität zum Beispiel ist wahrscheinlich nur für große Firmen interessant. Dieser Artikel hilft Ihnen dabei, mit Gemeinschaft eine einfache Telefonanlage mit allen dafür typischen Features zu realisieren.
Welche Telefone kaufen?
Die Enduser werden die neue (Asterisk-) Anlage am ehesten akzeptieren, wenn die neuen VoIP-Telefone die gleichen Features aufweisen wie die alten Systemtelefone – oder bessere. Dieser Wunsch kollidiert aber etwas mit der Idee des beliebigen, austauschbaren SIP-Geräts, das möglichst wenig proprietäre Eigenschaften aufweist. Es liegt an Ihnen, einen Kompromiss zwischen Benutzer- und technischem Interesse zu finden.
Nicht jedes SIP-Telefon ist für den Betrieb in einer solchen Anlage geeignet. Bei der Auswahl gilt es, nicht nur offensichtliche Eigenschaften wie Sprachqualität und Griffigkeit des Hörers zu bewerten. Für eine große Anlage ist der wichtigste Faktor das Provisioning, also die Fähigkeit des Geräts, es mit einer Datei beim Booten zu konfigurieren.
Zudem sollte das Telefon Ihrer Wahl einen XML-Browser bereitstellen. Den brauchen Sie für eigene dynamische Menüs auf dem Display und das zentrale Telefonbuch. Das Telefonbuch ist für jede Telefonanlage absoluter Standard, bedeutet für eine neue Asterisk-Anlage aber eine Hürde, wenn Sie den kompletten Dialplan und die Logik von Grund auf neu programmieren müssen.
Schließlich sollten die Telefone ein Beistellmodul bieten (Abbildung 1). Für viele Zentralen und manche Chefsekretärin ist dies ein absolutes Muss, für manche ein Statussymbol. Wenn Sie dann noch blinkende Lampen für bestimmte Funktionen fordern, verkürzt sich die Liste der möglichen Telefone merklich:
- Snom 360 und 370 [8]
- Aastra-Detewe-5xi-Serie (siehe Abbildung 1, [9])
- Siemens Open Stage (Abbildung 2, [10]), das vielen Endusern am
besten gefällt. Allerdings bietet die aktuelle Firmware erst
einen Bruchteil der anvisierten Möglichkeiten, was sich im
Laufe des Jahres laut Siemens aber ändern soll.
Gemeinschaft unterstützt alle hier aufgeführten Telefone. Aber achten Sie bei jedem VoIP-Telefon auf eine stets aktuelle Firmware! Es kursieren für jeden Hersteller Geschichten über schlimme Bugs alter Versionen, die in diversen Foren für die Ewigkeit zementiert sind. Wahr ist: Alle Hersteller liefern anfänglich Telefone aus, die nicht das halten, was die Webseite verspricht. Der Effekt schwächt sich aber meist nach den ersten sechs Monaten ab, dann erscheinen sogar Firmwares mit Features, auf die man nie zu hoffen gewagt hat.

Abbildung 1: Das VoIP-Gerät Aastra Detewe 55i mit Beistellmodul, das für viele Telefonzentralen oder Sekretariate essenziell ist.

Abbildung 2: Das Siemens Open Stage gilt bei vielen Anwendern als das optisch ansprechendste. Die Firmware hat aber noch Verbesserungsbedarf.
Provisioning per DHCP
Mass-Deployment ist der Prozess, der mehrere Telefone automatisch mit einer neuen Konfiguration bestückt. Gemeinschaft bedient sich für das kollektive Provisioning einer Methode, die sich auch bei anderen Installationen anwenden ließe: Ein DHCP-Server kontaktiert alle Telefone und liefert ihnen eine URL passend zu ihrer Konfigurationsdatei. Ein »dhcpd.conf«-Konfigurationsbeispiel für Snom-Telefone zeigt Listing 1.
|
Listing 1: |
|---|
01 ;----------------------------------
02 ; Calls fuer 1234567 kommen hier an
03 ;----------------------------------
04 exten => 1234567,1,Verbose(${CALLERID(num)})
05 exten => 1234567,n,GOToIf($["${CALLINGPRES}"="35"]?abuse1|1)
06 exten => 1234567,n,Dial(SIP/1001,30)
07 exten => 1234567,n,Playback(local/ed-greeting)
08 exten => 1234567,n,VoiceMail(1001@default)
09 exten => 1234567,n,Hangup()
10 ;----------------------------------
11 ; Behandlung anonymer Anrufe
12 ; Lokale Audio-Files liegen unter
13 ; /var/lib/asterisk/sounds/local
14 ;----------------------------------
15 exten => abuse1,1,Answer
16 exten => abuse1,n,Wait(1)
17 exten => abuse1,n,Monitor()
18 exten => abuse1,n,Playback(local/ed-greeting_offenders)
19 exten => abuse1,n,WaitForSilence(500)
20 exten => abuse1,n,Playback(local/ed-hallo)
21 exten => abuse1,n,WaitForSilence(500)
22 exten => abuse1,n,Playback(local/ed-firma_nicht_verstanden)
23 exten => abuse1,n,WaitForSilence(1200)
24 exten =>
25 abuse1,n,Playback(local/ed-ach_so_was_kann_ich_fuer_sie_tun)
26 exten => abuse1,n,WaitForSilence(1000)
27 exten =>
28 abuse1,n,Playback(local/ed-worum_geht_es_ihnen_konkret)
29 exten => abuse1,n,WaitForSilence(2000)
30 exten => abuse1,n,Wait(1)
31 exten => abuse1,n,Playback(local/ed-rufnummer_unterdrueckt)
32 exten =>
33 abuse1,n,Playback(local/ed-ich_bin_leider_nur_ein_computer)
34 exten => abuse1,n,StopMonitor()
35 exten => abuse1,n,VoiceMail(1001@default)
36 exten => abuse1,n,Hangup
|
Wenn sich ein Snom-Telefon beim DHCP-Server meldet, dann erkennt dieser den Hersteller an den ersten 3 Bytes der MAC-Adresse des Geräts (»00:04:13« in Zeile 2). Danach gibt der DHCP-Server dem Telefon nicht nur eine Netzwerk-Konfiguration, sondern auch noch den Namen eines TFTP-Servers und einen »bootfile-name«. Den »tftp-server-name«-Eintrag für einen HTTP-Server zu benutzen, missachtet eigentlich dessen Intention, hat sich allerdings bei VoIP-Telefonen durchgesetzt.
Snom setzt die MAC-Adresse der eigenen Telefone noch mal im »bootfile-name« per »{mac}« ein. (Für andere Telefone benötigen Sie dafür eventuell das Apache-Modul Mod_rewite.) Damit erhält der Provisioning-Server die Geräte-MAC und kann sich durch Auslesen des HTTP-Headers die Typbezeichnung verschaffen, zum Beispiel »Snom 360«.
Das aufgerufene PHP-Skript erzeugt on the Fly die Konfiguration. Die sieht bei jedem Hersteller anders aus, bei einem Snom im einfachen Fall wie in Listing 2. Sie kann aber beliebig umfangreich ausfallen und auch die Tasten des Telefons belegen. Mit Gemeinschaft dürfen Sie die Tasten auch über ein Webinterface konfigurieren. Aastra-Telefone erlauben es, sehr viele Einstellungen im laufenden Betrieb vom Provisioning-Server zu pushen – da hat Snom Aufholbedarf.
|
Listing 2: |
|---|
01 language: Deutsch 02 time_24_format: on 03 date_us_format: off 04 user_host1: 192.168.1.130 05 user_name1: 1234 06 user_pname1: 1234 07 user_pass1: Sippasswort 08 user_realname1: Paula Plauder 09 active_line: 1 |
Konfiguration neu einlesen
Der einfachste Weg, ein Snom-Telefon neu zu konfigurieren, ist ein gezielter Reboot per Skriptaufruf:
wget -q -O /dev/null -o /dev/null http://U IP_des_Telefons/confirm.htm?REBOOT=yes
Der setzt aber voraus, dass der Snom-eigene Webserver aktiviert ist und dass es keinen Passwortschutz gibt (beides Default). Falls doch ein Passwort gesetzt ist, geben Sie es dem Wget-Aufruf mit. Nach dem Reboot holt sich das Snom die neue Konfiguration vom Provisioning-Server. Alternativ schicken Sie dem Gerät ein spezielles SIP-Notify. Aus Asterisk heraus geht das in »/etc/asterisk/sip_notify.conf« mit der Einstellung:
[snom-check-cfg] Event=>check-sync;reboot=false Content-Length=>0 [snom-reboot] Event=>reboot Content-Length=>0
Nun tippen Sie im CLI »sip notify snom-check-cfg 1234«, und Asterisk lädt die neue Konfiguration ins Telefon. »sip notify snom-reboot 1234« bootet es. Ein gleichwertiger Bash-Aufruf heißt »asterisk -rx \’sip notify snom-check-cfg 1234\’«.
Telefonbuch und Umleitung
In einer Firma darf ein zentrales Telefonbuch nicht fehlen, ein zusätzliches eigenes ist ein gern angenommenes Goodie. Alle Asterisk-Toolsets bieten ein Web-Telefonbuch zum Anklicken des gewünschten Gesprächspartners. Der Komfort hängt von den angebundenen Telefonen ab. Gemeinschaft erlaubt es zudem, das Web-Telefonbuch in die Telefondisplays zu spiegeln (Abbildungen 3 und 4). Dafür fragt Gemeinschaft mit einem XML-Browser das Telefonbuch aus seiner Datenbank ab und stellt es je nach Telefontyp über T9 oder eine andere Suchfunktion zur Verfügung.
Ein anderes wichtiges Merkmal jeder Anlage ist eine vernünftige Rufumleitung. Viele benutzen dazu die Umleitungsfunktion der Telefone. Als der professionellere Ansatz gilt jedoch, sämtliche Rufumleitungen auf dem Server abzuwickeln – nur so lassen sich Loops wirksam abfangen. Gemeinschaft kennt alle Varianten der Rufumleitung. Diese konfigurieren Sie über das Webinterface (siehe Abbildung 5) oder einen Servicecode am Telefon.

Abbildung 3: Alle Asterisk-Toolsets – hier Gemeinschaft – bieten ein Web-Telefonbuch zum Anklicken des gewünschten Gesprächspartners.

Abbildung 4: Das Telefon Snome 370 zeigt gerade per XML-Browser das vom Asterisk-Server bereitgestellte zentrale Telefonbuch im Display an.

Abbildung 5: Gemeinschaft kennt bedingte Varianten der Rufumleitung, zu konfigurieren über das gezeigte Webinterface.
Skripte zum Automatisieren
Alle Benutzer über das Webinterface anzulegen ist bei größeren Installationen unpraktikabel. Achten Sie auf das Vorhandensein von Automatisierungsskripten! Gemeinschaft hält für jede GUI-Funktion das korrespondierende Skript im Verzeichnis »/opt/gemeinschaft/scripts« bereit. So können Sie Hunderte User importieren oder per Cronjob zu Weihnachten für die ganze Firma eine Rufumleitung einschalten. Listing 3 zeigt, wie Sie mit »gs_user_add« einen User anlegen. Um dessen Mailbox für interne Anrufe zu aktivieren, rufen Sie:
./gs_vm_activate --user homer --source internal --active yes
auf. Eine Aufstellung über alle im System angelegten User verschafft das Skript »gs_users_get« (Listing 4).
|
Listing 3: Einen User |
|---|
01 cd /opt/gemeinschaft/scripts/ 02 ./gs_user_add 03 --user homer 04 --ext 201 05 --pin 123 06 --firstname Homer 07 --lastname Simpson 08 --email homer@simpson.dom 09 --host 1 |
|
Listing 4: |
|---|
01 ---------------------------------------------------------------------------------- 02 | id | user | ext | pin | ln | fn | cid | host | 03 ---------------------------------------------------------------------------------- 04 | 23 | homer | 201 | 123 | Simpson | Homer | Homer Simpson <201> | 192.168.1.130 | 05 | 25 | lisa | 202 | 123 | Simpson | Lisa | Lisa Simpson <202> | 192.168.1.130 | 06 | 24 | bart | 203 | 123 | Simpson | Bart | Bart Simpson <203> | 192.168.1.130 | 07 ---------------------------------------------------------------------------------- |
Installieren und bewerten
Wer für mehrere Firmen oder Filialen eine Lösung sucht, fährt gut mit dem unter GPL veröffentlichten GPBX-Buildskript von Amooma [11]. Es ist eine Embedded-Linux-Appliance mit VIA-C7-CPU, auf der Gemeinschaft fertig installiert ist. Das Skript eröffnet zudem die Möglichkeit, eigene Applikationen wie ein CRM-System einzufügen. Das fertige Image ist je nach Software-Auswahl 250 bis 400 MByte groß und passt damit auf einen USB-Stick oder eine Flash-Speicherkarte.
Wie bei so vielen Open-Source-Systemen ist auch bei Gemeinschaft die Dokumentation verbesserungswürdig. Das fertige System, das auf GPBX fußt, ist zwar sehr gut beschrieben, die Installation des Konstrukts aus Apache, MySQL, PHP, Asterisk und einem DHCP-Server jedoch nur mäßig. Zuzeit bleibt bei Problemen nur der Weg zur Mailingliste.
Egal ob Sie mit Gemeinschaft oder einem anderen Asterisk-Toolkit Ihre neue Telefonanlage implementieren: Das Wichtigste ist eine genaue Aufstellung der verlangten Features – im Telefonjargon Leistungsmerkmale genannt. Nur mit dieser Liste können Sie den Aufwand einer Asterisk-Anlage bewerten und mit dem einer klassischen vergleichen. (jk)
|
Listing 5: |
|---|
01 ;----------------------------------
02 ; Calls fuer 1234567 kommen hier an
03 ;----------------------------------
04 exten => 1234567,1,Verbose(${CALLERID(num)})
05 exten => 1234567,n,GOToIf($["${CALLINGPRES}"="35"]?abuse1|1)
06 exten => 1234567,n,Dial(SIP/1001,30)
07 exten => 1234567,n,Playback(local/ed-greeting)
08 exten => 1234567,n,VoiceMail(1001@default)
09 exten => 1234567,n,Hangup()
10 ;----------------------------------
11 ; Behandlung anonymer Anrufe
12 ; Lokale Audio-Files liegen unter
13 ; /var/lib/asterisk/sounds/local
14 ;----------------------------------
15 exten => abuse1,1,Answer
16 exten => abuse1,n,Wait(1)
17 exten => abuse1,n,Monitor()
18 exten => abuse1,n,Playback(local/ed-greeting_offenders)
19 exten => abuse1,n,WaitForSilence(500)
20 exten => abuse1,n,Playback(local/ed-hallo)
21 exten => abuse1,n,WaitForSilence(500)
22 exten => abuse1,n,Playback(local/ed-firma_nicht_verstanden)
23 exten => abuse1,n,WaitForSilence(1200)
24 exten =>
25 abuse1,n,Playback(local/ed-ach_so_was_kann_ich_fuer_sie_tun)
26 exten => abuse1,n,WaitForSilence(1000)
27 exten =>
28 abuse1,n,Playback(local/ed-worum_geht_es_ihnen_konkret)
29 exten => abuse1,n,WaitForSilence(2000)
30 exten => abuse1,n,Wait(1)
31 exten => abuse1,n,Playback(local/ed-rufnummer_unterdrueckt)
32 exten =>
33 abuse1,n,Playback(local/ed-ich_bin_leider_nur_ein_computer)
34 exten => abuse1,n,StopMonitor()
35 exten => abuse1,n,VoiceMail(1001@default)
36 exten => abuse1,n,Hangup
|
|
Infos |
|---|
|
[1] St. Wintermeyer, “Workshop: Die eigene Asterisk-Anlage” – Teile 1 bis 3, Linux-Magazin 01/08, S. 84, 02/08, S. 84, 03/08, S. 72 [2] Asterisk: [http://www.asterisk.org] [3] Trixbox: [http://www.trixbox.org] [4] Diskussion um Trixbox: [http://yro.slashdot.org/article.pl?sid=07/12/16/222243] [5] Switchvox: [http://www.switchvox.com] [6] Asterisk Now: [http://www.asterisknow.com] [7] Gemeinschaft: [http://www.amooma.de/gemeinschaft/] [8] Snom-Serien: [http://www.snom.com/de/products.html] [9] Aastra-Detewe-5xi-Serie: [http://www.aastra-detewe.de/cps/rde/xchg/aastra-detewe/hs.xsl/21552.htm] [10] Siemens Open Stage: [http://enterprise.siemens.com/open/de/OpenSolutions/OpenStage/] [11] GPBX: [http://www.amooma.de/gpbx/] [12] Rattenfänger-Demo: [http://www.dignatz.de/phonehoneypot451] |
|
Der Autor |
|---|
|
Stefan Wintermeyer ist Autor des bei Addison-Wesley erschienenen Asterisk-Buches und erster deutscher DCAP (Digium Certified Asterisk Professional). Bei der Amooma GmbH [http://www.amooma.de] bietet er Consulting, Support und Training zu Asterisk an. |

![Eitel Dignatz ist hauptberuflich Strategieberater und Inhaber von Dignatz Consulting, München. [http://www.dignatz.de/spot451]](https://www.linux-magazin.de/wp-content/uploads/2008/03/autor_jpg-243x300.jpg)




