You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何通过Google Chat API向Google Workspace域内用户发送私信(免高权限)

可行方案分析与实现

针对你提出的需求——仅通过用户邮箱、无需用户预先操作、避免高权限配置,向Google Workspace组织内用户发送Google Chat异步私信,以下是实际可行的方案:

方案1:最小权限全域委派(最优解)

虽然需要配置全域委派,但可以将权限严格限制到仅获取用户ID的最小范围,避免过度授权:

  1. 配置步骤
    • 在Google Cloud Console中为服务账号启用全域委派。
    • 在Google Workspace Admin Console中,为服务账号授权唯一权限范围:https://www.googleapis.com/auth/admin.directory.user.readonly。
  2. 获取用户ID
    通过Directory API的users.get接口,用邮箱作为userKey参数获取用户ID:
    from googleapiclient.discovery import build
    
    # 初始化Directory API客户端(使用服务账号凭据)
    directory_service = build('admin', 'directory_v1', credentials=credentials)
    # 通过邮箱获取用户信息
    user_info = directory_service.users().get(userKey='target-user@your-domain.com').execute()
    user_id = user_info['id']
    
  3. 创建DM并发送消息
    用获取到的用户ID调用Chat API创建/获取DM空间,再发送消息:
    # 初始化Chat API客户端
    chat_service = build('chat', 'v1', credentials=credentials)
    # 获取或创建与目标用户的DM空间
    dm_space = chat_service.spaces().findDirectMessage(name=f'users/{user_id}').execute()
    # 发送异步消息
    chat_service.spaces().messages().create(
        parent=dm_space['name'],
        body={'text': '这是给你的异步私信内容'}
    ).execute()
    

此方案完全满足"用户无需预先操作"的需求,且权限仅用于读取用户基本信息,风险可控。

方案2:折衷备选(无需全域委派,但需用户一次操作)

如果完全无法接受全域委派配置,可采用邮件引导方式:

  • 向目标用户发送邮件,包含Google Chat的直接对话链接(格式类似https://chat.google.com/dm/your-bot-email@your-domain.com/target-user@your-domain.com),用户点击链接后会自动创建与应用的DM空间。
  • 应用通过spaces.list接口监控新创建的DM空间,后续即可向该空间发送消息。
    此方案的缺点是需要用户主动点击链接,不符合"无需预先操作"的核心需求,仅作为权限受限场景下的备选。

说明

目前Google Chat API没有提供完全绕过"用户ID"或"全域委派"的异步私信发送方式,方案1是最贴合你需求的可行解,权限范围已最小化,符合安全规范。

内容的提问来源于stack exchange,提问作者Andrej Vckovski

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.24 09:16:17