Funkcje pracy z ciągami znaków
Długość ciągu
${LEN(foo)}
zwraca długość ciągu foo. Na przykład,
exten => 100,1,Set(Fruit=pear)
exten => 100,2,NoOp(${LEN(Fruit)})
exten => 100,3,NoOp(${LEN(${Fruit})})
Pierwsze polecenie NoOp powinno wyświetlić wartość 5 (długość ciągu "pear"). Drugie polecenie NoOp powinno wyświetlić wartość 4 (długość ciągu "pear").
Ta metoda pozwala na doskonałe sprawdzanie pustych ciągów oraz zmiennych zawierających NULL.
Podciągi
${foo:offset:length}
zwraca podciąg ciągu foo, zaczynając od przesunięcia offset i ograniczając zwracany ciąg do length znaków.
- Jeśli wartość offset jest ujemna, przesunięcie liczone jest od końca ciągu, a nie od początku.
- Jeśli wartość length zostanie pominięta lub jest ujemna, zwracany ciąg nie jest ograniczony pod względem długości i zwracany jest cały ciąg zaczynając od przesunięcia offset.
Przykłady:
${123456789:1} - zwraca ciąg 23456789
${123456789:-4} - zwraca ciąg 6789
${123456789:0:3} - zwraca ciąg 123
${123456789:2:3} - zwraca ciąg 345
${123456789:-4:3} - zwraca ciąg 678
Przykład użycia:
exten => _NXX.,1,Set(areacode=${EXTEN:0:3}) - pobiera pierwsze 3 cyfry ze zmiennej ${EXTEN}
exten => _516XXXXXXX,1,Dial(${EXTEN:3}) - pobiera wartość zmiennej ${EXTEN} po 3 cyfrze
exten => 100,1,Set(whichVowel=4)
exten => 100,2,Set(foo=AEIOU:${whichVowel}:1) - zmienna ${foo} będzie miała wartość 'U'
Łączenie ciągów
Aby połączyć dwa ciągi, po prostu wpisz dyrektywę w następujący sposób:
${foo}${bar}
555${theNumber}
${longDistancePrefix}555${theNumber}
Działania matematyczne na zmiennych
Aby wykonać działania matematyczne na zmiennych, np. inkrementację, mnożenie, dodawanie. Po prostu wpisz:
exten => s,1,Set(SOMEVAR=$[${SOMEVAR} + 1]) ; inkrementacja
exten => s,2,Set(SOMEVAR=$[2 * ${SOMEVAR}]) ; mnożenie itd.
W wyrażeniach należy używać spacji, jak pokazano powyżej.
Począwszy od wersji Asterisk 1.2, dostępna jest również funkcja MATH...
exten => s,1,Set(SOMEVAR=${MATH(${SOMEVAR}+1)}) ; inkrementacja
exten => s,2,Set(SOMEVAR=${MATH(2*${SOMEVAR})}) ; mnożenie itd.
Uwagi dotyczące różnych wersji
- Zmienna CALLINGPRES dodana do CVS HEAD 2004-09-10, włączona do wydania Asterisk 1.2
- Zmienna TOUCH_MONITOR dodana do CVS HEAD 2005-01-05, włączona do wydania Asterisk 1.2
