Перейти к основному содержимому

Сервис рассылки уведомлений

Сервис рассылки уведомлений используется для приема, обработки и отправки уведомлений пользователям.
Работа сервиса реализуется на основе веб-сокетов, при работе сервиса используется SignalR. Сервис взаимодействует с пользовательским интерфейсом через клиентскую библиотеку. Сервис рассылает пользователю уведомления о различных типах событий в Платформе:

  • о входе пользователя в Платформу;
  • о завершении какой-либо операции (например, завершение формирования отчета);
  • о прогрессе формирования задачи (например, на текущий момент завершено 80 %, демонстрируется при помощи соответствующего индикатора выполнения).

Уведомления

Типы уведомлений

Сервис поддерживает следующие типы уведомлений:

  • системные: сообщения отправленные платформой, например, пользователь вошел в платформу, через 10 минут начнется техническое обслуживание;;
  • прикладной области: отчет выполнен, прогресс выполнения отчета;
  • пользовательские уведомления: сообщения, отправленные пользователем другим пользователям. Эти сообщения создаются и отправляются через административную консоль, подробнее см. здесь.

Уведомления отображаются в пользовательском интерфейсе в виде всплывающего окна с темой и текстом сообщения. Уведомления могут быть как с обязательным прочтением так и без него.

подсказка

Если поддерживаются уведомления с обязательным прочтением, то пока пользователь не нажмет кнопку Прочтено, уведомление будет постоянно всплывать на экране.

В административном интерфейсе сервиса рассылки уведомлений предусмотрена возможность просмотра истории сообщений (уведомлений) и активных пользователей в разделе меню Notification.

Параметры уведомлений

Для каждого уведомления обязательны все перечисленные параметры:

  • обязательность прочтения сообщения: пользователь всегда будет видеть нотификацию, пока не нажмет кнопку подтверждения получения Прочтено;
  • флаг сохранения: сохранение сообщение для истории или нет;
  • ID источника;
  • Тип источника: none, user, system;
  • ID пользователя: user;
  • Тип получателя: none, System, User (ID пользователя обязателен для заполнения), Broadcast (отправить всем пользователям);
  • Тип нотификации: none, information, statustask;
  • Данные типа: dynamic (для обработки нотификации).
к сведению

Разработчик может не использовать нотификацию. Если нотификация не используется, то в административной консоли история и активные пользователи не отображаются.

Методы API

Методы API сервиса, к которым обращаются сервисы для отправки уведомлений, описаны на страницах этого сервиса.

Работа с клиентской библиотекой

Для работы с сервисом необходимо добавить в свой проект клиентскую библиотеку ASE.MD.Platform.Infrastructure.WebNotification.Client.

Клиентская библиотека предоставляет метод Send.

Метод Send

Метод осуществляет отправку уведомления и имеет две реализации:

  1. Принимает объект сообщения _ASE.MD.Platform.Infrastructure.WebNotification.Client.Models.Message_ и объект уведомления информации _ASE.MD.Platform.Infrastructure.WebNotification.Client.Models.Notification.Information._
  2. Принимает объект сообщения _ASE.MD.Platform.Infrastructure.WebNotification.Client.Models.Message_
    и объект уведомления задачи _ASE.MD.Platform.Infrastructure.WebNotification.Client.Models.Notification.Information.Task_

Возвращаемый тип: void.

Модели взаимодействия

Сервис рассылки уведомлений поддерживает следующие модели взаимодействия:

  • отправка уведомления типа Информация;
  • отправка уведомления типа Задача (может использоваться индикатор выполнения для отображения прогресса выполнения задачи).
  1. При отправке уведомления (нотификации) типа Информация или Задача должна быть реализована модель данных сервиса _ASE.MD.Platform.Infrastructure.WebNotification.Models.Message.Info_.
имя полятипописание
MandatorybooleanПараметр, описывающий обязательность доставки данной нотификации получателю. Отображается пользователю до тех пор, пока не нажата кнопка Прочтено.
SaveHistorybooleanСохранение сообщения в истории
SourceIdstringИдентификатор источника нотификации. Источником может быть сервис или пользователь
SourceTypestringПоле, определяющее тип источника нотификации (система,пользователь)
TargetIdstringИдентификатор получателя нотификации
TargetTypestringПоле, определяющее тип получателя нотификации (System, User, Broadcast). При использовании типа User, TargetId является обязательным и должен содержать ID пользователя для получения нотификации
TypestringТип нотификации: Info (1) и TaskStatus (2). Если type = 0, то поле Data остается пустым.
Datadynamicдочерняя структура данных, зависящая от NotifType
  1. При отправке уведомления (нотификации) типа Информация (NotifType = Info) должна быть реализована структура для поля Data _ASE.MD.Platform.Infrastructure.WebNotification.Client.Models.Notification.Information_.
имя полятипописание
MessageIdstringИдентификатор сообщения
PriorityenumПриоритет отправки нотификации (High/Normal/Low)
TitlestringЗаголовок нотификации
TextstringТекст нотификации
  1. При отправке уведомления (нотификации) типа Задача (NotifType = TaskStatus) быть реализована структура для поля Data _ASE.MD.Platform.Infrastructure.WebNotification.Client.Models.Notification.Task_.
имя полятипописание
IdstringИдентификатор нотификации
StatusenumСтатус нотификации (InProgress/Done/Error/PreLaunch/Suspend)
Percentintпроцент выполнения
TitlestringЗаголовок нотификации
Extrastringдополнительная информация
  1. Пользователь _ASE.MD.Platform.Infrastructure.WebNotification.Client.Models.User.Info_.
имя полятипописание
Idintидентификатор пользователя
Loginstringлогин пользователя
ConnectionsIDConcurrentDictionary<string, string>словарь подключений