在我想使用QnA获得答案之前,我使用了一些瀑布步骤。
WaterfallStep[] steps = new WaterfallStep[]
{
MenuStepAsync,
QnAAsync,
};
然后,当我想调用QnA服务时,它需要一个Turncontext对象,但是在Waterfallstep对话框中,我无法访问TurnContext。
private static async Task<DialogTurnResult> QnAAsync(WaterfallStepContext stepContext, CancellationToken cancellationToken)
{
var response = _services.QnAServices[QnAMakerKey].GetAnswersAsync(turnContext);
return await stepContext.PromptAsync("name", new PromptOptions { Prompt = MessageFactory.Text("Please enter your name.") }, cancellationToken);
}
await
我正在使用C#。我在nodejs中做到了,但是C#有点棘手。以下给出了一个错误,指出stepContext无法转换为Iturncontext。我了解这一点,但不确定如何使它可用于“ GetAnswersAsync”:
_services.QnAServices[QnAMakerKey].GetAnswersAsync(turnContext);
感谢您的帮助。
答案 0 :(得分:0)
stepContext.Context就是Turn上下文。它解决了我的问题。
答案 1 :(得分:0)
在这里为所有人添加示例代码。
private async Task<DialogTurnResult> InitialStepAsync(WaterfallStepContext stepContext, CancellationToken cancellationToken)
{
var results = await _botServices.QnAMaker.GetAnswersAsync(stepContext.Context);
if (results.Any())
{
await stepContext.Context.SendActivityAsync(MessageFactory.Text(results.First().Answer), cancellationToken);
}
else
{
await stepContext.Context.SendActivityAsync(MessageFactory.Text("Sorry, could not find an answer in the Q and A system."), cancellationToken);
}
return await stepContext.NextAsync(null, cancellationToken);
}