Azure BOT框架,将QnA Maker与LUIS集成

时间:2017-12-14 12:04:05

标签: botframework luis azure-bot-service qnamaker

我正在搜索有关 QnA Maker API LUIS Azure BOT框架中集成的文档。但经过大量的研究,我找不到任何这样的文件。

如果有人遇到同样的情况,请发布您的努力。

我在这里使用C#作为脚本。

1 个答案:

答案 0 :(得分:2)

有几种通用方法可以做到这一点,但最终由您作为Bot开发人员来决定如何构建它。

文档here中提供了一般性概述,但如果您想要一个更加面向代码的示例,此博客文章应该可以帮助您 -

Dialog management with QnA, Luis, and Scorables

在示例中, LuisDialog 充当一种消息控制器,它根据意图引导用户进入某种对话框。这也可用于将用户定向到QnA对话框 - >

[Serializable]
[LuisModel("YourLuisAppID", "YourLuisSubscriptionKey")]
public class LuisDialog : LuisDialog<object>
{
    // methods to handle LUIS intents

    [LuisIntent("")]
    [LuisIntent("None")]
    public async Task None(IDialogContext context, LuisResult result)
    {
       // You can forward to QnA Dialog, and let Qna Maker handle the user's 
        query if no intent is found
        await context.Forward(new QnaDialog(), ResumeAfterQnaDialog, 
                               context.Activity, CancellationToken.None);
    }

    [LuisIntent("Some-Intent-Like-Get-Weather")]
     public async Task GetWeather(IDialogContext context, LuisResult result)
     {
         .... 
         // some tasks, forward to other dialog, etc 
     }

}

这是一种方法,也是一种流行的方式。在此设置中,如果LUIS无法检测到任何意图,则会将用户的查询路由到Qna服务(您训练)的QnA对话框以进行回答。

或者,您可以专门创建一个&#34;问题意图&#34;如果用户的意图是提出问题,请尝试将其转发给QnA。但这很棘手,因为这种方法要求您手动创建自定义代码来管理分数&#39;的回应。

希望这足以帮助您达到您的需求!

编辑 - 道歉,修复了第一个链接。

此外,我只是粘贴文档中列出的3种常见方案,作为使用LUIS + QnA的方法:

1)同时呼叫QnA Maker和LUIS,并使用第一个返回特定阈值分数的信息回复用户。

2)首先调用LUIS,如果没有意图达到特定的阈值分数,即&#34;无&#34;意图被触发,然后调用QnA Maker。或者,为QnA Maker创建一个LUIS意图,为您的LUIS模型提供示例QnA问题,这些问题映射到&#34; QnAIntent。&#34;

3)首先调用QnA Maker,如果没有答案符合特定的阈值分数,则调用LUIS。