Adaptive Card的Action.Submit按钮在Skype中无法渲染及卡片创建咨询
解决Skype机器人中Adaptive Card的Action.Submit不渲染问题
嘿,我碰到过类似的情况,给你几个实用的排查和解决方向:
1. 锁定兼容的Adaptive Card版本
Skype对Adaptive Card的新版本支持可能会滞后,高版本里的一些特性它还没适配。建议你把卡片的version指定为1.2或者更低(比如1.0),同时确保$schema地址正确。很多时候就是版本不兼容导致按钮不渲染的。
示例开头配置:
{ "$schema": "http://adaptivecards.io/schemas/adaptive-card.json", "type": "AdaptiveCard", "version": "1.2", // ... 其他内容 }
2. 简化Action.Submit的配置
Skype对复杂的数据结构支持有限,尽量让Action.Submit的配置简洁:
- 必须包含
title属性(按钮显示的文字) data字段尽量用扁平结构,不要嵌套多层对象
正确的Action.Submit示例:
"actions": [ { "type": "Action.Submit", "title": "提交请求", "data": { "actionType": "submit", "formId": "123" } } ]
3. 确保发送卡片的方式正确
在Skype机器人里发送Adaptive Card时,要严格按照Bot Framework的规范封装:
- 附件类型必须是
application/vnd.microsoft.card.adaptive - 用官方的CardFactory工具来生成卡片(避免手动拼接出错)
比如Node.js中的发送代码:
const { CardFactory } = require('botbuilder'); // 导入你的卡片JSON const adaptiveCard = require('./yourCard.json'); // 在对话中发送卡片 await context.sendActivity({ text: "这是一张测试卡片", attachments: [ CardFactory.adaptiveCard(adaptiveCard) ] });
4. 排查Skype通道的特性限制
Skype并不是支持所有Adaptive Card的元素,比如某些高级布局、自定义样式可能会失效。你可以参考官方的Skype通道特性列表,确保卡片里只用它支持的元素和动作。
如果还是有问题,建议用Bot Framework Emulator测试Skype通道,查看有没有报错信息,或者直接在Skype的开发者控制台里检查卡片的渲染日志。
内容的提问来源于stack exchange,提问作者SamuelNLP
相关产品推荐
相关产品推荐

