如何在具有后续提示并在卡片中使用它们的 QnA 问题中实现卡片

How to implement cards in a QnA question which has follow up prompts and uses them in the cards

我设置了一个链接到 QnA 服务的简单 QnA 机器人。在 QnA 服务中,我设置了一些问题,这些问题有后续提示(依赖项),例如我如何通过公共汽车、火车等到达校园 see image in link, within the Qna maker testing function you can just click a button called enable mutli-turn which provides functional buttons to inform you of what can/should be asked next via the dependents of the answer See image in link。

然而,当在 channel/in 中使用时,模拟器不会出现任何类似的东西 see image,这有点奇怪。显然我想在机器人中实现这样的功能,因为它使用户的生活变得更加轻松。

我是整个机器人的新手(我上个月开始的),所以我浏览了互联网,看看我能找到什么,但除了在它自己的机器人中写问题之外,我什么也看不到,see Microsofts documentation,这使得使用 QnA maker 变得毫无意义。

我想我需要做的是拦截 QnA maker 回复用户的消息,查看收到的 Json 以查找是否有任何依赖项然后 运行 一个不同的对话框,它获取上下文依赖名称和 运行s 一个简单的 for 循环为每个依赖生成卡片,然后使用生成的卡片将消息发送给用户,但是我不确定如何拦截 Json并寻找任何家属,或者有一个按钮,我需要在 azure 中单击它就可以了。

Bot Framework 团队发布了 this 实验示例,演示了如何处理 follow-up 提示。

您可以下载它(您必须下载整个存储库)然后将您的详细信息插入 appsettings.json 文件,您应该能够使用 Bot Framework Emulator 测试它 - 这些是唯一的我必须执行的步骤。

关键部分是this method which checks to see if the result contains any prompts and returns the response accordingly - it is called inside the FuctionDialog

如果您只打算实施单一级别的提示,即您有一个显示提示的问题,当您单击其中一个提示时,它会显示一个答案,而不是将您带到另一个提示,然后可以从 ProcessAsync 方法(检查提示)中获取逻辑的核心,以及 Models 文件夹和 CardHelper 中所需的 classes class 并让它在你现有的应用程序中工作 - 你不必担心 QnABotState 因为你只会深入一个层次,所以你不需要跟踪你在哪里在一系列的提示中。例如

var query = inputActivity.Text;           
var qnaResult = await _qnaService.QueryQnAServiceAsync(query, new QnABotState());
var qnaAnswer = qnaResult[0].Answer;
var prompts = qnaResult[0].Context?.Prompts;

if (prompts == null || prompts.Length < 1)
{
    outputActivity = MessageFactory.Text(qnaAnswer);
}
else
{
    outputActivity = CardHelper.GetHeroCard(qnaAnswer, prompts);
}

await turnContext.SendActivityAsync(outputActivity);

有人可以建议我们在哪里添加上面提到的这段代码吗?我是菜鸟,对编​​程有非常基本的了解。为此,将 visual studio 与 C# 结合使用。我如何以及在哪里添加此代码以使其工作?我也没有潜得太深。只是想做一些简单的逻辑,用户点击一些后续提示并被带到所需的信息。如果有人可以提供帮助,将不胜感激。谢谢

First picture shows the starting follow up prompt.

Second picture that follows the first followup prompt