如何在Microsoft Bot Composer中动态创建自适应卡片并轮播展示
实现Bot Composer动态生成自适应卡片轮播的正确方法
前提准备
确保API返回的对象数组已正确存储到Bot的可访问变量中,比如通过「设置属性」动作将HTTP请求结果(turn.result)赋值给user.orderItems变量。
动态轮播卡片的正确实现
在「发送活动」动作中选择「自适应卡片」类型,使用以下JSON结构,通过$data绑定实现数组遍历与卡片动态生成:
{ "type": "message", "attachmentLayout": "carousel", "attachments": [ { "type": "AdaptiveCard", "$data": "${user.orderItems}", "body": [ { "type": "TextBlock", "text": "订单号: ${SdDoc}", "size": "Large", "weight": "Bolder" }, { "type": "TextBlock", "text": "行项目号: ${ItmNumber}" }, { "type": "TextBlock", "text": "物料编码: ${Material}" } ], "$schema": "http://adaptivecards.io/schemas/adaptive-card.json", "version": "1.4" } ] }
核心逻辑说明
attachmentLayout: "carousel"指定消息使用轮播布局$data: "${user.orderItems}"将卡片模板绑定到目标数组,Composer会自动遍历数组中的每个对象,生成对应数量的卡片- 卡片内部直接通过
${属性名}引用数组对象的字段(如${SdDoc}),无需额外循环语法
常见语法错误排查
- 变量路径错误:确认
$data绑定的变量名与实际存储数组的变量一致(比如是user.orderItems还是turn.result) - 自适应卡片版本问题:使用
1.4及以上版本,低版本可能不支持$data动态绑定 - 表达式语法错误:所有变量引用必须用
${}包裹,避免遗漏或多余符号 - 空数组处理:可添加条件判断(如
length(user.orderItems) > 0),避免空数组导致的渲染异常
内容的提问来源于stack exchange,提问作者SamAditya
相关产品推荐
相关产品推荐

