Chat API
JAICP предоставляет Chat API — REST API для интеграции бота в сторонние приложения. С помощью Chat API вы можете встроить чат с ботом, например, в мобильное приложение, сайт или игру.
Перед началом работы с Chat API необходимо подключить к проекту канал Chat API и получить из настроек канала его токен, который используется в запросах ко всем методам.
Методы API
Отправка запросов клиента в чат
Синхронная отправка
Предоставляются следующие методы для синхронной отправки запроса клиента:
-
Метод возвращает подробную информацию о запросе, в том числе
cid
.Опциональное поле
cid
— идентификатор соединения. Это произвольная строка, определяющая текущее соединение с чат-приложением. Она может быть далее использована при получении событий в чате, чтобы фильтровать только события во время данного соединения. -
Упрощенный метод, который возвращает несколько параметров запроса:
clientId
,query
иevent
.
Асинхронная отправка
Метод POST /chatapi/{token}/async
позволяет асинхронно отправлять запрос клиента или событие в чат-приложении.
В отличие от метода POST /chatapi/{token}
в ответ на запрос вы получите только идентификатор сообщения.
Остальная информация будет отправлена на вебхук, который вы можете указать в настройках канала Chat API.
Событие будет отправлено на вебхук, если:
- Вы отправили асинхронный запрос.
- Вы провели рассылку.
- Клиент получил ответ от оператора.
- Время ожидания между ответами на запрос было превышено.
На вебхук придет массив JSON-объектов:
{
"token": "token",
"clientId": "test",
"questionId": "12345",
"data": {
"nlpClass": "/CatchAll",
"confidence": -0.010999999999999979,
"replies": [ // Сообщение бота
{
"type": "text",
"text": "Скажите боту что-то осмысленное",
"state": "/CatchAll"
}
],
"answer": "Скажите боту что-то осмысленное",
"newSessionStarted": false,
"debugData": [],
"endSession": false
},
"timestamp": "2022-09-28T12:32:13.262",
"blockForm": false
}
Расширение ответов настраиваемыми полями
Вы можете расширить ответ бота с помощью настраиваемых полей.
Используйте в сценарии объект $response
:
state: Example
script:
$response.foo = "bar";
Поле foo
и другие поля, которые вы зададите, будут доступны в ответе бота как вложенные в поле data
.