/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.