MS Teams调用Graph API发送自适应卡片顶部空白问题咨询
MS Teams调用Graph API发送自适应卡片顶部空白问题
问题现象
在MS Teams应用中调用Graph API向用户发送自适应卡片时,卡片顶部存在多余空白区域,效果如下:
当前请求结构
当前传递给接口的请求payload结构如下:
{ "attachments": [{ "id": "", "contentType": "application/vnd.microsoft.card.adaptive", "contentUrl": null, "content": "经JSON.stringify序列化的自适应卡片内容", "name": null, "thumbnailUrl": null }], "body": { "contentType": "html", "content": "" } }
已尝试过为主请求对象设置subject属性、为attachment节点设置name属性,均未解决空白问题,需要实现两个目标:
- 支持自定义头部区域显示文本
- 若无法自定义文本,完全移除顶部空白区域
解决方案
该空白区域是Teams为消息正文(即payload中的body字段)预留的渲染空间,只要保留空的body节点,哪怕内容为空,客户端也会预留对应高度导致出现空白,对应两个需求的实现方式如下:
需求1:在头部区域显示自定义文本
直接给body.content字段传入需要展示的文本或HTML格式内容即可,该部分内容会直接渲染在自适应卡片上方的头部区域,不会产生多余空白。
示例payload:
{ "attachments": [{ "id": "", "contentType": "application/vnd.microsoft.card.adaptive", "contentUrl": null, "content": "经JSON.stringify序列化的自适应卡片内容", "name": null, "thumbnailUrl": null }], "body": { "contentType": "html", "content": "<p>需要展示在卡片顶部的自定义提示文本</p>" } }
注意:不要通过设置请求根节点的subject属性、或attachment节点的name属性实现头部文本展示,这两个字段不会渲染在卡片上方的正文区域,部分Teams客户端甚至不会展示这两个字段的内容。
需求2:移除顶部空白区域
直接删除请求payload中的整个body节点即可,不要传空对象、空字符串内容的body字段,接口会识别到当前消息仅包含自适应卡片附件,不会预留正文渲染空间,顶部空白会完全消失。
修正后的无空白payload示例:
{ "attachments": [{ "id": "", "contentType": "application/vnd.microsoft.card.adaptive", "contentUrl": null, "content": "经JSON.stringify序列化的自适应卡片内容", "name": null, "thumbnailUrl": null }] }
注意:不要尝试将
body.content设为null、或修改contentType值,只要body节点存在,部分版本的Teams客户端依然会预留正文高度,必须完全移除body字段才能兼容所有端消除空白。
内容的提问来源于stack exchange,提问作者Shabbir Dhangot
相关产品推荐
相关产品推荐

