Отправка ответов бота
Этот метод отправляет ответы, которые бот сможет использовать, отвечая
на вопросы клиентов. После того как боту отправлено сообщение (вебхук
MESSAGE
), вам необходимо отправить ответ бота на это сообщение на POST
эндпоинт <threadsUrl/api/v1/chatbot
.
Существуют четыре типа ответов:
-
По
threadsClientId
- Внутренний ID клиента, подходит и для авторизованных, и для неавторизованных клиентов. Этот тип предпочтителен для всех новых интеграций. -
По
questionId
- Используется, когда известен идентификатор конкретного вопроса. -
По
sessionId
иquestionIndex
- Используется, когдаquestionID
вопроса неизвестен, и вам необходимо ответить на сообщение для того, чтобы выяснить индекс вопроса в треде. -
4. (Устарело) По
clientId
- Чаще используется для авторизованных клиентов, когда требуется написать клиенту; не имеет привязки к конкретному вопросу.
Если в ответе есть изображение, то для того, чтобы файл верно отображался клиенту, название изображения должно содержать расширение файла, либо же должен быть указан тип файла (например, image/jpg).
Если получено сообщение с типом EMAIL
, на него необходимо отвечать
по sessionId
и questionIndex
, т.к. у одного email адреса клиента
может существовать несколько активных тредов, созданных по теме email,
так что вам необходимо знать, в какой конкретно тред отправить
сообщение.
Поле | Тип | Описание |
| string | Ответ бота на сообщение от клиента. Обязательный параметр, если не использован |
| string | Уникальный идентификатор ответа бота |
| string (необязательно) | Ответ бота на сообщение от клиента. В ответе может содержаться текст в разме тке Markdown. Рекомендуется передать текстовое представление ответа в поле |
| string (необязательно, deprecated) | Внешний ID клиента. Этот параметр устарел, вместо него используйте |
| long (необязательно) | Внутренний ID клиента |
| string (необязательно) | Внутренний ID треда (ID чата клиента с агентом) |
| number (необязательно) | Внутренний ID сообщения клиента |
| number (необязательно) | Индекс сообщения клиента в треде (чате) |
| Map<String, String> | Дополнительные параметры для сегментации (используется как в пользовательских, так и в преднастроенных сегментах). Параметр сегментации |
attachments | array (необязательно) |
|
| string |
|
| set<long>(необязательно) | Список идентификаторов агентов, на которых необходимо перевести тред после снятия его с текущего бота. Необходимо присылать в сочетании с кодом |
| set<long>(необязательно) | Список идентификаторов навыков, которыми должны владеть агента, на которых необходимо перевести тред после снятия его с текущего бота. Необходимо присылать в сочетании с кодом |
| set<long>(необязательно) | Список идентификаторов департаментов, на агентов из которых необходимо перевести тред после снятия его с текущего бота. Необходимо присылать в сочетании с кодом |
| Object (необязательно) | Дополнительные настройки сообщения |
|
| Параметр, который указывает, заблокировано ли поле ввода сообщения ( |
|
| Параметр, который указывает, замаскированы ли цифры в связанном сообщении клиента ( |
|
|
Длина и количество быстрых ответов настраивается в БД: |
|
| Дополнительные заголовок и подпись (только для Whatsapp) |
|
|
В заголовке |
|
|
|
|
| Интерактивный список (только для Whatsapp) |
|
|
|
|
|
|
|
| Наименование кнопки для интерак тивного списка, максимальная длина 20 символов |
| array (Максимум 10 элементов во всех |
|
| array |
|
answerId
является уникальным значением. В случае повторного
получения значение сообщение не будет доставлено клиенту.
Если получен ответ на вопрос, для которого ранее уже был получен
ответ бота, то в зависимости от настроек системы сообщение может
быть: отклонено и доставка сообщения клиенту не будет выполнена
(строгий режим) или отправка будет выполнена независимо от текста,
отправляемого сообщения (мягкий режим). То есть клиент может
получить дублирующее сообщение от бота.
Пример: ответ по clientId
Пример curl
$ curl 'http://localhost:8080/api/v1/chatbot' -i -X POST \
-H 'Content-Type: application/json' \
-H 'Authorization: Bearer <token' \
-H 'X-Tenant-Name: local' \
-d '{
"segmentationInfo" : {
"key" : "value"
,
"clientId" : "1",
"threadsClientId" : 1,
"receivedAt" : "2024-12-28T11:39:34.304Z",
"text" : "testPostAnswersByClientId",
"attachments" : [ {
"url" : "http://test...",
"name" : "testImage.png",
"type" : "image/jpeg",
"size" : 256,
"contentType" : null,
"fileId" : null,
"state" : null,
"errorCode" : null,
"errorMessage" : 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
X-Tenant-Name: local
Content-Length: 566
Host: localhost:8080
{
"segmentationInfo" : {
"key" : "value"
,
"clientId" : "1",
"threadsClientId" : 1,
"receivedAt" : "2024-12-28T11:39:34.304Z",
"text" : "testPostAnswersByClientId",
"attachments" : [ {
"url" : "http://test...",
"name" : "testImage.png",
"type" : "image/jpeg",
"size" : 256,
"contentType" : null,
"fileId" : null,
"state" : null,
"errorCode" : null,
"errorMessage" : null
],
"settings" : {
"blockInput" : false,
"masked" : true
,
"code" : "SWITCH_TO_HUMAN",
"answerId" : "externalAnswerId"
Пример успешного HTTP ответа
HTTP/1.1 200 OK
X-Request-Id: a26146a5-0858-45f8-b914-a1731ab50c42
Vary: Origin
Vary: Access-Control-Request-Method
Vary: Access-Control-Request-Headers
X-Content-Type-Options: nosniff
X-XSS-Protection: 0
Cache-Control: no-cache, no-store, max-age=0, must-revalidate
Pragma: no-cache
Expires: 0
X-Frame-Options: DENY
Пример: ответ по questionId
Пример curl
$ curl 'http://localhost:8080/api/v1/chatbot' -i -X POST \
-H 'Content-Type: application/json' \
-H 'Authorization: Bearer <token' \
-H 'X-Tenant-Name: local' \
-d '{
"segmentationInfo" : {
"key" : "value"
,
"questionId" : 43,
"receivedAt" : "2024-12-28T11:39:34.356Z",
"text" : "testPostAnswersByClientId",
"attachments" : [ {
"url" : "http://test...",
"name" : "testImage.png",
"type" : "image/jpeg",
"size" : 256,
"contentType" : null,
"fileId" : null,
"state" : null,
"errorCode" : null,
"errorMessage" : 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
X-Tenant-Name: local
Content-Length: 542
Host: localhost:8080
{
"segmentationInfo" : {
"key" : "value"
,
"questionId" : 43,
"receivedAt" : "2024-12-28T11:39:34.356Z",
"text" : "testPostAnswersByClientId",
"attachments" : [ {
"url" : "http://test...",
"name" : "testImage.png",
"type" : "image/jpeg",
"size" : 256,
"contentType" : null,
"fileId" : null,
"state" : null,
"errorCode" : null,
"errorMessage" : null
],
"settings" : {
"blockInput" : true,
"masked" : false
,
"code" : "SWITCH_TO_HUMAN",
"answerId" : "externalAnswerId"
Пример успешного HTTP ответа
HTTP/1.1 200 OK
X-Request-Id: a88aedba-36e1-4f0a-9c52-e01b3455d024
Vary: Origin
Vary: Access-Control-Request-Method
Vary: Access-Control-Request-Headers
X-Content-Type-Options: nosniff
X-XSS-Protection: 0
Cache-Control: no-cache, no-store, max-age=0, must-revalidate
Pragma: no-cache
Expires: 0
X-Frame-Options: DENY
Пример: ответ по sessionId
и questionIndex
Пример curl
$ curl 'http://localhost:8080/api/v1/chatbot' -i -X POST \
-H 'Content-Type: application/json' \
-H 'Authorization: Bearer <token' \
-H 'X-Tenant-Name: local' \
-d '{
"segmentationInfo" : { ,
"sessionId" : "1",
"questionIndex" : 3,
"receivedAt" : "2024-12-28T11:39:34.383Z",
"text" : "testPostAnswersByClientId",
"attachments" : [ {
"url" : "http://test...",
"name" : "testImage.png",
"type" : "image/jpeg",
"size" : 256,
"contentType" : null,
"fileId" : null,
"state" : null,
"errorCode" : null,
"errorMessage" : null
],
"code" : "SWITCH_TO_HUMAN",
"answerId" : "externalAnswerId"
'
Пример HTTP запроса
POST /api/v1/chatbot HTTP/1.1
Content-Type: application/json
Authorization: Bearer <token
X-Tenant-Name: local
Content-Length: 475
Host: localhost:8080
{
"segmentationInfo" : { ,
"sessionId" : "1",
"questionIndex" : 3,
"receivedAt" : "2024-12-28T11:39:34.383Z",
"text" : "testPostAnswersByClientId",
"attachments" : [ {
"url" : "http://test...",
"name" : "testImage.png",
"type" : "image/jpeg",
"size" : 256,
"contentType" : null,
"fileId" : null,
"state" : null,
"errorCode" : null,
"errorMessage" : null
],
"code" : "SWITCH_TO_HUMAN",
"answerId" : "externalAnswerId"
Пример успешного HTTP ответа
HTTP/1.1 200 OK
X-Request-Id: 0e2b8474-c889-4355-9721-de3c180ba58d
Vary: Origin
Vary: Access-Control-Request-Method
Vary: Access-Control-Request-Headers
X-Content-Type-Options: nosniff
X-XSS-Protection: 0
Cache-Control: no-cache, no-store, max-age=0, must-revalidate
Pragma: no-cache
Expires: 0
X-Frame-Options: DENY
Пример: сообщение с быстрым ответом
Пример curl
$ curl 'http://localhost:8080/api/v1/chatbot' -i -X POST \
-H 'Content-Type: application/json' \
-H 'Authorization: Bearer <token' \
-H 'X-Tenant-Name: local' \
-d '{
"segmentationInfo" : { ,
"clientId" : "1",
"threadsClientId" : 1,
"receivedAt" : "2024-12-28T11:39:34.344Z",
"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
X-Tenant-Name: local
Content-Length: 614
Host: localhost:8080
{
"segmentationInfo" : { ,
"clientId" : "1",
"threadsClientId" : 1,
"receivedAt" : "2024-12-28T11:39:34.344Z",
"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
X-Request-Id: 236280d9-3e4d-41f8-a983-ca5c8a554144
Vary: Origin
Vary: Access-Control-Request-Method
Vary: Access-Control-Request-Headers
X-Content-Type-Options: nosniff
X-XSS-Protection: 0
Cache-Control: no-cache, no-store, max-age=0, must-revalidate
Pragma: no-cache
Expires: 0
X-Frame-Options: DENY