2.4. Hello-World mit einem SIP-Telefon
Nachdem wir die Extension 1001 schon vom CLI aus aufgerufen haben,
gehen wir jetzt den nächsten logischen Schritt und machen dies von einem
SIP-Telefon aus. Wenn Sie kein Hardware-SIP-Telefon besitzen, können Sie
auch Software-Telefone benutzen, die Sie aus dem Internet herunterladen
und auf einem anderen Rechner installieren.
Warnung
Wenn Sie zu Testzwecken ein Software-SIP-Telefon und den
Asterisk-Server auf den gleichen Rechner installieren wollen, so
müssen Sie beim SIP-Telefon den SIP-Port auf 5061 umstellen, da 5060
bereits von Asterisk benutzt wird. Ein Hardware-SIP-Telefon ist aber
für den Anfänger vorzuziehen. Man sollte am Anfang immer so wenige
Problemquellen wie möglich verbauen.
2.4.1. sip.conf und das SIP-Telefon konfigurieren
Für das von uns benutzte SIP-Telefon muss in der
Asterisk-Konfiguration erst ein Account angelegt werden. Wie vorher mit
der
extensions.conf
verschieben wir auch diesmal
die Beispieldatei mit mv sip.conf
/var/tmp/asterisk-etc-backup/
nach
/var/tmp/asterisk-etc-backup/
:debian:/etc/asterisk# mv sip.conf /var/tmp/asterisk-etc-backup/
debian:/etc/asterisk#
Danach legen wir mit dem Editor eine neue
/etc/asterisk/sip.conf
an. Die befüllen wir mit
folgendem Inhalt:[general] port=5060 bindaddr=0.0.0.0 [2000] type=friend secret=1234 host=dynamic
Das SIP-Telefon muss dann mit den hier angegebenen Daten
konfiguriert werden:
- User: 2000
- Passwort: 1234
- SIP-Registrar: IP-Adresse Ihres Asterisk-Servers
- SIP-Proxy: IP-Adresse Ihres Asterisk-Servers
Tipp
Bei manchen Telefonen ist es notwendig, alle verfügbaren
Felder notfalls mit
1234567890
zu füllen. Leider gibt
es dafür keine allgemeingültige Hilfe. Da hilft nur
Ausprobieren!2.4.2. Asterisk und Telefon starten
Diesmal starten wir Asterisk direkt mit
asterisk
-vvvvvc
im Verbose-Level 5:debian:/etc/asterisk#asterisk -vvvvvc
Asterisk 1.4.21, Copyright (C) 1999 - 2008 Digium, Inc. and others.[...]
Danach starten wir das SIP-Telefon neu und warten im CLI auf die
Meldung, dass es sich beim Asterisk-Server registriert hat:
*CLI> -- Registered SIP ’2000’ at 47.6.3.4 port 5060 expires 120 -- Unregistered SIP ’2000’
2.4.3. Der Test
Wenn Sie nun mit dem SIP-Telefon die 1001 anrufen, werden Sie von
Asterisk den Sprachbaustein
hello-world.gsm
vorgespielt bekommen.2.4.4. Vom CLI aus das Telefon anrufen
Da wir mit
console dial
eine Extension aufrufen
können und ein SIP-Telefon angeschlossen haben, sollten wir auch in der
Lage sein, dieses Telefon gezielt anzurufen. Dazu müssen wir in der
/etc/asterisk/extensions.conf
eine weitere
Extension einbauen:[default] exten => 1001,1,Answer() exten => 1001,2,Playback(hello-world) exten => 1001,3,Hangup() exten => 2000,1,Dial(SIP/2000)
Jetzt müssen Sie Asterisk entweder mit
stop now
und asterisk -vvvvvc
stoppen und starten oder mit
einem dialplan reload
im CLI den neuen Dialplan neu
einlesen. Danach können Sie mit console dial 2000
vom
CLI aus das SIP-Telefon anrufen:*CLI> console dial 2000
2.4.5. Analyse
Die Applikation
Dial()
kann eine Verbindung zu
einem Telefon aufbauen. Dabei wird ein Parameter angegeben, der aus
mindestens zwei Teilen besteht. Der erste, "SIP", steht für die
Technologie, in unserem Beispiel das SIP-VoIP-Protokoll. Der zweite
Parameter gibt das Ziel innerhalb dieses Protokolls an (hier die 2000).
Bei Dial()
ist kein Answer()
und
kein Hangup()
notwendig. Da man ja gar nicht weiß, ob
die Gegenstelle das Gespräch annimmt oder nicht, hat
Dial()
von den Asterisk-Entwicklern die
Eigenintelligenz mitbekommen, um den Channel auf- und abzubauen.Dass der Name der Extension 2000 mit dem angerufenen Ziel (dem
SIP-Telefon mit dem SIP-Account 2000) übereinstimmt, ist genau genommen
Zufall. Auch die folgende Extension wäre sinnvoll:
exten => 55,1,Dial(SIP/2000)
Jetzt kann mit
console dial 55
das Telefon mit
dem SIP-Account 2000 angerufen werden.2.4.6. Kommentare in der Konfiguration
Da das Hash-Zeichen "#" in der Telefonie ein DTMF-Signal (Doppeltonmehrfrequenz-Signal)
ist, kann es nicht als Signalzeichen für einen Kommentar benutzt werden.
Deshalb werden Kommentare in den meisten Asterisk-Konfigurationsdateien
mit einem Semikolon ";" eingeleitet. Beispiel:
[default] ; Die Extension 1001 wird als Funktionstest ; für alle Telefone benutzt. ; exten => 1001,1,Answer() ; abgehoben exten => 1001,2,Playback(hello-world) exten => 1001,3,Hangup() ; aufgelegt ; Mit der Extension 2000 wird zum SIP-Telefon ; 2000 verbunden. ; exten => 2000,1,Dial(SIP/2000)