如何使用 C# 在瀑布对话框中调用 QnA Maker?

How to call QnA Maker on a waterfall dialog using C#?

我正在尝试在 瀑布式对话步骤 上调用 QnA Maker

如何从 watterfall 步骤调用它,是否需要设置 QnA 在瀑布步骤上,是否需要从 QnA LUIS 意图,我能做什么?

我需要它使用上一个问题的步骤上下文从 QnA 获得第一个结果。

有人能帮忙吗?

代码:

private async Task<DialogTurnResult> QnaAsync(WaterfallStepContext stepContext, CancellationToken cancellationToken)
{
    var response = await qnaMaker.GetAnswersAsync(stepContext);

    // use answer found in qnaResults[0].answer
    return await stepContext.PromptAsync(nameof(TextPrompt), new PromptOptions { Prompt = MessageFactory.Text(response[0].Answer)}, cancellationToken);
}

您上面的代码中似乎没有定义 qnaMaker。只要您在某处定义了 QnAMaker 服务,您就可以真正地从任何地方调用 QnAMaker。

我推荐关注 this sample。它相当复杂,但却是在瀑布对话框中使用 QnAMaker 的最佳示例。

我会指出一些您会发现最有用的部分:

  1. Create the QnAMaker service
  2. 使用dependency injection so that you can access the BotServices from anywhere in the project
  3. Add the services to the dialog's constructor
  4. Call the QnAMaker service

同样,该示例相当复杂。如果您需要其他指示,请使用您尝试过的代码更新您的问题,我会看看是否可以提供帮助。