$response
Объект для заполнения поля $response в ответах системы. $response.replies — список ответов, выведенных в процессе обработки реакций.
replies — массив реплик чатбота, содержащий строго типизированные элементы. Предназначен для передачи ответов в различные каналы коммуникации, такие, как Телеграм, Фейсбук и др.
Ниже представлен список поддерживаемых платформой replies. Подробная иформация о формате ответа бота, параметрах, типах сообщений для каналов представлена в статье Типы ответов.
replies
Поддерживаемые элементы replies:
text— простой текстовый ответ, каждый элемент выводится отдельным сообщением. Параметрttsзадаёт текст ответа с разметкой для синтеза речи. Параметрmarkupзадаёт способ форматирования.
{
"type":"text",
"text":"....",
"tts":"....",
"markup":
"html|markdown|plain"
}buttons— вывод кнопки.
"type":"buttons"
"buttons":[
{
"text":"кнопка",
другие поля будут переданы
непосредственно в мессенджер
}
]
}inlineButtons— вывод inline-кнопки. Если заполнено полеinlineButtons[].url, по клику будет открыт указанный url.
{
"type":"inlineButtons"
"buttons":[
{
"text":"кнопка",
"url":"http://ya.ru"
}
]
}image— вывод изображения.
{
"type":"image",
"imageUrl":"http://..."
}link— вывод ссылки.
{
"type":"link",
"url":"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"});htmlResponseиспользуется для вывода визуальной составляющей навыков, созданных с использованием Interactive Canvas.
{
"type":"htmlResponse",
"updatedState": "some",
"suppressMic":true|false,
"url": "appUrl"
}Примеры использования
- Вывод изображения.
script:
$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 .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;
});