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

标签 azure botframework azure-qna-maker

我已经设置了一个链接到 QnA 服务的简单 QnA 机器人。在 QnA 服务中,我设置了一些带有后续提示的问题(家属),例如我如何通过公共(public)汽车、火车等到达校园。see image in link,在 Qna 制造商测试功能中,您只需单击一个名为“启用多轮”的按钮,该按钮提供功能按钮,通知您接下来可以/应该通过答案 See image in link 的家属。

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

我对整个机器人的事情很陌生(我上个月开始),所以我浏览了互联网,看看我能找到什么,但除了在机器人内部编写问题之外,我看不到任何东西,see Microsofts documentation ,这使得使用 QnA 生成器几乎毫无意义。

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

最佳答案

this Bot Framework 团队发布的实验示例,演示了如何处理后续提示。

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

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

如果您只打算实现单级提示,即您有一个显示提示的问题,并且当您单击其中一个提示时,它将显示答案而不是带您进入另一个提示,那么它可以从 ProcessAsync 方法(检查提示)中获取逻辑的核心,以及从 Models 文件夹和 CardHelper 中获取所需的类> 类并让它在您现有的应用程序中工作 - 您不必担心 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);

关于azure - 如何在具有后续提示的 QnA 问题中实现卡片并在卡片中使用它们,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56185169/

相关文章:

spring-boot - 控制Azure服务总线消息监听器在Spring Boot中启动或停止从主题或队列监听

Azure Keyvault 用于访问来自不同 azure 订阅的资源

botframework - .BOT 文件未部署到 Azure Bot Service v4

botframework - MS TEAMS 聊天机器人 : Can I restrict my MS Botframework Chatbot to only work with my MS Teams Tenant ID without requiring additional Authentication

c# - 使用 QnAMaker 的 Azure 聊天机器人 - 应根据当前用户的时区向用户打招呼

c# - Azure Bot Framework、QnA Maker API、如何在 QnA Dialogue 中获取查询文本

node.js - 使用 NodeJS 的 QnAMaker 自适应卡

python - Azure Function 中没有这样的文件或目录

node.js - 使用 Azure 存储 Node.JS SDK 获取上传进度

bots - Bot Framework - 登录卡,如何获取认证结果