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

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

Материал из Платформа Эра. Документации
Нет описания правки
Нет описания правки
 
Строка 66: Строка 66:
5. Настроить систему для осуществления входящих и исходящих звонков используя учетную запись без регистрации.
5. Настроить систему для осуществления входящих и исходящих звонков используя учетную запись без регистрации.


При необходимости или для удобства можно использовать второй экземпляр системы (''например, облачный сервер test.era-platform.ru. Порт 9061).'' Использовать специальную учетную запись без регистрации.
При необходимости или для удобства можно использовать второй экземпляр системы (''например, облачный сервер test.era-platform.ru. Порт 9061).'' Использовать специальную учетную запись без регистрации.<span id="переводы"></span>
 
 
 
Задание 4.2. Переводы
 
<span id="переводы"></span>
=== Переводы ===
=== Переводы ===


Строка 93: Строка 87:
''Что получилось, а что не получилось, и почему?''
''Что получилось, а что не получилось, и почему?''


Задание 4.3. Пограничный медиа-шлюз
== Пограничный медиа-шлюз ==
 
<span id="пограничный-медиа-шлюз-bgmg.-запрет-отправки-re-invite-провайдеру."></span>
<span id="пограничный-медиа-шлюз-bgmg.-запрет-отправки-re-invite-провайдеру."></span>
=== Пограничный медиа-шлюз BGMG.<br />
=== Пограничный медиа-шлюз BGMG.<br />
Строка 130: Строка 123:


''Существует еще несколько кейсов, требующих использования пограничного медиашлюза. Какие?''
''Существует еще несколько кейсов, требующих использования пограничного медиашлюза. Какие?''
Задание 4.4*. Произвольные входящие
<span id="обработка-произвольного-вызова"></span>
=== Обработка произвольного вызова ===
=== Обработка произвольного вызова ===


Строка 146: Строка 135:


'''Рекомендация'''<br />
'''Рекомендация'''<br />
Поскольку приоритета среди учетных записей всех доменов не существует, развести учетные записи по разным SIP-портам.
Поскольку приоритета среди учетных записей всех доменов не существует, развести учетные записи по разным SIP-портам.<span id="подмена-адресов-с-помощью-sip-alg"></span>
 
 
 
Задание 4.5**. SIP-ALG
 
<span id="подмена-адресов-с-помощью-sip-alg"></span>
=== Подмена адресов с помощью SIP-ALG ===
=== Подмена адресов с помощью SIP-ALG ===


Строка 163: Строка 146:
Иногда SIP-ALG может быть активирован на раутере, обеспечивающем NAT. Этот вариант является альтернативным.
Иногда SIP-ALG может быть активирован на раутере, обеспечивающем NAT. Этот вариант является альтернативным.


Невозможно обойтись без SIP-ALG при настройке сервера за NAT''. Почему?''
Невозможно обойтись без SIP-ALG при настройке сервера за NAT''. Почему?''<span id="вызов-от-провайдера-с-передачей-набранного-номера-и-номера-абонента"></span>
 
Задание 4.6*. Приведение номеров
 
<span id="вызов-от-провайдера-с-передачей-набранного-номера-и-номера-абонента"></span>
=== Вызов от провайдера с передачей набранного номера и номера абонента ===
=== Вызов от провайдера с передачей набранного номера и номера абонента ===



Текущая версия от 10:39, 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). Использовать специальную учетную запись без регистрации.

Переводы

В ходе выполнения задания будет освоен основной принцип обработки команды на перевод (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.    

Что получилось, а что не получилось, и почему?

Пограничный медиа-шлюз

=== Пограничный медиа-шлюз 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 автоматически, но может быть отключено в конфигурации.

Существует еще несколько кейсов, требующих использования пограничного медиашлюза. Какие?

Обработка произвольного вызова

По результатам выполнения задания на стенде будет обрабатываться любой входящий INVITE (на определенный порт) через определенную учетную запись провайдера безотносительно того, какие значения указаны в заголовках From и To.

1. Создать дополнительную учетную запись второго провайдера "provider2". 

2. ⁠Настроить систему так, чтобы 

  • вызовы на "00000" приходили через учетную запись ранее настроенного провайдера без регистрации на сценарий IVR 1 с воспроизведением файла А.
  • произвольные другие вызовы с любых направлений приходили на другую учетную запись без регистрации в другой сценарий IVR 2 с воспроизведением файла Б.

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

Подмена адресов с помощью SIP-ALG

Сервер работает за NAT с прямым пробросом всех портов (например, виртуальный сервер в яндекс-облаке не имеет внешнего интерфейса, но имеет внешний адрес).

⁠Настроить систему для совершения входящих и исходящих вызовов в этих условиях.

Для создания тестовой среды требуется либо глубокая настройка сети и роутера, либо аренда соответствующего сервера в облаке.

Иногда SIP-ALG может быть активирован на раутере, обеспечивающем NAT. Этот вариант является альтернативным.

Невозможно обойтись без SIP-ALG при настройке сервера за NAT. Почему?

Вызов от провайдера с передачей набранного номера и номера абонента

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

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. Отключите/включите учетную запись провайдера, получите трап об изменении состояния.