VoIP-Telefone der Firma snom
sind in Deutschland sehr beliebt und werden deshalb exemplarisch an dieser
Stelle im Detail beschrieben. Es gibt eine Reihe von verschiedenen
snom-Telefonen. Das snom 360 und sein neuer großer Bruder 370 stechen
allerdings mit einigen Features für den Einsatz in großen Firmen hervor.
Alle snom-Telefone bieten durch die umfangreiche SIP-Unterstützung in
Kombination mit Asterisk Eigenschaften, die man sonst nur von
herstellerspezifischen Anlagen mit Systemtelefonen kennt.
22.2.1. Konfiguration von Asterisk
Standard-Snom-Telefone können mit dem SIP-Protokoll an eine
Asterisk-Anlage angeschlossen werden. Um die Komfortmerkmale zu
beschreiben, nehmen wir als Standardkonfiguration diejenige aus Kapitel 2, „Hello World“ und erweitern sie wie folgt:
Der Eintrag in der
sip.conf
-Datei von
Asterisk:[general] port = 5060 bindaddr = 0.0.0.0 context = sonstige [2000] type=friend context=meine-telefone secret=1234 host=dynamic mailbox=2000 [2001] type=friend context=meine-telefone secret=1234 host=dynamic mailbox=2001
Der Eintrag
mailbox=...
sorgt dafür, dass die
"Message"-Anzeige des snom-Endgeräts angesprochen wird. Sobald eine
Nachricht auf der entsprechenden Mailbox des Teilnehmers eingegangen ist,
wird dies standardmäßig durch ein blinkendes "Message"-Lämpchen angezeigt.
Dieser Mechanismus wird MWI genannt, "Message Waiting Indicator". Je nach
Einstellung des Telefons kann ein Nachrichteneingang zusätzlich auch
akustisch signalisiert werden. Stellen Sie bitte vorher sicher, dass eine
passende Mailbox innerhalb der voicemail.conf
-Datei
angelegt wurde:[general] format = wav [default] 2000 => 4711,Hans Mustermann,hansi@company.de 2001 => 0815,Ute Beispiel,ute.beispiel@company.de
Jedes snom-Telefon verfügt über eine "Retrieve"-Taste, um neue
Sprachnachrichten im Voicemail-System abzurufen. Wird diese Taste
gedrückt, wählt das snom-Telefon in der Werkseinstellung die Extension
asterisk
an. Der Dialplan muss entsprechend um eine
solche Extension erweitert werden:[sonstige] [meine-telefone] exten => _2XXX,1,Dial(SIP/${EXTEN},20,j) exten => _2XXX,n,VoiceMail(u${EXTEN}) exten => 2999,1,VoiceMailMain(s${CALLERID(num)}) exten => asterisk,1,VoicemailMain(s${CALLERID(num)})
Tipp
Um die für die Voicemail anzuwählende Extension zu ändern, müssen
Sie in der Datei
sip.conf
der Parameter
vmexten=...
hinzufügen.[2001] type=friend context=meine-telefone secret=1234 host=dynamic mailbox=2001 vmexten=obelisk
Snom-Telefone zeigen eingegangene Nachrichten auch im Display im
Klartext an, daher sollten für diesen Fall durchaus "sprechende" Namen
genutzt werden.
Anmerkung
Die "Retrieve"-Taste funktioniert nur, wenn die "Message"-Anzeige
blinkt, d.h. nur nach dem Eingang einer neuen Nachricht. Um alte
Nachrichten abzuhören oder die Mailbox zu konfigurieren, muss im
Wählplan eine eigene Extension zum Abhören der Mailbox eingerichtet
werden (im Beispiel ist dies die
2999
). Diese
kann man dann entweder manuell anwählen, oder man kann eine der
Funktionstasten des Telefons belegen oder bei den snom 360-Modellen über
die XML-Steuerung einen Menüpunkt zur Verfügung stellen.Anmerkung
Die snom 370er-Modelle verfügen über eine zweifarbige Message-LED.
Leuchtet diese gelb, so signalisiert das eingegangene, aber nicht
angenommene Anrufe. Diese Anrufe finden sich dann in der internen
Anrufliste des Telefons wieder. Die Retrieve-Taste funktioniert in
diesem Fall nicht. Erst wenn die LED rot blinkt, liegt auch ein Anruf
auf der Mailbox vor, der mittels der Retrieve-Taste abgehört werden
kann. Bei Anwendern, die zuvor mit einem Gerät der 360er-Baureihe
gearbeitet haben, kann das anfangs zu Verwirrung führen.
Sollte die Anwahl der Mailbox noch nicht problemlos funktionieren,
so überprüfen Sie bitte am snom-Telefon zusätzlich den Eintrag
"Anrufbeantworter" im "Login"-Reiter Ihrer Identität. Dort ist ebenfalls
die Extension eingetragen, die beim Drücken der "Retrieve"-Taste angewählt
wird. Dieser Umweg wird dann benötigt, wenn die MWI-Benachrichtigung nicht
die korrekte Mailbox-Extension beinhaltet. Über diesen Weg ist es auch
möglich, die Mailbox auch bei nicht blinkender/leuchtender
"Message"-Anzeige anzuwählen.
Nun sind alle grundlegenden Schritte für die Integration der
snom-Telefone in Asterisk durchgeführt.
22.2.2. Konfiguration der Telefone
Konfiguriert man ein einzelnes Gerät, so kann dies durchaus manuell
erfolgen. In diesem Fall sollte man dem Gerät dennoch per DHCP eine
IP-Adresse zuweisen lassen und den Rest der Konfiguration dann bequem über
einen Webbrowser durchführen, denn die snom-Telefone verfügen alle über
einen eingebauten Webserver, so dass alle komfortabel von außen editiert
werden können, ohne dass man sich über die zehn Ziffern- und Menütasten
quälen muss.
Wichtig
Achten Sie darauf, dass sich das Telefon im Admin-Modus befindet,
nur so können Sie wirklich alle Einstellungen des Telefons verändern.
Normalerweise befindet sich das Telefon in diesem Modus; falls nicht,
kann dieser über die "Settings"-Taste aktiviert werden. Das
Default-Admin-Passwort ist "0000".
Manuelle Konfiguration
Alle Details zur Einstellung am Gerät selbst finden Sie auf der
snom-Homepage http://www.snom.com/ und im Wiki
http://wiki.snom.com/. Dort
sind für alle Endgeräte Anleitungen im PDF-Format frei erhältlich. Die
Konfiguration zur Anbindung eines Telefons an eine Anlage mit obiger
Beispielkonfiguration ist sehr einfach:
Abbildung 22.1. snom Konfiguration
Bereits nach diesen Einstellungen sollte sich das Telefon
erfolgreich mit der Anlage verbinden können.
Für ein Massen-Rollout ist ein solches Verfahren natürlich denkbar
ungeeignet. Daher sind nachfolgend die Schritte beschrieben, die ein
Rollout auch in großen Stückzahlen ermöglichen.
Automatische Konfiguration
Zunächst sollten Sie Ihren DHCP-Server mit ein paar zusätzlichen
Einstellungen konfigurieren. Es wird davon ausgegangen, dass der
Telefonserver und die Telefone in einem eigens dafür eingerichteten
Netzwerk bzw. Netzwerk-Segment agieren. Sollte eine Integration in ein
bestehendes Netzwerk durchgeführt werden, ist im Einzelfall zu
überprüfen, ob sich die notwendigen Einstellungen mit Geräten vertragen,
die sich bereits im Netz befinden.
Damit die Telefone in der Lage sind, sich selbstständig zu
konfigurieren, muss ein spezieller DHCP-Parameter beim DHCP-Request mit
übergeben werden. Dies kann bei den meisten Linux-Systemen über die
Datei
/etc/dhcp.conf
festgelegt werden:option tftp-server-name "http://pbx.apfelmus-gmbh.de/snom/settings/snom.php?mac={mac}";
Nachdem die Geräte ihre IP-Adresse erhalten haben, setzen sie
automatisch eine Abfrage an die oben angegebene URL ab, um ihre
Konfiguration zu erhalten. Dabei wird der Parameter
{mac}
automatisch mit der MAC-Adresse des Telefons belegt. Man sollte sich
nicht verwirren lassen, dass ein HTTP- statt eines TFTP-Servers über
diesen Parameter konfiguriert wird. Die Telefone erkennen automatisch,
dass sie einen HTTP-Request durchführen müssen. Es muss kein
zusätzlicher TFTP-Server konfiguriert werden. Hier sehen Sie ein
Beispiel für ein PHP-Skript, das als Rückgabe die Settings für ein
bestimmtes Telefon liefert:<html> <pre> <?php // Die MAC-Adresse aus der URL (GET) lesen und in $mac abspeichern. $mac = $_GET['mac']; // Allgemeine Konfiguration readfile("snom-base.htm"); // Spezielle Konfiguration für diese MAC-Adresse readfile("snom-".$mac.".htm"); ?> </pre> </html>
Über das Skript wird der Inhalt mehrerer Dateien übermittelt.
Neben dem Header, dem Footer und den Einstellungen, die bei allen
Endgeräten konstant sein sollen, wird des Weiteren eine Datei speziell
für das Telefon mit der übergebenen MAC-Nummer übermittelt.
In der Datei
snom-base.htm
befinden sich die
Settings, die für alle Telefone identisch sein sollen. In der Regel kann
man hier Sprach- und Datumseinstellungen, feste Tastaturbelegungen etc.
konfigurieren.# After each setting (before the colon) you can set a flag, which means respectively: # ! means writeable by the user, but will not overwrite existing # $ means writeable by the user, but will overwrite existing (available since version 4.2) # & (or no flag) means read only, but will overwrite existing # more settings can be found at the settings (dump) page of the phone's build in webinterface # Language and Time settings language$: Deutsch web_language$: Deutsch timezone$: GER+1 date_us_format&: off time_24_format&: on tone_scheme&: GER # define the firmware update policy here # valid values are <auto_update>, <ask_for_update>, <never_update_firm>, # <never_update_boot>, <settings_only> update_policy: auto_update #define the firmware update interval here, amount in minutes, default is 1440 = 1 day firmware_interval: 2880 setting_server!: http://pbx.apfelmus-gmbh.de/snom/settings/snom.php?mac={mac} subscribe_config!: off update_server!: http://pbx.apfelmus-gmbh.de/snom/settings/snom.php?mac={mac} contrast!: 14 dtmf_speaker_phone!: on dkey_snom&: url http://pbx.apfelmus-gmbh.de/snom/webapps/mainmenu.xml admin_mode: off admin_mode_password$: 4321 admin_mode_password_confirm$: 4321 alert_internal_ring_text: alert-internal alert_external_ring_text: alert-external alert_group_ring_text: alert-group
Alle oben aufgeführten Einstellungen sind im Grunde
Standard-Einstellungen. Besonderes Augenmerk gilt den Parametern
dkey_snom
, alert_internal_ring_text
,
alert_external_ring_text
und
alert_group_ring_text
. Deren Bedeutung wird später noch
genauer erläutert.Passend zur allgemeinen Konfiguration bekommt jedes Telefon auch
eine spezifische Konfiguration. Jeder Teilnehmer sollte in der Lage
sein, bei einem Bürowechsel oder einem Reset des Telefons genau die
Konfiguration an seinem Telefon wiederzufinden, die ihm vom
Administrator zugewiesen wurde. Telefonspezifische Einstellungen werden
daher in einer Datei
snom-{mac}.htm
abgespeichert,
also bei einem Telefon mit MAC-Adresse
00:04:13:23:8B:60
in der Datei
snom-000413238B60.htm
. Der Aufbau des Dateinamens
ist prinzipiell beliebig, wichtig dabei ist, dass Sie die gedachte Kette
zwischen den Einstellungen innerhalb der DHCP-Konfiguration, der
dazugehörigen Skriptdatei und letztendlich der Settings-Datei des
Telefons einhalten. Hier sehen Sie die spezielle Konfiguration eines
solchen Telefons:# After each setting (before the colon) you can set a flag, which means respectively: # ! means writeable by the user, but will not overwrite existing # $ means writeable by the user, but will overwrite existing (available since version 4.2) # & (or no flag) means read only, but will overwrite existing # First account user_active1!: on user_realname1$: Hans Mustermann <2000> user_name1$: 2000 user_host1&: pbx.apfelmus-gmbh.de user_pass1$: 1234 # You may add up to 12 accounts # set second account to active outgoing identity active_line$: 1 # in order to perform automated updates, define the firmware setting file URL # where you specify the final firmware image URL firmware_status: http://pbx.apfelmus-gmbh.de/snom/firmware360.htm
Man erkennt in der Konfiguration exakt die Einstellungen wieder,
die auch oben in der manuellen Einstellung konfiguriert wurden. Wichtig
sind die Flags, die man pro Parameter angeben kann:
! | Der Parameter kann vom Anwender über das Telefon geändert werden. Bestehende Einstellungen werden beim Laden des Settings-Files nicht geändert. |
$ | Der Parameter kann vom Anwender über das Telefon geändert werden. Bestehende Einstellungen werden beim Laden des Settings-Files überschrieben. |
& oder kein Flag | Der Parameter kann vom Anwender nicht über das Telefon geändert werden. Bestehende Einstellungen werden beim Laden des Settings-Files überschrieben. |
Sie sollten sehr genau abwägen, welche Parameter Sie für die
Anwender freigeben und welche Sie "festzurren". Allein die Reduktion auf
den User-Mode statt der Nutzung des Admin-Mode des Telefons erleichtert
Administratoren später den Alltag.
Tipp
Es ist sehr leicht möglich, ein Template für die snom-Telefone
zu erstellen, ohne zunächst mühsam die komplette Dokumentation zu
lesen. Am einfachsten konfiguriert man zunächst ein Telefon manuell
über einen Webbrowser. In der Navigationsleiste des Web-Interface des
Telefons befindet sich ganz unten ein Punkt "Einstellungen" (der
Admin-Modus muss aktiv sein!). Dort werden dann im Browser alle
aktuellen Einstellungen mit den passenden Parametern ausgegeben. Man
braucht also nur noch die gewünschten Parameter in eine entsprechende
Datei zu kopieren. Bitte übernehmen Sie auf keinen Fall alle Parameter
aus der Liste, sondern ausschließlich die, die für Ihre spezielle
Konfiguration wichtig sind. Danach entscheiden Sie über die oben
angegebenen Flags, welche der Parameter vom Anwender geändert werden
dürfen und welche nicht.
Wichtig
Sollte die automatische Konfiguration aus irgendeinem Grund
nicht funktionieren, so lohnt sich ein Blick in die Datei
/var/log/messages
, um herauszufinden, welche
DHCP-Anfragen gestellt wurden, sowie ein Blick in das Access-Log des
Webservers, um zu überprüfen, ob überhaupt die richtigen Dateien
angefordert wurden. Bei einem Apache 2.0 auf einem Debian Linux wäre
dies z. B. die Datei /var/log/apache2/access_log
.
Mittels dieser beiden Logs lassen sich die Fehler bei der
Konfiguration in der Regel sehr schnell finden und beheben. Zur
Fehlersuche kann man zunächst auch mit statischen
Konfigurationsdateien statt mit einem PHP-Skript arbeiten. So wird die
Komplexität verringert, und es können Fehler in der Skriptdatei
ausgeschlossen werden.Anmerkung
Die snom-Telefone brauchen zum Laden und Aktivieren der Settings
einige Sekunden. Auch wenn das Telefon sich zunächst in den
Standard-Konfigurationsmodus versetzt, sollten Sie erst einige
Sekunden warten, bevor Sie einen vermeintlich fehlerhaften Versuch
abbrechen.
22.2.3. Unterschiedliche Klingeltöne
Nachfolgend ist ein kleines Beispiel aufgeführt, wie man eine
unterschiedliche Signalisierung für interne, externe und Gruppenanrufe
realisieren kann. Dabei spielen die Parameter
alert_internal_ring_text
,
alert_external_ring_text
und
alert_group_ring_text
eine Rolle. Über den SIP-Header ist es
möglich, eine Signalisierungsinformation mit zu übergeben,die auch
Alert-Info genannt wird. Die Telefone erkennen dann über diese Info, ob
sie gegebenenfalls eine andere Ruf-Signalisierung nutzen sollen, soweit
dies vom Anwender konfiguriert wurde. Dazu muss vor der eigentlichen
Anwahl über das Dial()
-Kommando der
SIPAddHeader()
-Befehl abgesetzt werden. Anbei sehen Sie
einen entsprechenden Auszug aus der
extensions.conf
-Datei.exten => _2XXX,1,SIPAddHeader("Alert-Info: <http://pbx.apfelmus-gmbh.de>\;info=alert-internal\;x-line-id=0") exten => _2XXX,2,Dial(SIP/${EXTEN})
Das Format des SIP-Headers ist vorgegeben, wichtig ist in diesem
Fall eigentlich nur der zweite Parameter
info=alert-internal
. Hier muss einer der drei konfigurierten Texte stehen, an denen das
Telefon die Art des Rufes erkennen soll. Welcher Text dort steht, ist
eigentlich egal, aber er muss jeweils mit den Werten übereinstimmen, die
bei den Telefon-Parametern alert_internal_ring_text
,
alert_external_ring_text
oder
alert_group_ring_text
übergeben wurden. Es empfiehlt sich,
die jeweiligen Default-Werte zu übernehmen.Wichtig
Bitte beachten Sie, dass die Semikolons im Alert-Info mittels
"\"-Zeichen maskiert ("gequotet") werden müssen. Ansonsten interpretiert
Asterisk alles ab dem ersten Semikolon als Kommentar, und der Befehl
wird nur unvollständig oder gar nicht ausgeführt.
In der oberen Variante wird davon ausgegangen, dass das Telefon
anhand des Info-Parameters selbst entscheidet, welchen Rufton es auswählen
muss. Man kann diesen Befehl aber auch dazu nutzen, einen Rufton
vorzugeben, indem man eine entsprechende URL angibt, die auf eine
Sounddatei verweist.
exten => _2XXX,1,SIPAddHeader(Alert-Info: <http://pbx.apfelmus-gmbh.de/snom/sounds/snom_trumpet.wav>) exten => _2XXX,n,Dial(SIP/${EXTEN})
Es bietet sich an, einfach mit den verschiedenen Möglichkeiten zu
experimentieren. Eine Unterscheidung zwischen internen, externen und
Gruppenanrufen macht in den meisten Fällen durchaus Sinn.
22.2.5. Telefone per Fernwartung neu starten
Um zu gewährleisten, dass die oben beschriebenen Features auch
wirklich funktionieren, müssen die Telefone nach jedem Neustart von
Asterisk ebenfalls neu gestartet werden, damit sie die Subscriptions
sauber im System platzieren können. Für eine zentrale Wartung ist es
natürlich nicht akzeptabel, die Anwender nach jedem Update der
Telefonanlage darüber zu informieren, dass sie ihre Telefone neu starten
sollen. Für die snom-Telefone gibt es daher einen einfachen Mechanismus,
diese auch aus der Ferne zurückzusetzen. Dazu fügen Sie folgende Zeilen in
die Datei
/etc/asterisk/sip_notify.conf
ein:[reboot-snom] Event=>reboot Content-Length=>0
Werden die Konfigurationsdaten in Asterisk neu geladen, können Sie
ein beliebiges snom-Endgerät über das Kommando
sip notify
reboot-snom extension
neu starten,
also zum Beispiel:*CLI> sip notify reboot-snom 2001
Sending NOTIFY of type 'reboot-snom' to '2001'
-- Unregistered SIP '2001'
*CLI>
Das Ganze kann man natürlich auch mithilfe eines Skripts von außen
initiieren, vor allem um mehrere Telefone gleichzeitig zurückzusetzen. Wer
es wagen möchte, kann auch eine spezielle Extension eines
Administrator-Telefons verwenden. Ein notwendiges Skript könnte wie folgt
ausehen:
#!/bin/bash ASTERISK=/usr/sbin/asterisk $ASTERISK -rx "sip notify reboot-snom 1000 2000 2001"
Den Aufruf aus dem Wählplan könnte man wie folgt realisieren:
[globals] ; Kommando zum Zurücksetzen der snom-Telefone CMD_RESET_SNOM=/usr/local/sbin/resetAllSnoms.sh [admin] exten => 666,1,NoOp(Bastard Operator from Hell Snom Reset) exten => 666,n,System(${CMD_RESET_SNOM}) ; externes Kommando ausfuehren
Wichtig
Bitte geben Sie so eine Funktion auf gar keinen Fall für
unberechtigte Nutzer frei. Setzen Sie die entsprechenden berechtigten
Telefone in einen eigenen Context, und bauen Sie vielleicht auch noch
eine PIN-Abfrage in den Wählplan ein.
Die Telefone sind einer solchen "Attacke" natürlich nicht ganz
ungeschützt ausgesetzt. Wird in den erweiterten Einstellungen des Telefons
"Authentifikation für SIP Reboot" auf "An" geschaltet, lässt sich ein
Telefon auf diese einfache Art und Weise nicht mehr zurücksetzen. Der
dazugehörige Parameter für eine automatische Konfiguration lautet
"
challenge_reboot: on
".22.2.6. Weitere verfügbare Applikationen
Es gibt bereits einige frei verfügbare Applikationen, vor allem im
Bereich der Telefonbücher. Drei empfehlenswerte Implementationen finden
Sie hier:
- Phonebook for snom phones: Ein Telefonbuch-Browser mit Suchfunkton und LDAP-, Datei- oder SQL-Anbindung für die Telefondaten (http://www.bevuta.com/phoneapps/).
- IPPhone XML library for PHP: Sehr empfehlenswert, eigentlich eine Bibliothek zur Entwicklung von PHP-basierten Telefonbüchern auch für andere Telefontypen wie Cisco, aber mit einem Beispiel für einen T9-ähnlich-geführten Telefonbuch-Browser mit Datei- oder SQL-Anbindung für die Telefondaten (http://www-1.stuttgarter.de/xml/).
- Die Telefonanlagensoftware Gemeinschaft von der AMOOMA GmbH bietet ebenfalls ein T9-ähnlich-geführtes Telefonbuch im Snom-Telefon. Mit Gemeinschaft kann auch auf einen LDAP-Server zugegriffen werden.
Die T9-ähnliche Führung passt ideal auf das Snom-Telefon, das wie
viele Telefone über keine echte alphanumerische Tastatur verfügt. Wer
seine Benutzerdaten bereits in einem zentralen LDAP-Server verwaltet,
sollte sich die erste Lösung und Gemeinschaft genauer
ansehen.
Für BLF, Pickup und die gezielte Ansteuerung der LEDs siehe Kapitel 23, BLF, Hints, Pickup.
[115] Bei älterer Firmware könnte man auch sagen: Die Zeile
<?xml version ..?>
kann man auch weglassen; der
eingebaute Browser ist auch mit diesem Header sowieso nicht in der
Lage, XML korrekt zu interpretieren, insbesondere wenn es um die
Kodierung und um XML-Entities geht. ;-)