${VARIABLENNAME}
ausgelesen werden. Es gibt Variablen, die
vom Asterisk-System automatisch gesetzt werden. So wird z. B. die
angerufene Nummer immer in der Variable EXTEN
abgespeichert. Durch Regular Expressions und den Einsatz von Variablen
kann man somit einen langen Dialplan häufig stark komprimieren.exten => 100,1,Dial(SIP/100) exten => 101,1,Dial(SIP/101) exten => 102,1,Dial(SIP/102) exten => 103,1,Dial(SIP/103) exten => 104,1,Dial(SIP/104) exten => 105,1,Dial(SIP/105) exten => 106,1,Dial(SIP/106) exten => 107,1,Dial(SIP/107) exten => 108,1,Dial(SIP/108) exten => 109,1,Dial(SIP/109)
exten => _10X,1,Dial(SIP/${EXTEN})
${EXTEN}
müssen immer in Großbuchstaben
geschrieben werden.exten => 1234,1,Set(OBST=Apfel) exten => 1234,2,Set(OBST="Apfel")
exten => 1234,1,Set(OBSTSORTEN="Apfel, Birne, usw.")
[ ] $ " \
extensions.conf
erfolgt
mit einem vorangestellten \
(Backslash).exten => 1234,1,Set(BETRAG="10,00 US \$")
extensions.conf
definierenextensions.conf
gesetzt werden. Dies muss im
besonderen Context [globals]
erfolgen (er folgt dem Context
[general]
).[general] [globals] KLINGELZEIT=90 [from-intern] exten => _XXX,1,Dial(SIP/${EXTEN},${KLINGELZEIT}) exten => _XXX,n,VoiceMail(${EXTEN})
Set()
wird benutzt, um eine Variable
in einer Extension zu setzen.[25]Set(Variablenname
=Wert
)
; Eine Channel-Variable setzen: exten => 10,1,Set(LIEBLINGSOBSTSORTE="Apfel") ; Eine globale Variable setzen: exten => 10,n,Set(GLOBAL(KLINGELZEIT)=90) ; Die Variablen auf dem CLI ausgeben exten => 10,n,NoOp(KLINGELZEIT = ${KLINGELZEIT}) exten => 10,n,NoOp(LIEBLINGSOBSTSORTE = ${LIEBLINGSOBSTSORTE}) exten => 10,n,NoOp(VAR1 = ${VAR1}) exten => 10,n,NoOp(VAR2 = ${VAR2})
_
(Unterstrich) voransetzen. Diese Channel-Variable
wird dann an den nächsten Channel vererbt. Dabei wird der Unterstrich
entfernt. Die Vererbung kann also nur einmal erfolgen.exten => 1234,1,Set(_KUCHENSORTE="Marmorkuchen")
__
(Unterstrich)-Zeichen vor die Variable
setzen. Die zwei Unterstrich-Zeichen werden dann immer
mitvererbt.KUCHENSORTE
eine normale (nicht
vererbbare) Channel-Variable:exten => 1234,1,Set(__KUCHENSORTE="Marmorkuchen") exten => 1234,n,Set(KUCHENSORTE="Marmorkuchen")
exten => 1234,1,Set(__KUCHENSORTE="Nusskuchen")
exten => 1234,1,Set(__KUCHENSORTE="Pflaumenkuchen") exten => 1234,n,NoOp(Kuchen: ${KUCHENSORTE})
extensions.conf
überschrieben, aber ausgelesen werden können.doc/README.variables
(Asterisk
1.2) und doc/channelvariables.txt
(Asterisk
1.4). In dieser Liste werden nur solche Variablen aufgelistet, die
nicht als deprecated eingestuft sind. So finden
Sie z. B. ein ${CALLERIDNUM}
nicht in dieser Liste,
weil dies deprecated ist. (Sie sollten stattdessen die Funktion
${CALLERID(num)}
benutzen.)${ANSWEREDTIME}
${BLINDTRANSFER}
${CHANNEL}
${CONTEXT}
${EPOCH}
${EXTEN}
${ENV(VARIABLENNAME)}
VARIABLENNAME
${HANGUPCAUSE}
${INVALID_EXTEN}
i
-Extension benutzt und enthält
die gewählte Extension.${PRIORITY}
${TRANSFER_CONTEXT}
${UNIQUEID}
${SYSTEMNAME}
/etc/asterisk/asterisk.conf
-Datei
eingetragene systemname
-Parameter.:
(Doppelpunkt) nach dem Variablennamen
eingesetzt. Vom Inhalt der Variablen, also dem String, wird dann eine
vorgegebene Anzahl von Zeichen (Länge) als Teilstring
abgetrennt.${VARIABLENNAME
[:Anfang
[:Laenge
]]}
0030 227 32320
gewählt, so kann man mit folgender Zeile
die eigentliche Rufnummer in die Variable
${RUFNUMMER}
abspeichern:[27] exten => _0X.,1,Set(RUFNUMMER=${EXTEN:1})
${DURCHWAHL}
abspeichern:exten => _0X.,1,Set(DURCHWAHL=${EXTEN:-5})
exten => _0X.,1,Set(VORWAHL=${EXTEN:1:3})Diese Zeile geht davon aus, dass die Vorwahl 3-stellig ist, und speichert sie in der Variable
${VORWAHL}
.[28]00012024562121
nach Amerika die einzelnen Bestandteile
herausfiltern:[29]exten => _0001X.,1,Set(INTERNATIONALEVORWAHL=${EXTEN:3:1}) exten => _0001X.,n,Set(ORTSVORWAHL=${EXTEN:4:3}) exten => _0001X.,n,Set(RUFNUMMER=${EXTEN:7}) exten => _0001X.,n,Set(DURCHWAHL=${EXTEN:-4}
[25] siehe auch Abschnitt C.149, „Set()
“
[26] Ein klassisches Henne-Ei-Problem
[27] Für alle neugierigen Leser: Das ist die Telefonnummer des Parlamentsarchivs des Deutschen Bundestages in Berlin.
[28] Leider macht diese Variante in Deutschland wenig Sinn, da es unterschiedlich lange Vorwahlen gibt. Mehr Informationen zur deutschen Vorwahl finden Sie unter http://de.wikipedia.org/wiki/Telefonvorwahl_%28Deutschland%29.
[29] Um Ihnen das Gespräch nach Amerika zu sparen: Dies ist die Nummer der Besucherzentrale des Weißen Hauses in Washington DC. ;-)