Microsoft Teams iOS端消息扩展选中查询结果项未触发invoke调用
问题根因
这是Microsoft Teams iOS原生客户端对消息扩展(Compose Extension)搜索结果卡片交互逻辑的已知实现差异,触发条件如下:
- iOS端Teams搜索结果渲染层不读取卡片
content节点内部定义的整项选中tap动作:当前实现将invoke类型的tap配置写在thumbnail卡片的content根节点下,Web、Mac桌面端、Android端的渲染逻辑会向上冒泡识别该tap为结果选中动作,但iOS端会完全忽略该配置,直接执行「选中即插入卡片到消息输入框」的默认逻辑,不会发起invoke请求。 - 缺少搜索结果选中事件的标准标识:自定义tap动作未携带微软官方规定的
composeExtension/selectItem动作名,iOS端对无标准标识的交互动作会直接拦截,降级为默认插入行为。
修复方案
按照Microsoft Teams消息扩展的官方Schema规范调整返回结构即可实现全端兼容,调整点如下:
- 将原本放在
content节点内的tap配置,移动到attachment对象的根层级,与contentType、content字段平级 - 给tap配置增加标准
name字段,固定值为composeExtension/selectItem,该值为全端通用的搜索结果选中触发事件标识,原有value字段内的自定义业务参数可完全保留,无需修改后端业务处理逻辑。
修正后的响应结构示例:
{ "composeExtension": { "type": "result", "attachmentLayout": "list", "attachments": [ { "contentType": "application/vnd.microsoft.card.thumbnail", "tap": { "type": "invoke", "name": "composeExtension/selectItem", "value": { "type": "IDEA_SELECT_CALLBACK", "selectedItemId": 7082 } }, "content": { "images": [ { "url": "https://localhost:8080/Public/img3-a68ff7.jpeg" } ], "subtitle": "Thumbnail card subtitle", "text": "Thumbnail card text", "title": "Title" } } ] } }
注意:卡片内部元素(按钮、图片、文本块)的独立tap交互,仍可正常配置在
content节点内,不受该规则影响;仅搜索结果列表的「整项选中触发invoke」动作,必须配置在attachment根层级并携带标准name字段,才能被iOS端正确识别。
内容的提问来源于stack exchange,提问作者Rony Emrul
相关产品推荐
相关产品推荐

