Платформа 3V/Согласование/Настройка уведомлений: различия между версиями
(не показано 5 промежуточных версий этого же участника) | |||
Строка 1: | Строка 1: | ||
− | В рамках процесса согласования есть возможность подключить рассылку уведомлений по e-mail при переходе | + | В рамках процесса согласования есть возможность подключить рассылку уведомлений по e-mail. Можно настроить разные типы уведомлений:<br> |
+ | # Основные уведомления - при переходе из одного состояния в другое (primary) | ||
+ | # При нарушении или приближении срока регламента (regulation) | ||
+ | # При изменении настроек запущенного экземпляра процесса (changes) | ||
+ | # Дополнительные уведомления (additional)<br><br> | ||
+ | <div class="toccolours mw-collapsible mw-collapsed" style="width:800px; overflow:auto;"> | ||
+ | <div style="font-weight:bold;line-height:1.6;">JSON-модель настройки уведомлений объекта согласования</div> | ||
+ | <div class="mw-collapsible-content mw-collapsed-content"> | ||
+ | <syntaxhighlight lang="JSON" line> | ||
+ | "notifications": { | ||
+ | "primary": {…}, | ||
+ | "additional": {…}, | ||
+ | "regulation": {…}, | ||
+ | "changes": {…} | ||
+ | } | ||
+ | </syntaxhighlight> | ||
+ | </div></div> | ||
− | + | Для организации рассылки необходимо настроить шаблон уведомлений и дополнительные настройки в разделе '''notifications''':: | |
− | + | <div class="toccolours mw-collapsible mw-collapsed" style="width:800px; overflow:auto;"> | |
− | + | <div style="font-weight:bold;line-height:1.6;">Пример JSON настройки основных уведомлений</div> | |
− | + | <div class="mw-collapsible-content mw-collapsed-content"> | |
− | + | <syntaxhighlight lang="JSON" line> | |
"notifications": { | "notifications": { | ||
− | "template": { | + | "primary": { |
− | + | "stateNotifications": [ | |
− | + | { | |
− | }, | + | "stateId": 1, |
− | "recipients": { | + | "template": { |
− | + | "title": "У вас новая задача!", | |
− | "discriminator": " | + | "body": "Вам поступило новое задание '%new_state%' по заявке [%param1.1%]>%param1.2%.<br><br>Комментарий: %comment% <br>" |
+ | }, | ||
+ | "recipients": { | ||
+ | "subjects": [ | ||
+ | { | ||
+ | "subjectId": "fmimk", | ||
+ | "discriminator": "FixedSubjectDescriptionModel" | ||
+ | } | ||
+ | ], | ||
+ | "discriminator": "SubjectNotificationsReceipientsModel" | ||
+ | } | ||
+ | } | ||
+ | ] | ||
+ | } | ||
+ | </syntaxhighlight> | ||
+ | </div></div> | ||
+ | |||
+ | '''!Важно:'''<br> | ||
+ | * Если требуется высылать уведомление при запуске процесса, то необходимо его добавить на первое (верхнее) состояние. Когда процесс запустится и совершится переход в первое состояние уведомление будет отправлено.<br> | ||
+ | * Можно настроить на одно и то же состояние несколько уведомлений.<br> | ||
+ | <div class="toccolours mw-collapsible mw-collapsed" style="width:800px; overflow:auto;"> | ||
+ | <div style="font-weight:bold;line-height:1.6;">Пример JSON настройки нескольких уведомлений на одно и то же состояние</div> | ||
+ | <div class="mw-collapsible-content mw-collapsed-content"> | ||
+ | <syntaxhighlight lang="JSON" line> | ||
+ | "notifications": { | ||
+ | "primary": { | ||
+ | "stateNotifications": [ | ||
+ | { | ||
+ | "stateId": 2, | ||
+ | "template": { | ||
+ | "title": "Default title", | ||
+ | "body": "Default body", | ||
+ | "localizedTitle": { | ||
+ | "defaultValue": "Default title", | ||
+ | "items": [ | ||
+ | { | ||
+ | "language": "ru", | ||
+ | "value": "Ru title" | ||
+ | }, | ||
+ | { | ||
+ | "language": "en", | ||
+ | "value": "En title" | ||
+ | } | ||
+ | ] | ||
+ | }, | ||
+ | "localizedBody": { | ||
+ | "defaultValue": "Default body", | ||
+ | "items": [ | ||
+ | { | ||
+ | "language": "ru", | ||
+ | "value": "Ru body" | ||
+ | }, | ||
+ | { | ||
+ | "language": "en", | ||
+ | "value": "En body" | ||
+ | } | ||
+ | ] | ||
+ | }, | ||
+ | "localizedShortMessage": { | ||
+ | "defaultValue": "Default short message", | ||
+ | "items": [ | ||
+ | { | ||
+ | "language": "ru", | ||
+ | "value": "Ru short message" | ||
+ | }, | ||
+ | { | ||
+ | "language": "en", | ||
+ | "value": "En short message" | ||
+ | } | ||
+ | ] | ||
+ | }, | ||
+ | "messageTypes": [ | ||
+ | "Email", | ||
+ | "Sms" | ||
+ | ] | ||
+ | }, | ||
+ | "recipients": { | ||
+ | "subjects": [ | ||
+ | { | ||
+ | "subjectId": "76b8102c-0528-46bc-a6a5-6007a35ffde3", | ||
+ | "discriminator": "FixedSubjectDescriptionModel" | ||
+ | } | ||
+ | ], | ||
+ | "discriminator": "SubjectNotificationsReceipientsModel" | ||
+ | } | ||
+ | }, | ||
+ | { | ||
+ | "stateId": 2, | ||
+ | "template": { | ||
+ | "title": "Тест уведомления для состояния 2 вариант 2", | ||
+ | "body": "Тест" | ||
+ | }, | ||
+ | "recipients": { | ||
+ | "subjects": [ | ||
+ | { | ||
+ | "subjectId": "76b8102c-0528-46bc-a6a5-6007a35ffde3", | ||
+ | "discriminator": "FixedSubjectDescriptionModel" | ||
+ | } | ||
+ | ], | ||
+ | "discriminator": "SubjectNotificationsReceipientsModel" | ||
+ | } | ||
+ | } | ||
+ | ] | ||
+ | } | ||
+ | } | ||
+ | </syntaxhighlight> | ||
+ | </div></div> | ||
+ | == Настройки уведомлений == | ||
+ | '''Каждый тип уведомлений содержит один и тот же перечень настроек''':<br> | ||
+ | '''title''' - дефолтный заголовок уведомления.<br> | ||
+ | '''body''' - дефолтный текст уведомления. <br> | ||
+ | '''localizedTitle''' - локализованный заголовок уведомления. <br> | ||
+ | '''localizedBody''' - локализованный текст уведомления. <br> | ||
+ | '''localizedShortMessage''' - локализованный текст короткого уведомления, текст смс-уведомлений. <br> | ||
+ | '''messageTypes''' - варианты уведомлений, которые будут отправляться. Можно задать значения: "Email", "Sms". <br> | ||
+ | О подстановках в заголовке и тексте уведомления можно узнать в описании ниже.<br> | ||
+ | '''recipients''' – настройки получателей уведомлений. Можно задать несколько получателей для уведомления. <br> | ||
+ | '''!Важно:''' если установить "recipients": null, то уведомления будут направляться всем пользователям, которые ответственны за шаги текущего состояния.<br> | ||
+ | Варианты настройки:<br> | ||
+ | * Через сторонний сервис<br> | ||
+ | <div class="toccolours mw-collapsible mw-collapsed" style="width:800px; overflow:auto;"> | ||
+ | <div style="font-weight:bold;line-height:1.6;">Пример JSON настройки</div> | ||
+ | <div class="mw-collapsible-content mw-collapsed-content"> | ||
+ | <syntaxhighlight lang="JSON" line> | ||
+ | "recipients": { | ||
+ | "uri": "https://apps.3v-cloud.com/assessment-and-adaptation/Assessments/WorkflowNotices", | ||
+ | "discriminator": "ExternalNotificationsRecipientsModel" | ||
+ | } | ||
+ | </syntaxhighlight> | ||
+ | </div></div> | ||
+ | |||
+ | * Фиксированное значение субъекта (роль, пользователь)<br> | ||
+ | Получатель-пользователь задаётся в виде уникального номера (guid):<br> | ||
+ | <div class="toccolours mw-collapsible mw-collapsed" style="width:800px; overflow:auto;"> | ||
+ | <div style="font-weight:bold;line-height:1.6;">Пример JSON настройки</div> | ||
+ | <div class="mw-collapsible-content mw-collapsed-content"> | ||
+ | <syntaxhighlight lang="JSON" line> | ||
+ | "recipients": { | ||
+ | "subjects": [ | ||
+ | { | ||
+ | "subjectId": "34c5a091-83b3-44d4-8616-561764a64d9b", | ||
+ | "discriminator": "FixedSubjectDescriptionModel" | ||
+ | } | ||
+ | ], | ||
+ | "discriminator": "SubjectNotificationsReceipientsModel" | ||
+ | } | ||
+ | </syntaxhighlight> | ||
+ | </div></div> | ||
+ | |||
+ | Получатель-роль задается в виде идентификатора роли:<br> | ||
+ | |||
+ | <div class="toccolours mw-collapsible mw-collapsed" style="width:800px; overflow:auto;"> | ||
+ | <div style="font-weight:bold;line-height:1.6;">Пример JSON настройки</div> | ||
+ | <div class="mw-collapsible-content mw-collapsed-content"> | ||
+ | <syntaxhighlight lang="JSON" line> | ||
+ | "recipients": { | ||
+ | "subjects": [ | ||
+ | { | ||
+ | "subjectId": "fmimk", | ||
+ | "discriminator": "FixedSubjectDescriptionModel" | ||
+ | } | ||
+ | ], | ||
+ | "discriminator": "SubjectNotificationsReceipientsModel" | ||
+ | } | ||
+ | } | ||
+ | </syntaxhighlight> | ||
+ | </div></div> | ||
+ | |||
+ | * Получить субъект из атрибута параметра объекта согласования<br> | ||
+ | <div class="toccolours mw-collapsible mw-collapsed" style="width:800px; overflow:auto;"> | ||
+ | <div style="font-weight:bold;line-height:1.6;">Пример JSON настройки</div> | ||
+ | <div class="mw-collapsible-content mw-collapsed-content"> | ||
+ | <syntaxhighlight lang="JSON" line> | ||
+ | "recipients": { | ||
+ | "subjects": [ | ||
+ | { | ||
+ | "parameterId": 1, | ||
+ | "attribute": { | ||
+ | "discriminator": "OwnAttributeDefinitionDto", | ||
+ | "id": 45 | ||
+ | }, | ||
+ | "discriminator": "ParameterAttributeSubjectDescriptionModel" | ||
+ | } | ||
+ | ], | ||
+ | "discriminator": "SubjectNotificationsReceipientsModel" | ||
+ | } | ||
+ | </syntaxhighlight> | ||
+ | </div></div> | ||
+ | |||
+ | * Получить субъект через формулу<br> | ||
+ | <div class="toccolours mw-collapsible mw-collapsed" style="width:800px; overflow:auto;"> | ||
+ | <div style="font-weight:bold;line-height:1.6;">Пример JSON настройки</div> | ||
+ | <div class="mw-collapsible-content mw-collapsed-content"> | ||
+ | <syntaxhighlight lang="JSON" line> | ||
+ | "subject": { | ||
+ | "formula": { | ||
+ | "expression": "[0]", | ||
+ | "operands": [ | ||
+ | { | ||
+ | "attributeId": "sid", | ||
+ | "discriminator": "TokenAttributeFormulaOperandDto", | ||
+ | "code": null, | ||
+ | "id": 0, | ||
+ | "name": null | ||
+ | } | ||
+ | ], | ||
+ | "code": null, | ||
+ | "id": 0, | ||
+ | "name": null | ||
+ | }, | ||
+ | "discriminator": "FormulaSubjectDescriptionModel" | ||
+ | }, | ||
+ | "type": "Allow" | ||
} | } | ||
− | |||
− | |||
</syntaxhighlight> | </syntaxhighlight> | ||
− | + | </div></div> | |
− | + | ||
+ | '''url''' - url стороннего сервис, который вернет получателей уведомлений. <br> | ||
− | + | '''forceWorkflowNotificationTemplate''': true/false - Возможность брать настройки уведомлений из самого объекта согласования, а не из того, что сохранено в процессе. True - настройки уведомлений при отправке будут браться из самого согласования (контейнера), False - из согласуемого процесса. <br> | |
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | == Настройки текста уведомления == | + | == Настройки заголовка и текста уведомления == |
В шаблоне письма имеется возможность добавить подстановки: | В шаблоне письма имеется возможность добавить подстановки: | ||
Строка 52: | Строка 265: | ||
| %param<ID>% || Заменяется на значение параметра с идентификатором ID. То есть, %param22% заменится на значение параметра с идентификатором 22 | | %param<ID>% || Заменяется на значение параметра с идентификатором ID. То есть, %param22% заменится на значение параметра с идентификатором 22 | ||
|- | |- | ||
− | | %param<ID>.<ATTRIBUTE_ID>% || Заменяется на значение атрибута с идентификатором ATTRIBUTE_ID тех элементов справочника, чьи идентификаторы указаны в качестве значения параметра с идентификатором ID. Например, если у параметра с идентификатором 3 задано значение [1,2], то %param3.2% заменится на наименование элементов с идентификаторами 1 и 2 (склеится через ", "). Для единичных тоже, разумеется, работает. Также можно указывать транзитивные атрибуты, то есть вида %PARAM2.21.22.23.24.2%. При этом в метаданных описании параметра должен быть указан дискриминатор DictionaryParameterModel и идентификатор справочника, | + | | %param<ID>.<ATTRIBUTE_ID>% || Заменяется на значение атрибута с идентификатором ATTRIBUTE_ID тех элементов справочника, чьи идентификаторы указаны в качестве значения параметра с идентификатором ID. Например, если у параметра с идентификатором 3 задано значение [1,2], то %param3.2% заменится на наименование элементов с идентификаторами 1 и 2 (склеится через ", "). Для единичных тоже, разумеется, работает. Также можно указывать транзитивные атрибуты, то есть вида %PARAM2.21.22.23.24.2%. При этом в метаданных описании параметра должен быть указан дискриминатор DictionaryParameterModel и идентификатор справочника, который связан с этим параметром. Если же дискриминатор не указан - или указан не DictionaryParameterModel - такая подстановка выродится в предыдущий пункт, т.е. просто значение параметра. Если параметр-справочник, но в подстановке указаны строки вместо чисел - заменится на пустоту. |
+ | |- | ||
+ | | %recipient_displayname% || Пользователь-получатель уведомления, значение атрибута displayname из Keycloak | ||
+ | |- | ||
+ | | %recipient_firstname% || Имя пользователя-получателя уведомления, значение атрибута firstname из Keycloak | ||
+ | |- | ||
+ | | %recipient_lastname% || Фамилия пользователя-получателя уведомления, значение атрибута lastname из Keycloak | ||
+ | |- | ||
+ | | %changed_date% || Дата перехода в состояние, в которое совершен переход и по которому высылается уведомление | ||
+ | |- | ||
+ | | %regulation_date% || Регламентная дата состояния, в которое совершен переход и по которому высылается уведомление | ||
+ | |||
|} | |} | ||
− | == | + | == Особенности настроек получателей уведомлений (back) == |
В уведомлениях можно указать получателя на 4 уровнях: | В уведомлениях можно указать получателя на 4 уровнях: | ||
Строка 65: | Строка 289: | ||
Получатель задаётся в виде уникального номера (guid), внутрь '''recepients''' в свойство '''subjectId''', коллекции '''subjects''' следующем виде:<br> | Получатель задаётся в виде уникального номера (guid), внутрь '''recepients''' в свойство '''subjectId''', коллекции '''subjects''' следующем виде:<br> | ||
− | + | <syntaxhighlight lang="JSON" line> | |
"recipients": { | "recipients": { | ||
"subjects": [ | "subjects": [ |
Текущая версия на 10:36, 18 апреля 2022
В рамках процесса согласования есть возможность подключить рассылку уведомлений по e-mail. Можно настроить разные типы уведомлений:
- Основные уведомления - при переходе из одного состояния в другое (primary)
- При нарушении или приближении срока регламента (regulation)
- При изменении настроек запущенного экземпляра процесса (changes)
- Дополнительные уведомления (additional)
1 "notifications": {
2 "primary": {…},
3 "additional": {…},
4 "regulation": {…},
5 "changes": {…}
6 }
Для организации рассылки необходимо настроить шаблон уведомлений и дополнительные настройки в разделе notifications::
1 "notifications": {
2 "primary": {
3 "stateNotifications": [
4 {
5 "stateId": 1,
6 "template": {
7 "title": "У вас новая задача!",
8 "body": "Вам поступило новое задание '%new_state%' по заявке [%param1.1%]>%param1.2%.<br><br>Комментарий: %comment% <br>"
9 },
10 "recipients": {
11 "subjects": [
12 {
13 "subjectId": "fmimk",
14 "discriminator": "FixedSubjectDescriptionModel"
15 }
16 ],
17 "discriminator": "SubjectNotificationsReceipientsModel"
18 }
19 }
20 ]
21 }
!Важно:
- Если требуется высылать уведомление при запуске процесса, то необходимо его добавить на первое (верхнее) состояние. Когда процесс запустится и совершится переход в первое состояние уведомление будет отправлено.
- Можно настроить на одно и то же состояние несколько уведомлений.
1 "notifications": {
2 "primary": {
3 "stateNotifications": [
4 {
5 "stateId": 2,
6 "template": {
7 "title": "Default title",
8 "body": "Default body",
9 "localizedTitle": {
10 "defaultValue": "Default title",
11 "items": [
12 {
13 "language": "ru",
14 "value": "Ru title"
15 },
16 {
17 "language": "en",
18 "value": "En title"
19 }
20 ]
21 },
22 "localizedBody": {
23 "defaultValue": "Default body",
24 "items": [
25 {
26 "language": "ru",
27 "value": "Ru body"
28 },
29 {
30 "language": "en",
31 "value": "En body"
32 }
33 ]
34 },
35 "localizedShortMessage": {
36 "defaultValue": "Default short message",
37 "items": [
38 {
39 "language": "ru",
40 "value": "Ru short message"
41 },
42 {
43 "language": "en",
44 "value": "En short message"
45 }
46 ]
47 },
48 "messageTypes": [
49 "Email",
50 "Sms"
51 ]
52 },
53 "recipients": {
54 "subjects": [
55 {
56 "subjectId": "76b8102c-0528-46bc-a6a5-6007a35ffde3",
57 "discriminator": "FixedSubjectDescriptionModel"
58 }
59 ],
60 "discriminator": "SubjectNotificationsReceipientsModel"
61 }
62 },
63 {
64 "stateId": 2,
65 "template": {
66 "title": "Тест уведомления для состояния 2 вариант 2",
67 "body": "Тест"
68 },
69 "recipients": {
70 "subjects": [
71 {
72 "subjectId": "76b8102c-0528-46bc-a6a5-6007a35ffde3",
73 "discriminator": "FixedSubjectDescriptionModel"
74 }
75 ],
76 "discriminator": "SubjectNotificationsReceipientsModel"
77 }
78 }
79 ]
80 }
81 }
Настройки уведомлений
Каждый тип уведомлений содержит один и тот же перечень настроек:
title - дефолтный заголовок уведомления.
body - дефолтный текст уведомления.
localizedTitle - локализованный заголовок уведомления.
localizedBody - локализованный текст уведомления.
localizedShortMessage - локализованный текст короткого уведомления, текст смс-уведомлений.
messageTypes - варианты уведомлений, которые будут отправляться. Можно задать значения: "Email", "Sms".
О подстановках в заголовке и тексте уведомления можно узнать в описании ниже.
recipients – настройки получателей уведомлений. Можно задать несколько получателей для уведомления.
!Важно: если установить "recipients": null, то уведомления будут направляться всем пользователям, которые ответственны за шаги текущего состояния.
Варианты настройки:
- Через сторонний сервис
1 "recipients": {
2 "uri": "https://apps.3v-cloud.com/assessment-and-adaptation/Assessments/WorkflowNotices",
3 "discriminator": "ExternalNotificationsRecipientsModel"
4 }
- Фиксированное значение субъекта (роль, пользователь)
Получатель-пользователь задаётся в виде уникального номера (guid):
1 "recipients": {
2 "subjects": [
3 {
4 "subjectId": "34c5a091-83b3-44d4-8616-561764a64d9b",
5 "discriminator": "FixedSubjectDescriptionModel"
6 }
7 ],
8 "discriminator": "SubjectNotificationsReceipientsModel"
9 }
Получатель-роль задается в виде идентификатора роли:
1 "recipients": {
2 "subjects": [
3 {
4 "subjectId": "fmimk",
5 "discriminator": "FixedSubjectDescriptionModel"
6 }
7 ],
8 "discriminator": "SubjectNotificationsReceipientsModel"
9 }
10 }
- Получить субъект из атрибута параметра объекта согласования
1 "recipients": {
2 "subjects": [
3 {
4 "parameterId": 1,
5 "attribute": {
6 "discriminator": "OwnAttributeDefinitionDto",
7 "id": 45
8 },
9 "discriminator": "ParameterAttributeSubjectDescriptionModel"
10 }
11 ],
12 "discriminator": "SubjectNotificationsReceipientsModel"
13 }
- Получить субъект через формулу
1 "subject": {
2 "formula": {
3 "expression": "[0]",
4 "operands": [
5 {
6 "attributeId": "sid",
7 "discriminator": "TokenAttributeFormulaOperandDto",
8 "code": null,
9 "id": 0,
10 "name": null
11 }
12 ],
13 "code": null,
14 "id": 0,
15 "name": null
16 },
17 "discriminator": "FormulaSubjectDescriptionModel"
18 },
19 "type": "Allow"
20 }
url - url стороннего сервис, который вернет получателей уведомлений.
forceWorkflowNotificationTemplate: true/false - Возможность брать настройки уведомлений из самого объекта согласования, а не из того, что сохранено в процессе. True - настройки уведомлений при отправке будут браться из самого согласования (контейнера), False - из согласуемого процесса.
Настройки заголовка и текста уведомления
В шаблоне письма имеется возможность добавить подстановки:
Подстановка | Описание |
---|---|
%new_state% | Наименование нового статуса, в который перевели |
%user_login% | Логин пользователя, который совершил переход |
%user_name% | Имя (ФИО или подобное) пользователя, который совершил переход |
%param<ID>% | Заменяется на значение параметра с идентификатором ID. То есть, %param22% заменится на значение параметра с идентификатором 22 |
%param<ID>.<ATTRIBUTE_ID>% | Заменяется на значение атрибута с идентификатором ATTRIBUTE_ID тех элементов справочника, чьи идентификаторы указаны в качестве значения параметра с идентификатором ID. Например, если у параметра с идентификатором 3 задано значение [1,2], то %param3.2% заменится на наименование элементов с идентификаторами 1 и 2 (склеится через ", "). Для единичных тоже, разумеется, работает. Также можно указывать транзитивные атрибуты, то есть вида %PARAM2.21.22.23.24.2%. При этом в метаданных описании параметра должен быть указан дискриминатор DictionaryParameterModel и идентификатор справочника, который связан с этим параметром. Если же дискриминатор не указан - или указан не DictionaryParameterModel - такая подстановка выродится в предыдущий пункт, т.е. просто значение параметра. Если параметр-справочник, но в подстановке указаны строки вместо чисел - заменится на пустоту. |
%recipient_displayname% | Пользователь-получатель уведомления, значение атрибута displayname из Keycloak |
%recipient_firstname% | Имя пользователя-получателя уведомления, значение атрибута firstname из Keycloak |
%recipient_lastname% | Фамилия пользователя-получателя уведомления, значение атрибута lastname из Keycloak |
%changed_date% | Дата перехода в состояние, в которое совершен переход и по которому высылается уведомление |
%regulation_date% | Регламентная дата состояния, в которое совершен переход и по которому высылается уведомление |
Особенности настроек получателей уведомлений (back)
В уведомлениях можно указать получателя на 4 уровнях:
- 1 уровень - template → notification → recepients
- 2 уровень - template → notification → stateNotifications → в теле состояния (state) задаём recepients для отправки уведомления при наступлении данного состояния
- 3 уровень - template → notification → primary (первостепенные получатели) или additional (опциональные) → recepients или (stateNotifications → recepients)
- 4 уровень (бонус): если получатель не указан ни на одном из уровней, но при этом на совершение перехода (step) есть право (permissions) с указанным в нём пользователем. То уведомление отправляется тому получателю, который есть в permissions, при условии что step есть в availableSteps
Получатель задаётся в виде уникального номера (guid), внутрь recepients в свойство subjectId, коллекции subjects следующем виде:
1 "recipients": {
2 "subjects": [
3 {
4 "subjectId": "34c5a091-83b3-44d4-8616-561764a64d9b",
5 "discriminator": "FixedSubjectDescriptionModel"
6 }
7 ],
8 "discriminator": "SubjectNotificationsReceipientsModel"
9 }