# @clisbot/channels-googlechat 中文文档

规范地址：https://npmcn.com/package/%40clisbot/channels-googlechat/

版本：2\.2\.3
npm 元数据更新时间：2026-11-05T01:29:32.147Z
中文译文更新时间：2026-11-10T02:18:49.526Z
软件包许可：未声明

本文由上游 README 翻译，可能存在偏差，请结合原文核对 API、命令与配置。版权与许可归原作者所有。

原始 npm 页面：https://www.npmjs.com/package/%40clisbot/channels-googlechat
原文对照：https://npmcn.com/package/%40clisbot/channels-googlechat/?lang=original

## 关键信息（来自 npm 元数据）

- 包体积（解压后）：336 kB，89 个文件
- 模块格式：ES Module
- TypeScript 类型：包内自带
- 运行依赖：5 个
- 首次发布：2026-10-10T10:30:52.698Z
- 最新版本发布：2026-11-05T01:29:31.979Z
- 近 30 天下载量：3408（2026-10-10 至 2026-11-08，npm 官方下载统计）
- 已发布版本数：18（近 12 个月 18 个）

## 中文简介

In-repo Google Chat频道垂直(目标分类账切片14). 由扩展/googlechat/src@5d8067a4483端口: Chat API REST客户端,服务账户 uth + 令牌缓存,markdown Google 聊天渲染器,目标/空间分辨率和webhook再取

## 安装

```sh
npm install @clisbot/channels-googlechat
```

也可以使用：`pnpm add @clisbot/channels-googlechat`、`yarn add @clisbot/channels-googlechat`、`bun add @clisbot/channels-googlechat`

## README

# @clisbot/channels-googlechat (英语)

在repo Google Chat频道垂直(目标分类账切片14). 从 `extensions/googlechat/src@5d8067a4483` 看到了吗 `upstream-sync.json` 联 合 国 逐个文件映射, 偏差( n)`D-GC-0xx`)和省略的内容.

第三方的SDK是上游的, 在上游的版本: `google-auth-library` `11.0.2`。上游手卷其 Chat API 客户端结束 `fetch` 而不是说 取决于 `googleapis`; 该客户端( e)`api.ts`页:1.

枢纽接线器在后续片中落地. [HUB-WIRING.MD (英语)](https://npmcn.com/package/%40clisbot/channels-googlechat/HUB-WIRING.md) 这是 交接文件是用Hub方面拥有的东西制作的,并保留着记录; `../../../docs/features/channels/README.md` 描述平台为已建. 入境 通过 Cloud Pub/ Sub 拉出, 不需要公共 URL; 移植的 HTTP webhook 被 Hub 拒绝, 直至结束 (单位:千美元)[HUB-WIRING.md 第6节a](https://npmcn.com/package/%40clisbot/channels-googlechat/HUB-WIRING.md#6a-cloud-pubsub-delivery-d-gc-020-2026-10-06)) (中文(简体) ). 运算符设置地址 `public-docs/hub/channels/googlechat.md`。 。 。 .

## 现场测试需要什么

自己提供这些,放回原地 `.env`。这个软件包永远不会 读取 `.env` 而这里没有价值是真正的证明——只有名字.

### 谷歌云/ 工作空间设置

1.  在谷歌云项目中,创建 **服务账户** 并下载其 JSON 键。 该文件是完整的证书;没有博特标志.
2.  启用 **谷歌聊天 API** 在项目.
3.  下 **谷歌聊天 API — 配置**,创建 Chat 应用程序:设置名称并 avatar, 启用 **接收 1:1 个消息** 财务报告和审定财务报表 **加入空格和组合 对话**选择 **应用 URL** 作为与您的连接设置 公共HTTPS终点.
4.  说明 **观众** 请求核查:
    -   `audienceType: "app-url"` → `audience` 同一个应用程序 URL,和 `appPrincipal` 是该应用程序的数值 OAuth 2.0 客户端 id (21 位数,而不是一个) email),所以添加的符号可以被绑入.
    -   `audienceType: "project-number"` → `audience` 是 Cloud 项目编号.
5.  将该应用程序发布到您的工作空间域( 或特定测试者) — a 工作空间管理员必须先批准后才能加入空间.
6.  将应用程序添加到测试空间,并用它启动一个DM.

### 试验表面

| 新闻 var | 一定是这样 |
| --- | --- |
| `GOOGLECHAT_SERVICE_ACCOUNT_JSON_PATH` | 服务账户 JSON 密钥的路径 。 从不提交文件. |
| `GOOGLECHAT_SUBSCRIPTION` | `projects/<project>/subscriptions/<name>`,拉订阅,用于Pub/Sub快递. |
| `GOOGLECHAT_PROJECT_NUMBER` | 云项目号,用于 `audienceType: "project-number"`。 。 。 . |
| `GOOGLECHAT_APP_URL` | 在 Chat app 上配置的公共 HTTPS 端点, 用于 `audienceType: "app-url"`。 。 。 . |
| `GOOGLECHAT_APP_PRINCIPAL` | 该应用的数值为OAuth 2.0客户端id (21位数). 仅限 `app-url`。 。 。 . |
| `GOOGLECHAT_PUBLIC_URL` | 公开的 URL Google 贴出(通常与 `GOOGLECHAT_APP_URL`) (中文(简体) ). |
| `GOOGLECHAT_TEST_SPACE_ID` | `spaces/<id>` 的空格. |
| `GOOGLECHAT_TEST_DM_USER_ID` | `users/<id>` 人类测试者 应用打开一个DM. |
| `GOOGLECHAT_TEST_BOT_USER_ID` | `users/<id>` 在应用程序本身,用于引用标记和自带信息过滤器. |
| `GOOGLECHAT_DRIVER_ACCOUNT` | A 类 **人类** 用作外部发送器的工作空间账户 。 从不开车带应用程序本身. |

驱动程序 / app- under- test 拆分是相同的规则 (CLAUDE.md,"需要的Slack和Telegram E2E角色"):一个直接的 `sendText` 是一个 仅限外出抽烟测试. 所需要的证明是外部发送者 + 网页hook → 代理翻转 ~ 在同一空格中回复, 然后读取 REST (单位:千美元)`GET /v1/spaces/{space}/messages`)匹配返回的消息资源名称.

Pub/Sub不需要公共端点,所以E2E在dev Hub上运行 `GOOGLECHAT_SUBSCRIPTION` (单位:千美元)`projects/<project>/subscriptions/<name>`) 上 时 间 连接。 网路在公共端点上被屏蔽 (单位:千美元)[HUB-WIRING.md 第6节](https://npmcn.com/package/%40clisbot/channels-googlechat/HUB-WIRING.md#6-the-public-endpoint--the-one-real-blocker-webhook-mode)) (中文(简体) ).

### 最小账户配置

```yaml
channel: googlechat
accountId: main
connectionId: <hub connection id>
transport: { mode: pubsub }
config:
  botUser: "<GOOGLECHAT_TEST_BOT_USER_ID>"
routes:
  - audience: [{ who: { anyone: true }, where: { dm: true } }]
    agent: <agent>
    environment: <environment>
```

服务账户文件和订阅在Hub连接的现场 全权证书`serviceAccount` 或者说 `serviceAccountFile`,以及 `subscription`(没有) 在此文件中。 网页浏览账户的使用 `transport: { mode: webhook }` 与 `audienceType`, (中文(简体) ), `audience` 财务报告和审定财务报表 `webhookUrl` 下级 `config`。 。 。 .

## 今天获得支持

**入境** (Cloud Pub/Sub拉出或HTTP webhook:) `MESSAGE` 空格、 分组聊天和模式模式; 领先 `/verb` 分类为a `command`· ; `CARD_CLICKED` 作为 `callback` 携带 按钮的动作代号、其参数值和点击用户; `ADDED_TO_SPACE` 编号 : `REMOVED_FROM_SPACE` 作为 `member` 事件。 提及检测 读取 `USER_MENTION` 说明 反对 `users/app` 并配置 `botUser`。瓶装和被应用信件被过滤,除非 `allowBots` 已经设定.

请求认证为上游, 不变: 无记名 JWT 被验证 对所配置的听众——用于 `app-url` (包括工作空间加注的发行者 `appPrincipal`)和a 数据 与 Google 聊天证书进行认证 `project-number` —— 说 **在此之前** 请求的正文读取在 auth 前大小 盖. 两百块是久已入会的 进取队列; 失败的录取回答 503 所以Google 重新删除, a 错误的信封回答400 所以它不会.

**出境**:带有上游Google Chat标记下渲染器(粗体/斜体/)的文本 罢工/代码, `<href|label>` 页:1 和它的字节键;线条响应 倒转到新线程选项; 消息编辑( n)`cardsV2` 支持更新 路径); 删除消息; DM 打开通过 `spaces:findDirectMessage`; 空间 检查和账户探针.

**信件工具动作**数字 : `send`, (中文(简体) ), `edit`, (中文(简体) ), `delete`。 。 。 .

## 尚未支持

命名于此, 上面没有比它更多的内容 .

-   **附件上传** – Google Chat的媒体上传端点为用户-Outh ; 服务账户应用程序不能使用 . `sendMedia` 显示 通知和报告 `mediaPosted: false` (D-GC-016),和 `send` 行动大声拒绝附着物,而不是放弃附着物.
-   **进入媒体下载** - 信封的吗 `attachment` 阵列已解析,但 未获取此文件, 因此拒绝只保存附件的信件 空无体相. 上游的下载生活于省略 `monitor.ts`。 。 。 .
-   **本地核准卡** - 整个 `approval-*` 家庭被忽略( 它坐落于 openClaw的审批网关运行时间). 纸牌 _点击_ 仍然到达枢纽 入境 `callback` 由Hub自己的批准政策采取行动.
-   **打字指标** 上游员额a `_… is typing…_` 信件并编辑其内容 进入答案 `monitor.ts`。反应模式 上游也提供需要的用户 OAuth 而不为服务账户工作 完全应用.
-   **反应、针头、回放、情感发现、民调** 没有服务账户 API 在这个频道. `supportsAction` 拒绝他们,所以枢纽回答 `unsupported_action` 而不是运输错误.
-   **Pub/Sub推送** ——推再需要公共URL;垂直拉.
-   **Auth 传输的代理支持** - 上游路线 -- -- 谷歌 -- -- 通过 OpenClaw 的被绑放的堆栈,它尊重明确/env代理和 客户端 TLS 证书 。 联合警卫接受 `dispatcherPolicy` 却无视它 (D-GC-005) (中文(简体) ).
-   **设置/ 医生表面** — OpenClaw 向导和 `doctor` 树是 省略; Hub 拥有上载.

## 版式

```
src/
  api.ts auth.ts google-auth.runtime.ts   ← upstream Chat REST + service-account auth
  accounts.ts targets.ts format.ts        ← upstream account/target/format closure
  actions.ts message-tool-api.ts          ← upstream message-tool adapter
  monitor-event.ts monitor-webhook.ts     ← upstream envelope parser + request handler
  channel-actions.ts outbound.ts          ← Fusion: Hub drive surface
  lifecycle/start-account.ts              ← Fusion: L4 account lifecycle
  fusion/                                 ← Fusion: every boundary, one per D-GC-0xx
    account-config.ts   Hub account carrier → upstream account resolution
    admission.ts        durable admission before the webhook 200
    inbound-adapter.ts  envelope → ChannelInboundEvent (kind + facts)
    webhook-session.ts  the owned node:http listener
    ssrf-fetch.ts       the guarded-fetch boundary
    secret-file.ts      the credential-file reader
    runtime.ts          HostRuntime → the ported PluginRuntime
```

## 常见问题

### @clisbot/channels-googlechat 是什么？

In-repo Google Chat频道垂直\(目标分类账切片14\)\. 由扩展/googlechat/src@5d8067a4483端口: Chat API REST客户端,服务账户 uth \+ 令牌缓存,markdown Google 聊天渲染器,目标/空间分辨率和webhook再取

### 如何安装 @clisbot/channels-googlechat？

在项目目录运行 npm install @clisbot/channels-googlechat，或使用 pnpm add / yarn add / bun add。

### @clisbot/channels-googlechat 支持 TypeScript 吗？

支持。包内自带 TypeScript 类型声明（package\.json 声明了 types 入口），安装后即可获得类型提示，无需再安装 @types 包。

### @clisbot/channels-googlechat 支持 ESM 还是 CommonJS？

以 ES Module 形式发布，推荐使用 import 引入。在 CommonJS 项目中，Node\.js 20\.19\+ / 22\.12\+ 可以直接 require\(\) 不含顶层 await 的 ES Module，更早的版本需要改用动态 import\(\)。

### @clisbot/channels-googlechat 可以商用吗？

@clisbot/channels-googlechat 使用 未声明 许可。package\.json 没有声明许可证。没有许可证的代码默认保留全部权利，商用前请联系作者或查看仓库中的 LICENSE 文件。以上为概括，不构成法律意见，请以许可原文为准。

### @clisbot/channels-googlechat 的下载量有多少？

根据 npm 官方下载统计，@clisbot/channels-googlechat 在 2026/10/10 – 2026/11/08 这 30 天内被下载 3,408 次，日均约 114 次。下载量会把 CI 构建、镜像同步和作为其他包依赖的安装一并计入，适合横向比较热度，不能直接等同于使用人数。

### @clisbot/channels-googlechat 还在维护吗？

最新版本 2\.2\.3 发布于 2026/11/05（5 天前）；至今共发布 18 个版本，其中过去 12 个月发布了 18 个；首次发布于 2026/10/10。发布频率只是参考信号：功能稳定的工具可能很少需要更新，建议结合源码仓库的 issue 和提交记录判断。

