Crmgo Блог

Asterisk, робота з рядковими та математичними операціями

Asterisk, робота з рядковими та математичними операціями

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

Asterisk, робота з рядковими та математичними операціями

Функції для роботи з рядками

Розмір рядка

${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

Примітка: матеріал міг бути створений за підтримки ШІ з подальшою людською редакцією. Відповідальний за зміст: Dmytro Lomaka, Kaltenkirchen.