Ответы бота
JAICP позволяет передавать различные сообщения бота в единообразном виде, например, картинки или кнопки. Переданные сообщения при этом будут преобразованы в вид, специфичный для каждого канала.
$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);
Ограничения
-
Один ответ бота может содержать не более 100 элементов в массиве
$response.replies
. Их суммарная длина не должна превышать 50 000 символов. -
Ответы бота специфичны для каждого канала: канал может иметь ряд собственных ограничений на передаваемые свойства или вовсе не поддерживать тип ответа. В каждой статье перечислены каналы, в которых поддерживается определенный тип ответа. Также вы можете обратиться к статье Возможности и ограничения каналов, чтобы узнать, какие есть ограничения у канала на выбранный тип ответа.
Типы ответов
Платформа поддерживает следующие типы ответов.
Тип | Описание |
---|---|
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 | Отправка видео. |