Reihenfolge beim Include

Asterisk sucht bevor es einen anderen Context einbindet (include) immer erst im aktuellen Context nach einem Treffer (einem Match). Gibt es einen Treffer, wird dieser benutzt. Gibt es keinen Treffer, wird das erste Include vollzogen und dort nach einem Treffer gesucht. Dies funktioniert rekursiv nach unten - auch verschachtelt - es können also auch Includes innerhalb von Includes abgearbeitet werden.

Im Zweifelsfall können Sie zum Debuggen auch hier die Applikation dialplan show nummer@name-des-contextes benutzen, um heraus zu finden, welche Regel von Asterisk angewendet wird.

[Anmerkung]Anmerkung

Benutzer von Asterisk 1.2 müssen anstatt dialplan show immer show dialplan eingeben.

Ein paar Beispiele:

[general]

[verkauf]
include => intern
include => extern

[intern]
exten => 2000,1,Dial(SIP/2000)

[extern]
exten => 03012345678,1,Dial(SIP/03012345678)

Wenn mit diesem Dialplan im Context verkauf die Nummer 2000 angerufen wird, dann können wir mit dem CLI Befehl dialplan show 2000@verkauf analysieren:

*CLI> dialplan show 2000@verkauf
[ Included context 'intern' created by 'pbx_config' ]
  '2000' =>         1. Dial(SIP/2000)                             [pbx_config]

-= 1 extension (1 priority) in 1 context. =-
*CLI>

Wenn wir jetzt im Context verkauf jetzt wie folgt erweitern:

[general]

[verkauf]
include => intern
include => extern

exten => 2000,1,Answer()
exten => 2000,2,Playback(hello-world)
exten => 2000,3,Hangup()

[intern]
exten => 2000,1,Dial(SIP/2000)

[extern]
exten => 03012345678,1,Dial(SIP/03012345678)

Dann bekommen wir folgende Analyse des Dialplanes aufgezeigt:

*CLI> dialplan show 2000@verkauf
[ Context 'verkauf' created by 'pbx_config' ]
  '2000' =>         1. Answer()                                   [pbx_config]
                    2. Playback(hello-world)                      [pbx_config]
                    3. Hangup()                                   [pbx_config]
[ Included context 'intern' created by 'pbx_config' ]
  '2000' =>         1. Dial(SIP/2000)                             [pbx_config]


-= 2 extensions (4 priorities) in 2 contexts. =-
*CLI> 

Asterisk wird also den Sprachbaustein hello-world abspielen und nicht zum Telefon 2000 durchstellen und das obwohl das Include vorher im Dialplan auftaucht. Das liegt daran, das erst alle Möglichkeiten innerhalb eines Contextes und dann erst die Includes abgearbeitet werden.


$Revision:473 $

Beta-Version!

2.0 Entwickler-Version des Asterisk Buches. Die 1.0 stabile Version ist natürlich noch online. Die 2.0er Version enthält viele Neuerungen, ist aber noch nicht 100% fehlerfrei. Im Zweifelsfall bitte auf die 1.0er Version gehen.

Bitte melden Sie Fehler und Feedback zur neuen 2.0er Version per E-Mail an den Autor.

Asterisk-Tag 2008

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

Werbung