Funkce pro práci s řetězci
Délka řetězce
${LEN(foo)}
vrací délku řetězce foo. Například,
exten => 100,1,Set(Fruit=pear)
exten => 100,2,NoOp(${LEN(Fruit)})
exten => 100,3,NoOp(${LEN(${Fruit})})
první příkaz NoOp by měl zobrazit hodnotu 5 (délka řetězce "pear"). Druhý příkaz NoOp by měl zobrazit hodnotu 4 (délka řetězce "pear").
Tato metoda umožňuje skvělou kontrolu prázdných řetězců a proměnných obsahujících NULL.
Podřetězce
${foo:offset:length}
vrací podřetězec řetězce foo, počínaje posunem offset a omezující vrácený řetězec na délku length znaků.
- Pokud je hodnota offset záporná, posun se počítá od konce řetězce, nikoliv od začátku.
- Pokud je hodnota length vynechána nebo záporná, délka vráceného řetězce není omezena a bude vrácen celý řetězec počínaje posunem offset.
Příklady:
${123456789:1} - vrací řetězec 23456789
${123456789:-4} - vrací řetězec 6789
${123456789:0:3} - vrací řetězec 123
${123456789:2:3} - vrací řetězec 345
${123456789:-4:3} - vrací řetězec 678
Příklad použití:
exten => _NXX.,1,Set(areacode=${EXTEN:0:3}) - získá první 3 číslice z proměnné ${EXTEN}
exten => _516XXXXXXX,1,Dial(${EXTEN:3}) - získá hodnotu proměnné ${EXTEN} po 3. číslici
exten => 100,1,Set(whichVowel=4)
exten => 100,2,Set(foo=AEIOU:${whichVowel}:1) - proměnná ${foo} bude mít hodnotu 'U'
Spojování řetězců
Pro spojení dvou řetězců stačí napsat direktivu následujícím způsobem:
${foo}${bar}
555${theNumber}
${longDistancePrefix}555${theNumber}
Matematické operace s proměnnými
Pro matematické operace s proměnnými, například inkrementaci, násobení, sčítání. Stačí napsat:
exten => s,1,Set(SOMEVAR=$[${SOMEVAR} + 1]) ; inkrementace
exten => s,2,Set(SOMEVAR=$[2 * ${SOMEVAR}]) ; násobení atd.
V výrazech musíte používat mezery, jak je ukázáno výše.
Od verze Asterisk 1.2 je také k dispozici funkce MATH...
exten => s,1,Set(SOMEVAR=${MATH(${SOMEVAR}+1)}) ; inkrementace
exten => s,2,Set(SOMEVAR=${MATH(2*${SOMEVAR})}) ; násobení atd.
Poznámky k různým verzím
- Proměnná CALLINGPRES byla přidána do CVS HEAD 2004-09-10, zahrnuta ve vydání Asterisk 1.2
- Proměnná TOUCH_MONITOR byla přidána do CVS HEAD 2005-01-05, zahrnuta ve vydání Asterisk 1.2
