能否以已注册应用身份通过MS Graph定时发送Teams一对一聊天消息?
可以通过已注册应用向Microsoft Teams一对一聊天发送消息
当然可以实现这个需求,核心是通过Microsoft Graph API结合应用权限完成,具体实现逻辑如下:
- 配置应用权限:在Azure AD注册的应用需添加
ChatMessage.Send应用权限(注意是应用权限,而非委派权限),并完成管理员全局同意。 - 获取应用身份的Access Token:使用客户端凭据流(Client Credentials Flow)获取token,请求示例:
POST https://login.microsoftonline.com/{tenant-id}/oauth2/v2.0/token Content-Type: application/x-www-form-urlencoded grant_type=client_credentials &client_id={你的客户端ID} &client_secret={你的客户端密钥} &scope=https://graph.microsoft.com/.default - 调用Graph API发送消息:拿到token后,调用
POST /users/{用户ID}/chats/{聊天ID}/messages接口发送消息,请求示例:POST https://graph.microsoft.com/v1.0/users/{用户ID}/chats/{聊天ID}/messages Authorization: Bearer {access-token} Content-Type: application/json { "body": { "content": "这是定时触发的消息内容" } } - 定时任务触发:将获取token和调用API的逻辑封装成脚本,通过cron(Linux)或系统任务计划(Windows)设置每小时执行一次即可。
注意事项:
- 需提前获取目标用户ID和对应的一对一聊天ID,可通过
GET /users/{用户ID}/chats接口查询获取。 - 应用权限必须经过全局管理员同意才能生效,确保权限配置步骤正确。
内容的提问来源于stack exchange,提问作者Lopuch
相关产品推荐
相关产品推荐

