无需Azure Bot Service,Outlook中Adaptive Card v1.4的action.Execute如何提交数据到Web API
解决Outlook中Adaptive Card v1.4 action.Http不可用且无需Azure Bot Service的方案
方案1:用HTML内嵌链接模拟按钮(最通用)
Outlook支持在Adaptive Card的TextBlock中嵌入HTML内容(需确保邮件以HTML格式发送),可以用HTML的<a>标签模拟Adaptive Card按钮样式,直接指向你的API接口:
- 如果是GET请求:直接在链接中拼接参数,示例代码如下:
{ "type": "AdaptiveCard", "$schema": "http://adaptivecards.io/schemas/adaptive-card.json", "version": "1.4", "body": [ { "type": "TextBlock", "text": "<a href=\"https://your-webapp-api.azurewebsites.net/response?user=xxx&data=yyy\" style=\"display:inline-block;padding:8px 16px;background:#0078d4;color:white;border-radius:4px;text-decoration:none;\">提交响应</a>", "wrap": true, "isSubtle": false } ] }
- 如果需要POST请求:可以先跳转至部署在同一Azure WebApp下的静态HTML页面,页面内通过JavaScript收集卡片上下文参数,再发起POST请求到你的API。静态页面可直接放在WebApp的wwwroot目录下,无需额外服务。
方案2:降级Adaptive Card版本到v1.3(最小改动)
如果v1.4的新特性对你不是必需的,直接将卡片的version字段改为1.3,$schema保持为http://adaptivecards.io/schemas/adaptive-card.json即可:
{ "type": "AdaptiveCard", "$schema": "http://adaptivecards.io/schemas/adaptive-card.json", "version": "1.3", "actions": [ { "type": "Action.Http", "title": "提交响应", "method": "POST", "url": "https://your-webapp-api.azurewebsites.net/response", "body": "{\"user\":\"xxx\",\"data\":\"yyy\"}" } ] }
Outlook对v1.3及以下版本的Action.Http仍保持支持,无需修改现有业务逻辑。
方案3:自定义协议转发请求(适合内部场景)
针对企业内部用户,可以注册自定义协议(如your-api-protocol://),在Action.Execute的data字段中携带请求参数:
{ "type": "AdaptiveCard", "$schema": "http://adaptivecards.io/schemas/adaptive-card.json", "version": "1.4", "actions": [ { "type": "Action.Execute", "title": "提交响应", "data": { "endpoint": "https://your-webapp-api.azurewebsites.net/response", "params": {"user":"xxx","data":"yyy"} } } ] }
然后开发一个轻量的桌面脚本或网页书签工具,拦截自定义协议请求,将参数转发到你的API。此方案需要用户配合配置,仅适合可控的内部环境。
内容的提问来源于stack exchange,提问作者qwer11121
相关产品推荐
相关产品推荐

