【发布时间】:2026-02-09 18:30:01
【问题描述】:
我使用 FB messenger、Wit.ai 和 node.js 构建了一个基于流的聊天机器人。它运行良好,但为了使交互看起来更自然,我希望我的机器人暂停片刻,并且似乎正在输入它的每个响应。
我希望在我的机器人发送每个响应之前短暂显示“打字”气泡,理想情况下能够定义在发送响应之前气泡可见的时间。目前,在我的对话中,机器人会发送连续的消息,而且一次发送的速度太快了。
FB Messenger Send API 显示either the 'message' or 'sender_action' property must be set。我试过这样设置:
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”机器人响应,但我不知道该怎么做这个。
【问题讨论】:
标签: node.js facebook-messenger messenger wit.ai