Открыть меню
Toggle preferences menu
Открыть персональное меню
Вы не представились системе
Your IP address will be publicly visible if you make any edits.

4. Провайдеры: различия между версиями

Материал из Платформа Эра. Документации
Нет описания правки
Нет описания правки
Строка 55: Строка 55:
# Привести этот вызов на абонента так, чтобы в качестве номера был подставлен "1234567".
# Привести этот вызов на абонента так, чтобы в качестве номера был подставлен "1234567".
# ⁠Привести этот вызов на сценарий IVR; после донабора номера перевести вызов на указанного внутреннего абонента от номера "1234567".
# ⁠Привести этот вызов на сценарий IVR; после донабора номера перевести вызов на указанного внутреннего абонента от номера "1234567".
 
<blockquote>'''''Рекомендации:'''''
'''''Рекомендации:'''''


* Стоит сходить в лог-журнал микросервиса ''esg1''. Там будут пакеты протокола SIP как с внутренними сервисами, так и с провайдером. Обратите внимание на запросы INVITE, ответы на них и заголовки Reason в случае неудачи ''(код ответа отличается от 2xx)''.
* Стоит сходить в лог-журнал микросервиса ''esg1''. Там будут пакеты протокола SIP как с внутренними сервисами, так и с провайдером. Обратите внимание на запросы INVITE, ответы на них и заголовки Reason в случае неудачи ''(код ответа отличается от 2xx)''.
* Необходимо ''донастроить'' правила нормализации (''provider_callerid''), чтобы решить поставленные задачи a) и b).
* Необходимо ''донастроить'' правила нормализации (''provider_callerid''), чтобы решить поставленные задачи a) и b).
 
</blockquote>4. Осуществить исходящий вызов на провайдера с учетной записи 101.
4. Осуществить исходящий вызов на провайдера с учетной записи 101.


* Набирая номер 9102 попасть на второй телефон, ответить. 9103 - на третий телефон.
* Набирая номер 9102 попасть на второй телефон, ответить. 9103 - на третий телефон.

Версия от 10:37, 11 декабря 2024

Теоретические вопросы для разбора:

  • Место и назначение провайдеров в процессах приема и обработки звонков.
  • Сходства и отличия провайдеров различной природы: операторы связи, 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. Сэмулировать входящий вызов от провайдера

  1. Привести этот вызов на абонента так, чтобы в качестве номера был подставлен "1234567".
  2. ⁠Привести этот вызов на сценарий 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. Отключите/включите учетную запись провайдера, получите трап об изменении состояния.