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

манипуляции с CID с помощью REGEX

0

В какой момент обновляется переменная? Я пытаюсь приводить CID к "общему" виду, так чтобы можно было перезванивать назад без дополнительных телодвижений.

[cid-reread]
exten => cid-reread,1,Noop(=== Caller ID manipulation, CID=${CALLERID(num)} ===)
            same => n,Set(CALLERID(num)=${IF([REGEX("\<7812[0-9]\{7\}\>" , ${CALLERID(num)} ) = 1 ]?${CALLERID(num):4}:${CALLERID(num)})})
            same => n,NoOp(=== New CID is ${CALLERID(num)} ===)
            same => n,Set(CALLERID(num)=${IF([REGEX("^812[0-9]\{7\}$" , ${CALLERID(num)} ) = 1 ]?${CALLERID(num):3}:${CALLERID(num)})})
            same => n,NoOp(=== New CID is ${CALLERID(num)} ===)
            same => n,Set(CALLERID(num)=${IF([REGEX("^[0-9]\{10\}$" , ${CALLERID(num)} ) = 1 ]?+7${CALLERID(num)}:${CALLERID(num)})})
            same => n,NoOp(=== New CID is ${CALLERID(num)} ===)
            same => n,GoTo(incoming,incoming,1)

в логе астериска странные вещи происходят

  -- Executing [@:1] Goto("SIP/", "incoming,cid-reread,1") in new stack
    -- Goto (incoming,cid-reread,1)
    -- Executing [cid-reread@incoming:1] NoOp("SIP/", "=== Caller ID manipulation, CID=8121234567 ===") in new stack
    -- Executing [cid-reread@incoming:2] Set("SIP/", "CALLERID(num)=234567") in new stack
    -- Executing [cid-reread@incoming:3] NoOp("SIP/", "=== New CID is 234567 ===") in new stack
    -- Executing [cid-reread@incoming:4] Set("SIP/", "CALLERID(num)=567") in new stack
    -- Executing [cid-reread@incoming:5] NoOp("SIP/", "=== New CID is 567 ===") in new stack
    -- Executing [cid-reread@incoming:6] Set("SIP/", "CALLERID(num)=+7567") in new stack
    -- Executing [cid-reread@incoming:7] NoOp("SIP/", "=== New CID is +7567 ===") in new stack
    -- Executing [cid-reread@incoming:8] Goto("SIP/", "incoming,incoming,1") in new stack
    -- Goto (incoming,incoming,1)
    -- Executing [incoming@incoming:1] NoOp("SIP/", "=== Incoming call from +7567 ===") in new stack

как получается что CALLERID(num) каждый раз перезаписывается, но подходит под все регэкспы?

при этом

root@Bakemono:~# cat test
1234567
8121234567
4951234567
78128128121
7495495495
9211234567
89219219212
79219219212

root@Bakemono:~# grep '^812[0-9]\{7\}$' test
8121234567
root@Bakemono:~# grep '^7812[0-9]\{7\}$' test
78128128121
root@Bakemono:~# grep '^[0-9]\{10\}$' test
8121234567
4951234567
7495495495
9211234567
удалить закрыть спам изменить тег редактировать

спросил 2014-05-27 16:25:17 +0400

The_KOPACb Gravatar The_KOPACb
11 3

обновил 2014-05-27 17:41:23 +0400

1 Ответ

1

REGEX функция , её нужно вызывать .

same => n,Set(CALLERID(num)=${IF($[${REGEX("\<7812[0-9]\{7\}\>" , ${CALLERID(num)} )} = 1]?${CALLERID(num):4}:${CALLERID(num)})})
ссылка удалить спам редактировать

ответил 2014-05-27 18:03:26 +0400

zzuz Gravatar zzuz flag of Russian Federation
6744 2 6 69
http://line24.ru/

Comments

о да, спасибо, совсем запутался с этими скобками ._. там еще пробел лишний same => n,Set(CALLERID(num)=${IF($[${REGEX("\<7812[0-9]{7}\>" , ${CALLERID(num)})} = 1]?${CALLERID(num):4}:${CALLERID(num)})})

The_KOPACb ( 2014-05-27 20:57:28 +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 ленту новостей

Статистика

Задан: 2014-05-27 16:25:17 +0400

Просмотрен: 185 раз

Обновлен: May 27 '14

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