我正在尝试创建一个QnA对话框的FAQ意图,进入该意图后应该向用户重新询问。
下面是我的代码,以便集成luis和QnA:
[LuisIntent("FAQ")]
public async Task FAQ(IDialogContext context, LuisResult result)
{
await context.PostAsync("FAQ");
await context.Forward(new QnADialog(), ResumeAfterQnA, context.Activity, CancellationToken.None);
}
private async Task ResumeAfterQnA(IDialogContext context, IAwaitable<object> result)
{
await context.PostAsync("Back to Intent");
context.Wait(MessageReceived);
}
在“ QnA”对话框中:
[Serializable]
[QnAMakerService("endpoint", "knowledge base id", "subscription key")]
public class QnADialog : QnAMakerDialog<object>
{
public bool flag = false;
public override async Task DefaultMatchHandler(IDialogContext context, string originalQueryText, QnAMakerResult result)
{
if (result.Answers.Length > 0 && result.Answers.FirstOrDefault().Score > 0.75 && flag)
{
await context.PostAsync(result.Answers.FirstOrDefault().Answer);
await context.PostAsync("To continue using the FAQ please type another question, if not type no");
}
else if (originalQueryText.Contains("no"))
{
context.Done(true);
}
else
{
await base.DefaultMatchHandler(context, originalQueryText,result);
flag = true;
}
}
}
测试结果如下: 我希望在欢迎使用FAQ后无法显示“找不到匹配的知识库(KB)”,但是我很努力地这样做,我已经查看了文档样本,但是没有类似的样本与我的问题有关。
任何帮助将不胜感激
答案 0 :(得分:2)
我希望在欢迎使用常见问题解答后不显示“ KB中找不到很好的匹配项”
根据您的代码和要求,我在DefaultMatchHandler
方法中修改了代码,该方法对我有用,您可以参考它。
public override async Task DefaultMatchHandler(IDialogContext context, string originalQueryText, QnAMakerResult result)
{
if (result.Answers.Length > 0 && result.Answers.FirstOrDefault().Score > 0.75 && flag)
{
await context.PostAsync(result.Answers.FirstOrDefault().Answer);
await context.PostAsync("To continue using the FAQ please type another question, if not type no");
}
else if (originalQueryText.Contains("no"))
{
context.Done(true);
}
else
{
//detect if originalQueryText contains "faq"
if (!originalQueryText.ToLower().Contains("faq"))
{
await base.DefaultMatchHandler(context, originalQueryText, result);
}
flag = true;
}
}
测试结果: