Налаштування відправлення push-повідомлень у застосунок "Дія"
1. Передумови
Для налаштування функції відправлення push-сповіщень користувачам у мобільний застосунок "Дія", користувач має спочатку підтвердити, тобто авторизувати канал зв’язку diia
за допомогою OTP-коду. Для підтвердження використовується окремий шаблон channel-confirmation, який адміністратор регламенту повинен змоделювати.
Також для того, щоб мати змогу отримувати повідомлення, користувач має активувати канал зв’язку "Дія" у профілі Кабінету отримувача послуг.
2. Налаштування регламенту
Базовий репозиторій розгортання регламенту registry-regulations розширено директорією business-process-notification-template, яка містить шаблон push-повідомлення, яке надсилатиметься користувачам у мобільний застосунок "Дія".
Адміністратор регламенту повинен змоделювати та додати шаблон формування push-повідомлення на рівні каналу зв’язку diia
до структури регламенту.
- Типовий шаблон push-повідомлень у застосунок "Дія" має наступну структуру:
Шаблон business-process-notification-template — це базовий шаблон у структурі регламенту для цього каналу зв’язку. Шаблонів може бути багато. Назва кожного шаблону в рамках одного каналу зв’язку має бути унікальною. |
- Шлях до шаблону виглядає наступним чином:
registry-regulations/notifications/diia/business-process-notification-template
- Директорія business-process-notification-template містить 2 файли:
-
-
notification.diia — це текстовий формат шаблону повідомлення з плейсхолдером для відображення даних із бізнес-процесу.
Приклад 1. Шаблон із плейсхолдером для відображення даних із бізнес-процесуПроцес: {processName} успішно виконано
{processName}
— плейсхолдер.-
notification.yml — Конфігураційний файл з метаданими шаблону.
Приклад 2. Конфігураційний файл з метаданими шаблонуtitle: "Процес успішно виконано" attributes: actionType: "message" templateType: "attention" shortText : "Процес успішно виконано"
- Обов’язкові атрибути:
-
-
title
— Заголовок повідомлення. Вкажіть будь-який текст за бажанням. -
actionType
— Тип дії.Необхідно вказати саме тип actionType: "message"
, інакше "Дія" не зможе приймати повідомлення. -
templateType
— Тип шаблону.Необхідно вказати саме тип templateType: "attention"
, інакше "Дія" не зможе приймати повідомлення. -
shortText
— Короткий зміст повідомлення. Вкажіть будь-який текст за бажанням.
-
-
При кожному додаванні шаблону до структури регламенту і застосуванні зміни, відбувається повторне розгортання регламенту, і новий шаблон публікується до сховища.
Кожний опублікований шаблон push-сповіщення для відправлення повідомлень користувачам у застосунок "Дія" повинен мати унікальну назву, яку надалі моделювальник бізнес-процесів зможе використовувати при моделюванні кроку відправлення push-повідомлення користувачу. |
3. Моделювання відправлення push-сповіщення у застосунок "Дія"
Розглядаються два основних сценарії моделювання відправлення повідомлень у межах моделювання бізнес-процесів:
3.1. Відправлення повідомлень одному користувачу
Після розгортання регламенту, і публікації шаблону push-сповіщення до сховища, моделювальник бізнес-процесів може використовувати унікальну назву шаблону у полі Notification message template
при моделюванні кроку відправлення push-повідомлення користувачу.
Для моделювання бізнес-процесу використовується типове розширення для задач на відправлення повідомлення (Send Task) — Send User Notification.
Розширення Send User Notification — делегат для відправлення повідомлень отримувачам послуг через налаштований канал зв’язку, з використанням заданого шаблону.
Перед налаштуванням шаблону в Сamunda Modeler переконайтеся, що папка із застосунком resources → element-templates містить sendUserNotification.json |
- Для того, щоб змоделювати відправлення повідомлення користувачу, виконайте наступні кроки:
-
-
Перейдіть до інтерфейсу моделювання бізнес-процесів.
-
Створіть Send Task.
-
На панелі налаштувань справа натисніть кнопку
Open Catalog
та оберіть шаблон (template) делегата — Send User Notification. Для підтвердження натиснітьApply
. -
Виконайте подальші налаштування:
-
У полі
Name
вкажіть назву задачі. Наприклад,Відправлення push-повідомлення користувачу
. -
У полі
Recipient
вкажіть унікальний ідентифікатор —<username>
отримувача повідомлення. Наприклад,${initiator().userName}
.У цьому випадку зазначено ім’я ініціатора процесу як реципієнта — ${initiator().userName}
. Також можна вписати, наприклад виконавця задачі, вказавши${completer('<taskDefinitionId>').userName}
, де<taskDefinitionId>
— ідентифікатор користувацької задачі. -
У полі
Subject
вкажіть текстову назву теми повідомлення. Наприклад,Push notification successfully generated
. -
У полі
Notification message template
вкажіть унікальну назву шаблону для формування тіла повідомлення, яка відповідає назві директорії наявного шаблону у регламенті (наприклад,business-process-notification-template
). -
У полі
Notification template model
вкажіть змінну, яка використовуватиметься для опрацювання шаблону —${templateModel}
.
-
-
Користувач зможе отримувати повідомлення у мобільний застосунок "Дія", якщо у профілі Кабінету отримувача послуг активовано відповідний канал зв’язку "Дія".
Перегляньте сторінку Отримання push-повідомлень з OTP-кодом у застосунку "Дія" для отримання деталей. |
3.2. Відправка повідомлень багатьом користувачам
Для відправлення повідомлень багатьом користувачам моделювання бізнес-процесу відбувається за аналогією з моделюванням бізнес-процесу відправки повідомлення одному користувачу, за виключенням використання функції мультиекземпляра (Multi Instance). Ця функція дозволяє виконати одночасне відправлення повідомлень усім зазначеним користувачам із масиву.
-
У полі
Collection
вкажіть масив користувачів, що отримані за атрибутами із сервісу Keycloak. У цьому випадку масив записаний до змінної${usersByAttributes}
, яку і вказуємо у полі.У нашому прикладі вказана змінна ${usersByAttributes}
, до якої попередньо збережений масив імен (username) користувачів у бізнес-процесі. Також імена отримувачів повідомлення можна задати простими константами через кому. Наприклад,username1,username2,username3
. -
У полі
Element Variable
зазначте локальну змінну екземпляра під заданим іменем.
Процес відправки повідомлення не блокує основний потік виконання бізнес-процесу та виконується асинхронно.
Детальніше ознайомитися з функцією Multi Instance ви можете за посиланням: |
3.3. Пов’язані делегати для отримання користувачів
З метою отримання списку користувачів (отримувачів послуг) для відправки їм повідомлень, доступне типове розширення для сервісних задач:
-
Делегат
getCitizenUsersByAttributesFromKeycloak
— використовується для пошуку користувачів Кабінету отримувачів послуг у Keycloak за їх атрибутами.
Детальну інформацію щодо налаштування делегата можна отримати за посиланням: |
4. Логування відправлення повідомлень у журналі аудиту
Події успішного, або неуспішного відправлення повідомлень користувачу у застосунок "Дія" логуються в журналі аудиту та зберігаються у базі даних audit
.
Ви можете самостійно переглянути фіксацію подій відправлення повідомлень у логах бази даних |
Фіксація події успішного відправлення повідомлення у БД audit
{
"result": "SUCCESS",
"notification": {
"channel": "diia",
"externalTemplateId": "71c7c3f638b1f5dcfae41ba7b5d4ea130b42ee6ac12323b11f900956d97ba071fbdb3f6a1a1d474682bae2e1813daaf603234cfb958a4e50242f0865fab90d90",
"templateName": "inbox-template-ubki",
"distributionId": "05e31e36ba74323f699cbf0174bb47f9daf1291e9d4dc6556ba3b261b7b94cd0880d3af14122872465cd03d8ba860f0ebbea89940b51e572b53f8d2f6230f469",
"recipient": {
"rnokpp": "1010101014",
"id": "auto-user-citizen",
"parameters": [
{
"key": "dateCredOpen",
"value": "inbox-template-ubki"
},
{
"key": "creditor",
"value": "inbox-template-ubki"
}
]
}
},
"delivery": {
"channel": "diia",
"status": "SUCCESS",
"failureReason": null
},
"action": "SEND_USER_NOTIFICATION",
"step": "AFTER"
}
-
Параметр
result
вказує на результат надсилання повідомлення. -
Параметр
channel
вказує, який канал зв’язку із користувачем використано. -
Параметр
templateName
вказує, який шаблон було використано для надсилання повідомлення. -
Атрибут
recipient
показує інформацію про отримувача повідомлення, а саме його ID та РНОКПП (ідентифікаційний номер). -
Атрибут
delivery
відображає статус доставлення за відповідним каналом зв’язку.
Фіксація події неуспішного відправлення повідомлення у БД audit
{
"result": "FAILURE",
"notification": {
"context": {
"system": "Low-code Platform",
"application": "ddm-bpm",
"businessProcess": "bpmn-send-inbox-with-form",
"businessProcessDefinitionId": "bpmn-send-inbox-with-form:2:1f54abab-65b2-11ed-8fda-0a580a822841",
"businessProcessInstanceId": "b84ceb8f-65b8-11ed-8fda-0a580a822841",
"businessActivity": "Activity_0l2g5sf",
"businessActivityInstanceId": "Activity_0l2g5sf:b84e9948-65b8-11ed-8fda-0a580a822841"
},
"notification": {
"title": null,
"templateName": "inbox-template-ubki111",
"ignoreChannelPreferences": false
},
"recipients": [
{
"id": "auto-user-citizen",
"channels": [
{
"channel": "diia",
"email": null,
"rnokpp": "1010101014"
},
{
"channel": "email",
"email": "auto1-user-citizen@inbucket.inbucket.svc.cluster.local",
"rnokpp": null
}
],
"parameters": {
"dateCredOpen": "inbox-template-ubki",
"creditor": "inbox-template-ubki"
}
}
]
},
"delivery": {
"channel": "diia",
"status": "FAILURE",
"failureReason": "Notification template inbox-template-ubki111 not found"
},
"action": "SEND_USER_NOTIFICATION",
"step": "AFTER"
}
-
Параметр
result
вказує на результат надсилання повідомлення. -
Параметр
context
надає деталі про бізнес-процес, в рамках якого змодельовано відправлення повідомлення, а також його складові. -
Параметр
templateName
вказує, який шаблон було використано для надсилання повідомлення. -
Масив
recipients
показує інформацію про отримувачів повідомлення, а також канали зв’язку. -
Атрибут
delivery
відображає статус доставлення за відповідним каналом зв’язку та причину помилки.