Подписка на уведомления о событиях

Последние изменения: 27.06.2023

Sherlock Platform позволяет получать уведомления о различных событиях в платформе. Для получения уведомлений возможно использование двух технологий:

  • Вызов внешнего сервиса из бота по определенным событиям бота

  • Подписка на уведомления по технологии Signal-R 

Для настройки вызова внешнего сервиса смотрите документацию по команде Внешний запрос.

Для того, чтобы получать уведомления о запросах, сообщениях, и т.д., которые формируются в Sherlock Platform, необходимо подключиться к хабу сообщений API Sherlock Platform. Для подписки на такие уведомления Sherlock Platform использует технологию Signal-R. Для получения уведомлений по технологии Signal-R необходимо:

  1. Подключиться к хабу сообщений API Sherlock Platform

  2. Подписаться на требуемые события

Для подключения логики рекомендуется использовать следующую JavaScript библиотеку качестве https://www.npmjs.com/package/@microsoft/signalr. Пример кода с использованием данной библиотеки и подпиской на уведомления о новых сообщениях: 

var _hubConnection = new signalR.HubConnectionBuilder()
   .withUrl(_apiUrl + 'v2/globalhub')
   .build();
_hubConnection.on('NewMessagesAvailable', function(userId, clientIds, requestIds, requestUserIds, isIncomingMessage) {});
_hubConnection.start().done();


Список поддерживаемых событий, включая список параметров, приведен ниже (только документированные методы):

  • NewMessagesAvailable(Guid userId, Guid clientId, Guid requestId, string requestUserIds, bool isIncomingMessage = false, Guid? requestStatusId = null, Guid? queueId = null, Guid? responsibleId = null, int? requestDistributionTypeId = null) - возникает при поступлении нового сообщения (любого)

  • EditMessage(Guid requestId, Guid messageId) - возникает при изменении текста сообщения 

  • DeleteMessage(Guid requestId, Guid messageId) - возникает при удалении сообщения

  • CheckOperatorStatus(Guid userId, Guid? operatorStatusId) - возникает при смене статуса оператора

  • ChangeRequest(Guid requestId) - возникает при изменении диалога

  • ReloadExternalChat(Guid oldRequestId, Guid newRequestId) - возникает при переоткрытии диалога в чате на сайт. При данном событии меняется идентификатор активного диалога

  • ExternalChatUnreadMessages(Guid requestId, int unreadMessagesCount) - возникает при появлении нового сообщения в чате на сайт для информирования о количестве не прочитанных сообщений 

  • ChangeRequestStatus(Guid requestId) - возникает при смене статуса диалога

  • ChangeRequestResponsible(Guid requestId, Guid? responsibleId, bool? blockedByClient = null) - возникает при смене ответственного оператора в диалоге

  • BlockClient(Guid clientId, DateTime blockedUntilDate, string ipAddress, string reason) - возникает при блокировке клиента

  • ChangeFormData(Guid formId, Guid objectId, Guid userId) - возникает при изменении данных формы (например, с данными клиента в интерфейсе)

  • ClientTyping(Guid requestId, Guid clientId, string clientName, string messageText) - возникает при наборе текста клиентом

  • UserTyping(Guid requestId, Guid userId, string userName, string messageText) - возникает при наборе текста оператором

Помогла ли вам статья?