SCROLL
Среднее время на прочтение: 1 мин.

Как изменить CallerID при входящем звонке FreePBX 14 в связке с Asterisk 16

В работе имеется связка Asterisk 16.3.0 + FreePBX 14.0.11 и два SIP-провайдера. Задался вопросом как модифицировать/изменить номер телефона (CallerID) при входящем звонке, устанавливая префикс 8 в любом случае. Мне нужно это для удобства обратного набора, на поступивший внешний звонок.

 

В моем случае один SIP-провайдер отдает номер телефона с префиксом 7, прим. 7800-800-80-80 (7XXXXXXXXXX), а другой вообще без префикса, прим. 800-800-80-80.

Чтобы исправить это, нам  необходимо немного модифицировать dialplan, внеся в файл конфигурации /etc/asterisk/extensions_custom.conf следующий код:

[from-pstn-custom]
exten => _X.,1,ExecIF($[${VALID_EXTEN(fix-cid,${CALLERID(num)})}]?Gosub(fix-cid,${CALLERID(num)},1))

[fix-cid]
; Входящий номер с кодом 7
exten => _7XXXXXXXXXX,1,Set(CALLERID(num)=8${CALLERID(num):1})
exten => _7XXXXXXXXXX,n,Return()

; Входящий номер без кода страны
exten => _XXXXXXXXXX,1,Set(CALLERID(num)=8${CALLERID(num)})
exten => _XXXXXXXXXX,n,Return()

 

Краткое пояснение по работе контекста from-pstn-custom. Берется весь входящий поток CallerID и проверяем на соответствие заданным маскам 7XXXXXXXXXX (с префиксом 7) и XXXXXXXXXX (без префикса вообще). Если маска совпадает, то в случае с префиксом 7, мы сперва его удаляем его и добавляем 8, а в случае когда префикс отсутствует, мы его дописываем и возвращаемся в сценарий звонка.

 

Не забываем перечитать dialplan, для применения изменений.

Обсуждение

0 комментариев

Нет комментариев.