Перейти к основному содержимому

Ответы бота

JAICP позволяет передавать различные сообщения бота в единообразном виде, например, картинки или кнопки. Переданные сообщения при этом будут преобразованы в вид, специфичный для каждого канала.

подсказка
Для некоторых перечисленных ниже ответов бота существуют эквивалентные DSL-теги или методы через встроенный сервис $reactions.

Формирование ответов

В сценарии ответы бота формируются с помощью системной переменной $response. Ответы бота собираются в массив $response.replies. Чтобы добавить новый ответ бота в массив, нужно вызвать метод push.

Перед тем как добавить ответ в массив, нужно инициализировать поле replies в переменной $response. Если поле не инициализировано, значение в $response.replies будет undefined. В таком случае, когда бот начнет выполнять реакции, возникнет ошибка Cannot read property «push» from undefined.

Поэтому если поле replies уже было ранее определено (например, если в стейте уже есть реакции, вызванные через DSL-теги или методы), то присваиваем ему это же значение. Иначе присваиваем пустой массив.

var reply = {"type": "telegramPayment"};
// Инициализация свойств ответа.
// ...
// Инициализация массива ответов.
$response.replies = $response.replies || [];
$response.replies.push(reply);

Ограничения

  1. Один ответ бота может содержать не более 100 элементов в массиве $response.replies. Их суммарная длина не должна превышать 50 000 символов.

  2. Ответы бота специфичны для каждого канала: канал может иметь ряд собственных ограничений на передаваемые свойства или вовсе не поддерживать тип ответа. В каждой статье перечислены каналы, в которых поддерживается определенный тип ответа. Также вы можете обратиться к статье Возможности и ограничения каналов, чтобы узнать, какие есть ограничения у канала на выбранный тип ответа.

Типы ответов

Платформа поддерживает следующие типы ответов.

ТипОписание
audioОтправка аудио.
buttonsВывод кнопки.
carouselВывод списка элементов с возможностью выбора одного из них.
context-switch
context-return
Переключение и возврат контекста диалога из одного бота в другого.
crmIntegrationРабота с CRM Битрикс24.
dtmfНабор DTMF-сообщения (цифры/символы в тоновом режиме). Только для телефонного канала.
fileОтправка файла.
hangupПрерывание звонка. Только для телефонного канала.
imageОтправка изображения.
inlineButtonsВывод инлайн-кнопки.
locationОтправка координат.
rawПередача методов, специфичных для определенного канала.
smsОтправка SMS-сообщений.
switchПеревод диалога пользователя с бота на оператора.
textОтправка простого текстового ответа. Каждый ответ выводится отдельным сообщением.
telegramPaymentОплата товаров или услуг в канале Telegram.
telegramPaymentPrecheckoutПроверка наличия товара перед оплатой в канале Telegram.
timeoutПереход в стейт, если от пользователя нет ответа.
videoОтправка видео.