【发布时间】:2019-10-31 12:57:59
【问题描述】:
我目前正在尝试在瀑布对话框中为我的一个机器人创建一个自适应卡片,该卡片将在渲染时显示名称和搜索项(两个字符串)。我要使用的两个值都存储在对话框的 Context.Activity.Value 属性中,所以我只需要知道如何在创建自适应卡的某个时间点将这些值插入到自适应卡中,以便“文本”文本块的值可以包含我的值。
我已经研究过在自适应卡架构中使用空 JSON 对象,我可以在创建自适应卡时以某种方式填充这些对象,但还没有弄清楚如何插入所述值。我是 C# 和 Bot Framework 的相对初学者,所以我不知道该尝试什么。
下面是我的瀑布对话框中制作自适应卡片的步骤:
private async Task<DialogTurnResult> AdaptiveCardTest(WaterfallStepContext stepContext,
CancellationToken cancellationToken)
{
var introCard = File.ReadAllText("./Content/AdaptiveCardTest.json");
var card = AdaptiveCard.FromJson(introCard).Card;
var attachment = new Attachment(AdaptiveCard.ContentType, content: card);
var response = MessageFactory.Attachment(attachment, ssml: card.Speak,
inputHint: InputHints.AcceptingInput);
await stepContext.Context.SendActivityAsync(response);
return await stepContext.NextAsync();
}
AdaptiveCardTest.json 是自适应卡的 json 文件。目前它只有一个带有一些文本的图像弹出窗口,其中包括我希望用户名和搜索项去的占位符。占位符链接在那里是因为实际链接非常长。
{
"type": "AdaptiveCard",
"id": "NewUserGreeting",
"backgroundImage": "image_url_placeholder"
"body": [
{
"type": "Container",
"items": [
{
"type": "Image",
"url": "image_url_placeholder_2"",
"size": "Stretch"
}
]
},
{
"type": "Container",
"spacing": "None",
"backgroundImage": "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABYAAAAXCAIAAACAiijJAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAAqSURBVDhPY1RgL2SgDDBBaQrAqBEIMGoEAowagQCjRiDAqBEIQLERDAwAIisAxhgAwtEAAAAASUVORK5CYII=",
"items": [
{
"type": "TextBlock",
"id": "title",
"spacing": "Medium",
"size": "Large",
"weight": "Bolder",
"color": "Light",
"text": "Hi, I'm **your** Virtual Assistant",
"wrap": true
},
{
"type": "TextBlock",
"id": "body",
"size": "Medium",
"color": "Light",
"text": "The user {{Name}} would like to know more about {{SearchItem}}.",
"wrap": true
}
]
}
],
}
任何帮助将不胜感激,谢谢!
【问题讨论】:
标签: c# botframework adaptive-cards