Botframework 如何集成QnA maker以收集用户信息?

Botframework 如何集成QnA maker以收集用户信息?,botframework,azure-language-understanding,qnamaker,Botframework,Azure Language Understanding,Qnamaker,我目前已将LUIS与我的聊天机器人集成。 情况是:- 用户在bot中键入某些内容 机器人逻辑调用LUIS来确定意图并基于意图 调用相应的对话框 在对话框中,我使用瀑布式对话框通过 提示 我现在想要的是, 在上述场景的第2步之后,根据LUIS返回的意图,我希望后续问题由QnA而不是机器人提出。 基本上,我想用QnA maker取代瀑布式步骤。 这样做可以吗,还是可行 流程如下所述:- 用户:-创建任务 -->>>>路易斯的意图回来了 -->>>>基于返回的意图调用QnA QnA:-您希望在哪个项目

我目前已将LUIS与我的聊天机器人集成。 情况是:-

  • 用户在bot中键入某些内容
  • 机器人逻辑调用LUIS来确定意图并基于意图 调用相应的对话框
  • 在对话框中,我使用瀑布式对话框通过 提示
  • 我现在想要的是, 在上述场景的第2步之后,根据LUIS返回的意图,我希望后续问题由QnA而不是机器人提出。 基本上,我想用QnA maker取代瀑布式步骤。 这样做可以吗,还是可行

    流程如下所述:- 用户:-创建任务

    -->>>>路易斯的意图回来了

    -->>>>基于返回的意图调用QnA

    QnA:-您希望在哪个项目中创建任务

    用户:-(提供项目名称)

    问:任务的描述是什么

    用户:-(提供说明)

    QnA制造商与路易斯

    何时使用QnA Maker vs LUIS。从根本上说,QnA Maker是一种搜索服务,而LUIS是一种查询理解服务

    ·使用QnA Maker:如果你有大量的数据,你需要从那里用静态内容进行响应

    ·如果您希望能够根据查询的意图触发任务或工作流,请使用LUIS:。

    QnA Maker和LUIS可以相互补充,但需要在两个服务之间使用顶级仲裁。

    解决这一部分-我想用QnA maker取代瀑布式步骤。这样做可以吗,还是可行

    答案是否定的。QnA是你的知识库与搜索引擎服务的结合。它会根据您提出的问题动态地获取答案

    现在,继续为你的主要问题提出解决方案的建议。(这是我在代码中已经在做的事情)

    您可以在用户信息收集进入您的代码中的qna生成器之前捕获它。您可以专门为用户信息创建提示,如果您的流确定它是用户信息,则可以分支到您现在的用户信息收集系统(从而防止触发qna)

    当它不是用户信息(或者你不想捕获的信息)时,你就让qna maker的默认流接管

            var tempInputText = activity.Text;
            if(tempInputText.Contains("batman") == true)
            {
                var tempActivityBatman = new Activity();
                tempActivityBatman.Text = "did you just ask about batman, " + userProfile.Name + "?";
                tempActivityBatman.Type = "message";
                //await stepContext.Context.SendActivityAsync(_templateEngine.GenerateActivityForLocale("UnsupportedMessage", userProfile));
                await stepContext.Context.SendActivityAsync(tempActivityBatman,cancellationToken);
                return await stepContext.NextAsync();
            }
    

    上面的代码示例是一个快速脏代码,我用它来导航特定的单词,我想让聊天从常规代码中转移出来

    这可能是可行的使用提示,但在我看来,这不是一个很好的使用QnA制造商。你能帮我理解为什么你不想做瀑布式对话框吗?我想要的不是在代码中硬编码问题,而是应该向QnA制造商询问,这样将来如果我需要对问题进行任何更改,我就不需要回到我的代码来更改它。-@billovertonSorry,因为我反应太晚了。我没有得到你说“在用户信息进入QnA maker之前捕获用户信息”的部分。如何确定它是否是用户信息@JayI用我使用的示例代码更新了我的答案。注意:这不是最优雅的解决方案,但对我的项目来说已经足够好了。