如何向Microsoft Teams中的Adaptive Card传递文本参数?
向Adaptive Card传递动态文本参数的实现方法
1. 修改Adaptive Card模板,添加动态占位符
将原卡片中的静态标题文本替换为数据绑定表达式,Adaptive Card 1.0及以上版本原生支持这种语法。修改后的JSON如下:
{ "type": "AdaptiveCard", "$schema": "http://adaptivecards.io/schemas/adaptive-card.json", "version": "1.4", "body": [ { "type": "TextBlock", "text": "**Title - ${dynamicTitle}**", "wrap": true, "weight": "Bolder" }, { "type": "Image", "url":"urlIMage" }, { "type": "TextBlock", "text": "Text here", "wrap": true } ] }
这里的${dynamicTitle}就是动态参数的占位符,你可以根据需求自定义参数名称(比如${orderId}、${reportName})。
2. 在代码中传递参数并渲染卡片
根据你使用的平台(Bot Framework、自定义应用、Teams等),在渲染卡片时传入包含参数的数据集,以下是常见场景的示例:
示例1:C#(Bot Framework场景)
// 定义要传递的动态数据 var cardData = new { dynamicTitle = "2024年Q3销售汇总报告" }; // 加载本地卡片模板文件 var cardTemplateContent = File.ReadAllText(@"你的卡片文件路径\card.json"); var cardTemplate = AdaptiveCard.FromJson(cardTemplateContent); // 将数据绑定到模板,生成最终卡片 var renderedCard = cardTemplate.Template.Expand(cardData); // 发送渲染后的卡片 await turnContext.SendActivityAsync(MessageFactory.Attachment(new Attachment { ContentType = AdaptiveCard.ContentType, Content = renderedCard }));
示例2:JavaScript(浏览器/Node.js场景)
// 卡片模板对象 const cardTemplate = { "type": "AdaptiveCard", "$schema": "http://adaptivecards.io/schemas/adaptive-card.json", "version": "1.4", "body": [/* 你的卡片内容 */] }; // 要传递的动态参数 const cardData = { dynamicTitle: "用户反馈工单#12345" }; // 使用Adaptive Cards SDK完成数据绑定 const template = new AC.Template(cardTemplate); const renderedCard = template.expand({ $data: cardData }); // 浏览器中渲染卡片 const adaptiveCard = new AC.AdaptiveCard(); adaptiveCard.parse(renderedCard); document.body.appendChild(adaptiveCard.render());
3. 关键注意事项
- 参数名称必须和卡片模板中的占位符完全匹配,区分大小写
- 支持复杂文本拼接,比如
**${category} - ${dynamicTitle}**,直接在text字段中编写表达式即可 - 部分平台(如Teams)支持直接在卡片的
$data属性中嵌套数据,无需额外模板渲染步骤
内容的提问来源于stack exchange,提问作者S_A
相关产品推荐
相关产品推荐

