Страница 1 из 2

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

Добавлено: 17 окт 2017, 15:41
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

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

Добавлено: 17 окт 2017, 16:00
ded
Есть во FreePBX для этого готовый модуль - Set CallerID

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

Добавлено: 17 окт 2017, 16:37
chardisdze
Этот модуль не даст сделать задуманное: изменять из 12тизначные CID и 10тизначные одновременно в одном направлении.
Или я ошибаюсь?

Просто думал использовать какое-либо условие, например, определять длину (количество знаков) CID и затем Set.... Но загвоздка в том, что никак не найду как реализовать это в диалплане...

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

Добавлено: 17 окт 2017, 17:10
ded
Что-то типа

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

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

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

Добавлено: 17 окт 2017, 17:27
chardisdze
Огромное спасибо за совет! Буду пробовать!

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

Добавлено: 18 окт 2017, 11:28
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 Но это же не логично...

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

Добавлено: 18 окт 2017, 12:03
ded
chardisdze писал(а):Я так понимаю Set требует действительного значения.
Нет.
Скобка лишняя. А уж какая - потрудитесь найти, копипаста не проходит.

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

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

Правильно? :D

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

Добавлено: 18 окт 2017, 12:24
chardisdze
Сделал так как описал выше - тот же вывод... :?

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

Добавлено: 18 окт 2017, 12:42
chardisdze
Прошу прощения, написал неверно!!! Изначально неверно!!!
Буду искать скобочку =)