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

Azure 如何在有后续提示的QnA问题中实现卡片,并在卡片中使用它们,azure,botframework,qnamaker,Azure,Botframework,Qnamaker,我已经建立了一个简单的QnA机器人,它链接到QnA服务。在QnA服务中,我设置了一些带有后续提示(家属)的问题,例如,我如何到达校园、通过公共汽车、火车等,在Qna maker测试功能中,您只需单击一个名为enable mutli turn的按钮,该按钮提供功能按钮,通过答案的依赖项通知您接下来可以/应该询问什么 但是,当在通道/模拟器中使用时,不会出现类似的情况,这有点奇怪。显然,我想在bot中实现这样的功能,因为它让用户的生活更加轻松 我对整个机器人程序都是新手(我上个月开始的),所以我浏览

我已经建立了一个简单的QnA机器人,它链接到QnA服务。在QnA服务中,我设置了一些带有后续提示(家属)的问题,例如,我如何到达校园、通过公共汽车、火车等,在Qna maker测试功能中,您只需单击一个名为enable mutli turn的按钮,该按钮提供功能按钮,通过答案的依赖项通知您接下来可以/应该询问什么

但是,当在通道/模拟器中使用时,不会出现类似的情况,这有点奇怪。显然,我想在bot中实现这样的功能,因为它让用户的生活更加轻松

我对整个机器人程序都是新手(我上个月开始的),所以我浏览了一下互联网,看看能找到什么,但我看不到在机器人程序中写问题以外的任何东西,这使得使用QnA maker几乎毫无意义

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

机器人框架团队发布了一个实验示例,演示了如何处理后续提示

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

关键部分是检查结果是否包含任何提示,并相应地返回响应-它在内部调用

如果您只打算实现单一级别的提示,即您有一个显示提示的问题,当您单击其中一个提示时,它将显示一个答案,而不是将您带到另一个提示,那么可以从
ProcessAsync
方法(检查提示)中获取逻辑的精髓与
Models
文件夹中的必需类和
cardheloper
类一起,并在现有应用程序中使用这些类-您不必担心
QnABotState
,因为您只需要进入一个层次,因此不需要跟踪在一系列提示中的位置。e、 g

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);
var query=inputActivity.Text;
var qnaResult=awaitu qnaService.queryqnaservicecasync(query,new QnABotState());
var qnaAnswer=qnaResult[0]。答案;
var prompts=qnaResult[0]。上下文?。提示;
if(prompts==null | | prompts.Length<1)
{
outputActivity=MessageFactory.Text(qnaAnswer);
}
其他的
{
outputActivity=CardHelper.GetHeroCard(qnaAnswer,提示);
}
等待turnContext.SendActivityAsync(outputActivity);

有人能告诉我们在哪里添加上述代码吗?我是一个菜鸟,对编程有非常基本的知识。为此,使用visual studio和C#。如何以及在何处添加此代码以使其工作?我也没有潜得太深。只是尝试做一些简单的逻辑,用户点击一些后续提示,就可以获得所需的信息。如果有人能帮忙,我会非常感激的。谢谢


后续提示是QnA制造商团队在最近的构建会议上推出的一项全新功能。然而,尽管如此,Bot框架SDK团队还没有找到一种方法将这种新的认知特性应用到SDK中。话虽如此,我将继续在GitHub上发布一个问题的链接,您可以跟踪了解SDK团队决定如何处理新QnA功能的实现,并将在那里详细说明其发布的时间线。感谢@Zeryth,我会关注它。谢谢,我今天会尝试一下,这就像做梦一样,只需要把它添加到我的Botben中很高兴听到它@Reuben!请将此答案标记为已接受,以帮助遇到相同问题的其他用户。:-)