Вопрос

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

Добрый день!

Есть пример:

При добавлении нового комментария к сообщению в ленте АВТОРУ этого сообщения отправляется 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;

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