Настройка 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
Справочник параметров
| Параметр | Тип | По умолчанию | Описание |
|---|---|---|---|
enabled | bool | false | Включить маршрутизацию через iSMG |
type | string | — | Тип брокера: rabbitmq, kafka, artemis |
url | string | — | URL подключения (RabbitMQ/Artemis): amqp://user:pass@host:5672/ |
exchange | string | router-exchange | Exchange RabbitMQ для публикации |
queue | string | router-queue | Очередь / routing key (RabbitMQ); очередь назначения (Artemis) |
routing_key | string | значение queue | Routing key RabbitMQ, если отличается от имени очереди (опционально) |
brokers | list | — | Адреса брокеров Kafka: - host:9092 |
destination | string | — | Имя топика Kafka |
system_id | string | iqchannels | Значение поля systemId в payload iSMG |
src_integration_id | string | iqchannels | Значение поля srcIntegrationId в payload iSMG |
push_title | string | Новое сообщение | Заголовок уведомления (опционально; не передаётся, если пустой) |
push_text | string | Поступило новое сообщение в чате | Текст уведомления |
validity_timeout | int | не задан | TTL сообщения в секундах; если не задан, используется TTL из настроек iSMG |
Что изменяется при включении
Новые сообщения от операторов в чатах клиентов перестают отправляться через APNs/FCM/HCM напрямую и вместо этого публикуются в брокер в формате iSMG.
Сообщение отправляется только если клиент не находится в активном чате в момент доставки. Если клиент открыл чат, push не публикуется. Статус активности клиента считается устаревшим через 5 минут после последнего обновления — в этом случае push отправляется.
В сообщение включаются (по наличию):
userId—CRMClientUsernameклиента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 в соответствии с настройками канала.