Botframework Microsoft.Bot.Builder.CognitiveServices.QnAMaker.QnAMakerDialog如何覆盖找不到的内容?
我正在使用QnAMakerDialog,不知道如何覆盖未找到的。我可以重写RespondFromQnAMakerResultAsync,但在找不到答案时不会调用它。我尝试将默认消息设置为null或空字符串,但QnAMakerDialog自动响应未找到匹配项!当它找不到匹配的时候 我不希望在找不到匹配项时收到消息,因为我只是将消息转发到LuisDialog。如何停止此消息Botframework Microsoft.Bot.Builder.CognitiveServices.QnAMaker.QnAMakerDialog如何覆盖找不到的内容?,botframework,microsoft-cognitive,qnamaker,Botframework,Microsoft Cognitive,Qnamaker,我正在使用QnAMakerDialog,不知道如何覆盖未找到的。我可以重写RespondFromQnAMakerResultAsync,但在找不到答案时不会调用它。我尝试将默认消息设置为null或空字符串,但QnAMakerDialog自动响应未找到匹配项!当它找不到匹配的时候 我不希望在找不到匹配项时收到消息,因为我只是将消息转发到LuisDialog。如何停止此消息 旁注:我知道一些Gary的家伙有一个不同版本的QnAMakerDialog可以做到这一点,但我真的很想使用微软的标准版本。这可
旁注:我知道一些Gary的家伙有一个不同版本的QnAMakerDialog可以做到这一点,但我真的很想使用微软的标准版本。这可能吗?那个盖瑞是盖瑞,很漂亮。他在QnAMaker上做得很好,特别是几天前,他通过一个包提供了对QnAMaker API v3的访问,与QnAMakerDialog相比,该包提供了许多新特性 对于每个来到您的问题并寻求类似答案的用户,您一定要看看他的软件包: 它是开源的!诸如此类 关于努吉 有了他的软件包,你可以直接覆盖NoMatchHandler,你就完成了 对于那些不愿意使用第三方软件包的人,即使你有代码,官方QnAMakerDialog也来自Microsoft.Bot.Builder.CognitiveServices软件包,其来源是。。。还有 因此,如果您查看QnAMakerDialog.cs,您将看到所需的一切都在MessageReceivedAsync方法中,特别是消息通过以下方式发送: 如您所见: MessageReceivedAsync无法轻松重写 即使使用new隐藏此方法并复制粘贴除行之外的所有方法,您也会遇到一些问题,例如serviceCfg等内部属性无法在您自己的命名空间中使用 所以最后一个选项是从MicrosoftGithub的项目中复制所有QnA类,只是为了删除这一行 编辑: 正如您在上所看到的,围绕此问题有几个悬而未决的问题:
我希望软件包中很快会有一个集成,因为已经提供了几个Pull请求是的,在覆盖了Microsoft.Bot.Builder.CognitiveServices.QnAMakerDialog中的每个虚拟方法之后,我得出了与您相同的结论。这不是我想做的事情。我安装了Gary的代码,效果很好。这并不是说我反对第三方代码或开源,我只是想确定我是否下载了不必要的东西,我实际上可以轻松地完成,而不需要。谢谢你,非常感谢加里·佩蒂。
await context.PostAsync(qnaMakerResults.ServiceCfg.DefaultMessage);