本页面介绍了如何使用 Pub/Sub创建 Chat 应用。如果您的组织有防火墙(这可能会阻止 Chat 向您的 Chat 应用发送消息),或者 Chat 应用使用 Google Workspace Events API,则这种 Chat 应用架构非常有用 。不过,由于这些 Chat 应用只能发送和接收 异步消息,因此这种 架构存在以下限制:
下图展示了使用 Pub/Sub 构建的 Chat 应用的架构:
在上图中,与 Pub/Sub Chat 应用交互的用户具有以下信息流:
用户在 Chat 中向 Chat 应用发送消息(通过私信或在 Chat 聊天室中),或者 Chat 聊天室中发生 Chat 应用具有有效 订阅的事件。
Chat 将消息发送到 Pub/Sub 主题。
应用服务器(即包含 Chat 应用逻辑的云端或本地系统)订阅 Pub/Sub 主题,以便通过防火墙接收消息。
(可选)Chat 应用可以调用 Chat API 以异步发布消息或执行其他操作。
前提条件
构建 Chat 应用时,您必须在 Google Cloud 控制台的 Chat API 配置页面中取消选中将此 Chat 应用构建为 Google Workspace 插件 。请参阅 将应用发布到 Google Chat。
Node.js
- 具有 Google Chat 访问权限的 Business 或 Enterprise Google Workspace 账号。
- 启用了结算功能的 Google Cloud 项目。如需检查现有项目是否已启用结算功能, 请参阅验证项目的 结算状态。如需创建项目并设置结算功能,请参阅 创建 Google Cloud 项目。
- Node.js 14 或更高版本
- npm 软件包管理工具
-
已初始化的 Node.js 项目。如需初始化新项目,请创建并切换到新文件夹,然后在命令行界面中运行以下命令:
npm init
Python
- 具有 Google Chat 访问权限的 Business 或 Enterprise Google Workspace 账号。
- 启用了结算功能的 Google Cloud 项目。如需检查现有项目是否已启用结算功能, 请参阅验证项目的 结算状态。如需创建项目并设置结算功能,请参阅 创建 Google Cloud 项目。
- Python 3.6 或更高版本
- pip 软件包管理工具
Java
- 具有 Google Chat 访问权限的 Business 或 Enterprise Google Workspace 账号。
- 启用了结算功能的 Google Cloud 项目。如需检查现有项目是否已启用结算功能, 请参阅验证项目的 结算状态。如需创建项目并设置结算功能,请参阅 创建 Google Cloud 项目。
- Java 11 或更高版本
- Maven 软件包管理工具
设置环境
在使用 Google API 之前,您需要在 Google 云项目中启用它们。您可以在单个 Google Cloud 项目中启用一个或多个 API。在 Google Cloud 控制台中,启用 Google Chat API 和 Pub/Sub API。
设置 Pub/Sub
创建一个 Pub/Sub 主题 Chat API 可以向其发送消息。我们建议您为每个 Chat 应用使用一个主题。
通过向以下服务账号分配 Pub/Sub Publisher 角色,授予 Chat 向该主题发布消息的权限:
chat-api-push@system.gserviceaccount.com为 Chat 应用 创建一个服务账号,以便使用 Pub/Sub 和 Chat 进行授权,并将私钥文件保存到工作目录。
创建拉取订阅 为该主题。
编写脚本
Node.js
在 CLI 中,提供服务账号凭据:
export GOOGLE_APPLICATION_CREDENTIALS=SERVICE_ACCOUNT_FILE_PATH在 CLI 中,提供 Google Cloud 项目 ID:
export PROJECT_ID=PROJECT_ID在 CLI 中,提供您之前创建的 Pub/Sub 订阅的订阅 ID:
export SUBSCRIPTION_ID=SUBSCRIPTION_ID在工作目录中,创建一个名为
package.json的文件。在
package.json文件中,粘贴以下代码:在工作目录中,创建一个名为
index.js的文件。在
index.js中,粘贴以下代码:
Python
在 CLI 中,提供服务账号凭据:
export GOOGLE_APPLICATION_CREDENTIALS=SERVICE_ACCOUNT_FILE_PATH在 CLI 中,提供 Google Cloud 项目 ID:
export PROJECT_ID=PROJECT_ID在 CLI 中,提供您之前创建的 Pub/Sub 订阅的订阅 ID:
export SUBSCRIPTION_ID=SUBSCRIPTION_ID在工作目录中,创建一个名为
requirements.txt的文件。在
requirements.txt文件中,粘贴以下代码:在工作目录中,创建一个名为
app.py的文件。在
app.py中,粘贴以下代码:
Java
在 CLI 中,提供服务账号凭据:
export GOOGLE_APPLICATION_CREDENTIALS=SERVICE_ACCOUNT_FILE_PATH在 CLI 中,提供 Google Cloud 项目 ID:
export PROJECT_ID=PROJECT_ID在 CLI 中,提供您之前创建的 Pub/Sub 订阅的订阅 ID:
export SUBSCRIPTION_ID=SUBSCRIPTION_ID在工作目录中,创建一个名为
pom.xml的文件。在
pom.xml文件中,粘贴以下代码:在工作目录中,创建目录结构
src/main/java。在
src/main/java目录中,创建一个名为Main.java的文件。在
Main.java中,粘贴以下代码:
将应用发布到 Chat
在 Google Cloud 控制台中,依次前往菜单 > API 和服务 > 已启用的 API 和服务 > Google Chat API > 配置。
为 Pub/Sub 配置 Chat 应用:
- 取消选中将此 Chat 应用构建为 Google Workspace 插件 。系统会打开一个对话框,要求您确认。在该对话框中,点击停用 。
- 在应用名称 中,输入
Quickstart App。 - 在头像网址 中,输入
https://developers.google.com/chat/images/quickstart-app-avatar.png。 - 在说明 中,输入
Quickstart app。 - 在功能 下,选择加入聊天室和群组对话。
- 在连接设置 下,选择 Cloud Pub/Sub ,然后粘贴您之前创建的 Pub/Sub 主题的 名称。
- 在公开范围 下,选择面向您网域中的特定人员和群组提供此 Google Chat 应用 ,然后输入您的电子邮件地址。
- 在日志 下,选择将错误记录到 Logging 。
点击保存 。
该应用已准备好接收和回复 Chat 上的消息。
运行脚本
在 CLI 中,切换到工作目录并运行脚本:
Node.js
npm install
npm start
Python
python -m venv env
source env/bin/activate
pip install -r requirements.txt -U
python app.py
Java
mvn compile exec:java -Dexec.mainClass=Main
运行代码后,应用会开始监听发布到 Pub/Sub 主题的消息。
测试 Chat 应用
如需测试 Chat 应用,请打开与 Chat 应用的私信聊天室并发送消息:
使用您在添加自己作为受信任的测试人员时提供的 Google Workspace 账号打开 Google Chat。
- 点击 发起新聊天。
- 在添加 1 位或多位用户 字段中,输入 Chat 应用的名称。
从结果中选择 Chat 应用。系统会打开私信。
- 在与该应用的新私信中,输入
Hello并按enter键。
如需添加受信任的测试人员并详细了解如何测试互动功能,请参阅 测试 Google Chat 应用的互动功能。
问题排查
当 Google Chat 应用或 卡片返回错误时, Chat 界面会显示“出了点问题。” 或“无法处理您的请求。”有时,Chat 界面 不会显示任何错误消息,但 Chat 应用或 卡片会产生意外结果;例如,卡片消息可能不会 显示。
虽然 Chat 界面中可能不会显示错误消息, 但如果为 Chat 应用启用了错误日志记录,您可以使用描述性错误消息和日志数据来帮助您修复错误 。如需获得有关查看、 调试和修复错误的帮助,请参阅 排查和修复 Google Chat 错误。
清理
为避免因本教程中使用的 资源导致您的 Google Cloud 账号产生费用,我们建议您删除 云项目。
- 在 Google Cloud 控制台中,前往管理资源 页面。依次点击 菜单 > IAM 和管理 > 管理资源。
- 在项目列表中,选择要删除的项目,然后点击 删除 .
- 在对话框中输入项目 ID,然后点击关停 以删除 项目。
相关主题
如需为 Chat 应用添加更多功能,请参阅以下内容: