Для поиска диалогов в 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 - оператор, который провел в диалог больше всего времени. Зарезервировано и сейчас не рассчитывается