C# QnA调用在Bot框架中失败,包括本地调用和部署调用

C# QnA调用在Bot框架中失败,包括本地调用和部署调用,c#,asp.net,asynchronous,botframework,qnamaker,C#,Asp.net,Asynchronous,Botframework,Qnamaker,我一直在尝试构建一个bot,它使用QnA根据类别对用户进行搜索。 我已经成功地正确连接到QnA并向用户提示了第一级,但是,当我尝试向QnA发送用户的另一个响应时,问题出现了 private static async Task ShowResults(WaterfallStepContext stepContext, QnAResult[] mensaje) { Activity outputActivity = null; QnABotState newState = null;

我一直在尝试构建一个bot,它使用QnA根据类别对用户进行搜索。 我已经成功地正确连接到QnA并向用户提示了第一级,但是,当我尝试向QnA发送用户的另一个响应时,问题出现了

private static async Task ShowResults(WaterfallStepContext stepContext, QnAResult[] mensaje)
{
    Activity outputActivity = null;
    QnABotState newState = null;
    var qnaAnswer = mensaje[0].Answer;
    var prompts = mensaje[0].Context?.Prompts;

    if (prompts == null || prompts.Length < 1)
        outputActivity = MessageFactory.Text(qnaAnswer);
    else
    {
        newState = new QnABotState
        {
            PreviousQnaId = mensaje[0].Id,
            PreviousUserQuery = stepContext.Result.ToString()
        };

        outputActivity = CardHelper.GetHeroCard(qnaAnswer, prompts);
    }
    var outputs = new Activity[] { outputActivity };
    foreach (var activity in outputs)
        await stepContext.Context.SendActivityAsync(activity).ConfigureAwait(false);
}
这是一个对话框,它可以根据第一个请求顺利运行

private async Task<DialogTurnResult> InicioRRHHDialog(WaterfallStepContext stepContext, CancellationToken cancellationToken)
{
    string intentForQna = IntentEnum.DISPATCH_RRHH;
    var castContextForQna = (WaterfallStepContext)stepContext.Parent;
    var contextForNextStep = stepContext.Context;
    await GetQnaConnection(castContextForQna, intentForQna);
    return await stepContext.NextAsync(contextForNextStep, cancellationToken);
}
最后是ShowResults方法,我使用它将活动发送回用户

private static async Task ShowResults(WaterfallStepContext stepContext, QnAResult[] mensaje)
{
    Activity outputActivity = null;
    QnABotState newState = null;
    var qnaAnswer = mensaje[0].Answer;
    var prompts = mensaje[0].Context?.Prompts;

    if (prompts == null || prompts.Length < 1)
        outputActivity = MessageFactory.Text(qnaAnswer);
    else
    {
        newState = new QnABotState
        {
            PreviousQnaId = mensaje[0].Id,
            PreviousUserQuery = stepContext.Result.ToString()
        };

        outputActivity = CardHelper.GetHeroCard(qnaAnswer, prompts);
    }
    var outputs = new Activity[] { outputActivity };
    foreach (var activity in outputs)
        await stepContext.Context.SendActivityAsync(activity).ConfigureAwait(false);
}
private静态异步任务显示结果(waterwallstepcontext,QnAResult[]mensaje)
{
活动输出活动=空;
QnABotState newState=null;
var qnaAnswer=mensaje[0]。答案;
var prompts=mensaje[0]。上下文?。提示;
if(prompts==null | | prompts.Length<1)
outputActivity=MessageFactory.Text(qnaAnswer);
其他的
{
newState=新的QnABotState
{
PreviousQnaId=mensaje[0]。Id,
PreviousUserQuery=stepContext.Result.ToString()
};
outputActivity=CardHelper.GetHeroCard(qnaAnswer,提示);
}
var outputs=新活动[]{outputActivity};
foreach(输出中的var活动)
Wait stepContext.Context.SendActivityAsync(activity).ConfigureWait(false);
}

我是否正确处理Qna连接?

这些是“1问1答”还是多圈Qna问题?这是一个多圈Qna