Для поиска диалогов в Sherlock Platform сначала надо авторизоваться.
Далее необходимо вызвать метод GET контроллера Request https://<sherlock_url>/API/V2/Request?<Параметры>. Полученный ранее токен надо передать в заголовке как Bearer Token.
В качестве параметров в метод передаются различные условия фильтрации (все параметры являются опциональными):
pageSize - количество возвращаемых записей
skip - номер записи с которой надо загружать диалоги. 0 - для загрузки с первой записи
requestId - ID диалога для загрузки данных конкретного диалога.
keywords - ключевые слова для фильтрации диалога
startDate, endDate - задают период диалога по дате создания для фильтрации
userProfileId, userProfileIds- отдельный идентификатор канала диалога или список id каналов
responsibleId - идентификатор оператора, ответственного за диалог
Другие параметры для фильтрации. С полным списком можно ознакомится в документации swagger.
Например:
Для получения всех диалогов за последние 20 минут в запросе надо указать параметр startDate={текущая дата и время - 20 минут}
Для выбора диалогов по статусу требуемые статусы нужно указать списком в параметре RequestStatusIds
Детальное описание параметров постраничного разбиения описаны в статье.
Метод возвращает json с массивом диалогов. По каждому диалогу возвращается следующая информация:
[ { "id": "<Guid>", "clientId": "<Guid>", "number": 4, "date": "2020-05-20T05:24:14.233", "requestStatusId": "30db120e-15f0-40e5-b167-0de43d637eea", "note": "", "lastMessageDate": "2020-06-06T19:01:39.433", "lastMessageId": "2c186d84-79d9-4950-a693-6b4e22c5bd21", "lastMessageText": "[Русский]", "lastMessageDisplayText": "", "lastMessageStatusId": 2, "lastMessageDirectionId": 2, "lastMessageCategoryId": 1, "requestCategoryId": 1, "lastMessageAuthorPhotoUrl": "", "requestTypeId": "12d640ae-d8f7-4281-a56a-9f54fbc3bc72", "responsibleId": null, "qualityGrade": null, "closedAt": null, "isFileAttach": false, "queueId": "872d2860-e7b9-408a-a144-0a3e04b21f1b", "requestPriorityId": "39d8892d-5eef-4d37-9958-41c7d4149f61", "lastMessageInId": "6d6fcd4b-9dbc-401b-a952-c9be9a4fe6fd", "lastMessageOutId": "2c186d84-79d9-4950-a693-6b4e22c5bd21", "socialNetworkMessengerId": "e0e90585-2001-46e2-912e-4bbf41a3eb0f", "channelType": "VKontakteGroup", "lastMessageAttachmentName": "", "userProfileId": "<Guid>", "groupProfile": "", "groupCaption": "", "groupImage": "", "groupDescription": "", "lastMessageInDate": "2020-06-06T19:01:31.08", "postId": null, "clientName": "Виталий тест", "clientPhotoUrl": "https://app.sherlockcrm.ru/API/SherlockTest//Files/Photo/i2VJ_F5zaOQ.jpg", "clientInitials": "ВТ", "clientBackgroundColor": "#cc90e2", "responsibleFullName": null, "requestStatusTitle": "Передан в очередь", "requestStatusColor": "#feb113", "lastMessageTimestamp": 1591470099, "requestPriorityOrder": 500, "unreadMessage": 1, "currentDateTime": "2020-06-06T19:01:40.4492661Z" } ]
Дополнительно метод позволяет получить расширенные и статистические данные по диалогам. Для этого необходимо передать еще параметр IsIncludeExtendedData=true. В этом случае для каждого диалога будут включаться следующие дополнительные реквизиты:
"clientComment": "", "requestTypeTitle": "Консультация", "requestReason": [], "firstQueueStartDate": "2021-01-15T17:54:22.807", "dialogWorkingDate": "2021-01-15T17:54:22.64", "firstOperatorAssignedDate": "2021-01-15T17:54:25.403", "firstResponsibleId": "cbefd178-d7c3-4b4e-b363-56685605108e", "firstQueueWaitingTime": 3, "firstQueueWaitingWorkingTime": 3, "operatorFirstMessageDate": "2021-01-15T17:54:52.57", "operatorReactionTime": 27, "firstAnswerTime": 30, "averageOperatorAnswerTime": null, "averageClientAnswerTime": null, "operatorLastMessageDate": "2021-01-15T18:01:18.663", "totalDialogTime": null, "totalDialogWorkingTime": null, "totalOperatorTime": null, "mainResponsibleId": null
Описание данных полей приведено ниже:
id - уникальный идентификатор диалога
clientId - идентификатор внешнего клиента, который пишет вам в чате или мессенджере
number - номер диалога, задаваемый ботом (если настроено)
date - дата/время начала диалога в UTC
requestStatusId - статус диалога по справочнику статусов. . Актуальный список возвращает метод GET /API/v2/RequestStatuses
note - комментарий пользователя к диалогу. Может быть отражен и редактироваться в правом столбце модуля Диалоги
lastMessageDate - дата/время последнего сообщения в диалоге в UTC
lastMessageId - идентификатор последнего сообщения в диалоге
lastMessageText - текст последнего сообщения. Используется для вывода в списке диалогов
lastMessageDisplayText - обработанный текст последнего сообщения. Используется для вывода в списке диалогов
lastMessageStatusId - статус последнего сообщения
1 - Запланирован
2 - Не прочитано
3 - Прочитано
4 - В очереди
5 - Ошибка
6 - Удален
lastMessageDirectionId - направление последнего сообщения
1 - входящее
2 - исходящее
lastMessageCategoryId - категория последнего сообщения
1 - Личное сообщение
2 - Комментарий. Не отражается клиенту
3 - Кнопки
4 - Статус диалога
5 - Сообщение рассылки
6 - Сервисное сообщение
7 - Слайдер
requestCategoryId - категория диалога
1 - Личный диалог
2 - Групповой диалог
3 - Стена
4 - Внутренний диалог
5 - Рассылки
lastMessageAuthorPhotoUrl - фото автора последнего сообщения для вывода в списке диалогов
requestTypeId - тип диалога по справочнику типов сообщений. Актуальный список возвращает метод GET /API/v2/RequestType
responsibleId - идентификатор оператора. ответственного за диалог
qualityGrade - целочисленная оценка по диалогу, оставленная клиентом
closedAt - дата финального закрытия/архивирования диалога
isFileAttach - наличие вложений в последнем сообщении диалога
queueId - текущая очередь диалога. Актуальный список возвращает метод GET /API/v2/Queues
requestPriorityId - приоритет диалога, используемый в алгоритме распределения очередью
lastMessageInId - идентификатор последнего входящего сообщения в диалоге
lastMessageOutId - идентификатор последнего исходящего сообщения в диалоге
socialNetworkMessengerId - идентификатор типа канала. Актуальный список возвращает метод GET /API/v2/SocialNetworkMessenger
channelType - код типа канала. Актуальный список возвращает метод GET /API/v2/SocialNetworkMessenger
lastMessageAttachmentName - название вложения в последнем сообщении. Используется для вывода в списке диалогов
userProfileId - идентификатор канала в Sherlock. Актуальный список возвращает метод GET /API/v2/UserProfile
groupProfile - профиль в социальной сети для группового диалога. Зарезервировано для дальнейшего использования. Сейчас используется в Одноклассниках
groupCaption - заголовок группы. Зарезервировано для дальнейшего использования
groupImage - аватар группы. Зарезервировано для дальнейшего использования
groupDescription - описание группы. Зарезервировано для дальнейшего использования
lastMessageInDate - дата/время последнего входящего сообщения в диалоге в UTC
postId - идентификатор публикации на стене. Используется для обработки комментариев
clientName - имя клиента для вывода в списке диалогов
clientPhotoUrl - фото клиента для вывода в списке диалогов
clientInitials - инициалы клиента для вывода в списке диалогов
clientBackgroundColor - цвет аватарки клиента для вывода в списке диалогов
responsibleFullName - имя ответственного оператора
requestStatusTitle - текстовое значение статуса диалога
requestStatusColor - цвет для статуса диалога
lastMessageTimestamp - timestamp последнего сообщения для быстрой сортировки
requestPriorityOrder - порядок диалога в соответствии с приоритетом. Используется для сортировки в списке диалогов
unreadMessage - количество непрочитанных сообщений в диалоге при просмотре оператором
currentDateTime - текущее серверное время.
clientComment - комментарий пользователя к клиенту. Может быть отражен и редактироваться в правом столбце модуля Диалоги
requestTypeTitle - текстовое значение типа диалога
requestReason - причины обращения, указанные для диалога. Актуальный список значений справочника возвращает метод GET /API/v2/RequestReason
firstQueueStartDate - дата/время в UTC первой постановки диалога в очереди. Используется для построения отчетов
dialogWorkingDate - дата/время в UTC начала диалога с учетом рабочего графика. Используется для построения отчетов
firstOperatorAssignedDate - дата/время в UTC назначения первого оператора. Используется для построения отчетов
firstResponsibleId - первый ответственный оператор для диалога. Для бота не указывается
firstQueueWaitingTime - длительность ожидания в первой очереди в секундах
firstQueueWaitingWorkingTime - длительность ожидания в первой очереди в секундах с учетом рабочего графика
operatorFirstMessageDate - дата/время в UTC первого сообщения оператора в диалоге. Используется для построения отчетов
operatorReactionTime - время ответа оператора в секундах после передачи диалога оператору
firstAnswerTime - время первого ответа в секундах
averageOperatorAnswerTime - средняя скорость ответа оператора на сообщения в секундах
averageClientAnswerTime - средняя скорость ответов клиента на сообщения в секундах
operatorLastMessageDate - дата/время в UTC последнего сообщения оператора в диалоге. Используется для построения отчетов
totalDialogTime - общая длительность диалога в секундах
totalDialogWorkingTime - общая длительность диалога в секундах в рабочее время
totalOperatorTime - общая длительность работы оператора с диалогом в секундах
mainResponsibleId - оператор, который провел в диалог больше всего времени. Зарезервировано и сейчас не рассчитывается