====== Звонок через определенного провайдера ====== [[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:|Обратно к инструкциям]]