我的情况如下。
我是Bot框架的新手,正在制作一个聊天机器人,该聊天机器人通过KB服务与QnA Maker类型进行通信,根据返回的特定答案,尝试通过FormFlow进行呼叫或启动引导对话。我使用的是SDK-V3(C#.net)和QnAMakerDialog。
在botbuilder-v3上的特定条件下,是否可以从QnAMakerDialog调用表单流对话框?
感谢
第一件事:如果您现在开始使用SDK-V3,则不应该使用:使用v4,它通常可以使用几个月。v3在未来不会进化(除了一些补丁)。
然后,使用QnA Maker
查看v4的示例,如下所示:https://github.com/Microsoft/BotBuilder-Samples/blob/master/samples/csharp_dotnetcore/11.qnamaker/QnAMaker/QnABot.cs
在这个示例中,您可以看到您可以在QnABot.cs
:中实现您的逻辑
public async Task OnTurnAsync(ITurnContext turnContext, CancellationToken cancellationToken = default(CancellationToken))
{
// Handle Message activity type, which is the main activity type for shown within a conversational interface
// Message activities may contain text, speech, interactive cards, and binary or unknown attachments.
// see https://aka.ms/about-bot-activity-message to learn more about the message and other activity types
if (turnContext.Activity.Type == ActivityTypes.Message)
{
// Check QnA Maker model
var response = await _services.QnAServices[QnAMakerKey].GetAnswersAsync(turnContext);
if (response != null && response.Length > 0)
{
// PUT YOUR LOGIC HERE
//await turnContext.SendActivityAsync(response[0].Answer, cancellationToken: cancellationToken);
}
else
{
var msg = @"No QnA Maker answers were found. This example uses a QnA Maker Knowledge Base that focuses on smart light bulbs.
To see QnA Maker in action, ask the bot questions like 'Why won't it turn on?' or 'I need help'.";
await turnContext.SendActivityAsync(msg, cancellationToken: cancellationToken);
}
}
else if (turnContext.Activity.Type == ActivityTypes.ConversationUpdate)
{
if (turnContext.Activity.MembersAdded != null)
{
// Send a welcome message to the user and tell them what actions they may perform to use this bot
await SendWelcomeMessageAsync(turnContext, cancellationToken);
}
}
else
{
await turnContext.SendActivityAsync($"{turnContext.Activity.Type} event detected", cancellationToken: cancellationToken);
}
}