Инструменты пользователя

Инструменты сайта


faq:specific_provider

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

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

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


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


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

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

Звонки во внешний мир (в город) через обоих провайдеров Zadarma реализуются по одинаковому исходящему правилу: это десятизначный номер, начинающийся с 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. Для первого провайдера Zadarma создаем исходящее правило. Переходим в раздел МаршрутизацияИсходящие маршруты. Добавляем новое правило как на скриншоте ниже:


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


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

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

1. Добавляем исходящие правила для первого и второго провайдера Zadarma, как описано в первом способе. Настройки все идентичны.

2. В разделе МаршрутизацияПровайдеры телефонии добавьте третью учетную запись провайдера со следующими данными:



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

5. Обратите внимание, приоритет исходящего правила для провайдера Route должен быть ниже всех!

6. Переходим в раздел СистемаКастомизация системных файлов. Открываем для редактирования конфигурационный файл extensions.conf.

Выбираем режим «Добавлять в конец файла».


7. В окне редактирования вставляем следующие строки:

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

[SIP-PROVIDER-3B7181D15C7C6079BE3DF5D97A8558B4-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-PROVIDER-3B7181D15C7C6079BE3DF5D97A8558B4.

Ниже красным цветом выделен фрагмент, который Вам необходимо изменить.

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

Таким образом для 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() 

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

Обратно к инструкциям

faq/specific_provider.txt · Последние изменения: 2020/04/05 15:09 (внешнее изменение)