Adaptive Card中action.http使用求助:POST请求不被支持
问题解析与解决方案
这个问题的核心是:Action.Http并不是Adaptive Card核心Schema的标准动作类型,它是微软部分生态平台(比如Teams机器人、Power Automate)针对Adaptive Card做的扩展功能,所以你在官方通用Schema里只能看到Submit、OpenURL、ShowCard这三个基础动作。下面分情况给你具体指导:
1. 如果你在支持Action.Http的平台使用(比如Teams机器人)
如果你的Adaptive Card是运行在Teams机器人、Power Automate这类支持扩展动作的环境中,Action.Http是可以正常使用的。这里给你一个POST请求的示例:
{ "type": "AdaptiveCard", "version": "1.4", "body": [ { "type": "TextInput", "id": "userInput", "placeholder": "输入需要提交的内容" } ], "actions": [ { "type": "Action.Http", "title": "提交数据", "method": "POST", "url": "https://your-api-domain.com/api/submit", // 注意:body需要是字符串化的JSON,不能直接写对象 "body": "{\"userInput\": \"{{userInput.value}}\"}", "headers": [ { "name": "Content-Type", "value": "application/json" } ] } ] }
使用时需要注意:
body必须是字符串格式的JSON,不能直接传入JSON对象,否则平台会解析失败- 确保你的API端点可以被当前平台访问(比如Teams环境下不能用本地localhost地址,需要公网可访问)
- 部分平台会对请求做签名或权限校验,需要提前配置好相关权限
2. 如果在不支持Action.Http的平台使用(比如自定义Web应用、通用客户端)
如果你的Adaptive Card是在自定义应用、非微软扩展平台中使用,那只能用标准的Action.Submit来间接实现POST请求:
第一步:在Adaptive Card中定义Submit动作,把需要提交的数据放在data字段里
{ "type": "AdaptiveCard", "version": "1.4", "body": [ { "type": "TextInput", "id": "userInput", "placeholder": "输入需要提交的内容" } ], "actions": [ { "type": "Action.Submit", "title": "提交数据", "data": { "actionType": "submitToApi", "payload": { "userInput": "{{userInput.value}}" } } } ] }
第二步:在承载Adaptive Card的应用中监听Submit事件,手动发起POST请求
以JavaScript为例,你可以通过Adaptive Cards的SDK监听onAction事件:
const adaptiveCard = new AdaptiveCards.AdaptiveCard(); adaptiveCard.parse(cardJson); // 监听Submit动作 adaptiveCard.onAction = (action) => { if (action.data.actionType === "submitToApi") { // 发起POST请求 fetch("https://your-api-domain.com/api/submit", { method: "POST", headers: { "Content-Type": "application/json" }, body: JSON.stringify(action.data.payload) }) .then(response => response.json()) .then(data => { console.log("提交成功:", data); // 这里可以添加成功后的UI反馈 }) .catch(error => { console.error("提交失败:", error); }); } }; // 把卡片渲染到页面 document.body.appendChild(adaptiveCard.render());
额外提醒
- 如果你不确定当前平台是否支持
Action.Http,可以查看该平台的Adaptive Card相关文档,或者直接测试动作是否生效 - 核心Schema的动作是所有支持Adaptive Card的平台都能兼容的,而扩展动作只在特定平台可用,所以如果需要跨平台兼容,优先使用标准动作
内容的提问来源于stack exchange,提问作者Allan King
相关产品推荐
相关产品推荐

