FreePBX: различия между версиями

Материал из wiki.nntc.nnov.ru
Перейти к навигации Перейти к поиску
(Новая страница: «__FORCETOC__ =Термины= Direct Inward Dialing (DID) - полный номер телефона, на который поступил входящий зв…»)
 
Строка 1: Строка 1:
 
__FORCETOC__
 
__FORCETOC__
 
=Термины=  
 
=Термины=  
Direct Inward Dialing (DID) - полный номер телефона, на который поступил входящий звонок. Для FreePBX - уникальный идентификатор, по которому происходит маршрутизация звонков. Именно благодаря ему FreePBX отличает звонок в тех поддержку от звонка в отдел продаж.
+
'''Direct Inward Dialing (DID)''' - полный номер телефона, на который поступил входящий звонок. Для FreePBX - уникальный идентификатор, по которому происходит маршрутизация звонков. Именно благодаря ему FreePBX отличает звонок в тех поддержку от звонка в отдел продаж. <br />
 +
'''Транк (trunk)''' - это виртуальный канал связи, который соединяет вашу АТС с телефонным провайдером. Через него проходят все звонки (входящие и исходящие), при этом он позволяет обрабатывать несколько вызовов одновременно.
 
=Проблемы=
 
=Проблемы=
==Особенность подключения ВиртуальнойАТС к FreePBX==
 
 
==Маршрутизация звонков с ВиртуальнойАТС Ростелеком==
 
==Маршрутизация звонков с ВиртуальнойАТС Ростелеком==
 
При работе с несколькими транками, которые зарегистрированы у крупных провайдеров (например, Ростелеком), вы можете столкнуться с тем, что провайдер не присылает DID.
 
При работе с несколькими транками, которые зарегистрированы у крупных провайдеров (например, Ростелеком), вы можете столкнуться с тем, что провайдер не присылает DID.
Строка 13: Строка 13:
 
Поскольку система не получает DID извне, мы должны "подсказать" его самостоятельно. Идея заключается в том, чтобы перехватить входящий звонок еще до того, как он попадет в стандартный механизм маршрутизации, и принудительно присвоить ему правильный DID.
 
Поскольку система не получает DID извне, мы должны "подсказать" его самостоятельно. Идея заключается в том, чтобы перехватить входящий звонок еще до того, как он попадет в стандартный механизм маршрутизации, и принудительно присвоить ему правильный DID.
  
Для этого мы создадим для каждого транка (читай: для каждого городского номера) свой собственный кастомный контекст. Этот контекст — небольшой сценарий, который будет выполнять простую команду: «Если звонок пришел с этого транка, значит, его DID равен 78311234567 (любой нужный номер)». После этого звонок, уже с корректным DID, отправляется на дальнейшую обработку, и вся ваша стандартная маршрутизация начинает работать как часы.
+
Для этого мы создадим для каждого транка (читай: для каждого городского номера) свой собственный кастомный контекст. Этот контекст — небольшой сценарий, который будет выполнять простую команду: «Если звонок пришел с этого транка, значит, его DID равен 78311234567 (любой нужный номер)». После этого звонок, уже с корректным DID, отправляется на дальнейшую обработку, и вся ваша стандартная маршрутизация начинает работать как часы. <br />
 
+
;1. Подключитесь к вашему серверу. <br />
Сделать это можно добавлением нескольких строк в файл '''extensions_override_freepbx.conf''':
+
;2. Добавьте в конец файла '''extensions_override_freepbx.conf''' <u>'''(этот файл не затрагивается обновлениями системы)'''</u>: <br />
  
 
<pre>
 
<pre>
Строка 25: Строка 25:
  
 
Давайте разберём что делает каждая строка:
 
Давайте разберём что делает каждая строка:
<br />
+
 
 
<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>  
  
Контекст мы сделали, но работать наша магия пока не будет. Нам в настройках транка во вкладке '''pjsip settings''' в поле '''Context''' нужно указать нужный нам контекст и применить изменения.
+
Контекст мы сделали, но работать наша магия пока не будет. Для этого нужно: <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. В поле контекст впишите нужный вам контекст и примените изменения

После этого машрутизация должна заработать как часы