Платформа 3V/Согласование/Настройка уведомлений: различия между версиями

Материал из 3v-wiki
Перейти к навигации Перейти к поиску
 
(не показано 10 промежуточных версий 2 участников)
Строка 1: Строка 1:
В рамках процесса согласования есть возможность подключить рассылку уведомлений по e-mail при переходе от одного статуса к другому. Для этого нужно настроить шаблон уведомления и получателей в поле '''notifications''':<br>
+
В рамках процесса согласования есть возможность подключить рассылку уведомлений по 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>
  
{| class="wikitable"
+
Для организации рассылки необходимо настроить шаблон уведомлений и дополнительные настройки в разделе '''notifications'''::
|-
+
<div class="toccolours mw-collapsible mw-collapsed" style="width:800px; overflow:auto;">
! "template": {}
+
<div style="font-weight:bold;line-height:1.6;">Пример JSON настройки основных уведомлений</div>
|-
+
<div class="mw-collapsible-content mw-collapsed-content">
| <syntaxhighlight lang="JSON" line>
+
<syntaxhighlight lang="JSON" line>
 
"notifications": {
 
"notifications": {
       "template": {
+
       "primary": {
        "title": "Формирование оценки по сотруднику. \nПериод оценки %param1.2%.",
+
        "stateNotifications": [
        "body": "Перевод статуса документа пользователем %user_name% в статус: %new_state%. \nПериод оценки: %param1.2%.\nСотрудник: %param2.2%. \nОценщик: %param3.2%.\nКомментарий: %Comment%\nНеобходимо перейти в отчет по ссылке: https://apps.3v-cloud.com/apps-portal/cards/339"
+
          {
       },
+
            "stateId": 1,
       "recipients": {
+
            "template": {
        "uri": "https://apps.3v-cloud.com/assessment-and-adaptation/Assessments/WorkflowNotices",
+
              "title": "У вас новая задача!",
         "discriminator": "ExternalNotificationsRecipientsModel"
+
              "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"
 
       }
 
       }
    },
 
    "forceWorkflowNotificationTemplate": false
 
 
</syntaxhighlight>
 
</syntaxhighlight>
|}
+
</div></div>
{| class="wikitable"
+
 
 +
'''url''' - url стороннего сервис, который вернет получателей уведомлений. <br>
  
где:<br>
+
'''forceWorkflowNotificationTemplate''': true/false - Возможность брать настройки уведомлений из самого объекта согласования, а не из того, что сохранено в процессе. True - настройки уведомлений при отправке будут браться из самого согласования (контейнера), False - из согласуемого процесса. <br>
{| class="wikitable"
 
|-
 
! Поле !! Описание
 
|-
 
| title || Заголовок уведомления
 
|-
 
| body || Текст уведомления (о настройках текста уведомления можно узнать ниже в разделе [[Платформа_3V/Согласование/Шаблон письма с рассылкой по e-mail#Настройки текста уведомления|'''ниже''']])
 
|-
 
| uri || Uri стороннего сервис, который вернет получателей уведомлений. Если установить ''"recipients": null'', то уведомления будут направляться всем пользователям, которым доступен новый статус, на который перевели
 
|-
 
| discriminator || Дискриминатор
 
|-
 
| forceWorkflowNotificationTemplate: true/false || Возможность брать настройки уведомлений из самого объекта согласования, а не из того, что сохранено в процессе. True - настройки уведомлений при отправке будут браться из самого согласования (контейнера), False - из согласуемого процесса.
 
|}
 
  
== Настройки текста уведомления ==
+
== Настройки заголовка и текста уведомления ==
  
 
В шаблоне письма имеется возможность добавить подстановки:
 
В шаблоне письма имеется возможность добавить подстановки:
Строка 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 и идентификатор справочника, на котором этот параметр сидит. Если же дискриминатор не указан - или указан не 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 уровнях:
 +
*1 уровень - template → notification → recepients <br>
 +
*2 уровень - template → notification → stateNotifications → в теле состояния (state) задаём recepients для отправки уведомления при наступлении данного состояния <br>
 +
*3 уровень - template → notification → primary (первостепенные получатели) или additional (опциональные) → recepients или (stateNotifications → recepients) <br>
 +
*4 уровень (бонус): если получатель не указан ни на одном из уровней, но при этом на совершение перехода (step) есть право (permissions) с указанным в нём пользователем. То уведомление отправляется тому получателю, который есть в permissions, при условии что  step есть в availableSteps <br>
 +
<br>
 +
Получатель задаётся в виде уникального номера (guid), внутрь '''recepients''' в свойство '''subjectId''', коллекции '''subjects''' следующем виде:<br>
 +
 +
<syntaxhighlight lang="JSON" line>
 +
"recipients": {
 +
      "subjects": [
 +
        {
 +
          "subjectId": "34c5a091-83b3-44d4-8616-561764a64d9b",
 +
          "discriminator": "FixedSubjectDescriptionModel"
 +
        }
 +
      ],
 +
      "discriminator": "SubjectNotificationsReceipientsModel"
 +
    }
 +
</syntaxhighlight>

Текущая версия на 10:36, 18 апреля 2022

В рамках процесса согласования есть возможность подключить рассылку уведомлений по e-mail. Можно настроить разные типы уведомлений:

  1. Основные уведомления - при переходе из одного состояния в другое (primary)
  2. При нарушении или приближении срока регламента (regulation)
  3. При изменении настроек запущенного экземпляра процесса (changes)
  4. Дополнительные уведомления (additional)

JSON-модель настройки уведомлений объекта согласования
1 "notifications": {
2       "primary": {},
3       "additional": {},
4       "regulation": {},
5       "changes": {}
6     }

Для организации рассылки необходимо настроить шаблон уведомлений и дополнительные настройки в разделе notifications::

Пример JSON настройки основных уведомлений
 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       }

!Важно:

  • Если требуется высылать уведомление при запуске процесса, то необходимо его добавить на первое (верхнее) состояние. Когда процесс запустится и совершится переход в первое состояние уведомление будет отправлено.
  • Можно настроить на одно и то же состояние несколько уведомлений.
Пример JSON настройки нескольких уведомлений на одно и то же состояние
 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, то уведомления будут направляться всем пользователям, которые ответственны за шаги текущего состояния.
Варианты настройки:

  • Через сторонний сервис
Пример JSON настройки
1 "recipients": {
2          "uri": "https://apps.3v-cloud.com/assessment-and-adaptation/Assessments/WorkflowNotices",
3           "discriminator": "ExternalNotificationsRecipientsModel"
4         }
  • Фиксированное значение субъекта (роль, пользователь)

Получатель-пользователь задаётся в виде уникального номера (guid):

Пример JSON настройки
1 "recipients": {
2        "subjects": [
3          {
4            "subjectId": "34c5a091-83b3-44d4-8616-561764a64d9b",
5            "discriminator": "FixedSubjectDescriptionModel"
6          }
7        ],
8        "discriminator": "SubjectNotificationsReceipientsModel"
9      }

Получатель-роль задается в виде идентификатора роли:

Пример JSON настройки
 1 "recipients": {
 2          "subjects": [
 3             {
 4               "subjectId": "fmimk",
 5               "discriminator": "FixedSubjectDescriptionModel"
 6             }
 7             ],
 8         "discriminator": "SubjectNotificationsReceipientsModel"
 9         }
10             }
  • Получить субъект из атрибута параметра объекта согласования
Пример JSON настройки
 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             }
  • Получить субъект через формулу
Пример JSON настройки
 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     }