首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >当QnAmaker没有任何响应时,QnAmaker更改默认答案

当QnAmaker没有任何响应时,QnAmaker更改默认答案
EN

Stack Overflow用户
提问于 2018-05-09 12:36:19
回答 2查看 1.7K关注 0票数 2

当QnAmaker没有任何响应显示提示对话框时,如何更改默认答案。

例如:

User1:你好

机器人:你好!

User1:你们卖汽车吗?

没有找到好的匹配!

没有很好的匹配找到,bot应该提出一个可用的服务列表。

此外,在没有找到匹配的情况下,bot应该再次提出可用服务的列表。

如何才能做到这一点?

EN

回答 2

Stack Overflow用户

发布于 2018-05-09 21:46:45

QnAMakerAttribute有一个defaultMessage参数,允许您自定义“无匹配”响应文本:https://github.com/Microsoft/BotBuilder-CognitiveServices/blob/7866f5a1bc970bdd0be341b9ba24c74067edf57c/CSharp/Library/QnAMaker/QnAMaker/QnAMakerService/QnAMakerAttribute.cs

代码语言:javascript
复制
public class BasicQnAMakerDialog : QnAMakerDialog 
{ 
  public BasicQnAMakerDialog() : base(
         new QnAMakerService(
                new QnAMakerAttribute(
                      Utils.GetAppSetting("QnASubscriptionKey"),
                      Utils.GetAppSetting("QnAKnowledgebaseId"),
                      "**List of services: one, two three**",
                      0.30,
                      8))) {} 
}

还有一个等待合并的拉请求,它允许在此之前重写发送默认消息:https://github.com/Microsoft/BotBuilder-CognitiveServices/pull/87,似乎您唯一的选择是在您自己的代码库中复制https://github.com/Microsoft/BotBuilder-CognitiveServices/pull/87QnAMakerDialog源

票数 2
EN

Stack Overflow用户

发布于 2018-05-10 13:06:04

由于除了僵尸框架之外,还有几种使用QnA制造商的不同方法,所以对于这个问题,您目前有很多不同的建议,但此时微软提供的适当指导方针不多。(至少我没有发现)

我遇到了一个针对QnA制造者的git存储库的问题:在这里找到的。有几个不同的建议,所以我将在下面列出它们--至少要付出最大的努力。

选项1:假设您正在创建一个连接到QnA制造者的基本对话框类

代码语言:javascript
复制
public BasicQnAMakerDialog() : base(new QnAMakerService(new QnAMakerAttribute(ConfigurationManager.AppSettings["QnASubscriptionKey"], ConfigurationManager.AppSettings["QnAKnowledgebaseId"], "No good match in FAQ")))

选项2:只需查找默认返回的特定字符串并“重写”它

代码语言:javascript
复制
protected override async Task RespondFromQnAMakerResultAsync(IDialogContext context, IMessageActivity message, QnAMakerResults result)
{
    var answer = result.Answers.First().Answer;
    Activity reply = ((Activity)context.Activity).CreateReply();
    if (reply.Text.equals("Not Match Found!))
         reply.Text = "No good match in FAQ";
    await context.PostAsync(reply);
}   

有些情况下,QnAMaker还在预览中,选项1不能像预期的那样工作。在我看来,备选方案2并不那么整洁,但它是一项体面的工作。

正如Eric在他的回答中所说的,在他们的git中,有一个主动的拉请求等待一个针对这个问题的合并。因此,最终这将是一件更容易处理的事情。在此之前,希望上述两种选择将有所帮助。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50253608

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档