Этот метод отправляет ответы, которые бот сможет использовать, отвечая на вопросы клиентов. После того как боту отправлено сообщение (вебхук 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