FreePBX
Содержание
Термины
Direct Inward Dialing (DID) - полный номер телефона, на который поступил входящий звонок. Для FreePBX - уникальный идентификатор, по которому происходит маршрутизация звонков. Именно благодаря ему FreePBX отличает звонок в тех поддержку от звонка в отдел продаж.
Проблемы
Особенность подключения ВиртуальнойАТС к FreePBX
Маршрутизация звонков с ВиртуальнойАТС Ростелеком
При работе с несколькими транками, которые зарегистрированы у крупных провайдеров (например, Ростелеком), вы можете столкнуться с тем, что провайдер не присылает DID.
Допустим, у вас настроено два номера и для каждого из них создан свой отдельный входящий маршрут в FreePBX. Однако при поступлении звонка на любой из этих номеров провайдер не передает системе информацию о том, какой именно номер был набран.
В результате FreePBX не может найти соответствующий маршрут по DID, и вся логика маршрутизации ломается или же работает неправильно. Чаще всего это приводит к тому, что все входящие вызовы направляются по одному маршруту по умолчанию, игнорируя созданные вами правила.
Поскольку система не получает DID извне, мы должны "подсказать" его самостоятельно. Идея заключается в том, чтобы перехватить входящий звонок еще до того, как он попадет в стандартный механизм маршрутизации, и принудительно присвоить ему правильный DID.
Для этого мы создадим для каждого транка (читай: для каждого городского номера) свой собственный кастомный контекст. Этот контекст — небольшой сценарий, который будет выполнять простую команду: «Если звонок пришел с этого транка, значит, его DID равен 78311234567 (любой нужный номер)». После этого звонок, уже с корректным DID, отправляется на дальнейшую обработку, и вся ваша стандартная маршрутизация начинает работать как часы.
Сделать это можно добавлением нескольких строк в файл extensions_override_freepbx.conf:
[from-pstn-route1] exten => _.,1,NoOp(--- Перехват 's' с транка! Назначаю DID 7831-123-45-67 ---) exten => _.,n,Set(CALLERID(dnid)=78311234567); exten => _.,n,Goto(from-pstn,78311234567,1)
Давайте разберём что делает каждая строка:
[from-pstn-route1]
<- после from-pstn- может быть любое нужное название.
exten => _.,1,NoOp(--- Перехват 's' с транка! Назначаю DID 7831-123-45-67 ---)
- логгирование.
exten => _.,n,Set(CALLERID(dnid)=78311234567);
- установка DID на 78311234567. На месте номера может быть любой нужный нам номер.
exten => _.,n,Goto(from-pstn,78311234567,1)
- отправка звонка в главный контекст с нужный нам DID. Номер должен быть такой-же как и в строке выше
После изменения конфигурации не забудьте перезагрузить командой fwconsole reload --verbose
Контекст мы сделали, но работать наша магия пока не будет. Нам в настройках транка во вкладке pjsip settings в поле Context нужно указать нужный нам контекст и применить изменения.
После описанных выше действий маршрутизация будет работать как надо