FreePBX: различия между версиями
(Новая страница: «__FORCETOC__ =Термины= Direct Inward Dialing (DID) - полный номер телефона, на который поступил входящий зв…») |
|||
Строка 1: | Строка 1: | ||
__FORCETOC__ | __FORCETOC__ | ||
=Термины= | =Термины= | ||
− | Direct Inward Dialing (DID) - полный номер телефона, на который поступил входящий звонок. Для FreePBX - уникальный идентификатор, по которому происходит маршрутизация звонков. Именно благодаря ему FreePBX отличает звонок в тех поддержку от звонка в отдел продаж. | + | '''Direct Inward Dialing (DID)''' - полный номер телефона, на который поступил входящий звонок. Для FreePBX - уникальный идентификатор, по которому происходит маршрутизация звонков. Именно благодаря ему FreePBX отличает звонок в тех поддержку от звонка в отдел продаж. <br /> |
+ | '''Транк (trunk)''' - это виртуальный канал связи, который соединяет вашу АТС с телефонным провайдером. Через него проходят все звонки (входящие и исходящие), при этом он позволяет обрабатывать несколько вызовов одновременно. | ||
=Проблемы= | =Проблемы= | ||
− | |||
==Маршрутизация звонков с ВиртуальнойАТС Ростелеком== | ==Маршрутизация звонков с ВиртуальнойАТС Ростелеком== | ||
При работе с несколькими транками, которые зарегистрированы у крупных провайдеров (например, Ростелеком), вы можете столкнуться с тем, что провайдер не присылает DID. | При работе с несколькими транками, которые зарегистрированы у крупных провайдеров (например, Ростелеком), вы можете столкнуться с тем, что провайдер не присылает DID. | ||
Строка 13: | Строка 13: | ||
Поскольку система не получает DID извне, мы должны "подсказать" его самостоятельно. Идея заключается в том, чтобы перехватить входящий звонок еще до того, как он попадет в стандартный механизм маршрутизации, и принудительно присвоить ему правильный DID. | Поскольку система не получает DID извне, мы должны "подсказать" его самостоятельно. Идея заключается в том, чтобы перехватить входящий звонок еще до того, как он попадет в стандартный механизм маршрутизации, и принудительно присвоить ему правильный DID. | ||
− | Для этого мы создадим для каждого транка (читай: для каждого городского номера) свой собственный кастомный контекст. Этот контекст — небольшой сценарий, который будет выполнять простую команду: «Если звонок пришел с этого транка, значит, его DID равен 78311234567 (любой нужный номер)». После этого звонок, уже с корректным DID, отправляется на дальнейшую обработку, и вся ваша стандартная маршрутизация начинает работать как часы. | + | Для этого мы создадим для каждого транка (читай: для каждого городского номера) свой собственный кастомный контекст. Этот контекст — небольшой сценарий, который будет выполнять простую команду: «Если звонок пришел с этого транка, значит, его DID равен 78311234567 (любой нужный номер)». После этого звонок, уже с корректным DID, отправляется на дальнейшую обработку, и вся ваша стандартная маршрутизация начинает работать как часы. <br /> |
− | + | ;1. Подключитесь к вашему серверу. <br /> | |
− | + | ;2. Добавьте в конец файла '''extensions_override_freepbx.conf''' <u>'''(этот файл не затрагивается обновлениями системы)'''</u>: <br /> | |
<pre> | <pre> | ||
Строка 25: | Строка 25: | ||
Давайте разберём что делает каждая строка: | Давайте разберём что делает каждая строка: | ||
− | + | ||
<code>[from-pstn-route1]</code> <- после '''from-pstn-''' может быть любое нужное название. <br /> | <code>[from-pstn-route1]</code> <- после '''from-pstn-''' может быть любое нужное название. <br /> | ||
<code>exten => _.,1,NoOp(--- Перехват 's' с транка! Назначаю DID 7831-123-45-67 ---)</code> - логгирование. <br /> | <code>exten => _.,1,NoOp(--- Перехват 's' с транка! Назначаю DID 7831-123-45-67 ---)</code> - логгирование. <br /> | ||
Строка 33: | Строка 33: | ||
После изменения конфигурации не забудьте перезагрузить командой <code>fwconsole reload --verbose</code> | После изменения конфигурации не забудьте перезагрузить командой <code>fwconsole reload --verbose</code> | ||
− | Контекст мы сделали, но работать наша магия пока не будет. | + | Контекст мы сделали, но работать наша магия пока не будет. Для этого нужно: <br /> |
+ | |||
+ | ;1. Зайдите в панель управления FreePBX. | ||
+ | ;2. Перейдите в Connectivity -> Trunks и откройте настройки нужного вам транка. | ||
+ | ;3. Откройте вкладку pjsip settings | ||
+ | ;4. В поле контекст впишите нужный вам контекст и примените изменения | ||
− | После | + | После этого машрутизация должна заработать как часы |
Версия 14:00, 11 сентября 2025
Термины
Direct Inward Dialing (DID) - полный номер телефона, на который поступил входящий звонок. Для FreePBX - уникальный идентификатор, по которому происходит маршрутизация звонков. Именно благодаря ему FreePBX отличает звонок в тех поддержку от звонка в отдел продаж.
Транк (trunk) - это виртуальный канал связи, который соединяет вашу АТС с телефонным провайдером. Через него проходят все звонки (входящие и исходящие), при этом он позволяет обрабатывать несколько вызовов одновременно.
Проблемы
Маршрутизация звонков с ВиртуальнойАТС Ростелеком
При работе с несколькими транками, которые зарегистрированы у крупных провайдеров (например, Ростелеком), вы можете столкнуться с тем, что провайдер не присылает DID.
Допустим, у вас настроено два номера и для каждого из них создан свой отдельный входящий маршрут в FreePBX. Однако при поступлении звонка на любой из этих номеров провайдер не передает системе информацию о том, какой именно номер был набран.
В результате FreePBX не может найти соответствующий маршрут по DID, и вся логика маршрутизации ломается или же работает неправильно. Чаще всего это приводит к тому, что все входящие вызовы направляются по одному маршруту по умолчанию, игнорируя созданные вами правила.
Поскольку система не получает DID извне, мы должны "подсказать" его самостоятельно. Идея заключается в том, чтобы перехватить входящий звонок еще до того, как он попадет в стандартный механизм маршрутизации, и принудительно присвоить ему правильный DID.
Для этого мы создадим для каждого транка (читай: для каждого городского номера) свой собственный кастомный контекст. Этот контекст — небольшой сценарий, который будет выполнять простую команду: «Если звонок пришел с этого транка, значит, его DID равен 78311234567 (любой нужный номер)». После этого звонок, уже с корректным DID, отправляется на дальнейшую обработку, и вся ваша стандартная маршрутизация начинает работать как часы.
- 1. Подключитесь к вашему серверу.
- 2. Добавьте в конец файла 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
Контекст мы сделали, но работать наша магия пока не будет. Для этого нужно:
- 1. Зайдите в панель управления FreePBX.
- 2. Перейдите в Connectivity -> Trunks и откройте настройки нужного вам транка.
- 3. Откройте вкладку pjsip settings
- 4. В поле контекст впишите нужный вам контекст и примените изменения
После этого машрутизация должна заработать как часы