Отправка и получение сообщений¶
Управление пользователями¶
Получение данных пользователя¶
Для получения данных пользователя необходимо вызвать GET /api/customers/{customerId}, передавая данные авторизации в заголовке.
Параметры запроса¶
Параметр | Тип данных | Описание |
---|---|---|
customerId | integer | ID пользователя. Можно получить из коллбэков. Path-параметр. |
needLastMessageSendTime | boolean | Если true, в ответе появится параметр с датой и временем отправки последнего сообщения от данного пользователя. |
Пример запроса¶
curl -X GET "https://chat.devinotele.com/api/customers/145345" \
-H "accept: */*" \
-H "authorization: Basic QWxhZGRpbjpvcGVuIHNlc2FtZQ=="
Параметры ответа¶
Параметр | Тип данных | Описание |
---|---|---|
id | integer | ID пользователя, который можно получить из коллбэков. |
externalId | string | ID пользователя из канала, который инициировал переписку. |
creationDateTime | string | Дата создания пользователя. |
lastMessageSendTime | string | Дата и временя отправки последнего сообщения от данного пользователя. |
channelProfileId | integer | ID канала чата. |
additionalInfo | object | Дополнительная информация о пользователе, автоматически полученная через канал общения. В зависимости от канала общения, эта информация будет отличаться. |
agentAdditionalInfo | object | Дополнительная информация о пользователе, которую вручную добавил агент. В личном кабинете из данного объекта отображаются только три поля: ○ |
externalAdditionalInfo | object | Дополнительная информация о пользователе, которую можно добавить через отдельный метод. Рекомендуется использовать этот объект для загрузки данных из CRM-систем. |
tags | array[object] | Список объектов тэга, прикрепленных к пользователю. Каждый объект содержит в себе параметры: ○ |
navigationHistory | array | Список ссылок, по которым пользователь перешел в чат с агентом. |
title | string | Заголовок диалога. Содержит ID пользователя. |
avatarUrl | string | Ссылка на аватар пользователя. |
Пример ответа¶
{
"result": {
"id": 123393,
"externalId": "71112223344",
"creationDateTime": "2023-09-01T08:07:35.761839",
"lastMessageSendTime": "2023-09-01T08:10:04",
"channelProfileId": 10064,
"additionalInfo": {
"name": "John",
"phone": "71112223344"
},
"agentAdditionalInfo": {
"phone": "71112223344",
"email": "john@devino",
"agentNote": "Customer"
},
"tags": [
{
"id": 141,
"name": "Customer Support"
}
],
"navigationHistory": [
"http://localhost:8090/"
],
"title": "#123393 John"
}
}
Обновление данных пользователя¶
Для добавления дополнительных данных пользователя необходимо вызвать PUT /api/customers/{customerId}, передавая данные авторизации в заголовке и данные пользователя в теле запроса.
Параметры запроса¶
Параметр | Тип данных | Описание |
---|---|---|
customerId | integer | ID пользователя. Можно получить из коллбэков. Path-параметр. |
externalAdditionalInfo | object | Дополнительная информация о пользователе. Рекомендуется использовать этот объект для загрузки данных из CRM-систем. |
Пример запроса¶
{
"externalAdditionalInfo": {
"country": "Russian Federation",
"city": "Moscow",
"category": "Sport"
}
}
Параметры ответа¶
Параметр | Тип данных | Описание |
---|---|---|
id | integer | ID пользователя, который можно получить из коллбэков. |
externalId | string | ID пользователя из канала, который инициировал переписку. |
creationDateTime | string | Дата создания пользователя. |
channelProfileId | integer | ID канала чата. |
additionalInfo | object | Дополнительная информация о пользователе, автоматически полученная через канал общения. В зависимости от канала общения, эта информация будет отличаться. |
agentAdditionalInfo | object | Дополнительная информация о пользователе, которую вручную добавил агент. В личном кабинете из данного объекта отображаются только три поля: ○ |
externalAdditionalInfo | object | Дополнительная информация о пользователе, которую можно добавить через отдельный метод. Рекомендуется использовать этот объект для загрузки данных из CRM-систем. |
tags | array[object] | Список объектов тэга, прикрепленных к пользователю. Каждый объект содержит в себе параметры: ○ |
navigationHistory | array | Список ссылок, по которым пользователь перешел в чат с агентом. |
title | string | Заголовок диалога. Содержит ID пользователя. |
avatarUrl | string | Ссылка на аватар пользователя. |
Пример ответа¶
{
"result": {
"id": 123392,
"externalId": "71118223344",
"creationDateTime": "2023-09-01T08:04:25.156238",
"channelProfileId": 10064,
"additionalInfo": {
"name": "John",
"phone": "71118223344"
},
"agentAdditionalInfo": {
"name": "John",
"lastName": "Smith",
"age": "37"
},
"externalAdditionalInfo": {
"country": "Russian Federation",
"city": "Moscow",
"category": "Sport"
},
"title": "#123392 John"
}
}
Управление диалогами¶
Назначение агента¶
Для назначения агента на чат с пользователем необходимо вызвать PUT /api/customers/{customerId}/agent, передавая данные авторизации в заголовке и данные агента в теле запроса.
Параметры запроса¶
Параметр | Тип данных | Описание |
---|---|---|
customerId | integer | ID пользователя, с которым будет общаться агент. Можно получить из коллбэков. Path-параметр. |
agentId | integer | ID агента. |
Пример запроса¶
curl -X PUT "https://chat.devinotele.com/api/customers/137972/agent" \
-H "accept: */*" \
-H "authorization: Basic QWxhZGRpbjpvcGVuIHNlc2FtZQ==" \
-H "Content-Type: application/json" -d "{ \"agentId\": 31642}"
Параметры ответа¶
Параметр | Тип данных | Описание |
---|---|---|
id | integer | ID пользователя, который можно получить из коллбэков. |
externalId | string | ID пользователя из канала, который инициировал переписку. |
creationDateTime | string | Дата создания пользователя. |
channelProfileId | integer | ID канала чата. |
additionalInfo | object | Дополнительная информация о пользователе, автоматически полученная через канал общения. В зависимости от канала общения, эта информация будет отличаться. |
title | string | Заголовок диалога. Содержит ID пользователя. |
Пример ответа¶
{
"result": {
"id": 137972,
"externalId": "71112223344",
"creationDateTime": "2023-10-24T11:06:54.609322",
"channelProfileId": 10064,
"additionalInfo": {
"name": "abonent",
"phone": "71112223344"
},
"title": "#137972 abonent"
}
}
Назначение группы¶
Для назначения группы агентов на чат с пользователем необходимо вызвать PUT /api/customers/{customerId}/team, передавая данные авторизации в заголовке и данные группы в теле запроса.
Параметры запроса¶
Параметр | Тип данных | Описание |
---|---|---|
customerId | integer | ID пользователя, с которым будет общаться агент из назначенной группы. Можно получить из коллбэков. Path-параметр. |
teamId | integer | ID группы. |
Пример запроса¶
curl -X PUT "https://chat.devinotele.com/api/customers/137972/agent" \
-H "accept: */*" \
-H "authorization: Basic QWxhZGRpbjpvcGVuIHNlc2FtZQ==" \
-H "Content-Type: application/json" -d "{ \"teamId\": 31642}"
Параметры ответа¶
Параметр | Тип данных | Описание |
---|---|---|
id | integer | ID пользователя, который можно получить из коллбэков. |
externalId | string | ID пользователя из канала, который инициировал переписку. |
creationDateTime | string | Дата создания пользователя. |
channelProfileId | integer | ID канала чата. |
additionalInfo | object | Дополнительная информация о пользователе, автоматически полученная через канал общения. В зависимости от канала общения, эта информация будет отличаться. |
title | string | Заголовок диалога. Содержит ID пользователя. |
Пример ответа¶
{
"result": {
"id": 137972,
"externalId": "71112223344",
"creationDateTime": "2023-10-24T11:06:54.609322",
"channelProfileId": 10064,
"additionalInfo": {
"name": "abonent",
"phone": "71112223344"
},
"title": "#137972 abonent"
}
}
Назначение тэгов¶
Для назначения тэгов на чат с пользователем необходимо вызвать PUT /api/customers/{customerId}/tag, передавая данные авторизации в заголовке и данные тэга в теле запроса.
Параметры запроса¶
Параметр | Тип данных | Описание |
---|---|---|
customerId | integer | ID пользователя, на которого назначаются тэги. Можно получить из коллбэков. Path-параметр. |
tagIds | array | Массив ID тэгов. |
Пример запроса¶
curl -X PUT "https://chat.devinotele.com/api/customers/137972/tag" \
-H "accept: */*" \
-H "authorization: Basic QWxhZGRpbjpvcGVuIHNlc2FtZQ==" \
-H "Content-Type: application/json" -d "{ \"tagIds\": [ 141, 167 ]}"
Параметры ответа¶
При успешной авторизации сервис возвращает параметр result
в значении null
и HTTP-статус 200
.
Сбор счетчика непрочитанных сообщений¶
Для сброса счетчика непрочитанных сообщений в чате с пользователем необходимо вызвать PATCH /api/customers/{customerId}, передавая данные авторизации в заголовке.
Параметры запроса¶
Параметр | Тип данных | Описание |
---|---|---|
customerId | integer | ID пользователя. Можно получить из коллбэков. Path-параметр. |
Пример запроса¶
curl -X PATCH "https://chat.devinotele.com/api/customers/137972" \
-H "accept: */*" \
-H "authorization: Basic QWxhZGRpbjpvcGVuIHNlc2FtZQ=="
Параметры ответа¶
При успешной авторизации сервис возвращает параметр result
в значении null
и HTTP-статус 200
.
Закрытие чата¶
Для закрытия чата с пользователем необходимо вызвать PUT /api/customers/{customerId}/conversation, передавая данные авторизации в заголовке.
Параметры запроса¶
Параметр | Тип данных | Описание |
---|---|---|
customerId | integer | ID пользователя. Можно получить из коллбэков. Path-параметр. |
Пример запроса¶
curl -X PUT "https://chat.devinotele.com/api/customers/137972/conversation" \
-H "accept: */*" \
-H "authorization: Basic QWxhZGRpbjpvcGVuIHNlc2FtZQ=="
Параметры ответа¶
При успешной авторизации сервис возвращает параметр result
в значении null
и HTTP-статус 200
.
Отправка сообщений¶
Важно
На каждое отправленное и полученное сообщение бизнес-чат отправляет коллбэки по настроенному при интеграции URL-адресу. Для дополнительной информации обратитесь к менеджеру компании или в техническую поддержку.
Для отправки сообщения клиенту необходимо вызвать POST /api/message/send, передавая данные авторизации в заголовке и данные сообщения в теле запроса.
Параметры запроса¶
Параметр | Тип данных | Описание |
---|---|---|
customerId | integer | ID пользователя, которому нужно отправить сообщение. |
textAndAttachments | object | Данные текста и файлов, прикрепленных к сообщению. |
businessChatSpecific | object | Объекты, принадлежащие бизнес-чату. |
TextAndAttachments¶
Параметр | Тип данных | Описание |
---|---|---|
body | string | Текст сообщения. |
attachmentIds | array[object] | ID файлов, прикрепленных к сообщению. Файлы загружаются через отдельный метод. |
BusinessChatSpecific¶
Параметр | Тип данных | Описание |
---|---|---|
replies | array[object] | Объекты кнопок быстрого ответа на сообщение в чате. |
buttons | array[object] | Объекты всех остальных кнопок (например, для текстовых команд или перехода по URL) в чате. |
Replies¶
Параметр | Тип данных | Описание |
---|---|---|
text | string | Текст кнопки быстрого ответа. |
rowIndex | integer | Порядковый номер ряда, в котором будет расположена кнопка быстрого ответа. |
columnIndex | integer | Порядковый номер колонки, в которой будет расположена кнопка быстрого ответа. |
type | string | Тип кнопки быстрого ответа. Возможное значение: ○ |
Buttons¶
Параметр | Тип данных | Описание |
---|---|---|
text | string | Текст кнопки. |
url | string | URL/deep link для перехода при нажатии на кнопку. |
rowIndex | integer | Порядковый номер ряда, в котором будет расположена кнопка. |
columnIndex | integer | Порядковый номер колонки, в которой будет расположена кнопка. |
type | string | Тип кнопки. Возможные значения: ○ |
Пример запроса¶
{
"customerId": 103234,
"textAndAttachments": {
"attachmentIds": [
"4b0589c8-b3f8-4da9-9637-94271bf3d8c2"
],
"body": "Hello",
"businessChatSpecific": {
"buttons": [
{
"text": "Button",
"url": "http://url.com",
"rowIndex": 1,
"columnIndex": 1,
"type": "external"
}
]
}
}
}
Параметры ответа¶
При успешной авторизации сервис возвращает параметр result
в значении null
и HTTP-статус 200
.
Получение сообщений¶
Получение количества непрочитанных сообщений¶
Важно
На каждое отправленное и полученное сообщение бизнес-чат отправляет коллбэки по настроенному при интеграции URL-адресу. Для дополнительной информации обратитесь к менеджеру компании или в техническую поддержку.
Для получения количества непрочитанных сообщений во всех чатах с пользователями необходимо вызвать GET /api/extended-customers/unread_messages, передавая данные авторизации в заголовке.
Данный запрос не имеет дополнительных параметров.
Пример запроса¶
curl -X GET "https://chat.devinotele.com/api/extended-customers/unread_messages" \
-H "accept: */*" \
-H "authorization: Basic QWxhZGRpbjpvcGVuIHNlc2FtZQ=="
Параметры ответа¶
Параметр | Тип данных | Описание |
---|---|---|
id | integer | ID чата с пользователем, который совпадает с ID этого пользователя. |
state | string | Статус чата с пользователем. |
unreadMessagesCount | integer | Количество непрочитанных сообщений в диалоге. |
Пример ответа¶
{
"result": [
{
"id": 61716,
"state": "NEW",
"unreadMessagesCount": 1
},
{
"id": 63677,
"state": "NEW",
"unreadMessagesCount": 1
},
{
"id": 67425,
"state": "NEW",
"unreadMessagesCount": 1
}
]
}
Получение всех сообщений в переписке¶
Важно
На каждое отправленное и полученное сообщение бизнес-чат отправляет коллбэки по настроенному при интеграции URL-адресу. Для дополнительной информации обратитесь к менеджеру компании или в техническую поддержку.
Для получения всех сообщений в чате с одним пользователем необходимо вызвать GET /api/customers/{customerId}/messages, передавая данные авторизации в заголовке.
Параметры запроса¶
Параметр | Тип данных | Описание |
---|---|---|
customerId | integer | ID пользователя. Можно получить из коллбэков. Path-параметр. |
Пример запроса¶
curl -X GET "https://chat.devinotele.com/api/customers/137972/messages" \
-H "accept: */*" \
-H "authorization: Basic QWxhZGRpbjpvcGVuIHNlc2FtZQ=="
Параметры ответа¶
Параметр | Тип данных | Описание |
---|---|---|
id | integer | ID сообщения. |
externalMessageId | string | ID пользователя из канала, который инициировал переписку. |
conversationId | integer | ID чата с пользователем, который совпадает с ID этого пользователя. |
agentId | integer | ID агента. |
sendTime | string | Дата и время отправки сообщения. |
direction | string | Тип сообщения по направлению: ○ |
messageType | string | Тип сообщения по содержанию. |
messageStatus | string | Статус сообщения. |
textAndAttachments | object | Содержание сообщения. |
messageInfo | object | Дополнительная информация о пользователе, которую можно добавить через отдельный метод. |
reassignData | object | Данный параметр возвращается только если агент перенаправил чат на группу, и его взял другой агент. Объект содержит параметры нового агента. |
TextAndAttachments¶
Параметр | Тип данных | Описание |
---|---|---|
body | string | Текст сообщения. |
attachmentInfos | array[object] | Параметры файлов, прикрепленных к сообщению. |
AttachmentInfo¶
Параметр | Тип данных | Описание |
---|---|---|
fileId | string | ID прикрепленного файла. |
fileName | string | Название файла. |
contentLength | string | Размер файла. |
contentType | string | Тип файла. |
publicUrl | string | Ссылка на файл, которая формируется при загрузке файла в чат. |
ReassignData¶
Параметр | Тип данных | Описание |
---|---|---|
agentId | integer | ID агента, который взял чат с пользователем после первого агента. |
state | string | Статус чата с пользователем. |
date | string | Дата начала диалога с агентом, на которого перенаправили чат. |
Пример ответа¶
{
[
{
"id": "b33201af-7a95-4bc6-9ad7-d4f6f6bf8255",
"externalMessageId": "3775657893675832064",
"conversationId": 276909,
"sendTime": "2023-10-24T10:56:44",
"direction": "INCOMING",
"messageType": "TEXT_AND_ATTACHMENTS",
"messageStatus": "SEND",
"textAndAttachments": {
"body": "this is incoming message",
"attachmentInfos": []
},
"messageInfo": {}
},
{
"id": "6d805c25-1d27-4680-8360-c7b93a66fcc9",
"externalMessageId": "1693320772815",
"conversationId": 252284,
"sendTime": "2023-08-29T14:52:52.815",
"direction": "OUTCOMING",
"agentId": "3",
"messageType": "TEXT_AND_ATTACHMENTS",
"messageStatus": "DELIVERED",
"textAndAttachments": {
"attachmentInfos": [
{
"fileId": "4b0589c8-b3f8-4da9-9637-94271bf3d8c2",
"fileName": "44fd39f0-77d3-4c88-9583-4511c993c3f9.jpeg",
"contentLength": "89021",
"contentType": "image/jpeg",
"publicUrl": "http://minio:9000/business-chat//businessChat/attachments/4b0589c8-b3f8-4da9-9637-94271bf3d8c2.jpeg"
}
]
},
"messageInfo": {}
},
{
"id": "7b9a2c09-cdbf-47b3-bc85-9ee8976f9384",
"conversationId": 276909,
"sendTime": "2023-10-31T06:32:52.355911",
"direction": "INCOMING",
"messageType": "CLOSE_SYSTEM_MESSAGE",
"messageInfo": {},
"reassignData": {
"agentId": "31642",
"state": "CLOSED_BY_AGENT",
"date": "2023-10-31T06:32:52.293049"
}
}
]
}
Возможные статусы¶
Статусы чатов¶
Статус | Описание |
---|---|
NEW |
Новый чат, агент еще не назначен. |
IN_PROGRESS |
Чат с пользователем открыт, идет диалог с агентом. |
CLOSED_BY_CUSTOMER |
Пользователь закрыл чат. |
CLOSED_AFTER_CHANNEL_PROFILE_CLOSE |
Чат закрыт автоматически при закрытии канала. |
CLOSED_BY_REASSIGNING |
Чат закрыт, агент перенаправил чат на группу. |
CLOSED_BY_AGENT |
Чат закрыт, диалог окончил агент. |
CLOSED_BY_TIMEOUT |
Чат закрыт, так как время диалога истекло. |
CSI |
Чат с пользователем открыт, идет опрос пользователя. |
CLOSED_BY_CSI |
Чат закрыт, опрос пользователя окончен. |
Статусы сообщений¶
Статус | Описание |
---|---|
SEND |
Сообщение отправлено в чат. |
DELIVERED |
Сообщение доставлено в чат. |
SEEN |
Пользователь прочитал сообщение. |
FAILED |
Ошибка доставки сообщения. |
Типы сообщений¶
Тип | Описание |
---|---|
TEXT_AND_ATTACHMENTS |
Текст и прикрепленные файлы. |
TEXT |
Сообщение, содержащее текст. |
ATTACHMENTS |
Сообщение в виде прикрепленных файлов. |
HINT |
Используется при автоответе. |
REASSIGN_SYSTEM_MESSAGE |
Системное сообщение: агент перенаправил чат на группу. |
CLOSE_SYSTEM_MESSAGE |
Системное сообщение: чат закрыт. |
UNSUPPORTED_CONTENT |
Контент сообщения не поддерживается. |
MESSAGE_STATUS_CHANGE |
Статус сообщения изменен. |