Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/unity3d/4.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# 如何检查Microsoft botbuilder的Bot in对话框中发布的消息?_C#_Azure_Botframework_Chatbot - Fatal编程技术网

C# 如何检查Microsoft botbuilder的Bot in对话框中发布的消息?

C# 如何检查Microsoft botbuilder的Bot in对话框中发布的消息?,c#,azure,botframework,chatbot,C#,Azure,Botframework,Chatbot,我正在使用Microsoft botbuilder在.NET中创建聊天机器人,并使用web应用程序机器人代码作为模板。 我找不到包含从机器人向qna maker用户发布内容文本的变量。我目前正在创建另一个对话框,每次机器人回答用户的问题后,但我不希望机器人在发布默认消息时这样做。 当我调试时,我似乎找不到qnamaker的答案存储在哪里 如果有人知道答案存储在哪里以及如何访问它,这将非常有帮助,或者可能检查对话框中的最新消息 当前“我的根目录”对话框包含以下代码段: await context.

我正在使用Microsoft botbuilder在.NET中创建聊天机器人,并使用web应用程序机器人代码作为模板。 我找不到包含从机器人向qna maker用户发布内容文本的变量。我目前正在创建另一个对话框,每次机器人回答用户的问题后,但我不希望机器人在发布默认消息时这样做。 当我调试时,我似乎找不到qnamaker的答案存储在哪里

如果有人知道答案存储在哪里以及如何访问它,这将非常有帮助,或者可能检查对话框中的最新消息

当前“我的根目录”对话框包含以下代码段:

await context.Forward(new BasicQnAMakerDialog(), AfterAnswerAsync, message, CancellationToken.None);
转发的方法是:

private async Task AfterAnswerAsync(IDialogContext context, IAwaitable<IMessageActivity> result)
        {
            context.Call(new PostAnswerDialog(), AfterPost);

        }
应答异步后的私有异步任务(IDialogContext上下文,IAwaitable结果) { 调用(新PostAnswerDialog(),AfterPost); }
我想检查bot是否在context.Call(new PostAnswerDialog(),AfterPost)之前使用默认消息进行响应,然后是否执行其他操作。

您必须自定义您的
QnAMakerDialog
。这些资料可以用来了解它是如何工作的

例如,您可以覆盖在流程结束时调用的
DefaultWaitNextMessageAsync
方法(无论是否匹配):


检查bot是否在context.Call(new PostAnswerDialog(),AfterPost)之前使用默认消息进行响应,如果它随后执行了其他操作
QnAMaker Dialog应该能够响应用户输入,您能否澄清您的实际情况?你想在PostAnswerDialog中做什么?PostAnswerDialog只是一个回答后调查,但如果它只是用默认消息进行响应,我不希望它启动对话框,因为在qna maker中找不到任何东西。在context.Call之前,我找不到默认消息。我检查了上下文和结果参数,上下文将用户键入的内容存储在一个字符串中,但结果只包含将其连接到qna maker的信息,而不是返回的实际字符串。
// Dialog for QnAMaker GA service
[Serializable]
public class BasicQnAMakerDialog : QnAMakerDialog
{
    // Go to https://qnamaker.ai and feed data, train & publish your QnA Knowledgebase.
    // Parameters to QnAMakerService are:
    // Required: qnaAuthKey, knowledgebaseId, endpointHostName
    // Optional: defaultMessage, scoreThreshold[Range 0.0 – 1.0]
    public BasicQnAMakerDialog() : base(new QnAMakerService(new QnAMakerAttribute(ConfigurationManager.AppSettings["QnAAuthKey"], ConfigurationManager.AppSettings["QnAKnowledgebaseId"], "No good match in FAQ.", 0.5, 1, ConfigurationManager.AppSettings["QnAEndpointHostName"])))
    {
    }

    protected override async Task DefaultWaitNextMessageAsync(IDialogContext context, IMessageActivity message, QnAMakerResults result)
    {
        if (result.Answers.Count > 0)
        {
            // DO YOUR LOGIC HERE
            await context.PostAsync("Case where you have matching results");
        }

        await base.DefaultWaitNextMessageAsync(context, message, result);
    }
}