FreePBX

Материал из wiki.nntc.nnov.ru
Версия от 13:47, 11 сентября 2025; Madnessman777 (обсуждение | вклад) (Новая страница: «__FORCETOC__ =Термины= Direct Inward Dialing (DID) - полный номер телефона, на который поступил входящий зв…»)
(разн.) ← Предыдущая | Текущая версия (разн.) | Следующая → (разн.)
Перейти к навигации Перейти к поиску

Термины

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 нужно указать нужный нам контекст и применить изменения.

После описанных выше действий маршрутизация будет работать как надо