Функции для работы со строками
Размер строки
${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
