VIDEOCHAT  ::   FAQ  ::   Поиск  ::   Регистрация  ::   Вход

Проверк переменной

Проблемы Asterisk без вэб-оболочек и их решения

Модераторы: april22, Zavr2008

Ответить
Terminus
Сообщения: 2
Зарегистрирован: 27 ноя 2012, 17:43

Проверк переменной

Сообщение Terminus »

Есть переменная num в ней содержится номер который набирает пользователь, вопрос в том как проверить сколько цифр содержится в этой переменной. Пробую делать так:

Код: Выделить всё

exten => _X.,n,Set(xx=${LEN(${num})})
exten => _X.,n,GotoIf($[${xx}=4]?ok:err) 
...
exten => _X.,n(ok),Wait(1) 
...
exten => _X.,n(err),Wait(1) 
Но сколько бы знаков не содержала переменная всегда осуществляется переход на "err", даже если их 4 и по условию должен быть переход на "ок". Вопрос к знатокам где я мог ошибиться?
ded
Сообщения: 15626
Зарегистрирован: 26 авг 2010, 19:00

Re: Проверк переменной

Сообщение ded »

1) вставляйте проверки
exten => _X.,1бпредполагаем, что тут что-то есть выше!
exten => _X.,n,Set(xx=${LEN(${num})})
exten => _X.,n, NoOp(${xx})
2) exten => _X.,n,GotoIf($[${xx}=4]?ok:err) - а тут кавычки помоут на логических операциях.
Samael28
Сообщения: 1057
Зарегистрирован: 08 янв 2011, 18:32
Откуда: Киев
Контактная информация:

Re: Проверк переменной

Сообщение Samael28 »

Попробую чуть модифицировать код...

Код: Выделить всё

...
exten => _X.,n,Set(xx=${LEN(${EXTEN})})
exten => _X.,n,GotoIf($["${xx}"="4"]?ok:err)
...
exten => _X.,n(ok),Wait(1)
...
exten => _X.,n(err),Wait(1)
Ну и вывод консоли в студию :)
Мой профайл на Upwork
igorostkir
Сообщения: 68
Зарегистрирован: 21 фев 2012, 09:54

Re: Проверк переменной

Сообщение igorostkir »

"${xx}" - хз, но я тоже использую в сравнении кавычки всегда . всегда есть паронойный подсознательный страх, что вернуться может не целое число а что-то типа "вот вам error" :D
Terminus
Сообщения: 2
Зарегистрирован: 27 ноя 2012, 17:43

Re: Проверк переменной

Сообщение Terminus »

Все оказалось гораздо прозаичнее, он попадал на ок, но после этого переходил на err, так как правила идут друг за другом, проблема решилась выставлением команды exten => _X.,n,Goto(cont,_X,9), где 9 номер правила идущего уже после err.
Ответить
© 2008 — 2025 Asterisk.ru
Digium, Asterisk and AsteriskNOW are registered trademarks of Digium, Inc.
Design and development by PostMet-Netzwerk GmbH