2017-06-21 49 views
0

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

如果我像使用根对话框一样使用我的QnaMaker,这将起作用。

你能帮我吗?

感谢

这里我前进的FUNC:

[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); 
    } 

我QNA BOT:

[Serializable] 
    [QnAMaker("xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx", "xxxxxxxxxxxxxxxxxxxxxxxxxx", "I don't understand this right now!", 0.50, 5)] 
    public class QnADialogWithOverrides : QnAMakerDialog 
    { 
    } 

结果:

What I have

What I want

+1

除非您显示更多的代码,否则将无法为您提供帮助。将代码添加到QnADialogWithOverrides请 –

+0

您QnADialogWithOverrides为空。这可以吗? –

+1

是的,我只是使用Overrides功能进行调试。主动学习不需要覆盖功能来工作。 –

回答

0

看来this conditionQnAMakerDialog没有被满足,所以对话框is ending via the default message path

奇怪的是,条件表明你没有答案,但根据你的截图,似乎可能并非如此。

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

您甚至可以使用hereQnADialogWithOverrides代码。

+0

我覆盖了'RespondFromQnAMakerResultAsync',这个函数不会在用户提问多个答案时执行。所以,我重覆'QnAFeedbackStepAsync'和我有一个异常未捕获:'System.MissingMethodException:未找到方法:无效Microsoft.Bot.Builder.Dialogs.PromptOptions1..ctor(System.String,System.String,System.String, System.Collections.Generic.IReadOnlyList1 ,Int32,' –

+0

对,这是由于这个问题https://github.com/Microsoft/BotBuilder-CognitiveServices/issues/28。 –

+0

顺便说一句,是否确定它返回多个答案? –