3

在 QnA Maker API 中,当没有找到结果时,它会返回一些默认消息,或者我们可以更改该消息,但是我想在没有结果时运行一个函数/方法。下面是代码。

public QnaDialog(): base(
        new QnAMakerService(new QnAMakerAttribute(ConfigurationManager.AppSettings["QnaSubscriptionKey"], 
        ConfigurationManager.AppSettings["QnaKnowledgebaseId"], "Hmm, I wasn't able to find any relevant content. Can you try asking in a different way? or try with typing help.", 0.5)))
    {
        //this is what i want to call, this is working but **i am not able to get query text here**
        SendEmail email = new SendEmail();
        email.SendEmailtoAdmin("Query_Text", "Email ID");
    }
4

1 回答 1

5

查看GitHub 上的 QnaMakerDialog 实现。

您将看到您有几个选项,更容易覆盖DefaultWaitNextMessageAsync在 Qna 搜索后调用的方法。

protected virtual async Task DefaultWaitNextMessageAsync(IDialogContext context, IMessageActivity message, QnAMakerResults result)
    {
        if (result.Answers.Count == 0)
        {
            // Here you have the query text in message.Text so:
            SendEmail email = new SendEmail();
            email.SendEmailtoAdmin(message.Text, "Email ID");
        }

        context.Done(true);
    }

请注意,如果您想避免发送关于未找到 Qna 的消息,您应该改写 MessageReceivedAsync 并更改块内的代码if (sendDefaultMessageAndWait)

于 2017-12-18T09:29:41.620 回答