LogoLogo
www.mikopbx.ruTelegram сообществоФорум
Russian
Russian
  • Руководство по MikoPBX
    • Быстрое начало работы
    • Знакомство с MikoPBX
    • Системные требования
  • Установка
    • Отдельный компьютер
    • Виртуальные машины
      • VMware ESXi
      • VMware Fusion
      • VirtualBOX
      • VMware Workstation Pro
      • Hyper-V
      • Proxmox
    • Облачные сервисы
      • Yandex Cloud
        • Магазин приложений
        • Произвольный образ
        • Коммандная строка YC
      • VK Cloud
      • 1С:Облачная инфраструктура
      • AWS
        • AWS подробная инструкция
        • AWS Маркетплейс
      • Microsoft Azure
      • Google Cloud
        • Google Cloud подробная инструкция
        • Google Cloud Маркетплейс
      • Hetzner cloud (Empty)
      • Vscale
      • Selectel
      • DigitalOcean
      • Alibaba cloud
      • Vultr
    • В Docker контейнере
      • Установка докера и cоздание пользователя и каталогов
      • Запуск MikoPBX в контейнере
      • Запуск MikoPBX с помощью docker compose
  • Руководство пользователя
    • Телефония
      • Сотрудники
      • Очереди вызовов
      • IVR меню
      • Конференции
      • Звуковые файлы
      • История вызовов
    • Маршрутизация
      • Провайдеры телефонии
      • Входящие маршруты
      • Исходящие маршруты
      • Нерабочее время
    • Модули
      • Регистрация в маркетплейсе модулей
      • Управление модулями
      • Приложения диалпланов
    • Обслуживание
      • Обновление системы
        • Обновление из web-интерфейса
        • Обновление из консоли MikoPBX
        • Обновление Docker
      • Диагностика системы
      • Перезагрузка и выключение системы
    • Сеть и Firewall
      • Сетевые интерфейсы
      • Сетевой экран
      • Защита от взлома
    • Система
      • Общие настройки
      • Дата и время
      • Почта и уведомления
        • Настройка E-mail уведомлений для почтового сервиса Gmail
        • Настройка E-mail уведомлений для почтового сервиса Yandex
        • Настройка E-mail уведомлений для почтового сервиса Mail.ru
      • Доступ к AMI
      • Кастомизация системных файлов
  • Часто задаваемые вопросы
    • Интеграция с 1С
      • Перехват на ответственного
        • Перехват на ответственного в панели телефонии 4.0 как в панели 1.0
        • Отменить перехват на ответственного для конкретного провайдера
    • Установка
      • Установка на MDADM RAID1
      • Тонкая настройка firewall
      • Перенос MikoPBX на другой сервер
        • Перенос с помощью резервного копирования
        • Перенос с помощью резервного копирования по расписанию
        • Перенос с помощью rsync
      • Сброс к заводским настройкам
      • Мониторинг провайдеров на MikoPBX
    • Обслуживание
      • Изменить имя для авторизации
      • Закончилось место на доп. диске, увеличение размера диска
      • Закончилось место на доп. диске, перенос данных на новый диск
      • Хранение записей в общей папке windows
      • Резервный интернет и перерегистрация провайдеров
      • Сброс пароля администратора из консоли MikoPBX
    • Диагностика проблем
      • Подключение к АТС с помощью SSH
        • Подключение к АТС с помощью SSH-клиента (Putty)
        • Подключение с помощью SSH (Windows)
        • Подключение с помощью SSH (Linux/MacOS)
      • Подключение к АТС с помощью WinSCP
      • Получение логов с помощью приложения tcpdump
      • Снятие лога в АТС с помощью Wireshark
      • Анализ трафика средствами Sngrep
      • Настройка громкости
      • Решение проблем со звуком
      • Настройка Jitter
    • Входящая маршрутизация
      • Выбор провайдера при переадресации на мобильный
      • Уведомление о занятости, Call Waiting
      • Маршрутизация по DID номеру
      • Черные и белые списки
      • Разрешить донабор внутреннего номера в очереди
      • Нормализация входящего номера телефона
      • Настройка индивидуального нерабочего времени для учетной записи провайдера
      • Вывод информации о did-номере
      • Пример реализации типового маршрута входящих вызовов
      • Базовый пример IVR
    • Исходящая маршрутизация
      • Добавить P-Preferred-Identity и Remote-Party-ID заголовок
      • Конференция с постоянным внешним абонентом
      • Исходящий с набором внутреннего номера
      • Убрать все спецсимволы из набираемого номера
      • Запрет звонка через резервный маршрут
      • Звонки на экстренные номера
      • Звонок через определенного провайдера
      • Шаблоны номеров
        • Равномерное распределение исходящих
        • Удаление кода города из номера
        • Добавление префикса "8" к номеру
        • Замена префикса номера с "8, 7" на "+7"
        • Замена префикса номера с "+7" на "8"
        • Пример шаблона: звонки в другую страну (Украина, Беларусь, Латвия)
        • Как запретить замену "+" на "00"
        • Нормализация набираемого номера телефона
    • Сценарии и кейсы
      • Программное создание сотрудников
      • Уведомление в телеграмм о пропущенных
      • Позвонить в компанию с мобильного и набрав добавочный позвонить сторонней компании
      • Отправка входящего факса на email
      • Оценка клиентом качества обслуживания
      • Имитация внешних звонков
      • Отключение "нерабочего времени" для VIP номеров
      • Регистрация нескольких учетных записей от одного провайдера
      • Настройка индивидуального нерабочего времени для нескольких провайдеров, на одном хосте
      • Отключить переадресацию на мобильный для внутренних звонков
      • Уникальная фоновая музыка для очереди
      • Пауза для агента очереди
      • Динамические агенты очередей
      • Настройка функции "Paging"
      • Ограничить количество авторизаций на одном SIP аккаунте
      • Как реализовать функцию супервизора
      • Голосовая почта
      • Конвертация истории звонков FreePBX -> MikoPBX
      • SSL сертификат для web-интерфейса MIKOPBX от OPNSense
      • Скрытие номера от сотрудника
    • Соединение нескольких АТС
      • Объединение двух MikoPBX
      • Объединение MIKOPBX и Grandstream UCM6202
      • Объединение MikoPBX и FreePBX (PJSIP)
      • Объединение MikoPBX и FreePBX (IAX)
    • Настройка провайдеров
      • Ростелеком
      • MTT
      • Zadarma (Novofon)
      • Мегафон
      • Билайн
      • МТС
      • UIS (uiscom.ru)
      • MANGO OFFICE
      • dom.ru
      • Яндекс телефония
      • NEW-TEL
      • sip.tg
      • Lifecell
      • SIP Коннектор Bitrix24
      • ID Phone(Казахтелеком)
      • Имитация внешних входящих и исходящих звонков
      • Телфин
    • Настройка софтфонов
      • Bria Solo
      • Sessiontalk
      • Groundwire
      • MicroSIP
      • Zoiper
      • Jitsi
      • PhonerLite
      • Linphone (MacOS)
      • Telephone(MacOS)
      • Настройка WebRTC клиента SIPML5
      • Softphone.pro
      • 3CX Softphone
      • PortSIP
      • SIP.tg (Telegram)
    • Voip шлюзы
      • GoIP4
        • SMS в Telegram
      • Yeastar NeoGate TG 400
      • Grandstream HT503
      • Звонки через 3G модем Huawei E173 (chan_dongle)
    • IP-Телефоны
      • Snom D120
      • Yealink T19
      • Yealink T21
      • Yealink T28
      • Fanvil X3SP
    • Перестает работать сеть в MikoPBX
  • Модули
    • Модули МИКО
      • Интеграция с 1С
        • Панель телефонии 1.0 для 1С
        • Панель телефонии 4.0 для 1С
        • Модуль умной маршрутизации
      • Интеграция с amoCRM
        • Описание функционала amoCRM
        • Настройка интеграции с amoCRM
      • Интеграция с CRM Bitrix24
        • Описание функционала CRM Bitrix24
        • Настройка интеграции с Bitrix24
      • Управление телефонными группами
      • Резервное копирование
      • Автоматическая настройка телефонов
      • Автообработка пропущенных
      • Let's Encrypt
      • Управление доступом в систему
      • Модуль Автоинформатор
      • Оценка качества разговора
      • Синхронизация с LDAP/AD
      • Провайдер для звонков Telegram
      • Zabbix агент
      • Телефонная книга
      • Расширенная история звонков
  • Прочее
    • История версий
      • MikoPBX 2024.1
      • MikoPBX 2023.2
      • MikoPBX 2023.1.223
Powered by GitBook
On this page
  • Введение
  • Как это работает
  • Возможные особенности

Was this helpful?

Edit on GitHub
Export as PDF
  1. Часто задаваемые вопросы
  2. Входящая маршрутизация

Маршрутизация по DID номеру

Last updated 4 months ago

Was this helpful?

Введение

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

К примеру у МИКО есть номера телефонов:

  • +7(495)229-30-42

  • +7(499)638-25-84

В интерфейсе MikoPBX создана только одна учетная запись «». Каждый номер телефона необходимо направить на свой маршрут, к примеру на различные IVR.

Тут к приходит на помощь , который провайдер может передавать при входящих звонках. Зная DID номер, можно для провайдера описать несколько входящие маршрутов, с различными DID, что позволит решить описанную выше задачу.

Как это работает

Для анализа звонков я обычно использую «». Вот пример запроса от провайдера при входящем:

INVITE sip:84996382584@93.188.XX.XX SIP/2.0
Via: SIP/2.0/UDP 81.88.86.65:5060;branch=z9hG4bK1cf7.16247c44.0;cid=2
Max-Forwards: 67
Contact: <sip:81.88.86.65>
To: <sip:84996382584@93.188.XX.XX>
From: "79260577653"<sip:79260577653@mangosip.ru>;tag=5e1a5a28
Call-ID: JUm-E_ISk4DPaL8Npv2Hlw..
CSeq: 1 INVITE
Allow: INVITE, ACK, CANCEL, OPTIONS, BYE, UPDATE, UPDATE, INFO, REFER, MESSAGE
Content-Type: application/sdp
Supported: replaces
User-Agent: Softswitch3
Content-Length: 351

При получении такого пакета, MikoPBX проанализирует первую строку с ключевым словом «INVITE», значение «84996382584» и будет являться DID номером.

Возможные особенности

DID в заголовке To

На практике, не всегда все так просто. К примеру я встречал провайдера, который присылает следующий INVITE:

INVITE sip:mikoteam@93.188.XX.XX SIP/2.0
Via: SIP/2.0/UDP 81.88.86.65:5060;branch=z9hG4bK1cf7.16247c44.0;cid=2
Max-Forwards: 67
Contact: <sip:81.88.86.65>
To: <sip:84996382584@93.188.XX.XX>
From: "79260577653"<sip:79260577653@mangosip.ru>;tag=5e1a5a28
Call-ID: JUm-E_ISk4DPaL8Npv2Hlw..
CSeq: 1 INVITE
Allow: INVITE, ACK, CANCEL, OPTIONS, BYE, UPDATE, UPDATE, INFO, REFER, MESSAGE
Content-Type: application/sdp
Supported: replaces
User-Agent: Softswitch3
Content-Length: 351
[SIP-1622040384-incoming-custom]
exten => _[0-9*#+a-zA-Z][0-9*#+a-zA-Z]!,1,NoOp(------)
	same => n,Set(toNum=${PJSIP_PARSE_URI(${PJSIP_HEADER(read,To)},user)})
	same => n,ExecIf($["${toNum}" != "${EXTEN}"]?Goto(${CUT(CONTEXT,,1-3)},${toNum},1))
	same => n,return
  • функция «PJSIP_HEADER» считывает значение заголовка «To»

  • функция «PJSIP_PARSE_URI» получает из значения заголовка поле «user», которое соответствует значению DID

  • Goto перемещает канал в начало, для повторной инициализации маршрута

  • "1-3" - означает, что нужно взять первые три слова из "SIP-1622040384-incoming-custom", по сути, нужно из этой строки получить все до "-custom", в старых версиях АТС может потребоваться скорректировать это правило

  • SIP-1622040384 - это ID учетной записи провайдера MikoPBX, можно подсмотреть в адресной строке браузера при редактировании учетной записи

Замена DID на произвольный

Следующий пример удобно применять, когда провайдер не предоставляет информации по номеру, на который пришел вызов, поступает информация только о логине. При этом, важно, чтобы одному логину соответствовал один DID.

[add-trim-prefix-clid-custom]
exten => user1,1,Goto(SIP-1622040384-incoming,74952293042,1)
exten => admin,1,Goto(SIP-1622040000-incoming,74952291111,1)

exten => _[0-9*#+a-zA-Z]!,2,return
  • "user1" и "admin" - это примеры популярных логин

Установить CID на основании DID

[add-trim-prefix-clid-custom]
exten => _[0-9*#+a-zA-Z][0-9*#+a-zA-Z]!,1,NoOp(...)
	same => n,GosubIf($["${DIALPLAN_EXISTS(did-from-cid-map,${EXTEN},1)}" == "1"]?cid-from-did-map,${EXTEN},1)
	same => n,return
[cid-from-did-map]
exten => 74952293042,1,Set(CALLERID(name)=Sales)
exten => 74952291111,1,Set(CALLERID(name)=Support)

exten => _[0-9*#+a-zA-Z]!,2,return
  • Если вызов поступен на номер 74952293042, то CID (name) будет установлен в значение Sales

  • Если вызов поступен на номер 74952291111, то CID (name) будет установлен в значение Support

DID произвольном заголовке

Такое встречается при использовании сервиса roistat. Сервис при входящем может прислать следующий запрос:

INVITE sip:mikoteam@93.188.XX.XX SIP/2.0
Via: SIP/2.0/UDP 81.88.86.65:5060;branch=z9hG4bK1cf7.16247c44.0;cid=2
Max-Forwards: 67
Contact: <sip:81.88.86.65>
To: <sip:mikoteam@93.188.XX.XX>
From: "79260577653"<sip:79260577653@mangosip.ru>;tag=5e1a5a28
Call-ID: JUm-E_ISk4DPaL8Npv2Hlw..
CSeq: 1 INVITE
Allow: INVITE, ACK, CANCEL, OPTIONS, BYE, UPDATE, UPDATE, INFO, REFER, MESSAGE
Content-Type: application/sdp
Supported: replaces
User-Agent: Softswitch3
x-roistat-phone: 84996382584
Content-Length: 351

Корректного DID нет ни в INVITE, ни в поле To, но при этом появился новый заголовок «x-roistat-phone».

[SIP-1622040384-incoming-custom]
exten => _[0-9*#+a-zA-Z][0-9*#+a-zA-Z]!,1,NoOp(------)
	same => n,Set(toNum=${PJSIP_HEADER(read,x-roistat-phone)})
	same => n,ExecIf($["${toNum}x" != "x" && "${toNum}" != "${EXTEN}"]?Goto(${CUT(CONTEXT,,1-3)},${toNum},1))
	same => n,return
  1. функция «PJSIP_HEADER» считывает значение заголовка «x-roistat-phone»

  2. Goto перемещает канал в начало, для повторной инициализации маршрута

Манго офис

Получение номера, на который позвонил клиент из поля «Diversion»:

[SIP-1622040384-incoming-custom]
exten => _[0-9*#+a-zA-Z][0-9*#+a-zA-Z]!,1,NoOp(------)
	same => n,Set(tmpDiversion=${PJSIP_HEADER(read,Diversion)})
	same => n,ExecIf($["x${tmpDiversion}" != "x"]?Set(toNum=${CUT(CUT(tmpDiversion,>,1),:,2)}))
	same => n,ExecIf($["${toNum}x" != "x" && "${toNum}" != "${EXTEN}"]?Goto(${CUT(CONTEXT,,1-3)},${toNum},1))
	same => n,return
	

Более универсальный вариант:

[add-trim-prefix-clid-custom]
exten => _[0-9*#+a-zA-Z][0-9*#+a-zA-Z]!,1,NoOp(------)
	same => n,Set(tmpDiversion=${PJSIP_HEADER(read,Diversion)})
	same => n,ExecIf($["x${tmpDiversion}" != "x"]?Set(toNum=${CUT(CUT(tmpDiversion,@,1),:,2)}))
	same => n,ExecIf($["${toNum}x" != "x" && "${toNum}" != "${EXTEN}"]?Goto(${contextID},${toNum},1))
	same => n,return

Novafon (zadarma)

Получение номера, на который позвонил клиент из заголовка «CALLED_DID»:

[SIP-1622040384-incoming-custom]
exten => _[0-9*#+a-zA-Z][0-9*#+a-zA-Z]!,1,NoOp(------)
	same => n,Set(toNum=${PJSIP_HEADER(read,CALLED_DID)})
	same => n,ExecIf($["${toNum}x" != "x" && "${toNum}" != "${EXTEN}"]?Goto(${CUT(CONTEXT,,1-3)},${toNum},1))
	same => n,return

В этом случае в строке «INVITE» описывается логин учетной записи, в вот DID уже описывается в заголовке «». Для корректной настройки достаточно в разделе добавить в конец файла «extensions.conf» следующие строки:

Для корректной настройки достаточно в разделе добавить в конец файла «extensions.conf» следующие строки:

Провайдер телефонии
DID номер
приложение Sngrep
Кастомизация системных файлов
Кастомизация системных файлов
Код для решения проблемы