Вопрос

КАК УВЕДОМИТЬ ПОЛЬЗОВАТЕЛЯ О ПОЯВЛЕНИИ КОММЕНТАРИЯ К ЕГО СООБЩЕНИЮ В ЛЕНТЕ

Добрый день!



Есть пример:

При добавлении нового комментария к сообщению в ленте АВТОРУ этого сообщения отправляется email.

https://academy.terrasoft.ua/documents/technic-bpms/7-10/kak-uvedomit-p…



Вопрос следующий:

Как можно отправить уведомление сотруднику, который был УПОМЯНУТ в ленте? Например, если ответственный  (Supervisor) упомянул Пользователя 1 в ленте, то Пользователь 1 должен получить на электронную почту уведомление о том, что был оставлен комментарий.

Как в параметре 'Кому' правильно указать сотрудника, который был упомянут?

 

Прикрепленные файлы

Нравится

2 комментария

Добрый день.



Для этого необходимо будет построить отдельный бизнес-процесс. Вот как это можно будет сделать.

 

1) Создать 4 параметра: Сomment, Ids, Number, CurrentId.

2) Создать 2 элемента "Read data" так же как в статье из Академии, на которую Вы ссылаетесь. Отсюда получим данные поста и комментария.

3) С помощью функции присвоим параметру Comment значение вычитанного в п.2 комментария

4) В элементе "Script task" надо получить Id и количество тегнутых контактов, записать эти значения в параметры Ids и Number соответственно

5) Поскольку параметр Ids сохраняет Id контактов в виде строки, необходимо написать скрипт, чтобы разбить эту строку на отдельные элементы и по одному передавать Id в элемент "Send email", одновременно уменьшая количество Id на 1.

6) От элемента "Send email" к "Script task" идет стрелка default flow, а к элементу "Terminate" - conditional flow (с проверкой вида "если количество Id в Number не равняется 0, то возвращаемся к скрипту, если = 0 - процесс завершается"), что позволяет нам пройти по списку всех Ids, для каждого Id отправить сообщение и завершить процесс.

В общем схема процесса будет выглядеть приблизительно как в приложенных скриншотах

string comment = Get<string>("Comment");

var dataValueMatches = Regex.Matches(comment, @"data-value=""([^""]+)""");

var dataValuesList = new List<string>();

foreach (Match match in dataValueMatches)

{

    string dataValue = match.Groups[1].Value;

    dataValuesList.Add(dataValue);

}

string allIds = string.Join(",", dataValuesList);

Set("Ids", allIds);

int numberOfIds = dataValuesList.Count;

Set("Number", numberOfIds);

return true;

string ids = Get<string>("Ids");

string[] separatedIds = ids.Split(',');

int number = Get<int>("Number");

string currentId = separatedIds[number-1];

Set("CurrentId", currentId );

Set("Number", number-1);

return true;

Показать все комментарии