Notizen zur asterisk-Konfiguration
Als erstes wollen wir ein SIP-Telefon mit unserem asterisk verbinden; es soll heraus telefonieren können, eingehende Rufe annehmen können, es bekommt eine Mailbox (die allerdings erst im nächsten Artikel) und es kann angenommene Rufe weitervermitteln:
[1234]
username=1234
secret=keins1234
callerid=Testuser <1234>
host=dynamic
type=friend
Läuft der asterisk schon (und ggf. produktiv), so sollte er nicht komplett restartet werden aufgrund dieser Änderung; ein sip reload am CLI tut’s auch. Nun kann ein SIP-Client verbunden werden; nachdem man ihm die nötigen Daten eingefüttert hat, sollte er sich prompt am CLI melden. ACHTUNG: die meisten SIP-Clients erweisen sich als extrem zickig und sollten nach jeglicher Änderung der Konfiguration beendet und neu gestartet werden! Eine gute Ausgabe sieht in etwa so aus:
Registered SIP '1234' at 192.168.y.x port 62530 expires 3600
-- Saved useragent "X-Lite release 1010i stamp 39418" for peer 1234
Nachdem wir dieses erfolgreich hinter uns gebracht haben, wollen wir natürlich eine erste Verbindung erstellen; die nächsten Testläufe erfolgen alle asterisk
-intern, d.h. wir nutzen erst einmal keine Verbindung zur Außenwelt! Zum Testen erstellen wir eine Mini-Dialanweisung, die uns ein Soundfile abspielt. Dazu ist ein wenig Vorarbeit nötig:
Der Wählplan hat die absolut unangenehme Eigenschaft, enorm groß zu werden – da blickt man ab einem gewissen Punkt kaum noch durch. Deshalb hacken wir ihn in Stücke und fangen bei Null an – mit einer leeren extensions.conf
in /etc/asterisk
. Außerdem legen wir einen Ordner an, in dem wir all unsere extensions
-Bruchstücke unterbringen werden – wir nennen ihn der Einfachheit halber Extensions (ja, mit großem E, dann geht das Expandieren schneller, jedenfalls bei mir).
## file: "extensions.conf"
#include Extensions/demo.conf
[default]
include => demo
## file: "Extensions/demo.conf"
[demo]
exten => 666,1,Answer
exten => 666,n,Wait(1)
exten => 666,n,Playback(tt-weasels)
exten => 666,n,Wait(1)
exten => 666,n,Hangup
Nach einem dialplan reload
am CLI des asterisk
kann die gerade definierte Rufnummer gewählt werden; am CLI (ggf. core set verbose 17
aufrufen) könnt ihr beobachten, was abgeht:
Executing [666@default:1] Answer("SIP/1234-081df5b0", "") in new stack
-- Executing [666@default:2] Wait("SIP/1234-081df5b0", "1") in new stack
-- Executing [666@default:3] Playback("SIP/1234-081df5b0", "tt-weasels") in new stack
-- Playing 'tt-weasels' (language 'de')
-- Executing [666@default:4] Wait("SIP/1234-081df5b0", "1") in new stack
-- Executing [666@default:5] Hangup("SIP/1234-081df5b0", "") in new stack
== Spawn extension (default, 666, 5) exited non-zero on 'SIP/1234-081df5b0'
Glückwunsch! Wir haben uns nun einen Grundstock erarbeitet, auf den wir aufsetzen können. Entsprechend können nun weitere Kontexte definiert und häppchenweise auf verschiedene Files verteilt und eingebunden werden; wichtig ist nun, dass für den User mit der Rufnummer 1234 eine entsprechende Wahlregel definiert wird, die initial in etwa so ausschaut:
exten => 1234,1,Dial(SIP/1234)