Пуш-уведомления через 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 |
url | RabbitMQ и Artemis: адрес брокера AMQP |
exchange | RabbitMQ и Artemis: точка обмена |
queue | RabbitMQ и Artemis: очередь |
routing_key | RabbitMQ и Artemis: ключ маршрутизации; необязателен — по умолчанию совпадает с именем очереди |
brokers | Kafka: список адресов брокеров |
destination | Kafka: имя топика |
Параметры пуша
| Ключ | Описание |
|---|---|
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 определяет адресата по данным клиента — в порядке приоритета:
- Если у клиента задан логин CRM, он передаётся как
userId; при наличии у клиента телефона он дополнительно передаётся как адрес СМС. - Иначе, если у клиента есть телефон, сообщение адресуется как СМС.
- Иначе используется первый активный пуш-токен клиента в канале: токен APNs передаётся с типом
APNS, токены FCM и HCM — с типомFIREBASE_ANDROID; отдельного типа для Huawei в контракте нет.
Особенности поведения
- Текст пуша всегда берётся из
push_textконфигурации — индивидуальный текст сообщения клиента не передаётся. - Если клиент находится в чате в момент события, пуш не отправляется.
- При недоступности брокера конкретный пуш теряется без повторной отправки; соединение восстанавливается при следующем сообщении. Это нормальный режим — дубли сообщений не возникают.
Доставка на устройство
Доставку на устройство выполняет сам шлюз iSMG на стороне заказчика: система только публикует сообщение в брокер.