Перейти к основному содержимому
Версия: 4.11-refactoring

Пуш-уведомления через iSMG

iSMG (iSimple Message Gate) — корпоративный агрегатор уведомлений. Вместо прямого обращения к провайдерам APNs, FCM и HCM платформа публикует клиентские пуши в брокер сообщений, а дальнейшую доставку выполняет шлюз на стороне заказчика.

к сведению

Настройка iSMG выполняется инженером развёртывания в конфигурационном файле сервера config.yaml. В веб-интерфейсе настройки iSMG нет.

Когда использовать

Вариант для развёртываний, где у заказчика действует собственный шлюз уведомлений и СМС: клиентские пуш-уведомления уходят в корпоративный агрегатор, а он доставляет их дальше по своей инфраструктуре — вместо прямых провайдеров APNs, FCM и HCM.

Какой трафик переключается

После включения iSMG клиентские пуши «новое сообщение в чате» публикуются в брокер сообщений. При этом работает гибридный режим — остальная доставка не переключается:

  • операторские пуши (в приложение операторов) продолжают доставляться напрямую через FCM и HCM;
  • напоминания о непрочитанных сообщениях, офлайн-напоминания и пуши оценки также доставляются напрямую — их настройка остаётся в карточках каналов.

iSMG забирает только событие «новое сообщение в чате».

Настройка

Подключение к брокеру

КлючОписание
enabledВключает отправку пушей через iSMG
typeТип брокера: rabbitmq, kafka или artemis
urlRabbitMQ и Artemis: адрес брокера AMQP
exchangeRabbitMQ и Artemis: точка обмена
queueRabbitMQ и Artemis: очередь
routing_keyRabbitMQ и Artemis: ключ маршрутизации; необязателен — по умолчанию совпадает с именем очереди
brokersKafka: список адресов брокеров
destinationKafka: имя топика

Параметры пуша

КлючОписание
system_idИдентификатор системы в сообщении для брокера; по умолчанию iqchannels
src_integration_idИдентификатор интеграции-источника в сообщении для брокера; по умолчанию iqchannels
push_textТекст пуша; по умолчанию «Поступило новое сообщение в чате»
push_titleЗаголовок пуша; по умолчанию «Новое сообщение»; пустой — не отправляется
validity_timeoutВремя жизни пуша в секундах; если не задан, поле не передаётся

Пример конфигурации

RabbitMQ:

ismg:
enabled: true
type: rabbitmq # rabbitmq | kafka | artemis
url: amqp://user:pass@localhost:5672/
exchange: router-exchange # точка обмена
queue: router-queue # очередь
routing_key: iqchannels.push
system_id: iqchannels
src_integration_id: iqchannels
push_text: "Поступило новое сообщение в чате"
push_title: "Новое сообщение"
validity_timeout: 86400 # время жизни, секунды

Kafka — вместо url, exchange, queue и routing_key задаются brokers и destination:

ismg:
enabled: true
type: kafka
brokers: [kafka-1:9092, kafka-2:9092]
destination: iqchannels-push

Адресация получателя

Шлюз iSMG определяет адресата по данным клиента — в порядке приоритета:

  1. Если у клиента задан логин CRM, он передаётся как userId; при наличии у клиента телефона он дополнительно передаётся как адрес СМС.
  2. Иначе, если у клиента есть телефон, сообщение адресуется как СМС.
  3. Иначе используется первый активный пуш-токен клиента в канале: токен APNs передаётся с типом APNS, токены FCM и HCM — с типом FIREBASE_ANDROID; отдельного типа для Huawei в контракте нет.

Особенности поведения

Что учитывать
  • Текст пуша всегда берётся из push_text конфигурации — индивидуальный текст сообщения клиента не передаётся.
  • Если клиент находится в чате в момент события, пуш не отправляется.
  • При недоступности брокера конкретный пуш теряется без повторной отправки; соединение восстанавливается при следующем сообщении. Это нормальный режим — дубли сообщений не возникают.

Доставка на устройство

Доставку на устройство выполняет сам шлюз iSMG на стороне заказчика: система только публикует сообщение в брокер.

Связанные задачи