Sherlock Platform позволяет получать уведомления о различных событиях в платформе. Для получения уведомлений возможно использование двух технологий:
Вызов внешнего сервиса из бота по определенным событиям бота
Подписка на уведомления по технологии Signal-R
Для настройки вызова внешнего сервиса смотрите документацию по команде Внешний запрос.
Для того, чтобы получать уведомления о запросах, сообщениях, и т.д., которые формируются в Sherlock Platform, необходимо подключиться к хабу сообщений API Sherlock Platform. Для подписки на такие уведомления Sherlock Platform использует технологию Signal-R. Для получения уведомлений по технологии Signal-R необходимо:
Подключиться к хабу сообщений API Sherlock Platform
Подписаться на требуемые события
Для подключения логики рекомендуется использовать следующую 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) - возникает при наборе текста оператором