extensions.conf - der Dialplan

Die Datei /etc/asterisk/extensions.conf ist das Herz jeder Asterisk-Konfiguration (siehe auch Kapitel 4, Programmieren im Dialplan). Sie ist vergleichbar mit einer Schaltzentrale bei frühen Telefonanlagen. In dieser Konfigurationsdatei wird bestimmt, welches Telefon mit welchem Telefon Kontakt aufnehmen darf.

[sonstige]

Diese erste Sektion der Konfiguration ist für den Context sonstige bestimmt. Da wir dieses in diesem Beispiel nicht benötigen, ist sie leer.

[meine-telefone]
exten => 2000,1,Dial(SIP/2000,20)
exten => 2000,2,VoiceMail(2000)

Der Context wird von Asterisk immer benutzt, wenn ein Telefon die Nummer eines anderen Telefons wählt. Der Name ist dabei beliebig. Wichtig ist, dass in der Datei /etc/asterisk/sip.conf bei der Definition eines SIP-Gerätes eine entsprechende Bezeichnung für den Context definiert wurde und dieselbe Bezeichnung in der Datei /etc/asterisk/extensions.conf wieder als context-Bezeichnung verwendet wird (dann könnte er auch Apfelmus heißen). Dieser Context ist von entscheidender Bedeutung für die Konfiguration des Telefons! Einfach gesagt legen die im Context definierten Regeln exakt fest, welche Nummern das Telefon wählen darf und welche Aktionen dadurch gestattet werden.

[Wichtig]Wichtig

Der Context der angerufenen Nummer spielt keinerlei Rolle, sondern nur der Context der anrufenden Nummer! Merken Sie sich bitte diesen Zusammenhang, er ist wesentlich für einen erfolgreichen Umgang mit den Konfigurationsdateien.

Die Syntax der Einträge ist immer wie folgt:

exten => Nummer, Prioritaet, Applikation

Wird eine Nummer gewählt, die einen entsprechenden Eintrag (Regel) in dieser Form aufweist, dann wird diese Regel gelesen und übernommen. Ist mehr als eine Regel für eine Nummer definiert, wird als Erstes die Regel mit der Priorität 1 durchgeführt. Die mit einer Regel verbundene Aktion steht an dritter Stelle (''Applikation''). Auf der Grundlage unserer Konfigurationsdateien (s.o.) geschieht Folgendes, wenn vom Telefon 2001 die Nummer 2000 gewählt wird:

  • Asterisk sieht in der Datei /etc/asterisk/sip.conf nach, welcher Context der anrufenden Nummer (2001) zugewiesen wurde. In unserem Beispiel haben wir der Nummer 2001 den Context meine-telefone zugewiesen. Dadurch werden die Regeln gelesen, die in der entsprechenden Context-Bezeichnung context=meine-telefone der Datei /etc/asterisk/extensions.conf definiert sind.

  • Nachdem Asterisk die Regeln im Context für die anrufende Nummer (2001) gelesen hat, führt es die Regeln aus, die mit der angerufenen Nummer (2000) definiert sind und zwar in der durch die Priorität festgelegten Reihenfolge. (In unserem Beispiel sind im Context der anrufenden Nummer (2001) für die angerufene Nummer (2000) zwei Regeln hinterlegt.)

  • Da die Regel mit dem Befehl Dial(SIP/2000,20) die Priorität 1 besitzt, kommt diese zur Ausführung. Dadurch wird das Programm Dial gestartet, welches wiederum in der Datei /etc/asterisk/sip.conf nach dem Eintrag 2000 sucht und diesen Apparat dann 20 Sekunden lang anruft (dafür die 20 als zweiter Parameter des Dial-Befehls).

  • Wenn nach 20 Sekunden niemand den Anruf annimmt wird die Dial() Applikation abgebrochen und die Priorität um 1 hochgezählt.

  • Die Zeile exten => 2000,2,VoiceMail(2000) ist also an der Reihe und startet das Programm Voicemail mit dem Parameter 2000. Die 2000 steht für die Nummer der Voicemailbox. Wie Sie sich sicherlich schon denken können, ist auch hier die 2000 nur der Einfachheit halber genommen worden. Die Voicemailbox könnte auch 5555 oder Apfelmus heißen.

Damit wir später vom jeweiligen Telefon auch an unsere Sprachnachrichten kommen, wird in der letzten Zeile die Nummer 2999 für das Aufrufen der Voicemailbox definiert.

exten => 2999,1,VoiceMailMain(${CALLERID(num)},s)

Hierbei kommen wir zum ersten Mal mit der Benutzung von Variablen in der /etc/asterisk/extensions.conf in Berührung. Das aufgerufene Programm heißt VoiceMailMain und ihm wird als erster Parameter die Ausgabe der Funktion ${CALLERID(num)} übergeben. ${CALLERID(num)} gibt die Nummer des Anrufers aus. Deshalb weiß das Programm VoiceMailMain, welche Voicemailbox gerade abgefragt wird. Wird dieser Parameter nicht angegeben, fragt VoiceMailMain als Erstes den Anrufer nach dem Namen der VoiceMailbox. Der Parameter s sorgt dafür, das der Benutzer kein Passwort eingeben muss.


Version 1.2, November 2002

Neue Version verfügbar

Sie betrachten gerade die alte Version des Buches (Version 1.0). Wir empfehlen Ihnen für Asterisk 1.4 und 1.6 die neue Version des Buches.

Asterisk-Tag 2008

Lernen Sie Mark Spencer (den Erfinder von Asterisk) kennen! Viele Vorträge, Case-Studies und Workshops rund um das Thema VoIP. Asterisk-Tag.org

Das gedruckte Buch