Создание сообщения в сценарии

В данной статье рассмотрим пример создания сообщения пользователю в сценарии.

Пример сценария с использованием PublicAPI

Примечание
Актуальная документация по PublicAPI доступна по ссылке.
Внимание!
Сценарий, указанный ниже, актуален для версий системы ELMA до 3.12.1 включительно.

Контекстные переменные:

context.Poluchatelj – переменная типа Пользователь;
context.Poljzovatelj – переменная типа Пользователь.

Пространство имен:

using EleWise.ELMA.API;
Текст сценария:
PublicAPI.Portal.Messages.SendMessage("Тема сообщения","Текст сообщения", context.Poluchatelj, context.Poljzovatelj); // Тема сообщения, Текст сообщения, Получатель, Отправитель
Примечание.
Начиная с версии ELMA 3.8 появилась возможность использовать Builder для создания сообщений.

Контекстные переменные:

context.Poluchatelj – переменная типа Пользователь;
context.Poljzovatelj – переменная типа Пользователь.
 
Текст сценария:
PublicAPI.Portal.Messages.MessageBuilder("Тема сообщения").MessageText("Текст сообщения").Recipients(new[] { context.Poluchatelj }).MessageAuthor(context.Poljzovatelj).SendMessage();

Пример сценария без использования PublicAPI

Для корректной работы сценария необходимо подключить сборки:

EleWise.ELMA.Messages
EleWise.ELMA.Documents

Пространство имен:

using EleWise.ELMA.Messages.Models;
using Elewise.ELMA.Model.Services;
Текст сценария:
//создание нового сообщения:
var m =  InterfaceActivator.Create<ChannelMessage>();
//добавление в список получателей пользователя, который хранится в переменной context.Poljzovatelj типа Пользователь
m.Recipients.Add(context.Poljzovatelj);
m.Subject = "Тема сообщения";
m.MessageType = ChannelMessageType.Post;
//указание автора сообщения
m.CreationAuthor = context.Poljzovatelj;
//указание даты создания сообщения:
m.CreationDate = DateTime.Now;
//содержание сообщения:
m.FullMessage = "Текст сообщения";
//создание статуса сообщения (новое или прочитанное)
var s = InterfaceActivator.Create<RecipientMessageStatus>();
s.Message = m;
s.Recipient = context.Poljzovatelj;
//статус сообщения: новое
s.Status = MessageStatus.New;
s.Save();
//добавление статуса в сообщение
m.Statuses.Add(s);             
//сохранение сообщения
m.Save();