Botbuilder-如何在不退出提示对话框的情况下忽略用户响应

时间:2018-07-12 19:31:49

标签: node.js botframework

我有一个多样式机器人(通过Azure Botframework的node.js),该机器人使用一系列提示来与用户玩游戏。

在小组模式下(例如,在Kik或Slack上),它等待发给机器人的响应。

但是,我还没有找到一种方法来简单地忽略无法解决该机器人的消息。我很久以前发现的解决方案是简单地使用新的空白提示进行回复:

builder.Prompts.text(session, "");

这很好。但是最近Slack一定做了一些更改,因为现在这会导致错误,并且机器人会重新启动。

如何使漫游器忽略某些响应而不结束对话框?

如果建议重复,请确保它确实解决了此问题。许多其他问题允许对话框结束,但是这会中断游戏。

1 个答案:

答案 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();
    }
})