如何使用SDK4.0在机器人程序中添加对话框



我正在尝试实现一个使用Qna服务和Azure搜索的机器人。

我正在使用C#QnA Maker示例github代码。

它使用了一个BotServices.cs类,该类在其构造函数中接受了一个QnA服务。此Botservice对象正在传递给QnABot类构造函数。

我想在QnABot的构造函数中使用Dialog集,该构造函数需要添加访问者。我真的不明白如何添加访问者类并在startup.cs 中使用它们

我试图从其他样本中复制一些代码,但没有成功。

请帮助我向BotServices构造函数添加一个访问器,以便我可以在其中使用对话框集。

出于我的目的,我想扩展QnA样本。

您能告诉我们为什么要将对话框集传递给botservices类吗?此类仅用于引用外部服务,如QnAMaker和LUIS。如果要启动Dialog,请在QnABot.cs类的OnTurnAsync方法中启动。请记住,在这个特定的示例中创建的this方法将对用户发送的每一条消息发送一个响应,即使他们正在处理一个对话框。您可以更改OnTurnAsync,使对话框中的第一步是检查QnAMaker。请参阅enterpriseBot示例,了解如何启动对话框以及向子对话框添加访问者。请参阅MainDialog.cs类中的以下片段,它们是如何添加访问者的:

protected override async Task OnStartAsync(DialogContext innerDc, CancellationToken cancellationToken = default(CancellationToken))
{
var onboardingAccessor = _userState.CreateProperty<OnboardingState>(nameof(OnboardingState));
var onboardingState = await onboardingAccessor.GetAsync(innerDc.Context, () => new OnboardingState());
var view = new MainResponses();
await view.ReplyWith(innerDc.Context, MainResponses.Intro);
if (string.IsNullOrEmpty(onboardingState.Name))
{
// This is the first time the user is interacting with the bot, so gather onboarding information.
await innerDc.BeginDialogAsync(nameof(OnboardingDialog));
}
}

最新更新