我如何整合QnA maker来收集用户信息?

问题描述 投票:1回答:1

我目前已经将LUIS与我的聊天机器人整合在一起。

  1. 用户在机器人中输入一些信息。
  2. 机器人逻辑调用LUIS来确定意图,并根据意图调用相应的对话框。
  3. 在对话中,我使用瀑布式对话通过提示收集用户信息。

现在我想的是,在上述场景中的第2步之后,根据LUIS返回的INTENT,我希望后续的问题由QnA而不是BOT来呈现,基本上,我想用QnA maker来代替瀑布式的步骤,这样做可以吗,可行吗?

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

-->>>>>从LUIS返回的意向。

-->>>>>>根据返回的INTENT调用QnA。

QnA:-您想在哪个项目中创建任务?

USER:- (提供项目名称)

QnA:-任务的描述是什么?

用户:- (提供描述)

botframework luis qnamaker
1个回答
2
投票

QnA Maker与LUIS的对比

什么时候使用QnA Maker与LUIS。从根本上讲,QnA Maker是一个搜索服务,而LUIS是一个查询理解服务。

- 使用QnA Maker。如果你有大量的数据,你需要用静态内容来回应。

- 使用LUIS:如果你希望能够根据查询的意图触发一个任务或工作流。enter image description here

QnA Maker和LUIS可以用来相互补充,但使用顶级的 发出 在这两个部门之间进行仲裁。enter image description here


2
投票

解决这部分问题- 我想用QnA maker代替瀑布步骤。这样做可以吗,是否可行?

答案是不可以。QnA是你的知识库与搜索引擎服务的结合,它能动态地根据你提出的问题获取答案。

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

你可以在用户信息收集到你的代码中的qna制造者之前就抓住它。你可以创建专门针对用户信息的提示,如果你的流程确定它是用户信息,你就会将其分支到你现在的用户信息收集系统(从而防止qna被触发)。

当它不是用户信息时(或者你不想采集的东西),你就让qna制造者的默认流程来接管。

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

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

© www.soinside.com 2019 - 2024. All rights reserved.