Cannot find extension context 'XXXXXX'

Mögliche Fehlerursachen: Es wird auf einen ungültigen Kontextnamen verwiesen Es muss in der extensions.conf einen Kontext mit dem in der Fehlermeldung verzeichneten Namen XXXXX geben. Kontextnamen werden mit [] eingeschlossen. Die extensions.conf enthält gravierende Fehler Hier sind besonders multiline Kommentare zu beachten Die extensions.conf wird nicht eingelesen Wenn die Ausgabe des Befehls "show dialplan" im asterisk CLI sehr wenig oder keine Ausgabe bringt, sollte die Datei /etc/asterisk/modules.conf überprüft werden. Im Abschnitt [modules] werden die im System vorhandenen Module referenziert. Sollte "autoload=no" sein muss ein Eintrag "load => pbx_config.so". pbx_config verarbeitet die extensions.conf. Ansonsten versucht "autoload=yes" alle im Modules-Verzeichnis von Asterisk (/usr/lib/asterisk/modules) zu findenden Module automatisch zu laden.

Applications

Applications, die auf Grund der Konfiguration in der modules.conf geladen werden, stellen die Funktionaliät bereit, bzw. "erweitern" Asterisk um Befehle. Sollte also z.B. eine Fehlermeldung auftauchen, die darauf hindeutet, dass der Befehl dial() in der extensions.conf nicht ausgeführt werden kann, so könnte das daran liegen, dass app_dial.so nicht eingebunden ist. Eine Übersicht der geladenen Applications erhält man mit "show applications" im CLI. Hier sollte dann, um bei obigem Beispiel zu bleiben, folgende Zeile auftauchen: "Dial: Place a call and connect to the current channel". Eine vollständige Übersicht über alle Applications findet man unter http://www.voip-info.org/wiki-Asterisk+-+documentation+of+application+commands  

SIP Konfiguration

Um Clients mit dem SIP-Protokoll verbinden zu können sind folgende Einträge notwendig: 1. modules.conf Hier wird SIP aktiviert. Die Datei wird beim Start von asterisk gelesen. Zwei Möglichkeiten gibt es: Entweder steht der Paramter autoload auf yes. Wenn ja sollte das SIP-Modul bereits automatisch geladen werden. Wichtig ist nur dass kein Eintrag "noload => chan_sip.so" existiert. Die zweite Möglichkeit wäre, dass autoload=no eingetragen ist. In diesem Fall muss das Module chan_sip "manuell" über den Eintrag "load => chan_sip.so" geladen werden. 2. sip.conf Hier definieren wir den Standard-Kontext, der bei Anrufen von diesen Clients verwendet wird, sowie 2 Clients (SIP100 und SIP200) in ihrer einfachsten Konfiguration. [general] context=default [SIP100] secret=geheim ;Passwort für die Anmeldung des Clients an asterisk host=dynamic ;keine vorgegebene IP type=friend ;Client kann alle Arten von Gesprächen durchführen [SIP200] secret=geheim ;Passwort für die Anmeldung des Clients an asterisk host=dynamic ;keine vorgegebene IP type=friend ;Client kann alle Arten von Gesprächen durchführen 3. extensions.conf Diese Datei enthält die Wahlregeln, was passiert wenn die Nummer x gewählt wird. Der Name des Kontextes, den wir hier verwenden muss identisch mit dem Namen in der sip.conf sein! [default] exten => 100,1,Dial(SIP/SIP100,60) exten => 100,2,Congestion exten => 100,102,Busy exten => 200,1,Dial(SIP/SIP200,60) exten => 200,2,Congestion exten => 200,102,Busy Diese Änderungen genügen bereits damit zwei SIP-Telefone sich gegenseitig anrufen können. Der aus der Datei extensions.conf erzeugte Dialplan kann im CLI durch "show dialplan" angezeigt werden.  

Abgehende MSN setzen

Um in einer kleinen Konfiguration (z.B. Asterisk an einem einzelnen S0- Anschluß mit wenigen SIP-Telefonen) die MSN für abgehende Anrufe definiert setzen zu können kann man folgendes Vorgehen einsetzen:  
_0.,1,Set(CALLERID(all)=${IF($[${SIPCHANINFO(peername)} = sip100]?12345:54321)})
   
_0.,n,...
   
_0.,n,Zap/g1/${EXTEN:1}|30
   
_0.,n,...
  Ist der zum Telefonieren benutzte SIP-Account sip100 ergibt die Bedingung wahr und es wird 12345 als MSN gesetzt. Wurde ein anderer Account benutzt wird 54321 als abgehende MSN gesetzt.

Music On Hold

Um Music-On-Hold in Asterisk aktivieren zu können muss in der modules.conf ein Eintrag load => res_musiconhold.so vorhanden sein. Erst dann sind die notwendigen Routinen in Asterisk verfügbar. Kontrollieren kann man das Vorhandensein der Module bei laufendem Asterisk im CLI durch den Befehl "show applications". Hier sollte eine Zeile "MusicOnHold: Play Music On Hold indefinitely" auftauchen. Weiterhin ist das Paket MPG123 notwendig um MP3-Files Life streamen zu können. mpg123 herunterladen   z.B. von http://mesh.dl.sourceforge.net/sourceforge/mpg123/mpg123-0.59r-gpl.tar.gz oder direkt von www.mpg123.de Installation tar xvfz mpg123-0.59r-gpl.tar.gz make freebsd (für ein FreeBSD-System. Ansonsten einfach make eingeben und in der Ausgabe nach dem passenden Systemtyp suchen) make install Nun noch das erzeugte Binary linken, da es als /usr/local/bin/mpg123 erstellt wurde und Asterisk unter /usr/bin/mpg123 sucht: ln -s /usr/local/bin/mpg123 /usr/bin/mpg123 In der Standardversion von Asterisk sind bereits drei MP3-Files enthalten, die sich im Verzeichnis /var/lib/asterisk/mohmp3 befinden. fpm-calm-river.mp3 fpm-sunshine.mp3 fpm-world-mix.mp3 Aktivierung In /etc/asterisk/musiconhold.conf folgende Zeilen einfügen: [classes] default => quietmp3:/var/lib/asterisk/mohmp3, -Z Das -Z am Ende der Zeile bewirkt, dass die MP3-Dateien im Verzeichnis /var/lib/asterisk/mohmp3 zufällig wiedergegeben werden.

Eigene MP3's für Music-On-Hold

ACHTUNG: VBR-MP3's werden von den Asterisk-Developern nicht empfohlen! Gegebenenfalls erst umwandeln. Stichwort lame Um eigene, legale, von Rechten Dritter freie MP3-Dateien in Asterisk einzubinden geht man wie folgt vor: - unterhalb von /var/lib/asterisk/mohmp3 ein Verzeichnis erstellen (z.B. lambda) - in dieses Verzeichnis das/die MP3-File(s) legen - /etc/asterisk/musiconhold.conf erweitern:   z.B. moh-intern => quietmp3:/var/lib/asterisk/mohmp3/lambda - Konfigurationsdatei der entsprechenden Klasse anpassen (sip.conf, zapata.conf...)   z.B.   sip.conf: musicclass=lambda   oder: zapata.conf: musiconhold=default   => Landet ein SIP-Anruf in der Warteschleife werden die MP3's aus dem Verzeichnis /var/lib/asterisk/mohmp3/lambda als Music-On-Hold abgespielt    Oder: - extensions.conf anpassen und eine Zeile nach dem Muster   exten => 100,1,SetMusicOnHold(lambda) vor etwaigen Dial-Commands einfügen   exten => 100,2,Dial...