Магия двойных кавычек, помогла. Спасибо, использовал второй вариант.
pritorius ( 2016-07-14 13:53:08 +0400 )редактировать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 цифр, номер без пробелов и переносов... Что за магия?
Уберите кавычки в 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)}")}]?
Магия двойных кавычек, помогла. Спасибо, использовал второй вариант.
pritorius ( 2016-07-14 13:53:08 +0400 )редактироватьЗадан: 2016-07-14 08:21:24 +0400
Просмотрен: 1,280 раз
Обновлен: Jul 14 '16
Проект компании "АТС Дизайн"
Asterisk® и Digium® являются зарегистрированными торговыми марками компании
Digium, Inc., США.
IP АТС Asterisk распространяется под лицензией
GNU GPL.
Не могу ответить вам напрямую, не знаю по чему. Но сразу проясню ситуацию почему пришлось использовать именно регулярки вместо X./2400[67]... и т.д. Видимо как раз по той же причине что и не работают символы начала строки ^ в регулярках, не срабатывают эти конструкции :( Как будто в CALLERID скрытый символ в началале... незнаю как объяснить может баг версии...
pritorius ( 2016-07-14 11:56:40 +0400 )редактироватьможет вам просто надо было не ставить ! и все ок было бы.
meral ( 2016-07-17 13:18:27 +0400 )редактировать