无需使用Bot SDK,如何获取Tab应用安装事件?
无需Bot,用Webhook接收Teams Tab安装事件
完全可以用Webhook替代Bot来接收Tab应用的安装事件,具体实现步骤如下:
1. 配置应用Manifest
在你的Teams应用manifest.json中添加webApplicationInfo字段,指定服务端Webhook端点作为事件接收地址,同时为应用配置必要权限(根据Tab适用场景选择,比如团队Tab用TeamTab.ReadWrite.All,个人聊天Tab用ChatTab.ReadWrite.All):
"webApplicationInfo": { "id": "<你的Azure AD应用ID>", "resource": "https://graph.microsoft.com", "applicationPermissions": [ "TeamTab.ReadWrite.All" ] }
2. 订阅Tab安装事件
通过Microsoft Graph API创建订阅,监听Tab的创建(即安装)事件:
- 请求方法:POST
- 请求地址:
https://graph.microsoft.com/v1.0/subscriptions - 请求体:
{ "changeType": "created", "notificationUrl": "<你的Webhook端点URL>", "resource": "/teams/{team-id}/tabs", "expirationDateTime": "<订阅过期时间,最长3天>", "clientState": "<自定义验证字符串,用于防止伪造请求>" }
若需监听个人聊天中的Tab安装,将resource替换为/chats/{chat-id}/tabs即可。
3. 处理Webhook通知
当用户安装Tab时,Teams会向你的notificationUrl发送POST请求,服务端可按以下逻辑处理:
- 验证请求:通过匹配
clientState确保请求合法性 - 解析事件:从请求体中提取Tab ID、团队/聊天ID、安装用户信息等核心数据,完成后续业务逻辑
注意事项
- Webhook端点必须支持HTTPS,且能被Teams服务正常访问
- 订阅存在有效期(最长3天),需实现自动续订逻辑
- 若需监听所有团队/聊天的Tab安装,需使用应用级权限的订阅(需Azure AD后台审批)
内容的提问来源于stack exchange,提问作者rastym
相关产品推荐
相关产品推荐

