Notizen zur asterisk-Konfiguration

Diesen Beitrag schrieb ich 16 Jahre und 3 Monate zuvor; die nachfolgenden Ausführungen müssen heute weder genau so nach wie vor funktionieren, noch meiner heutigen Meinung entsprechen. Behalte das beim Lesen (und vor allem: beim Nachmachen!) bitte stets im Hinterkopf.

Geschätzte Lesezeit: 2 Minuten

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)
Alle Bilder dieser Seite: © Marianne Spiller – Alle Rechte vorbehalten
Hintergrundbild: 849x 500px, Bild genauer anschauen – © Marianne Spiller – Alle Rechte vorbehalten

Eure Gedanken zu „Notizen zur asterisk-Konfiguration“

Ich freue mich über jeden Kommentar, es sei denn, er ist blöd. Deshalb behalte ich mir auch vor, die richtig blöden kurzerhand wieder zu löschen. Die Kommentarfunktion ist über GitHub realisiert, weshalb ihr euch zunächst dort einloggen und „utterances“ bestätigen müsst. Die Kommentare selbst werden im Issue-Tracker und mit dem Label „✨💬✨ comment“ erfasst – jeder Blogartikel ist ein eigenes Issue. Über GitHub könnt ihr eure Kommentare somit jederzeit bearbeiten oder löschen.