Звонок через определенного провайдера

Постановка задачи

В MikoPBX (Телефония → Сотрудники) настроены следующие учетные записи сотрудников:

Раздел "Сотрудники"

В MikoPBX настроены два провайдера (Маршрутизация → Провайдеры телефонии):

Настроенные провайдеры

Необходимо, чтобы:

  1. телефон, подключенный к учетной записи 201 звонил только через первого провайдера РТ

  2. телефон, подключенный к учетной записи 202 звонил только через второго провайдера Задарма(Novofon).

Звонки во внешний мир (в город) через обоих провайдеров реализуются по одинаковому исходящему правилу: это десятизначный номер, начинающийся с 7. Схематично задачу можно изобразить следующим образом:

Схема поставленной задачи

Решение

Направить звонки по определенному провайдеру можно, используя префиксы исходящих шаблонов.

  • Звонки всегда будут идти через первого провайдера, если перед исходящим номером всегда добавлять 1. Следовательно, если 201 абонент будет набирать исходящие номера с префиксом 1, то вызовы пойдут через первого провайдера.

  • Звонки всегда будут идти через второго провайдера, если перед исходящим номером всегда добавлять 2. Следовательно, если 202 абонент будет набирать исходящие номера с префиксом 2, то вызовы пойдут через второго провайдера.

Схематично это можно изобразить следующим образом:

Схема решения задачи

Реализовать эту задачу можно двумя способами в MikoPBX:

  1. Абоненты 201 и 202 всегда на телефоне будут добавлять определенные префиксы перед набираемым номером, т.е. если они хотят позвонить на номер 74952293042, они перед этим номером добавляют префикс 1 или 2, например 174952293042

  2. Абоненты 201 и 202 не набирают специальные префиксы, за них это действие выполняет сама АТС.

Первый способ

Первый способ реализации поставленной нами задачи предполагает, что абоненты 201 и 202 самостоятельно будут на телефоне набирать соответствующие префиксы перед набираемым номером. 201 абонент всегда перед номером будет добавлять 1, а 202 абонент - 2.

  1. Для первого провайдера создаем исходящее правило. Переходим в раздел МаршрутизацияИсходящие маршруты. Добавляем новое правило

Создание нового правила в разделе "Исходящие маршруты"
  1. Заполняем параметры как на скриншоте ниже:

Параметры маршрутизации для первого провайдера
  1. Для второго провайдера Zadarma создаем исходящее правило. Переходим в раздел МаршрутизацияИсходящие маршруты. Добавляем новое правило как на скриншоте ниже:

Параметры маршрутизации для второго провайдера

Второй способ

Второй способ реализации поставленной нами задачи предполагает, что абоненты 201 и 202 НЕ будут на телефоне набирать соответствующие префиксы перед набираемым номером. За них это будет делать сама АТС! 1. Добавляем исходящие правила для первого и второго провайдера Zadarma, как описано в первом способе. Настройки все идентичны. 2. В разделе МаршрутизацияПровайдеры телефонии добавьте третью учетную запись провайдера

Создание новой учетной записи провайдера
  1. Заполняем параметры как на скриншоте ниже:

Параметры Router
  1. Сохраните учетную запись и в адресной строке скопируйте ID данного провайдера.

ID провайдера в адресной строке
  1. Добавьте исходящее правило для созданного провайдера. Все звонки по умолчанию мы будем направлять через данного провайдера, поэтому будьте внимательны при создании исходящего шаблона. Звонки через наших провайдеров можно осуществлять на номера, начинающиеся с 7, поэтому наш шаблон принимает вид:

Параметры маршрутизации для Router
  1. Обратите внимание, приоритет исходящего правила для провайдера Router должен быть ниже всех!

Приоритеты исходящей маршрутизации
  1. Переходим в раздел СистемаКастомизация системных файлов.

8. Открываем для редактирования конфигурационный файл extensions.conf.

Файл Extensions.conf
  1. Выбираем режим «Добавлять в конец файла». В окне редактирования вставляем следующие строки:

[globals](+)
MIKO_PREFIX_NUMBER_201=1; Префикс для внутреннего номера 201
MIKO_PREFIX_NUMBER_202=2; Префикс для внутреннего номера 202

[SIP-1690973516-outgoing-custom]
exten => _.!,1,ExecIf($[ "${PREFIX_NUMBER}x" != "x" ]?return)
    same => n,ExecIf($[ "${MIKO_PREFIX_NUMBER}x" == "x" ]?Set(MIKO_PREFIX_NUMBER=${MIKO_PREFIX_NUMBER_${CHANNEL(peername)}}))
    same => n,Set(PREFIX_NUMBER=${MIKO_PREFIX_NUMBER})
    same => n,ExecIf($[ "${MIKO_PREFIX_NUMBER}x" != "x" ]?Goto(outgoing,${MIKO_PREFIX_NUMBER}${EXTEN},4))
    same => n,return
    
[all_peers-custom]
include => internal-custom

[internal-custom]
exten => _.!,1,NoOp(Start custom context)
    same => n,ExecIf($[ "${MIKO_PREFIX_NUMBER}x" == "x" ]?Set(MIKO_PREFIX_NUMBER=${MIKO_PREFIX_NUMBER_${FROM_PEER}}))
    same => n,Return()

В выше приведенном фрагменте кода Вам необходимо составить правильное наименование контекста. Формат создаваемого контекста:

[ID-ПРОВАЙДЕРА-outgoing-custom]

ID-ПРОВАЙДЕРА - значение, которое вы сохранили на третьем шаге, описанном в данном способе. В нашем примере это SIP-1690973516

Код для Extensions.conf

Сохраняем изменения и возвращаемся обратно к списку конфигурационных файлов.

Таким образом для 201 и 202 учетных записей мы задали префиксы. Все исходящие звонки теперь будут проходить через требуемого провайдера.

Маршрут "По умолчанию"

В ряде случаев, при описании входящих маршрутов необходимо направить вызов не на внутренний номер, а на мобильный номер сотрудника. В этом случае необходимо описать «Префикс по умолчанию», иначе могу возникнуть проблемы с обработкой таких вызовов.

При маршрутизации по DID номеру:

[public-direct-dial-custom]
exten => _.!,1,NoOp(Start custom context)
    same => n,Set(__MIKO_PREFIX_NUMBER=2)
    same => n,Return()

Для каждого провайдера следует также описать контекст:

[ID-ПРОВАЙДЕРА-incoming]
exten => _.!,1,NoOp(Start custom context)
    same => n,Set(__MIKO_PREFIX_NUMBER=2)
    same => n,Return() 

На этом настройка завершена!

Last updated

Was this helpful?