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: ...
script:
$response.foo = "bar";
Поле foo
и другие поля, которые вы зададите, будут доступны в ответе бота как вложенные в поле data
.
Получение асинхронных событий в чате
Метод GET /chatapi/{token}/events
предназначен для получения асинхронных событий от сервера, например:
- Ответ от оператора.
- Изменение состояния виджета на другой странице браузера.
- Запрос клиента, отправленный на другой странице.
- Ответ бота на запрос с другой страницы.
Максимальное количество событий в ответе на запрос — 250. Если нужно обработать больше, используйте метод для получения истории переписки.
Фильтрация событий
Параметр all
данного метода определяет, нужно ли выводить все события в канале или только ответы от оператора (поведение по умолчанию).
cid
метод может возвращать дубликаты сообщений.Параметр ts
задает время, начиная с которого нужно фильтровать события.
При его отсутствии запрашиваются все события с момента последнего обращения к серверу.
Получение истории переписки
Метод GET /chatapi/{token}/client/{clientId}/history
позволяет получить историю переписки с клиентом за указанный период либо за все доступное время.