Google Chat

✨ Google Chat 消息推送工具

通过 Webhook 或 OAuth 向 Google Chat 空间和用户发送消息,支持 CI/CD 通知、告警推送等场景,代码结构清晰但来源为个人开发者。

收藏
10.4k
安装
2.3k
版本
1.0.0
CLS 安全性认证2026-06-04
点击查看完整报告 >

使用说明

核心用法

Google Chat Messaging Skill 提供两种消息发送方式,满足不同场景需求:

1. Webhook 方式(推荐固定频道)

  • 预配置频道 URL,消息以机器人身份发送
  • 支持线程回复(--thread_key),适合连贯通知流
  • 无需 OAuth 握手,响应速度最快
  • 配置存储在 google-chat-config.json 中管理多频道

2. OAuth 方式(动态目标)

  • 通过 Google Cloud OAuth 认证,可向任意空间或用户发送消息
  • 支持按名称查找空间(--space)、按 ID 直接发送(--space-id
  • 自动添加 🤖 前缀标识(可用 --no-emoji 关闭)
  • 可列出可用空间(--list-spaces

关键限制:Google Chat API 不支持通过邮箱创建新私信,私信需已知现有空间 ID。

显著优点

  • 双模式灵活切换:Webhook 用于高频固定频道,OAuth 用于动态目标
  • 线程消息支持:Webhook 支持 thread_key 聚合相关消息
  • 卡片消息格式:支持 JSON 卡片(标题、按钮、分区)实现富文本通知
  • 官方 API 保障:依赖 Google 官方客户端库,无第三方中间件
  • 代码质量过关:215 行 Python 代码结构清晰,无危险函数或硬编码密钥

潜在缺点与局限性

| 问题 | 说明 |
|------|------|
| **来源可信度 T3** | 个人开发者项目,无 GitHub 公开历史,缺乏社区审查 |
| **OAuth Token 存储风险** | Token 保存为本地文件,未显式设置 600 权限,可能被同机其他用户读取 |
| **输入验证不足** | `thread_key` 直接 URL 拼接,未严格校验字符白名单 |
| **无开源许可证** | 未指定 MIT/Apache 等许可证,责任边界不明 |
| **私信限制** | 无法通过邮箱主动发起新私信,需预存在对话空间 |
| **日志级别单一** | 缺少 `--verbose/--debug` 参数,排查问题不便 |

适合人群

  • DevOps/平台工程师:CI/CD 流水线集成部署通知
  • 运维团队:系统告警、监控事件推送至值班频道
  • Google Workspace 用户:已启用 Google Chat API 的企业环境
  • 自动化脚本开发者:需要将通知能力集成到 Python/Bash 工作流

常规风险

1. 凭据泄露风险:Webhook URL 和 OAuth Token 文件需严格保管,避免提交到代码仓库
2. 权限扩散:OAuth 授权范围较宽(chat.messages + chat.spaces),最小权限原则下建议定期审查

3. 消息伪造:Webhook URL 被截获后可能被滥用发送虚假通知,建议配合线程 key 或签名验证

4. 企业策略限制:部分 Google Workspace 管理员可能禁用第三方应用或 webhook 功能

5. API 配额:Google Chat API 存在调用频率限制,高频场景需考虑批量或降级策略

建议在生产环境部署前:① 人工审查代码 ② 添加 Token 文件权限控制 ③ 配置日志脱敏 ④ 建立凭据轮换机制。

安全解读

核心功能

Google Chat 消息发送工具,提供两种互补的消息投递模式:

  • Webhook 模式:面向固定频道的高速推送,无需 OAuth 握手,消息以 Bot 身份呈现,适合 CI/CD 通知、监控告警等场景
  • OAuth 模式:支持动态发现空间、按名称发送、私聊回复,需完成 Google Cloud 授权流程,适合交互式应用

显著优点

1. 双模式灵活架构:Webhook 用于性能敏感场景(单次调用无认证开销),OAuth 用于动态场景(运行时解析空间名称)
2. 线程化消息支持:Webhook 支持 thread_key 实现消息分组,便于构建对话式通知流

3. 标准化依赖:仅使用官方 Google API 客户端库,无第三方不可信依赖

4. 合规设计:OAuth Token 和凭证完全由用户本地管理,Skill 不接触敏感数据

5. 清晰的权限边界:申请的最小 scope 集(messages/spaces/memberships.readonly)无过度授权

局限性与注意事项

| 限制项 | 说明 |
|--------|------|
| DM 创建限制 | Google Chat API 不支持通过邮箱创建新私聊,需预先存在对话并获取 space ID |
| OAuth 冷启动 | 首次运行需浏览器授权,不适合完全无人值守场景(除非预置 refresh token)|
| 企业策略依赖 | Workspace 管理员可限制 OAuth 应用或 Webhook 使用,需提前确认 |
| 消息格式 | 基础文本和卡片支持完整,但复杂交互(如表单)需自行构造 JSON |

适合人群

  • DevOps/SRE 工程师:构建部署通知、监控告警流水线
  • 自动化开发者:将 Chat 集成到内部工具链,实现状态广播
  • Workspace 管理员:需要程序化管理空间消息的分发

常规风险与缓解

  • 凭证泄露风险:OAuth JSON 和 Webhook URL 包含密钥,应设置文件权限 600 并排除在版本控制外
  • Token 过期:OAuth token 需定期刷新,长期运行建议实现自动刷新逻辑
  • 空间权限:发送失败常见于用户无目标空间访问权限,需提前确认 membership

Google Chat 内容

references文件夹
scripts文件夹
手动下载zip · 7.5 kB
config-example.jsonapplication/json
请选择文件