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

$response

Объект для заполнения поля $response в ответах системы. $response.replies — список ответов, выведенных в процессе обработки реакций.

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

подсказка
Ниже представлен список replies, поддерживаемых платформой. Формат ответа бота, параметры и типы сообщений для каналов подробно описаны в статье Типы ответов.

replies

Поддерживаемые элементы replies:

  • text — простой текстовый ответ, каждый элемент выводится отдельным сообщением. Параметр tts задаёт текст ответа с разметкой для синтеза речи. Параметр markup задаёт способ форматирования.
{
"type": "text",
"text": "....",
"tts": "....",
"markup": "html|markdown|plain"
}
  • buttons — вывод кнопки.
{
"type": "buttons",
"buttons": [
{
"text": "кнопка" // Другие поля будут переданы непосредственно в мессенджер.
}
]
}
  • inlineButtons — вывод инлайн-кнопки. Если заполнено поле inlineButtons[].url, по клику будет открыт указанный url.
{
"type": "inlineButtons",
"buttons": [
{
"text": "кнопка",
"url": "https://example.com"
}
]
}
  • image — вывод изображения.
{
"type": "image",
"imageUrl": "http://..."
}
  • raw используется для передачи методов, специфичных для определенного канала. Обязательный параметр body — тело ответа, которое будет передано в чат-систему. Параметры, идентифицирующие пользователя в чате, будут подставлены автоматически.
{
"type": "raw",
"body": {...},
"method": "sendMessage"
}
  • switch — переключение диалога клиента с бота на оператора.
{
"type": "switch",
"firstMessage": "...",
"closeChatPhrases": ["..."],
"ignoreOffline": true|false,
"oneTimeMessage": true|false
}
  • location — вывод координат. Параметры: lat, lon.
{
"type": "location",
"lat": 59.934280,
"lon": 30.335099
}
  • timeout задает переход в состояние, если от пользователя нет ответа.
{
"type": "timeout",
"interval": 10,
"targetState": "/timedout"
}
  • dtmf — запрос набора DTMF-сообщения (цифры/символы в тоновом режиме). Только для телефонных звонков.
$response.replies.push({type:"dtmf"});
  • hangup — прерывание звонка. Только для телефонных звонков.
$response.replies.push({type:"hangup"});

Примеры использования

  • Вывод изображения.
script:
$response.replies = $response.replies || [];
$response.replies.push({
"type": "image",
"imageUrl": "https://testimageurl.jpg",
"text": "Изображение" // Это поле опционально.
});
  • Вывод GIF анимации.
$response.replies = $response.replies || [];
$response.replies.push({
"type": "raw",
"body": {
"animation": "https://www.catgifpage.com/gifs/318.gif"
},
"method": "sendAnimation"
});
  • Переключение диалога с бота на оператора.
$response.replies = $response.replies || [];
$response.replies .push({
"type": "switch",
"phoneNumber": 74155,
"closeChatPhrases": catchAll.closeChatPhrases,
"firstMessage": $client.history,
"destination": catchAll.operatorGroup,
});
  • Пример изменения ответа в post-процессе при третьей попытке бота ответить одинаково.
init:
bind("postProcess", function(){
var $session = $jsapi.context().session;
var $response = $jsapi.context().response;
var answer = $response.replies ? $response.replies.reduce (function (answers, current) {
answers += " " + current.text;
return answers;
}, "") : "";
if ($session.lastAnswer && (answer == $session.lastAnswer)) {
$session.answerRepetition = $session.answerRepetition || 0;
$session.answerRepetition += 1;
} else {
$session.answerRepetition = 0;
}
if ($session.answerRepetition == 2) {
$response.replies = [{
"type": "text",
"text": "Похоже, мы ходим кругами. Может, спросишь о чем-нибудь другом?"
}];
}
$session.lastAnswer = answer;
});