Пожалуйста, войдите здесь. Часто задаваемые вопросы О нас
Задайте Ваш вопрос

Asterisk 11.7.0 REGEX CALLERID

1
exten => _X!,1,NoOp("${CALLERID(num)}")
exten => _X!,n,ExecIf($[${REGEX("2400([67][0-9]|5[2-9]|8[01])", "${CALLERID(num)}")}]?NoOp(NORMA):Set(CALLERID(num)=240999))
exten => _X!,n,Goto(from-trunk,${EXTEN},1)

Есть такой контекст для транка. Он проверяет чтобы шаловливый админ второго астера отдавал "праведный" CALLERID, если приходит CALLERID не разрешённый для этого трафнка, подставляется пилотный номер. Всё работает, но если добавить в регулярку символы начала ^ и конца строки $ условие, для исключения 000240060 и т.д. всегда возвращает 0 (False).

Первой строчкой проверяю что прилетает в CALLERID там 6 цифр, номер без пробелов и переносов... Что за магия?

удалить закрыть спам изменить тег редактировать

спросил 2016-07-14 08:21:24 +0400

pritorius Gravatar pritorius flag of Russian Federation
29 1 5

обновил 2016-07-14 12:48:57 +0400

Comments

Не могу ответить вам напрямую, не знаю по чему. Но сразу проясню ситуацию почему пришлось использовать именно регулярки вместо X./2400[67]... и т.д. Видимо как раз по той же причине что и не работают символы начала строки ^ в регулярках, не срабатывают эти конструкции :( Как будто в CALLERID скрытый символ в началале... незнаю как объяснить может баг версии...

pritorius ( 2016-07-14 11:56:40 +0400 )редактировать

может вам просто надо было не ставить ! и все ок было бы.

meral ( 2016-07-17 13:18:27 +0400 )редактировать

1 Ответ

2

Уберите кавычки в REGEX от ${CALLERID(num)}. Должно выглядеть так:

ExecIf($[${REGEX("^2400([67][0-9]|5[2-9]|8[01])$" ${CALLERID(num)})}]?

Либо используйте такую конструкцию:

ExecIf($[${REGEX("^\"2400([67][0-9]|5[2-9]|8[01])\"$" "${CALLERID(num)}")}]?

https://wiki.asterisk.org/wiki/display/AST/Function_REGEX

ссылка удалить спам редактировать

ответил 2016-07-14 13:22:40 +0400

StuxForce Gravatar StuxForce
381 1 2 8

Comments

1

Магия двойных кавычек, помогла. Спасибо, использовал второй вариант.

pritorius ( 2016-07-14 13:53:08 +0400 )редактировать

Ваш ответ

Please start posting your answer anonymously - your answer will be saved within the current session and published after you log in or create a new account. Please try to give a substantial answer, for discussions, please use comments and please do remember to vote (after you log in)!
[скрыть предварительный просмотр]

Закладки и информация

Добавить закладку

подписаться на rss ленту новостей

Статистика

Задан: 2016-07-14 08:21:24 +0400

Просмотрен: 1,280 раз

Обновлен: Jul 14 '16

Проект компании "АТС Дизайн"
Asterisk® и Digium® являются зарегистрированными торговыми марками компании Digium, Inc., США.
IP АТС Asterisk распространяется под лицензией GNU GPL.