Azure 虚拟助手提示按钮
Azure virtual assistant prompt buttons
我设置了 Microsoft azure 虚拟助手,但没有连接到 Luis,也没有部署。
在 qnamaker 网站上,它可以成功地进行多轮跟进按钮,但在机器人模拟器上却没有。
我想知道这是否是由于一开始没有设置和部署虚拟助手造成的。因为在创建虚拟助手时,默认的贺卡甚至无法显示。
我是否遗漏了一些代码来显示那些后续提示按钮,或者因为 Luis 未连接且部署未设置而无法显示?如果我遗漏了一些代码,有人可以指出我正确的方向吗?
注意:这是一个虚拟助手,而不是机器人。它们很相似,但机器人教程不适用于虚拟助手。我正在使用最新的虚拟助手模板。我做了很多研究,但无法解决。我已经在这上面花了 2 天时间。
谢谢
多轮功能是一项可以在门户中启用的功能 qnamaker.ai,但是您的机器人仍然负责处理发送附有带有按钮的卡片的消息。
- 因此,在门户中启用多回合将允许您调用
generateanswer
API 到 return 响应,其中包含 prompts
值。
- 第 2 步是确保您的助手拥有创建卡片的代码。您必须处理何时生成卡片
您可以在 botbuilder samples
存储库 70.qnamaker-multiturn-sample
中找到实现多轮提示的机器人示例。它构建卡片的代码片段,我将在下面 post,但我建议直接转到示例以查看其周围的逻辑,以了解您何时实际发送带有卡片(他们仅在 context
和 prompt
存在时通过发送卡片来实现——您可以根据您的机器人需要对其进行自定义)。
/// <summary>
/// Get multi-turn prompts card.
/// </summary>
/// <param name="result">Result to be dispalyed as prompts.</param>
/// <returns>IMessageActivity.</returns>
private static IMessageActivity GetQnAPromptsCardWithoutNoMatch(QueryResult result)
{
if (result == null)
{
throw new ArgumentNullException(nameof(result));
}
var chatActivity = Activity.CreateMessageActivity();
chatActivity.Text = result.Answer;
var buttonList = new List<CardAction>();
// Add all prompt
foreach (var prompt in result.Context.Prompts)
{
buttonList.Add(
new CardAction()
{
Value = prompt.DisplayText,
Type = "imBack",
Title = prompt.DisplayText,
});
}
var plCard = new HeroCard()
{
Buttons = buttonList
};
// Create the attachment.
var attachment = plCard.ToAttachment();
chatActivity.Attachments.Add(attachment);
return chatActivity;
}
我已经有一段时间没有查看虚拟助手解决方案项目了,但我会说检查以确保他们没有多轮 QnA 对话框来验证这是问题所在,并且如果是这样,请查看多轮 qna 示例以查看如何编辑 VA 以包括处理多轮提示的示例。
我设置了 Microsoft azure 虚拟助手,但没有连接到 Luis,也没有部署。
在 qnamaker 网站上,它可以成功地进行多轮跟进按钮,但在机器人模拟器上却没有。
我想知道这是否是由于一开始没有设置和部署虚拟助手造成的。因为在创建虚拟助手时,默认的贺卡甚至无法显示。
我是否遗漏了一些代码来显示那些后续提示按钮,或者因为 Luis 未连接且部署未设置而无法显示?如果我遗漏了一些代码,有人可以指出我正确的方向吗?
注意:这是一个虚拟助手,而不是机器人。它们很相似,但机器人教程不适用于虚拟助手。我正在使用最新的虚拟助手模板。我做了很多研究,但无法解决。我已经在这上面花了 2 天时间。
谢谢
多轮功能是一项可以在门户中启用的功能 qnamaker.ai,但是您的机器人仍然负责处理发送附有带有按钮的卡片的消息。
- 因此,在门户中启用多回合将允许您调用
generateanswer
API 到 return 响应,其中包含prompts
值。 - 第 2 步是确保您的助手拥有创建卡片的代码。您必须处理何时生成卡片
您可以在 botbuilder samples
存储库 70.qnamaker-multiturn-sample
中找到实现多轮提示的机器人示例。它构建卡片的代码片段,我将在下面 post,但我建议直接转到示例以查看其周围的逻辑,以了解您何时实际发送带有卡片(他们仅在 context
和 prompt
存在时通过发送卡片来实现——您可以根据您的机器人需要对其进行自定义)。
/// <summary>
/// Get multi-turn prompts card.
/// </summary>
/// <param name="result">Result to be dispalyed as prompts.</param>
/// <returns>IMessageActivity.</returns>
private static IMessageActivity GetQnAPromptsCardWithoutNoMatch(QueryResult result)
{
if (result == null)
{
throw new ArgumentNullException(nameof(result));
}
var chatActivity = Activity.CreateMessageActivity();
chatActivity.Text = result.Answer;
var buttonList = new List<CardAction>();
// Add all prompt
foreach (var prompt in result.Context.Prompts)
{
buttonList.Add(
new CardAction()
{
Value = prompt.DisplayText,
Type = "imBack",
Title = prompt.DisplayText,
});
}
var plCard = new HeroCard()
{
Buttons = buttonList
};
// Create the attachment.
var attachment = plCard.ToAttachment();
chatActivity.Attachments.Add(attachment);
return chatActivity;
}
我已经有一段时间没有查看虚拟助手解决方案项目了,但我会说检查以确保他们没有多轮 QnA 对话框来验证这是问题所在,并且如果是这样,请查看多轮 qna 示例以查看如何编辑 VA 以包括处理多轮提示的示例。