Этот метод отправляет ответы, которые бот сможет использовать, отвечая на вопросы клиентов. После того как боту отправлено сообщение (вебхук MESSAGE), отправьте ответ бота на это сообщение на POST эндпоинт <threadsUrl>/api/v1/chatbot.
Типы ответов:
- По
threadsClientId– Внутренний ID клиента, подходит и для авторизованных, и для неавторизованных клиентов. Этот тип предпочтителен для всех новых интеграций. - По
questionId– Используется, когда известен идентификатор конкретного вопроса. - По
sessionIdиquestionIndex– Используется, когдаquestionIDвопроса неизвестен, и вам необходимо ответить на сообщение, чтобы выяснить индекс вопроса в треде. - (Устарело) По
clientId– Чаще используется для авторизованных клиентов, когда требуется написать клиенту. Не имеет привязки к конкретному вопросу.
image/jpg). EMAIL, на него необходимо отвечать по sessionId и questionIndex. У одного клиента может быть несколько активных тредов с одной темой, так что вам необходимо знать, в какой конкретно тред отправить сообщение. Параметры запроса
| Параметр | Тип | Описание |
text | string | Ответ бота на сообщение от клиента. Обязательный параметр, если не использован formattedText. |
answerId | string | Уникальный идентификатор ответа бота. |
formattedText | string (необязательно) | Ответ бота на сообщение от клиента. В ответе может содержаться текст в разметке Markdown. Рекомендуется передать текстовое представление ответа в поле text для отображения в пользовательском интерфейсе. |
clientId | string (необязательно, deprecated) | Внешний ID клиента. Этот параметр устарел, вместо него используйте threadsClientId. |
threadsClientId | long (необязательно) | Внутренний ID клиента. |
sessionId | string (необязательно) | Внутренний ID треда (ID чата клиента с агентом). |
questionId | number (необязательно) | Внутренний ID сообщения клиента. |
questionIndex | number (необязательно) | Индекс сообщения клиента в треде (чате). |
segmentationInfo | Map<String, String> | Дополнительные параметры для сегментации (используется как в пользовательских, так и в преднастроенных сегментах). Параметр сегментации personal_manager доступен “из коробки”. Если в этом параметре передан логин агента, а маршрут для сегмента с этим параметром настроен в системе, треды клиентов распределяются по соответствующему маршруту персональным менеджерам (агентам). |
attachments | array (необязательно) | Настройки вложения. Поля: • url – URL файла, строка до 4000 символов• name – Название файла, строка до 1000 символов• type – MIME-тип файла, строка до 256 символов |
quickReplies | array (необязательно) | Настройки быстрого ответа. Поля: • type – Тип быстрого ответа. Возможные значения: TEXT для текстовых сообщений.• text – Текст сообщения, строка до 4000 символов.• shown_text – Текстовое содержимое, необязательный параметр, строка до 2000 символов. Используется только в комбинации с параметром text. Если параметр указан, этот текст отправляется как клиентское сообщение после нажатия на кнопку быстрого ответа.• callback_data – Текстовое содержимое, необязательный параметр, строка до 255 символов. Название события, которое будет передаваться, когда вызван JS SDK API для последующей обработки заказчиком на стороне сайта.• imageUrl – URL иконки кнопки, строка до 4000 символов.• url – Ссылка на прикрепленный файл, строка до 4000 символов.Длина и количество быстрых ответов настраивается в БД: message.max-quick-replies, message.max-quick-reply-length. |
code | string | Значения: • UNCLEAR_QUESTION – Вопрос непонятен боту, поэтому он переводит его агенту.• SWITCH_TO_HUMAN – Бот получил запрос на перевод диалога на агента.• SUCCESS – Бот успешно обработал сообщение клиента и отправил ответ. |
userIds | set<long>(необязательно) | Список идентификаторов агентов, на которых необходимо перевести тред после снятия его с текущего бота. Необходимо отправлять вместе с кодом SWITCH_TO_HUMAN. |
skillIds | set<long>(необязательно) | Список идентификаторов навыков, которыми должны владеть агенты, на которых необходимо перевести тред после снятия его с текущего бота. Необходимо отправлять вместе с кодом SWITCH_TO_HUMAN. |
unitIds | set<long>(необязательно) | Список идентификаторов департаментов, на агентов из которых необходимо перевести тред после снятия его с текущего бота. Необходимо отправлять вместе с кодом SWITCH_TO_HUMAN. |
settings | object (необязательно) | Дополнительные настройки сообщения. |
settings.blockInput | boolean (необязательно) | Параметр, который указывает, заблокировано ли поле ввода сообщения (true – заблокировано, false – не заблокировано). Работает только для быстрых ответов. |
settings.masked | boolean (необязательно) | Параметр, который указывает, замаскированы ли цифры в связанном сообщении клиента (true – замаскированы, false – не замаскированы). |
quickRepliesHeaderFooter | object (необязательно) | Дополнительные заголовок и подпись (только для Whatsapp). |
quickRepliesHeaderFooter.header | array (необязательно) | Поля: • text – Текст заголовка, максимальная длина 61 символ.• imageUrl – URL изображения• documentUrl – URL файла.• documentName – Название файла• videoUrl – URL видеофайлаВ заголовке header можно передать параметры: текст заголовка, изображение, документ, видео. Отправить одновременно в заголовке и текст, и изображение, и документ, и видео нельзя. |
quickRepliesHeaderFooter.footer | array (необязательно) | Поля: • text – Текст подписи, максимальная длина 61 символ |
messageListPicker | object (необязательно) | Интерактивный список (только для Whatsapp). |
messageListPicker.header | object (необязательно) | Поля: • text (string) – Текст заголовка, максимальная длина 60 символов |
messageListPicker.footer | object (необязательно) | Поля: • text – Текст подписи, максимальная длина 60 символов |
messageListPicker.title | string | Наименование кнопки для интерактивного списка, максимальная длина 20 символов |
messageListPicker.sections | array (максимум 10 элементов во всех items) | Поля: • title (string) – Заголовок интерактивного списка, максимальная длина 24 символа• items (array) – массив элементов интерактивного списка |
messageListPicker.section.items | array | Поля: • title (string) – Название элемента, максимальная длина 24 символа• subTitle (string) – Необязательное. Подзаголовок элемента, максимальная длина 72 символа• identifier (string) – сквозной для всего сообщения ID элемента, вернется в ответном сообщении пользователя |
Пример: ответ по clientId
Пример curl
$ curl 'http: //localhost:8080/api/v1/chatbot' -i -X POST \
-H 'Content-Type: application/json' \
-H 'Authorization: Bearer <token>' \
-d '{
"segmentationInfo": {
"key": "value"
},
"clientId": "1",
"threadsClientId": 1,
"receivedAt": "2022-05-18T08:45:07.291Z",
"text": "testPostAnswersByClientId",
"attachments": [
{
"url": "http://test...",
"name": "testImage.png",
"type": "image/jpeg",
"size": 256,
"contentType": null
}
],
"settings": {
"blockInput": false,
"masked": true
},
"code": "SWITCH_TO_HUMAN",
"answerId": "externalAnswerId"
}'
HTTP запрос
POST /api/v1/chatbot HTTP/1.1
Content-Type: application/json
Authorization: Bearer <token>
Content-Length: 474
Host: localhost: 8080
{
"segmentationInfo": {
"key": "value"
},
"clientId": "1",
"threadsClientId": 1,
"receivedAt": "2022-05-18T08:45:07.291Z",
"text": "testPostAnswersByClientId",
"attachments": [
{
"url": "http://test...",
"name": "testImage.png",
"type": "image/jpeg",
"size": 256,
"contentType": null
}
],
"settings": {
"blockInput": false,
"masked": true
},
"code": "SWITCH_TO_HUMAN",
"answerId": "externalAnswerId"
}
Пример успешного HTTP ответа
HTTP/1.1 200 OK
Пример: ответ по questionId
Пример curl
$ curl 'http: //localhost:8080/api/v1/chatbot' -i -X POST \
-H 'Content-Type: application/json' \
-H 'Authorization: Bearer <token>' \
-d '{
"segmentationInfo": {
"key": "value"
},
"questionId": 43,
"receivedAt": "2022-05-18T08:45:07.606Z",
"text": "testPostAnswersByClientId",
"attachments": [
{
"url": "http://test...",
"name": "testImage.png",
"type": "image/jpeg",
"size": 256,
"contentType": null
}
],
"settings": {
"blockInput": true,
"masked": false
},
"code": "SWITCH_TO_HUMAN",
"answerId": "externalAnswerId"
}
HTTP запрос
POST /api/v1/chatbot HTTP/1.1
Content-Type: application/json
Authorization: Bearer <token>
Content-Length: 450
Host: localhost: 8080
{
"segmentationInfo": {
"key": "value"
},
"questionId": 43,
"receivedAt": "2022-05-18T08:45:07.606Z",
"text": "testPostAnswersByClientId",
"attachments": [
{
"url": "http://test...",
"name": "testImage.png",
"type": "image/jpeg",
"size": 256,
"contentType": null
}
],
"settings": {
"blockInput": true,
"masked": false
},
"code": "SWITCH_TO_HUMAN",
"answerId": "externalAnswerId"
}
Пример успешного HTTP ответа
HTTP/1.1 200 OK
Пример: ответ по sessionId и questionIndex
Пример curl
$ curl 'http: //localhost:8080/api/v1/chatbot' -i -X POST \
-H 'Content-Type: application/json' \
-H 'Authorization: Bearer <token>' \
-d '{
"segmentationInfo": {},
"sessionId": "1",
"questionIndex": 3,
"receivedAt": "2022-05-18T08:45:07.656Z",
"text": "testPostAnswersByClientId",
"attachments": [
{
"url": "http://test...",
"name": "testImage.png",
"type": "image/jpeg",
"size": 256,
"contentType": null
}
],
"code": "SWITCH_TO_HUMAN",
"answerId": "externalAnswerId"
}'
HTTP запрос
POST /api/v1/chatbot HTTP/1.1
Content-Type: application/json
Authorization: Bearer <token>
Content-Length: 383
Host: localhost: 8080
{
"segmentationInfo": {},
"sessionId": "1",
"questionIndex": 3,
"receivedAt": "2022-05-18T08:45:07.656Z",
"text": "testPostAnswersByClientId",
"attachments": [
{
"url": "http://test...",
"name": "testImage.png",
"type": "image/jpeg",
"size": 256,
"contentType": null
}
],
"code": "SWITCH_TO_HUMAN",
"answerId": "externalAnswerId"
}
Пример успешного HTTP ответа
HTTP/1.1 200 OK
Пример: сообщение с быстрым ответом
Пример curl
$ curl 'http: //localhost:8080/api/v1/chatbot' -i -X POST \
-H 'Content-Type: application/json' \
-H 'Authorization: Bearer <token>' \
-d '{
"segmentationInfo": {},
"clientId": "1",
"threadsClientId": 1,
"receivedAt": "2022-05-18T08:45:07.464Z",
"quickReplies": [
{
"type": "TEXT",
"text": "quick reply 1",
"imageUrl": null,
"url": null,
"shown_text": null,
"callback_data": null
"payload" : null
},
{
"type": "TEXT",
"text": "quick reply 2",
"imageUrl": null,
"url": null,
"shown_text": null,
"callback_data": null
"payload" : null
}
],
"settings": {
"blockInput": true,
"masked": false
},
"code": "SUCCESS",
"answerId": "externalAnswerId"
}'
HTTP запрос
POST /api/v1/chatbot HTTP/1.1
Content-Type: application/json
Authorization: Bearer <token>
Content-Length: 570
Host: localhost: 8080
{
"segmentationInfo": {},
"clientId": "1",
"threadsClientId": 1,
"receivedAt": "2022-05-18T08:45:07.464Z",
"quickReplies": [
{
"type": "TEXT",
"text": "quick reply 1",
"imageUrl": null,
"url": null,
"shown_text": null,
"callback_data": null
"payload" : null
},
{
"type": "TEXT",
"text": "quick reply 2",
"imageUrl": null,
"url": null,
"shown_text": null,
"callback_data": null
"payload" : null
}
],
"settings": {
"blockInput": true,
"masked": false
},
"code": "SUCCESS",
"answerId": "externalAnswerId"
}
Пример успешного HTTP ответа
HTTP/1.1 200 OK