ВидеоКонф(ВКС)  ::   FAQ  ::   Поиск  ::   Регистрация  ::   Вход

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

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

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

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

Сообщение chardisdze » 17 окт 2017, 16:41

Приветствую всех!
Заранее извиняюсь если тема-дубль, но все же...
Всем известно что разные операторы передают 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
chardisdze
 
Сообщений: 85
Зарегистрирован: 17 июн 2016, 17:18

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

Сообщение ded » 17 окт 2017, 17:00

Есть во FreePBX для этого готовый модуль - Set CallerID
ded
 
Сообщений: 15803
Зарегистрирован: 26 авг 2010, 19:00

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

Сообщение chardisdze » 17 окт 2017, 17:37

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

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

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

Сообщение ded » 17 окт 2017, 18:10

Что-то типа
Код: выделить все
ExecIF($[LEN(${CALLERID(num)})=10]?Set(CALLERID(number)=7${CALLERID(number)}))
ExecIF($[LEN(${CALLERID(num)})=12]?Set(CALLERID(number)=810${CALLERID(number):2}))
ded
 
Сообщений: 15803
Зарегистрирован: 26 авг 2010, 19:00

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

Сообщение chardisdze » 17 окт 2017, 18:27

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

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

Сообщение chardisdze » 18 окт 2017, 12:28

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 Но это же не логично...
chardisdze
 
Сообщений: 85
Зарегистрирован: 17 июн 2016, 17:18

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

Сообщение ded » 18 окт 2017, 13:03

chardisdze писал(а):Я так понимаю Set требует действительного значения.
Нет.
Скобка лишняя. А уж какая - потрудитесь найти, копипаста не проходит.
ded
 
Сообщений: 15803
Зарегистрирован: 26 авг 2010, 19:00

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

Сообщение chardisdze » 18 окт 2017, 13:13

скобку в конце строки то я нашел.
По-моему одной не хватает скобки:
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, 17:18

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

Сообщение chardisdze » 18 окт 2017, 13:24

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

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

Сообщение chardisdze » 18 окт 2017, 13:42

Прошу прощения, написал неверно!!! Изначально неверно!!!
Буду искать скобочку =)
chardisdze
 
Сообщений: 85
Зарегистрирован: 17 июн 2016, 17:18

След.

Вернуться в Вопросы новичков

Кто сейчас на форуме

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 30

© 2008 — 2024 Asterisk.ru
Digium, Asterisk and AsteriskNOW are registered trademarks of Digium, Inc.
Design and development by PostMet-Netzwerk GmbH