如何用Power Automate收集MS 365用户Teams私人聊天中的Praise?
针对MS 365所有用户私人聊天的Power Automate触发方案及相关细节
一、是否存在原生触发器?
目前Power Automate没有直接针对所有用户私人聊天的原生触发器,但可以通过Microsoft Graph API结合自定义触发器实现需求。
二、核心实现方案
通过Graph API的聊天消息订阅功能,订阅全用户的私人聊天消息事件,再用Power Automate的HTTP触发器接收事件通知,后续处理消息内容。
三、同类脚本参考
1. 创建Graph订阅(可在Power Automate的HTTP动作中执行)
POST https://graph.microsoft.com/v1.0/subscriptions Content-Type: application/json { "changeType": "created", "notificationUrl": "https://prod-xx.westus.logic.azure.com:443/workflows/xxxx/triggers/manual/paths/invoke?api-version=2016-06-01&sp=%2Ftriggers%2Fmanual%2Frun&sv=1.0&sig=xxxx", "resource": "/chats/getAllMessages", "expirationDateTime": "2024-12-31T00:00:00Z", "clientState": "YourSecretClientState" }
说明:使用
/chats/getAllMessages需要应用权限,能覆盖所有用户的私人聊天;如果用/users/{userId}/chats/getAllMessages则需要遍历所有用户ID批量创建订阅。
2. Power Automate流核心步骤
- 触发器:HTTP触发器(接收Graph推送的事件通知)
- 解析JSON:解析Graph返回的通知内容,提取聊天ID和消息ID
- 调用Graph API:获取完整消息内容
GET https://graph.microsoft.com/v1.0/chats/{chatId}/messages/{messageId} - 内容判断:检查消息是否包含你定义的Praise关键词/格式
- 写入SharePoint:将符合条件的消息信息(发送人、接收人、内容、时间等)存入目标列表
四、所需权限与关联账号
- 权限类型:必须使用应用权限(委派权限仅能访问当前登录用户的聊天,无法覆盖全用户)
- 具体权限:
Chat.Read.All:读取所有聊天消息内容ChatMessage.Read.All:订阅所有聊天消息事件
- 关联账号要求:需要一个拥有全局管理员或Teams服务管理员角色的账号,用于在Azure AD中注册应用并授予上述权限,之后在Power Automate中使用该应用的客户端ID、密钥、租户ID来调用Graph API。
五、关键注意事项
- 隐私合规:访问全用户私人聊天属于敏感数据操作,必须符合组织隐私政策及当地法规(如GDPR),需提前完成合规审批。
- 订阅续订:Graph订阅最长有效期为3天,需在流中添加定期续订逻辑,避免触发失效。
- 性能优化:用户量较大时,建议用Azure函数中转事件,避免Power Automate直接处理大量请求导致性能问题。
内容的提问来源于stack exchange,提问作者AniLuc
相关产品推荐
相关产品推荐

