使用RegEx和意图触发动作

时间:2017-11-07 12:12:44

标签: node.js botframework

我使用bot框架来帮助完成系统中的基本任务。其中一项任务是列出不同的数据集,例如组和用户。

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

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

代码部分可以处理抛出它的每种类型的列表,所以我希望triggerAction能够捕获所有不同的列表。它们在我自己的自定义识别器中得到识别,并且将始终采用GetTopicList的格式,其中&#34;主题&#34;是&#34;用户&#34;或&#34; Group&#34;所以意图将是&#34; GetUserList&#34;或&#34; GetGroupList&#34;。

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

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

1 个答案:

答案 0 :(得分:1)

来自botbuilder nodejs的描述来源MatchType

/**
 * 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匹配但正则表达式匹配。

我担心您需要将字符串数组用作matches属性:

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