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

Настройка iSMG-интеграции для push-уведомлений

Руководство по настройке маршрутизации push-уведомлений клиентам через iSimple Message Gate (iSMG).


Назначение

При включении iSMG-интеграции push-уведомления о новых сообщениях от операторов доставляются клиентам не напрямую через APNs/FCM/HCM, а через брокер сообщений в iSMG. Это позволяет iSMG самостоятельно управлять доставкой: выбирать канал (push, SMS, email), использовать fallback-маршруты и вести собственный журнал.


Предварительные требования

  • Брокер сообщений (RabbitMQ, Kafka или Artemis) развёрнут и доступен с сервера iQChannels
  • iSMG настроен на стороне банка и подключён к тому же брокеру
  • Банк предоставил параметры подключения к брокеру (URL, exchange, очередь)

Настройка

Все параметры задаются в config.yaml в секции ismg.

RabbitMQ

ismg:
enabled: true
type: rabbitmq
url: amqp://user:password@mq-bank.internal:5672/
exchange: router-exchange
queue: router-queue
# routing_key: iqchannels.push # опционально; если не задан, используется значение queue
system_id: iqchannels
src_integration_id: iqchannels
push_title: "Новое сообщение"
push_text: "Поступило новое сообщение в чате"
# validity_timeout: 86400 # TTL в секундах; если не задан, используется TTL из настроек iSMG

Kafka

ismg:
enabled: true
type: kafka
brokers:
- kafka-bank.internal:9092
destination: ismg-push
system_id: iqchannels
src_integration_id: iqchannels
push_title: "Новое сообщение"
push_text: "Поступило новое сообщение в чате"
# validity_timeout: 86400

Artemis (AMQP 1.0)

ismg:
enabled: true
type: artemis
url: amqp://user:password@artemis-bank.internal:5672
queue: ismg-push
system_id: iqchannels
src_integration_id: iqchannels
push_title: "Новое сообщение"
push_text: "Поступило новое сообщение в чате"
# validity_timeout: 86400

Справочник параметров

ПараметрТипПо умолчаниюОписание
enabledboolfalseВключить маршрутизацию через iSMG
typestringТип брокера: rabbitmq, kafka, artemis
urlstringURL подключения (RabbitMQ/Artemis): amqp://user:pass@host:5672/
exchangestringrouter-exchangeExchange RabbitMQ для публикации
queuestringrouter-queueОчередь / routing key (RabbitMQ); очередь назначения (Artemis)
routing_keystringзначение queueRouting key RabbitMQ, если отличается от имени очереди (опционально)
brokerslistАдреса брокеров Kafka: - host:9092
destinationstringИмя топика Kafka
system_idstringiqchannelsЗначение поля systemId в payload iSMG
src_integration_idstringiqchannelsЗначение поля srcIntegrationId в payload iSMG
push_titlestringНовое сообщениеЗаголовок уведомления (опционально; не передаётся, если пустой)
push_textstringПоступило новое сообщение в чатеТекст уведомления
validity_timeoutintне заданTTL сообщения в секундах; если не задан, используется TTL из настроек iSMG

Что изменяется при включении

Новые сообщения от операторов в чатах клиентов перестают отправляться через APNs/FCM/HCM напрямую и вместо этого публикуются в брокер в формате iSMG.

Сообщение отправляется только если клиент не находится в активном чате в момент доставки. Если клиент открыл чат, push не публикуется. Статус активности клиента считается устаревшим через 5 минут после последнего обновления — в этом случае push отправляется.

В сообщение включаются (по наличию):

  • userIdCRMClientUsername клиента
  • address.SMS — номер телефона (если есть username, используется как резервный канал; если username нет — основной идентификатор)
  • address.APNS / address.FIREBASE_ANDROID — push-токен (только если нет ни username, ни телефона)

Что НЕ изменяется при включении

Следующие push-уведомления продолжают отправляться через APNs/FCM/HCM как прежде:

ТипОписание
РейтингиPush с запросом оценки при закрытии обращения
Непрочитанные при выходеCatch-up push при переходе клиента в статус offline
Уведомления операторамPush о новых обращениях, назначениях и сообщениях клиентов в мобильном приложении оператора

Конфигурацию APNs/FCM/HCM в настройках канала удалять не нужно — токены продолжают регистрироваться и используются для перечисленных выше типов уведомлений.


Проверка работы

После перезапуска сервера с новым конфигом убедитесь в следующем:

Успешное подключение к брокеру

В логах при старте должна появиться строка:

[ISMG] broker connected type=rabbitmq

Если подключение не удалось при старте (брокер недоступен), сервис запустится в режиме отложенного подключения и попробует соединиться при первом сообщении:

[ISMG] failed to connect to broker on startup, will retry on first publish: ...

Отправка push при новом сообщении оператора

[ISMG] publishing push, clientId=X, chatId=Y, messageId=Z
[ISMG] push published, clientId=X, chatId=Y, messageId=Z

Push пропущен — клиент в чате

[ISMG] client is in chat: skipping push, clientId=X, chatId=Y

Ошибка публикации

[ISMG] failed to publish push, clientId=X chatId=Y err=...

При ошибке публикации соединение с брокером сбрасывается и будет восстановлено при следующем сообщении. Push за текущее сообщение теряется (в лог пишется ошибка).


Откат

Для отключения iSMG-интеграции установите enabled: false и перезапустите сервер:

ismg:
enabled: false

После этого push-уведомления клиентам снова будут отправляться напрямую через APNs/FCM/HCM в соответствии с настройками канала.