Я создал чат-бота на основе потока, используя мессенджер FB, Wit.ai и node.js. Это работает хорошо, но для того, чтобы взаимодействие выглядело более естественным, я хочу, чтобы мой бот ненадолго останавливался и, казалось, печатал каждый из своих ответов.
Я хочу, чтобы всплывающее окно «ввода текста» отображалось на короткое время перед каждым ответом, который отправляет мой бот, в идеале, имея возможность определить время, в течение которого всплывающее окно отображается до отправки ответа. На данный момент есть разделы моего разговора, где бот отправляет последовательные сообщения, и все они отправляются слишком быстро одновременно.
FB Messenger Send API говорит, что либо "сообщение", либо " должно быть установлено свойство sender_action. Я попытался установить оба так:
const fbMessage = (id, text) => {
if(fruits.apples.indexOf(text) >= 0 || fruits.oranges.indexOf(text) >= 0) {
var body = JSON.stringify({
recipient: { id },
"sender_action":"typing_on",
message: {
attachment: {
"type": "image",
"payload": {
"url": text
}
}
},
});
} else {
var body = JSON.stringify({
recipient: { id },
"sender_action":"typing_on",
message: { text },
});
}
const qs = 'access_token=' + encodeURIComponent(FB_PAGE_TOKEN);
return fetch('https://graph.facebook.com/me/messages?' + qs, {
method: 'POST',
headers: {'Content-Type': 'application/json'},
body,
})
.then(rsp => rsp.json())
.then(json => {
if (json.error && json.error.message) {
throw new Error(json.error.message);
}
return json;
});
};
Но я получаю следующую ошибку:
Я не уверен, что мне нужно делать - я предполагаю, что мне нужно настроить какой-то ответ бота "sender_action", который запускается перед каждым диалоговым ответом, но я не знаю, как бы я это сделал.