/etc/asterisk/extensions.conf
) gibt es für jede zur
Verfügung gestellte Zielrufnummer ein kleines Programm. Dieses Programm
heißt bei Asterisk Extension. Eine Extension sieht
dabei wie folgt aus:exten => 1001,1,Answer() exten => 1001,n,Playback(hello-world) exten => 1001,n,Hangup()
n
,
sondern mit Zahlen benannt:exten => 1001,1,Answer() exten => 1001,2,Playback(hello-world) exten => 1001,3,Hangup()Die Funktionsweise der jeweiligen Extensions ist identisch. Wer mit
n
programmiert, kann
später aber leichter einzelne Zeilen löschen oder hinzufügen.Set()
benutzt:exten => 1002,1,Set(Lieblingstier=Tiger) exten => 1002,n,Set(Lieblingszahl=23)
${VARIABLENNAME}
benutzt. Mit der Applikation
NoOp()
kann man Variablenwerte auf dem CLI ausgeben (ab
Verbose-Level 3):exten => 1003,1,NoOp(${Lieblingstier}) exten => 1003,n,NoOp(${Lieblingszahl})
extensions.conf
im Abschnitt
[globals]
[globals] SOLL_UEBERALL_LESBAR_SEIN=>23bzw. in der
extensions.ael
in globals
gesetzt:globals { SOLL_UEBERALL_LESBAR_SEIN=23; }
Set(GLOBAL(X)=23)
gesetzt und verändert
werden:exten => 1004,1,Set(GLOBAL(SOLL_UEBERALL_LESBAR_SEIN)=23) exten => 1004,n,NoOp(${SOLL_UEBERALL_LESBAR_SEIN})
Set(Y=42)
definiert und verändert.exten => 1005,1,Set(SOLL_NUR_HIER_LESBAR_SEIN=42) exten => 1005,n,NoOp(${SOLL_NUR_HIER_LESBAR_SEIN})
${EXTEN}
:exten => 1006,1,NoOp(Gewaehlte Nummer: ${EXTEN})
Goto()
kann man innerhalb des Dialplans zu einem
mit „(Labelname
)
“
definierten Label springen:[24]exten => 1007,1,Answer() exten => 1007,n(Anfang),Wait(1) exten => 1007,n,Playback(hello-world) exten => 1007,n,Goto(Anfang)
exten => 1008,1,Answer() exten => 1008,n,Goto(1009,Ping) exten => 1009,1(Ping),Playback(hello-world) exten => 1009,n,Wait(2) exten => 1009,n,Goto(1010,Pong) exten => 1010,1(Pong),Playback(weasels-eaten-phonesys) exten => 1010,n,Wait(2) exten => 1010,n,Goto(1009,Ping)
[zentrale] exten => 1011,1,Answer() exten => 1011,n,Playback(hello-world) exten => 1011,n,Goto(verkauf,1012,1) [verkauf] exten => 1012,1,Playback(hello-world) exten => 1012,n,Hangup()
Goto()
“While()
lassen sich Schleifen im Dialplan
erzeugen:exten => 1013,1,Answer() exten => 1013,n,Set(i=1) exten => 1013,n,While($[${i} < 10]) exten => 1013,n,SayNumber(${i}) exten => 1013,n,Wait(1) exten => 1013,n,Set(i=$[${i} + 1]) exten => 1013,n,EndWhile() exten => 1013,n,Hangup()
GotoIf()
lassen sich Sprünge zu anderen Teilen im
Dialplan mit einer Bedingung verbinden:exten => 1014,1,Answer() exten => 1014,n,Set(Lieblingsnebenstelle = 0815) exten => 1014,n,NoOp(Ueberpruefe, ob Anruf von ${Lieblingsnebenstelle} kommt.) exten => 1014,n,GotoIf($[${CALLERID(num)} = ${Lieblingsnebenstelle}]?ja:nein) exten => 1014,n(ja),Playback(hello-world) exten => 1014,n,Hangup() exten => 1014,n(nein),Playback(tt-monkeys) exten => 1014,n,Hangup()
Gosub()
können Sie in ein Unterprogramm springen,
und mit Return()
kehren Sie aus diesem wieder
zurück:exten => 1015,1,Gosub(cid-setzen) exten => 1015,n,Dial(SIP/${EXTEN}) exten => 1015,n(cid-setzen),Set(CALLERID(all)=Apfelmus GmbH <012345678>) exten => 1015,n,Return()
[24] Man kann natürlich mit Goto()
auch zu einer
bestimmten Priorität springen. Aber dann ist der ganze Vorteil der
n-Priorität wieder weg.