Как изменить 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, для применения изменений.
Обсуждение
Нет комментариев.