Теоретические вопросы для разбора:
- Место и назначение провайдеров в процессах приема и обработки звонков.
- Сходства и отличия провайдеров различной природы: операторы связи, VoIP-шлюзы, SBC-контроллеры, сторонние IP-АТС, Эра в соседнем домене, отдельный экземпляр Эры и т.д.
- Провайдеры с регистрацией и без нее. Местные провайдеры со своими VLAN в дата-центрах.
- Способы определения оптимального периода перерегистрации.
- Последствия превышения количества транков.
- Домен и outbound proxy, несколько альтернативных адресов.
- Назначение и режимы проверки доступности (пингов).
- Принцип работы пограничного медиа-шлюза.
- Транслитерация.
- Способы мониторинга провайдеров: приложение, API, SNMP и т.д.
- Служебный сценарий с отправкой администратору уведомления о недоступности провайдера.
- Внешние средства сбора статистики о загруженности транков по провайдерам.
- Эра, провайдеры и NAT: варианты взаимного расположения и возникающие проблемы.
- Способы подключения к провайдеру по H.323.
- Принцип распределения провайдеров по ролям ESG.
- Принцип определения целевого домена и провайдера при входящем звонке на SIP-порт ESG.
- Стыковка внутреннего и внешнего (провайдерского) номерных планов.
- Использование разных провайдеров для городских и мобильных звонков, резервирование провайдеров.
- Отладка звонков: тестирование, SIP-диаграммы, логи.
После выполнения заданий темы будет получен опыт настройки учетных записей провайдера в различных базовых кейсах.
Задание 4.1. Саморегистрация
Саморегистрация
В ходе задания будет создан эмулятор подключения к провайдеру - в одном домене учетная запись провайдера и регистрация на учетной записи пользователя этого же или другого домена, либо в качестве пользователя другого экземпляра системы. После выполнения задания система будет готова к дальнейшей настройке внешних вызовов. Будет обретен навык базовой настройки учетной записи провайдера и отладки подключения и вызовов.
1. Зарегистрируйте систему на самой себе
- Настроить несколько внутренних учетных записей (номера 101, 102, 103), и зарегистрировать устройства (возможно софтфоны на разных вкладках).
- Настроить учетную запись внутреннего пользователя (номер: 00000, логин: provider).
- Создать провайдера, подключающегося к системе снизу на собственный порт SG (5060, если иное не настроено в конфигурации) под учетной записью пользователя "provider".
Справка. /entities/uc/provider.html
- Настроить маршрутизацию для внутренних звонков, для звонка через провайдера через префикс "9".
- Добавить правило маршрутизации на номер "555*" и отправить на фичакод. Создать фичакод "555" и отправить его в сценарий IVR "test".
- Совершаемый внутренний вызов на пользователя "00000" отправляется вниз, но в силу саморегистрации попадает в систему сверху в качестве входящего от провайдера.
2. Просмотреть статус регистрации
- Авторизоваться в домен под учеткой администратора. Открыть приложение Настройки -> Раздел Мониторинг -> Провайдеры.
Состояние после успешной регистрации должно быть OK (registered).
- Проанализировать пакеты в лог-журнале микросервиса esg1. Файл /opt/era*/log/esg1@.../sip/trn_*.log.
3. Сэмулировать входящий вызов от провайдера
- Привести этот вызов на абонента так, чтобы в качестве номера был подставлен "1234567".
- Привести этот вызов на сценарий IVR; после донабора номера перевести вызов на указанного внутреннего абонента от номера "1234567".
Рекомендации:
- Стоит сходить в лог-журнал микросервиса esg1. Там будут пакеты протокола SIP как с внутренними сервисами, так и с провайдером. Обратите внимание на запросы INVITE, ответы на них и заголовки Reason в случае неудачи (код ответа отличается от 2xx).
- Необходимо донастроить правила нормализации (provider_callerid), чтобы решить поставленные задачи a) и b).
4. Осуществить исходящий вызов на провайдера с учетной записи 101.
- Набирая номер 9102 попасть на второй телефон, ответить. 9103 - на третий телефон.
- Поставить вызов на удержание. Что слышно во время удержания? Почему?
5. Настроить систему для осуществления входящих и исходящих звонков используя учетную запись без регистрации.
При необходимости или для удобства можно использовать второй экземпляр системы (например, облачный сервер test.era-platform.ru. Порт 9061). Использовать специальную учетную запись без регистрации.
Задание 4.2. Переводы
Переводы
В ходе выполнения задания будет освоен основной принцип обработки команды на перевод (SIP-запроса REFER), поступающего как из внутреннего номерного плана (перевод внешнего вызова внутри), так и из внешнего номерного плана (перевод вызова абонентом PSTN).
1. Создать и зарегистрировать учетную запись провайдера в домене pbx на учетную запись пользователя в домене d2.
Справка. /entities/uc/provider.html
Справка. /entities/uc/sipuser.html
2. Создать при необходимости в домене d2 пару учетных записей с номерами 201, 202. Зарегистрировать устройства. Проверить взаимные вызовы.
3. Настроить маршрутизацию таким образом, чтобы звонок со 101 приходил на 201 используя внешнее подключение (не междоменный, а через учетную запись провайдера).
- Перевести вызов с 201 на 202.
- Перевести вызов со 101 на 102.
- Перевести вызов со 102 на 201.
Что получилось, а что не получилось, и почему?
Задание 4.3. Пограничный медиа-шлюз
=== Пограничный медиа-шлюз BGMG.
Запрет отправки re-INVITE провайдеру. ===
После выполнения задания будет получен опыт использования пограничного медиашлюза и настройки учетной записи провайдера соответствующим образом.
Во время внутреннего перевода создается новое плечо, с новым медиа-контекстом. Меняются порты и возможно IP-адреса.
Замыкание потоков трафика нужно изменить.
Для решения проблемы провайдера (например, "билайн"), не обрабатывающего реинвайты, а следовательно не позволяющего сделать переводы в режиме по умолчанию, необходимо обеспечить локальную обработку медиа-трафика, чтобы не отправлять реинвайт провайдеру.
Произведите следующие действия:
1. Добавить микросервис с ролью bgmg.
Справка. /configuration/roles/bgmg.html
2. Отключить режим отправки реинвайтов провайдеру.
Справка. /entities/uc/provider.html#reinvite
3. Запустить tshark на сервере или wireshark если на локальной пользовательской машине с фильтром по SIP-порту esg.
4. Совершить входящий вызов.
5. Привести его на IVR, воспроизвести звук, донабрать внутренний номер, перевести из сценария на внутреннего пользователя.
6. Убедиться что звук был как в сценарии, так и в разговоре с пользователем.
7. Взглянуть в трассировку SIP-сигнализации в плече провайдера. Должен быть один инвайт, один 200 OK, один ACK, и по завершении разговора BYE и 200 OK.
Пограничный медиашлюз в некоторых случаях может быть полезен и для внутренних вызовов, его использование происходит в этом случае на SG автоматически, но может быть отключено в конфигурации.
Существует еще несколько кейсов, требующих использования пограничного медиашлюза. Какие?
Задание 4.4*. Произвольные входящие
Обработка произвольного вызова
По результатам выполнения задания на стенде будет обрабатываться любой входящий INVITE (на определенный порт) через определенную учетную запись провайдера безотносительно того, какие значения указаны в заголовках From и To.
1. Создать дополнительную учетную запись второго провайдера "provider2".
2. Настроить систему так, чтобы
- вызовы на "00000" приходили через учетную запись ранее настроенного провайдера без регистрации на сценарий IVR 1 с воспроизведением файла А.
- произвольные другие вызовы с любых направлений приходили на другую учетную запись без регистрации в другой сценарий IVR 2 с воспроизведением файла Б.
Рекомендация
Поскольку приоритета среди учетных записей всех доменов не существует, развести учетные записи по разным SIP-портам.
Задание 4.5**. SIP-ALG
Подмена адресов с помощью SIP-ALG
Сервер работает за NAT с прямым пробросом всех портов (например, виртуальный сервер в яндекс-облаке не имеет внешнего интерфейса, но имеет внешний адрес).
Настроить систему для совершения входящих и исходящих вызовов в этих условиях.
Для создания тестовой среды требуется либо глубокая настройка сети и роутера, либо аренда соответствующего сервера в облаке.
Иногда SIP-ALG может быть активирован на раутере, обеспечивающем NAT. Этот вариант является альтернативным.
Невозможно обойтись без SIP-ALG при настройке сервера за NAT. Почему?
Задание 4.6*. Приведение номеров
Вызов от провайдера с передачей набранного номера и номера абонента
В ходе выполнения задания будет получен опыт настройки подключения к провайдеру, сохраняющего набранный абонентом номер для дальнейшего использования при маршрутизации внутри системы. Например, когда провайдер предоставляет несколько номеров в рамках подключения, и необходимо обслуживать их по разным сценариям.
1. Настроить связь с провайдером.
Если живая учетная запись провайдера отсутствует, то можно настроить в облако эры test.era-platform.ru, порт 9061. Использовать специальную учетную запись с пробросом extension и маршрутизацией на "internalpbx".
2. Осуществить входящий вызов.
3. Проанализировать пакеты в лог журнале микросервиса esg1. Файл /opt/era*/log/esg1@.../sip/trn_*.log. Обратить внимание на запрос INVITE, ответ на него и заголовок Reason.
4. Донастроить учетную запись провайдера, чтобы вызов проходил дальше в маршрутизацию.
Используйте рекомендации в статье /articles/providers.html#incoming
5. Правилами нормализации (подмена внешних номеров) привести набираемый номер и номер инициатора к значениям, имеющим целевое значение в правилах маршрутизации.
- Например, поменяем набираемый номер инициатора на номер "555*", таким образом имеющиеся общие правила маршрутизации отработают в сценарий "test", а в сценарии в выражениях будет доступна функция, возвращающая набранный номер — выведите его в уведомление.
- Правило нормализации удалить, входящему от провайдера вызову позволить пройти в неизменном виде до правил маршрутизации, и создать специальное правило маршрутизации для вызова с провайдера, пришедшее на любой номер "*". С помощью модификатора номера назначения изменить его на "555*" и направить на фичакод.
- Построить для обоих случаев трассировку маршрута и посмотреть как отрабатывались правила маршрутизации.
Правило нормализации может быть также настроено на использование служебного сценария, получающего на вход ряд значений, и предоставляющего на выход сразу to_username, from_username, from_displayname.
Задание 4.7. Резервирование подключения
Резервирование подключения к провайдеру
В ходе выполнения задания будут получены базовые представления об основных способах резервирования подключения к провайдеру.
1. Настроить резервирование подключения к провайдеру:
- Альтернативные серверы outbound proxy.
2. Настроить резервирование микросервиса, обслуживающего учетную запись:
- вариант с дублирующей учетной записью;
- вариант с перетеканием на другой экземпляр esg (любой, конкретный).
3. Настроить резервирование учетной записи без регистрации.
Устройство провайдера должно поддерживать перебор клиентских узлов по неответу и ответу 503.
4. Настройте две альтернативных учетных записи к провайдерам, чтобы вызов происходил через любую из них.
Задание 4.8. Мониторинг состояния
Мониторинг состояния
Лучшая проверка работоспособности - успешное совершение вызова. При выполнении задания будет получено представление о том, как отслеживать состояние учетной записи.
1. Авторизуйтесь в домен провайдера. Приложение Настройки -> Мониторинг -> Провайдеры -> Состояния.
Выключите/включите учетную запись провайдера. Заметьте, какое время требуется системе чтобы отработать изменения.
API endpoint в домене провайдера: /api/monitor/v1/esg/active
Обратите внимание на последний ответ на регистрационный запрос.
Смена состояния учетной записи отражается в SNMP трапах. Это может быть полезно для дальнейшей автоматизации.
2. Найдите и скачайте лог-журнал экземпляра ESG, обслуживающего учетную запись провайдера. Обнаружьте в нем пакеты регистрации, а также вызовы через исследуемую учетную запись.
Задание 4.9*. SNMP-трап
Любая смена состояния любой учетной записи любого домена отражается в SNMP-трапе. В ходе выполнения задания будет обретен опыт получения и отслеживания соответствующего трапа.
1. Подключите мониторинг SNMP-трапов, либо запустите tshark/wireshark с фильтром по адресу назначения.
2. Необходимо настроить в мастер-домене отправку трапов
Справка. /entities/domain/setting.html#snmp_options
3. Отключите/включите учетную запись провайдера, получите трап об изменении состояния.