Includes bringen Struktur und Ordnung in große Dialpläne. Mit einem Include können andere Contexte in den aktuellen Context eingebaut (also "included") werden.
[general] [verkauf] include => intern include => extern [intern] exten => 2000,1,Dial(SIP/2000) [extern] exten => 03012345678,1,Dial(SIP/03012345678)
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 aufgerufen 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 herauszufinden, welche Regel von Asterisk angewendet wird.
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 den Ablauf
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
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 Dialplans angezeigt:
*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, dass erst alle Möglichkeiten innerhalb eines Contextes
und dann erst die Includes abgearbeitet werden.
Durch die Fähigkeit, Includes auch zeitgesteuert durchzuführen, kann man mit diesem Mechanismus sehr leicht Tag- und Nachtschaltungen durchführen.
include => context|<uhrzeit>|<wochentag>|<tag-des-monats>|<monat>
Die Wochentage und Monate werden immer durch die ersten drei Buchstaben des entsprechenden englischen Begriffs bestimmt. Die Wochentage heißen also: mon, tue, wed, thu, fri, sat, sun.
Wenn eine Firma an Wochentagen von 9:00 bis 17:00 Uhr und samstags von 9:00 bis 14:00 Uhr geöffnet hat, kann ein Dialplan für sie wie folgt aussehen:
; Tag include => tagschaltung|09:00-17:00|mon-fri|*|* include => tagschaltung|09:00-14:00|sat|*|* include => anrufbeantworter [tagschaltung] exten => 2000,1,Dial(SIP/2000) [anrufbeantworter] exten => 2000,1,VoiceMail(2000,u)
AMOOCON 2010
Noch kein Ticket? Dann wird es Zeit. Nur noch wenige Tage.
- Infos unter www.amoocon.de.
- twitter.com/AMOOCON