Crmgo Blog

Asterisk, praca na operacjach na ciągach znaków i operacjach matematycznych

Asterisk, praca na operacjach na ciągach znaków i operacjach matematycznych

Funkcje do pracy z ciągami znaków Rozmiar ciągu ${LEN(foo)} zwraca rozmiar 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 (rozmiar ciągu "pear"). Drugie polecenie NoOp powinno wyświetlić wartość 4…

Asterisk, praca na operacjach na ciągach znaków i operacjach matematycznych

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

Uwaga: wpis mógł powstać z pomocą AI i redakcji. Odpowiedzialny: Dmytro Lomaka, Kaltenkirchen.