Сервис рассылки уведомлений
Сервис рассылки уведомлений используется для приема, обработки и отправки уведомлений пользователям.
Работа сервиса реализуется на основе веб-сокетов, при работе сервиса используется 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
Метод осуществляет отправку уведомления и имеет две реализации:
- Принимает объект сообщения
_ASE.MD.Platform.Infrastructure.WebNotification.Client.Models.Message_
и объект уведомления информации_ASE.MD.Platform.Infrastructure.WebNotification.Client.Models.Notification.Information._
- Принимает объект сообщения
_ASE.MD.Platform.Infrastructure.WebNotification.Client.Models.Message_
и объект уведомления задачи_ASE.MD.Platform.Infrastructure.WebNotification.Client.Models.Notification.Information.Task_
Возвращаемый тип: void.
Модели взаимодействия
Сервис рассылки уведомлений поддерживает следующие модели взаимодействия:
- отправка уведомления типа Информация;
- отправка уведомления типа Задача (может использоваться индикатор выполнения для отображения прогресса выполнения задачи).
- При отправке уведомления (нотификации) типа Информация или Задача должна быть реализована модель данных сервиса
_ASE.MD.Platform.Infrastructure.WebNotification.Models.Message.Info_
.
имя поля | тип | описание |
---|---|---|
Mandatory | boolean | Параметр, описывающий обязательность доставки данной нотификации получателю. Отображается пользователю до тех пор, пока не нажата кнопка Прочтено. |
SaveHistory | boolean | Сохранение сообщения в истории |
SourceId | string | Идентификатор источника нотификации. Источником может быть сервис или пользователь |
SourceType | string | Поле, определяющее тип источника нотификации (система,пользователь) |
TargetId | string | Идентификатор получателя нотификации |
TargetType | string | Поле, определяющее тип получателя нотификации (System, User, Broadcast). При использовании типа User, TargetId является обязательным и должен содержать ID пользователя для получения нотификации |
Type | string | Тип нотификации: Info (1) и TaskStatus (2). Если type = 0, то поле Data остается пустым. |
Data | dynamic | дочерняя структура данных, зависящая от NotifType |
- При отправке уведомления (нотификации) типа Информация (NotifType = Info) должна быть реализована структура для поля Data
_ASE.MD.Platform.Infrastructure.WebNotification.Client.Models.Notification.Information_
.
имя поля | тип | описание |
---|---|---|
MessageId | string | Идентификатор сообщения |
Priority | enum | Приоритет отправки нотификации (High/Normal/Low) |
Title | string | Заголовок нотификации |
Text | string | Текст нотификации |
- При отправке уведомления (нотификации) типа Задача (NotifType = TaskStatus) быть реализована структура для поля Data
_ASE.MD.Platform.Infrastructure.WebNotification.Client.Models.Notification.Task_
.
имя поля | тип | описание |
---|---|---|
Id | string | Идентификатор нотификации |
Status | enum | Статус нотификации (InProgress/Done/Error/PreLaunch/Suspend) |
Percent | int | процент выполнения |
Title | string | Заголовок нотификации |
Extra | string | дополнительная информация |
- Пользователь
_ASE.MD.Platform.Infrastructure.WebNotification.Client.Models.User.Info_
.
имя поля | тип | описание |
---|---|---|
Id | int | идентификатор пользователя |
Login | string | логин пользователя |
ConnectionsID | ConcurrentDictionary<string, string> | словарь подключений |