Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/327.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 路易斯对话+;Qna Maker主动学习对话问题_C#_Botframework_Azure Language Understanding - Fatal编程技术网

C# 路易斯对话+;Qna Maker主动学习对话问题

C# 路易斯对话+;Qna Maker主动学习对话问题,c#,botframework,azure-language-understanding,C#,Botframework,Azure Language Understanding,我编写了一个LUIS机器人,将一些消息转发给Qna maker对话框,以启用主动学习。 当一个问题返回一个答案时,它可以完美地工作,但当它检测到多个答案时,它不会发送任何消息,而是执行“我的简历”功能 如果我像根对话框一样使用QnaMaker,这是可行的 你能帮我吗 谢谢 这是我的转发函数: [LuisIntent("None")] [LuisIntent("")] public async Task None(IDialogContext context, IAwait

我编写了一个LUIS机器人,将一些消息转发给Qna maker对话框,以启用主动学习。 当一个问题返回一个答案时,它可以完美地工作,但当它检测到多个答案时,它不会发送任何消息,而是执行“我的简历”功能

如果我像根对话框一样使用QnaMaker,这是可行的

你能帮我吗

谢谢

这是我的转发函数:

    [LuisIntent("None")]
    [LuisIntent("")]
    public async Task None(IDialogContext context, IAwaitable<IMessageActivity> activity, LuisResult result)
    {
        //Récupération du message
        var messageToForward = await activity;
        var cts = new CancellationTokenSource();
        var faq = new QnADialogWithOverrides();
        //Transfert du message une fois réponse retournée => AfterFAQDialog
        await context.Forward(faq, AfterFAQDialog, messageToForward, CancellationToken.None);
    }

    private async Task AfterFAQDialog(IDialogContext context, IAwaitable<object> result)
    {
        context.Wait(MessageReceived);
    }
结果:

似乎没有满足来自的要求,因此对话框

奇怪的是,这种情况表明你没有答案,但根据你的截图,情况似乎并非如此

我会尝试覆盖
RespondFromQnAMakerResultAsync
以查看发生了什么,因为该方法负责显示结果(默认情况下,行为仅显示第一个答案,如图所示)


您甚至可以使用
QnADialogWithOverrides
code from.

除非您显示更多的代码,否则无法为您提供帮助。请将代码添加到QnADialogWithOverrides中QnADialogWithOverrides为空。可以吗?是的,我只是用覆盖函数进行调试。主动学习不需要重写函数即可工作。我重写了
RespondFromQnAMakerResultAsync
,当用户提出一个包含多个答案的问题时,此函数不会执行。因此,我重写了
qnafeedbacksepsync
,并且没有捕获到一个异常:
System.MissingMethodException:methodnotfound:Void Microsoft.Bot.Builder.Dialogs.PromptOptions1..ctor(System.String,System.String,System.String,System.Collections.Generic.IReadonlyList 1,Int32,
对,这是由于这个问题。顺便说一句,你确定它返回了多个答案吗?我更新了我的库,它仍然不工作。是的,我确定它返回了多个答案。当我使用QnaDialog作为主对话框时,它返回多个答案nswers,正如您在第二个屏幕上看到的。除了更新库之外,您是什么意思?BotBuilder CognitiveServices包需要更新为最新的BotBuilder包。除非您自己编译代码,否则您将无法修复此问题。
    [Serializable]
    [QnAMaker("xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx", "xxxxxxxxxxxxxxxxxxxxxxxxxx", "I don't understand this right now!", 0.50, 5)]
    public class QnADialogWithOverrides : QnAMakerDialog
    {
    }