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

Изменение CID при входящем звонке

Новичком считается только что прочитавший «Астериск - будущее телефонии»
http://asterisk.ru/knowledgebase/books
и пытающийся сделать большее

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

chardisdze
Сообщения: 85
Зарегистрирован: 17 июн 2016, 16:18

Изменение CID при входящем звонке

Сообщение chardisdze »

Приветствую всех!
Заранее извиняюсь если тема-дубль, но все же...
Всем известно что разные операторы передают CID по разному.
Чтобы упорядочить это дело и привести к единому шаблону (например для crm-систем) сделано вот так:

[from-trunk-blablabla]
include => from-trunk-blablabla-custom
exten => _.,1,Set(GROUP()=OUT_2)
exten => _.,n,Set(CALLERID(all)=8${CALLERID(num):-10:10})
exten => _.,n,Set(CALLERID(ANI-all)=${CALLERID(num)})
exten => _.,n,Goto(from-trunk,${EXTEN},1)
; end of [from-trunk-blablabla]

теперь все звонки приходят в формате 8ХХХХХХХХХХ (8-10Х), но...

Есть международные звонки приходящие в формате ХХХХХХХХХХХХ (12Х) или 7ХХХХХХХХХХХХ (7-12Х).
Хочу их так же привести к единому шаблону 8-10-ХХХХХХХХХХХХ (8-10-12Х).
Подскажите пожалуйста в каком направлении копнуть.
Прошу Вас тапками не закидывать.
Спасибо!

P.S. * c FreePBX
ded
Сообщения: 15629
Зарегистрирован: 26 авг 2010, 19:00

Re: Изменение CID при входящем звонке

Сообщение ded »

Есть во FreePBX для этого готовый модуль - Set CallerID
chardisdze
Сообщения: 85
Зарегистрирован: 17 июн 2016, 16:18

Re: Изменение CID при входящем звонке

Сообщение chardisdze »

Этот модуль не даст сделать задуманное: изменять из 12тизначные CID и 10тизначные одновременно в одном направлении.
Или я ошибаюсь?

Просто думал использовать какое-либо условие, например, определять длину (количество знаков) CID и затем Set.... Но загвоздка в том, что никак не найду как реализовать это в диалплане...
ded
Сообщения: 15629
Зарегистрирован: 26 авг 2010, 19:00

Re: Изменение CID при входящем звонке

Сообщение ded »

Что-то типа

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

ExecIF($[LEN(${CALLERID(num)})=10]?Set(CALLERID(number)=7${CALLERID(number)}))
ExecIF($[LEN(${CALLERID(num)})=12]?Set(CALLERID(number)=810${CALLERID(number):2}))
chardisdze
Сообщения: 85
Зарегистрирован: 17 июн 2016, 16:18

Re: Изменение CID при входящем звонке

Сообщение chardisdze »

Огромное спасибо за совет! Буду пробовать!
chardisdze
Сообщения: 85
Зарегистрирован: 17 июн 2016, 16:18

Re: Изменение CID при входящем звонке

Сообщение chardisdze »

ded писал(а):Что-то типа

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

ExecIF($[LEN(${CALLERID(num)})=10]?Set(CALLERID(number)=7${CALLERID(number)}))
ExecIF($[LEN(${CALLERID(num)})=12]?Set(CALLERID(number)=810${CALLERID(number):2}))

Добрый день!
Можно еще совет?
Логика с определением длины работает, но после отработавшей строки вываливается такое:
pbx.c: Set requires an '=' to be a valid assignment.
и номер не изменяется.
Подскажите куда копнуть!!! Я так понимаю Set требует действительного значения. Как это? Конкретные буковки и циферки? :D Но это же не логично...
ded
Сообщения: 15629
Зарегистрирован: 26 авг 2010, 19:00

Re: Изменение CID при входящем звонке

Сообщение ded »

chardisdze писал(а):Я так понимаю Set требует действительного значения.
Нет.
Скобка лишняя. А уж какая - потрудитесь найти, копипаста не проходит.
chardisdze
Сообщения: 85
Зарегистрирован: 17 июн 2016, 16:18

Re: Изменение CID при входящем звонке

Сообщение chardisdze »

скобку в конце строки то я нашел.
По-моему одной не хватает скобки:
ExecIF($[LEN(${CALLERID(num)})=10]?Set(CALLERID(number)=7${CALLERID(number)}))
думаю надо так:
ExecIf($[LEN(${CALLERID(num)})=10])?Set(CALLERID(number)=7${CALLERID(number)})

Правильно? :D
chardisdze
Сообщения: 85
Зарегистрирован: 17 июн 2016, 16:18

Re: Изменение CID при входящем звонке

Сообщение chardisdze »

Сделал так как описал выше - тот же вывод... :?
chardisdze
Сообщения: 85
Зарегистрирован: 17 июн 2016, 16:18

Re: Изменение CID при входящем звонке

Сообщение chardisdze »

Прошу прощения, написал неверно!!! Изначально неверно!!!
Буду искать скобочку =)
Ответить
© 2008 — 2025 Asterisk.ru
Digium, Asterisk and AsteriskNOW are registered trademarks of Digium, Inc.
Design and development by PostMet-Netzwerk GmbH