我有一个多样式机器人(通过Azure Botframework的node.js),该机器人使用一系列提示来与用户玩游戏。
在小组模式下(例如,在Kik或Slack上),它等待发给机器人的响应。
但是,我还没有找到一种方法来简单地忽略无法解决该机器人的消息。我很久以前发现的解决方案是简单地使用新的空白提示进行回复:
builder.Prompts.text(session, "");
这很好。但是最近Slack一定做了一些更改,因为现在这会导致错误,并且机器人会重新启动。
如何使漫游器忽略某些响应而不结束对话框?
如果建议重复,请确保它确实解决了此问题。许多其他问题允许对话框结束,但是这会中断游戏。
答案 0 :(得分:1)
您可以设置中间件(如Gary提到的那样),该中间件将拦截传入的消息,并且仅在提及机器人的情况下才进行处理:
bot.use({
botbuilder: function (session, next) {
var message = session.message;
var botMri = message.address.bot.id.toLowerCase();
var botAtMentions = message.entities && message.entities.filter(
(entity) => (entity.type === "mention") && (entity.mentioned.id.toLowerCase() === botMri));
if (botAtMentions && botAtMentions.length) {
next();
}
},
send: function (event, next) {
next();
}
})