Функції для роботи з рядками
Розмір рядка
${LEN(foo)}
повертає розмір рядка foo. Наприклад,
exten => 100,1,Set(Fruit=pear)
exten => 100,2,NoOp(${LEN(Fruit)})
exten => 100,3,NoOp(${LEN(${Fruit})})
перша команда NoOp повинна показати значення 5 (розмір рядка "fruit"). Друга команда NoOp повинна показати значення 4 (розмір рядка "pear").
Цей метод дозволяє виконувати чудову перевірку на порожні рядки та на змінні, що містять NULL.
Підрядки
${foo:offset:length}
повертає підрядок рядка foo, починаючи зі зміщення offset та обмежуючи повернений рядок розміром у length символів.
- Якщо значення offset від'ємне, то зміщення буде відраховуватися не від початку рядка, а від його кінця.
- Якщо значення length пропущено або від'ємне, то розмір поверненого рядка не обмежується і буде повернено весь рядок, починаючи зі зміщення offset.
Приклади:
${123456789:1} - повертає рядок 23456789
${123456789:-4} - повертає рядок 6789
${123456789:0:3} - повертає рядок 123
${123456789:2:3} - повертає рядок 345
${123456789:-4:3} - повертає рядок 678
Приклад використання:
exten => _NXX.,1,Set(areacode=${EXTEN:0:3}) - отримуємо перші 3 цифри зі змінної ${EXTEN}
exten => _516XXXXXXX,1,Dial(${EXTEN:3}) - отримуємо значення змінної ${EXTEN} після 3 цифри
exten => 100,1,Set(whichVowel=4)
exten => 100,2,Set(foo=AEIOU:${whichVowel}:1) - змінна ${foo} буде мати значення 'U'
З'єднання рядків
Для з'єднання двох рядків, просто напишіть директиву, як показано нижче:
${foo}${bar}
555${theNumber}
${longDistancePrefix}555${theNumber}
Математичні операції зі змінними
Для математичних дій зі змінними, наприклад, інкремент, множення, додавання. Просто напишіть:
exten => s,1,Set(SOMEVAR=$[${SOMEVAR} + 1]) ; інкремент
exten => s,2,Set(SOMEVAR=$[2 * ${SOMEVAR}]) ; множення і т.д.
Ви повинні використовувати пробіли у виразах, як показано вище.
Починаючи з релізу Asterisks 1.2, так само доступна функція MATH...
exten => s,1,Set(SOMEVAR=${MATH(${SOMEVAR}+1)}) ; інкремент
exten => s,2,Set(SOMEVAR=${MATH(2*${SOMEVAR})}) ; множення і т.д.
Зауваження щодо різних версій
- Змінна CALLINGPRES додана в CVS HEAD 2004-09-10, включена в реліз Asterisk 1.2
- Змінна TOUCH_MONITOR додана в CVS HEAD 2005-01-05, включена в реліз Asterisk 1.2
