如何实现点击个人聊天Adaptive Card按钮跳转至频道特定消息?
实现Adaptive Card按钮跳转至指定频道特定消息的方案
方案一:直接使用平台深度链接(推荐)
大多数支持Adaptive Card的协作平台(如Microsoft Teams)都提供消息深度链接,可直接通过Adaptive Card的Action.OpenUrl按钮实现跳转:
- 先构造目标消息的深度链接,以Teams为例,格式为:
你可通过平台API(如Microsoft Graph API)或手动复制消息链接的方式获取该地址。https://teams.microsoft.com/l/message/{频道ID}/{消息ID}?tenantId={租户ID} - 在Adaptive Card的按钮配置中,将
type设为Action.OpenUrl,把构造好的深度链接赋值给url字段,示例JSON片段如下:
用户点击按钮后,会直接被导航到指定频道的目标消息页面。{ "type": "AdaptiveCard", "version": "1.5", "body": [ { "type": "TextBlock", "text": "点击下方按钮查看目标消息" } ], "actions": [ { "type": "Action.OpenUrl", "title": "跳转至目标消息", "url": "https://teams.microsoft.com/l/message/19:abc123@thread.tacv2/123456789?tenantId=def456" } ] }
方案二:通过Bot后台逻辑间接跳转(适用于需要权限校验的场景)
如果需要对用户权限做校验,或动态生成跳转链接,可使用Action.Submit按钮结合Bot后台处理:
- 在Adaptive Card中配置
Action.Submit按钮,携带目标消息的标识(如频道ID、消息ID):{ "type": "Action.Submit", "title": "跳转至目标消息", "data": { "action": "navigateToMessage", "channelId": "19:abc123@thread.tacv2", "messageId": "123456789" } } - Bot接收到用户的提交请求后,通过平台API(如Microsoft Graph的
GET /teams/{team-id}/channels/{channel-id}/messages/{message-id})验证用户权限,并生成对应的深度链接。 - Bot将生成的链接返回给用户(可以是文本消息或新的Adaptive Card),用户点击链接完成跳转。
注意事项
- 不同平台的深度链接格式不同,需根据实际使用的平台(如Slack、Microsoft Teams)调整链接构造规则。
- 确保用户拥有目标频道和消息的访问权限,否则跳转后会显示权限不足的提示。
内容的提问来源于stack exchange,提问作者Ayesha Kulsum S J
相关产品推荐
相关产品推荐

