我正在使用Bot框架来帮助完成系统中的基本任务。这些任务之一是列出不同的数据集,例如组和用户。

处理此问题的对话框如下所示:

lib.dialog('/', function(session) {
<code>
}).triggerAction({matches: stuff});


代码部分可以处理抛出在其中的每种类型的列表,因此我希望TriggerAction可以捕获所有不同的列表。它们在我自己的自定义识别器中被识别,并且将始终采用GetTopicList的格式,其中“主题”是“用户”或“组”等。因此,其意图将是“ GetUserList”或“ GetGroupList”。

我似乎无法使RegEx正常工作,因为它会开始监听消息而不是我的识别器(/^Get.*List$/解决了问题,但它不会监听识别器)。

在triggerAction中使用RegEx之后,触发器将开始侦听发送给机器人的消息,而不是意图,这种行为不是我要查找的行为,但是让触发器仍然侦听意图。这可能吗?

最佳答案

如来自MatchType的botbuilder nodejs源代码的描述:

/**
 * Supported rules for matching a users utterance.
 * * _{RegExp}_ - A regular expression will be used to match the users utterance.
 * * _{string}_ - A named intent returned from a recognizer will be used to match the users utterance.
 * * _{(RegExp|string)[]}_ - An array of either regular expressions or named intents can be passed to match the users utterance in a number of possible ways. The rule generating the highest score (best match) will be used for scoring purposes.
 */


因此,根据我的理解以及代码测试的结果,意图只能通过sting进行匹配,而可以使用regexp进行匹配。

恐怕您需要将字符串数组用作matches属性:

triggerAction({
    matches: ['GetTopicList','GetUserList',...],
})

关于node.js - 带RegEx和意图的triggerAction,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/47157703/

10-16 21:15