如何在 node.js 版本的 Microsoft Bot Framework 中“退出”?

Posted

技术标签:

【中文标题】如何在 node.js 版本的 Microsoft Bot Framework 中“退出”?【英文标题】:How to 'exit' in the node.js version of Microsoft Bot Framework? 【发布时间】:2017-07-28 19:54:32 【问题描述】:

每当用户输入“退出”作为消息时,我想调用 session.endDialog。

目前,我的机器人有多种类型的对话,但我希望机器人在用户键入“退出”时结束对话,无论用户当前处于哪个对话中。

有没有办法做到这一点?

【问题讨论】:

【参考方案1】:

我认为您想将triggerAction 与endConversation 一起使用(而不是endDialog):

// reset the bot 
bot.dialog('reset', function (session) 
    // reset data
    session.endConversation("Ok… Goodbye.");
).triggerAction( matches: /^exit/i ); 

【讨论】:

哦,它有效!非常感谢。顺便问一下,如何添加触发此操作的单词?另外,如何使用 triggerAction 调用不同的对话框而不是结束 convo? 另外,有没有办法让它理解“意图”(来自 LUIS)来触发事件,而不是硬编码关键字? 要拥有多个触发词,只需将组分隔为 |在匹配正则表达式中:matches: /^(exit)|(quit)|(depart)|(move away)/i 答案中的代码已经创建了一个 ID 为“reset”的新对话框。您只需更改函数中的代码以执行您想做的任何事情。要使用 LUIS 意图,您需要通过 bot.recognizer(new builder.LuisRecognizer(url) 将 LUIS 识别器添加到机器人,然后将 triggerAction 的匹配属性设置为意图名称的字符串 matches: "IntentName"。但是,如果您在使用相同 Luis 识别器的对话框中,您可能会遇到问题。我发现有两个 Luis 应用程序,一个用于特定对话,一个用于所有输入,效果很好。 只需按照答案的代码,将单个函数替换为您的函数数组,并将正则表达式替换为您的意图名称字符串。并确保您已将 Luis 识别器添加到机器人对象中,如我的第二条评论所述。

以上是关于如何在 node.js 版本的 Microsoft Bot Framework 中“退出”?的主要内容,如果未能解决你的问题,请参考以下文章

在 Node.JS 中解析 Microsoft Office 文件

如何在 Plesk 上为 Node.js 管理器添加新的 node.js 版本?

如何在 Raspberry Pi 上安装最新版本的 node.js?

如何更改为旧版本的 Node.js

如何在 package.json 中指定所需的 Node.js 版本?

如何在 Windows 上安装旧版本的 node.js?