Asterisk może wykorzystywać zmienne globalne i kanałowe w argumentach poleceń. Odwołanie do zmiennej w planie dialplanu (extensions.conf) można wykonać, używając następującej składni:
${foo}
gdzie foo to nazwa zmiennej. Nazwa zmiennej może składać się z dowolnej sekwencji cyfr i liter; musi zaczynać się od litery. Nazwy zmiennych zdefiniowanych przez użytkownika nie są wrażliwe na wielkość liter: ${FOO} i ${Foo} odwołują się do tej samej zmiennej; ale zmienne Asteriska są wrażliwe na wielkość liter: ${EXTEN} działa, a ${exten} – nie.
Istnieją 3 typy zmiennych: globalne, kanałowe i zmienne środowiskowe.
Zmienne globalne są ustawiane albo w sekcji [global] pliku extensions.conf, albo za pomocą polecenia Set(GLOBAL(var)=value). Ustawiona zmienna jest dostępna dla wszystkich kanałów w dowolnym momencie.
Zmienne kanałowe są ustawiane poleceniem Set. Każdy kanał otrzymuje swoją własną przestrzeń zmiennych, dlatego nie dochodzi do konfliktów między kanałami, a zmienna jest automatycznie usuwana po zakończeniu działania kanału.
Zmienne środowiskowe pozwalają na dostęp z Asteriska do zmiennych środowiskowych systemu UNIX. Lista znajduje się poniżej na tej stronie.
Jeśli zdefiniujesz zmienną kanałową o tej samej nazwie co zmienna globalna (pamiętaj: nazwy zmiennych użytkownika nie są wrażliwe na wielkość liter), odwołania do tej zmiennej zwrócą wartość zmiennej kanałowej. Na przykład, zdefiniowałeś kontekst [FooTest] z jednym numerem 100:
[FooTest]
exten => 100,1,Set(GLOBAL(FOO)=5)
exten => 100,2,NoOp(${FOO})
exten => 100,3,NoOp(${foo})
exten => 100,4,Set(foo=8)
exten => 100,5,NoOp(${FOO})
exten => 100,6,NoOp(${foo})
Podczas połączenia na numer 100 w kontekście [FooTest], na konsoli z szczegółowym wyjściem (verbose) zostanie wyświetlone mniej więcej następująco:
[2008-10-28 08:35:00]     -- Executing [100@comlib-operator:1] Set("SIP/700-b6c28b40", "GLOBAL(FOO)=5") in new stack
[2008-10-28 08:35:00]   == Setting global variable 'FOO' to '5'
[2008-10-28 08:35:00]     -- Executing [100@comlib-operator:2] NoOp("SIP/700-b6c28b40", "5") in new stack
[2008-10-28 08:35:00]     -- Executing [100@comlib-operator:3] NoOp("SIP/700-b6c28b40", "5") in new stack
[2008-10-28 08:35:00]     -- Executing [100@comlib-operator:4] Set("SIP/700-b6c28b40", "foo=8") in new stack
[2008-10-28 08:35:00]     -- Executing [100@comlib-operator:5] NoOp("SIP/700-b6c28b40", "8") in new stack
[2008-10-28 08:35:00]     -- Executing [100@comlib-operator:6] NoOp("SIP/700-b6c28b40", "8") in new stack
Stwierdziliśmy, że po wywołaniu Set(GLOBAL(FOO=5)), ${FOO} i ${foo} zwracają wartość zmiennej globalnej, wydając wartość 5. Po wywołaniu Set(foo=5), globalna zmienna FOO jest ukryta przez zmienną kanałową foo; ${FOO} i ${foo} obie wydają wartość 8. Wartość globalnej zmiennej pozostaje niezmieniona, czyli 5, a inne kanały odwołujące się do ${foo} otrzymają wartość 5.
Wstępnie zdefiniowane zmienne kanałowe
Asterisk definiuje kilka zmiennych kanałowych, do których można odwołać się w planie dialplanu. Nazwy zmiennych zdefiniowanych przez Asteriska są wrażliwe na wielkość liter.
${CONTEXT}: Nazwa bieżącego kontekstu
${DATETIME}: Bieżąca data i czas w formacie: !YYYY-MM-DD_HH:MM:SS
${TIMESTAMP}: Bieżąca data i czas w formacie: YYYYMMDD-HHMMSS
${EPOCH}: Bieżący czas epoki UNIX (liczba sekund od 1 stycznia 1970)
${EXTEN}: Bieżący numer telefonu (rozszerzenie)
${INVALID_EXTEN}: Wybrany numer telefonu przy przekierowaniu na rozszerzenie i (invalid)
${LANGUAGE}: Bieżąca wartość języka. Zobacz obsługę języków narodowych w Asterisku
${PRIORITY}: Bieżący priorytet
${CALLINGPRES}: Zmienna prezentacji identyfikatora połączenia PRI dla połączeń przychodzących (Zobacz callingpres)
${CALLERID}: Identyfikator dzwoniącego (imię i numer)
${CALLERIDNAME}: Identyfikator dzwoniącego: imię
${CALLERIDNUM}: Identyfikator dzwoniącego: numer
${CHANNEL}: Nazwa bieżącego kanału
${RDNIS}: Bieżący przekierowany DNIS, identyfikator dzwoniącego, który przekierował połączenie. Zobacz RDNIS
${SIPDOMAIN}: Domena docelowa SIP dla połączenia przychodzącego (jeśli stosowne)
${SIP_CODEC}: Używane do ustawienia kodeka SIP dla połączenia
${SIPCALLID}: Nagłówek Call-ID: dialogu SIP
${SIPUSERAGENT}: Nagłówek user agent SIP
${UNIQUEID}: Bieżący unikalny identyfikator połączenia SIP
${HANGUPCAUSE}: Ostatni kod powrotu rozłączenia na kanale Zap podłączonym do interfejsu PRI
${DNID}: Zidentyfikowany numer wybierany
${ACCOUNTCODE}: Kod konta, jeśli określony – zobacz rozliczenia w Asterisku