====== Звонок через определенного провайдера ======
[[faq:|Обратно к инструкциям]]
===== Постановка задачи =====
В MikoPBX (//Телефония -> Сотрудники//) настроены следующие учетные записи сотрудников:\\
{{ :faq:2018-10-02_122750.png |}}\\ \\
В MikoPBX настроены **два провайдера** от поставщика услуг связи Zadarma (//Маршрутизация -> Провайдеры телефонии//):\\
{{ :faq:2018-10-02_122916.png |}}\\ \\
Необходимо, чтобы:
- телефон, подключенный к учетной записи **201** звонил только через **первого провайдера** Zadarma
- телефон, подключенный к учетной записи **202** звонил только через **второго провайдера** Zadarma.
Звонки во внешний мир (в город) через обоих провайдеров Zadarma реализуются по **одинаковому исходящему правилу**: это десятизначный номер, начинающийся с 7. Схематично задачу можно изобразить следующим образом:\\
{{ :faq:7899.png |}}
===== Решение =====
Направить звонки по определенному провайдеру можно, используя **префиксы исходящих шаблонов**.
* Звонки всегда будут идти через **первого провайдера**, если перед исходящим номером всегда добавлять **1**. Следовательно, если **201** абонент будет набирать исходящие номера с **префиксом 1**, то вызовы пойдут через первого провайдера.\\ \\
* Звонки всегда будут идти через **второго провайдера**, если перед исходящим номером всегда добавлять **2**. Следовательно, если **202** абонент будет набирать исходящие номера с **префиксом 2**, то вызовы пойдут через второго провайдера.
Схематично это можно изобразить следующим образом:\\
{{ :faq:2018-10-02_160947.png |}}
Реализовать эту задачу можно двумя способами в MikoPBX:\\
- Абоненты 201 и 202 всегда на телефоне будут добавлять определенные префиксы перед набираемым номером, т.е. если они хотят позвонить на номер 74952293042, они перед этим номером добавляют префикс 1 или 2, например 174952293042\\ \\
- Абоненты 201 и 202 **не набирают** специальные префиксы, за них это действие выполняет сама АТС.
==== Первый способ ====
Первый способ реализации поставленной нами задачи предполагает, что абоненты 201 и 202 самостоятельно будут на телефоне набирать соответствующие префиксы перед набираемым номером. 201 абонент всегда перед номером будет добавлять 1, а 202 абонент - 2. \\ \\
1. Для **первого** провайдера Zadarma создаем исходящее правило. Переходим в раздел **Маршрутизация** -> **Исходящие маршруты**. Добавляем новое правило как на скриншоте ниже:\\ {{ :faq:2018-10-02_123308.png |}}\\ \\
2. Для **второго** провайдера Zadarma создаем исходящее правило. Переходим в раздел **Маршрутизация** -> **Исходящие маршруты**. Добавляем новое правило как на скриншоте ниже:\\ {{ :faq:2018-10-02_123429.png |}}\\ \\
==== Второй способ ====
Второй способ реализации поставленной нами задачи предполагает, что абоненты 201 и 202 **НЕ будут** на телефоне набирать соответствующие префиксы перед набираемым номером. За них это будет делать сама АТС! \\ \\
1. Добавляем **исходящие правила** для первого и второго провайдера Zadarma, как описано в [[faq:specific_provider#первый_способ|первом способе]]. Настройки все идентичны. \\ \\
2. В разделе **Маршрутизация** -> **Провайдеры телефонии** добавьте третью учетную запись провайдера со следующими данными:\\
{{ :faq:2019-02-15_125523.png |}}\\
{{ :faq:2019-02-13_181148.png |}}\\
{{ :faq:2019-02-13_181159.png |}}\\
3. Сохраните учетную запись и в адресной строке скопируйте ID данного провайдера.\\
{{ :faq:2019-02-15_125753.png |}}
4. Добавьте **исходящее правило** для созданного провайдера. Все звонки по умолчанию мы будем направлять через данного провайдера, поэтому будьте внимательны при создании исходящего шаблона. Звонки через провайдеров Zadarma можно осуществлять на номера, начинающиеся с 7, поэтому наш шаблон принимает вид:\\
{{ :faq:2019-02-15_125539.png |}}\\
5. Обратите внимание, **приоритет** исходящего правила для провайдера **Route** должен быть ниже всех!\\
{{ :faq:2019-02-15_130304.png |}}\\
6. Переходим в раздел **Система** -> **Кастомизация системных файлов**. Открываем для редактирования конфигурационный файл **extensions.conf**. \\ {{ :faq:2018-10-02_123824.png |}}\\
Выбираем режим "**Добавлять в конец файла**". \\ {{ :faq:2018-10-02_123857.png |}}\\ \\
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**.
Ниже красным цветом выделен фрагмент, который Вам необходимо изменить.\\
{{ :faq:2019-02-13_181603.png |}}\\
**Сохраняем** изменения и возвращаемся обратно к списку конфигурационных файлов.\\ \\
Таким образом для 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:|Обратно к инструкциям]]