本页面介绍了如何设置网络钩子以将异步消息发送到 使用外部触发器的 Chat 聊天室。例如,您可以 配置监控应用程序以通知值班人员 在服务器出现故障时聊天。发送同步消息 使用 Chat 应用,请参阅 发送消息。
这种类型的架构 因此用户无法与 webhook 或已连接的外部 因为通信是单向的网络钩子不是对话式的。 他们无法回复或接收来自用户的消息, Chat 应用互动事件。 如需回复消息,请按以下步骤操作: 构建 Chat 扩展应用 而不是网络钩子
虽然网络钩子从技术层面来讲 Chat 应用 - Webhook 使用标准 HTTP 请求 - 此页面称其为用于 简化。每个网络钩子只能在以下国家/地区的 Chat 聊天室中使用: 它已注册传入的网络钩子适用于私信,但前提是 所有用户均有 已启用聊天应用。 您无法将网络钩子发布到 Google Workspace Marketplace。
下图显示了将 Webhook 连接到 聊天:
在上图中,Chat 应用具有以下特征 信息流:
- Chat 应用逻辑会从 外部第三方服务(例如项目管理系统或 票务工具
- Chat 应用逻辑托管在云端或 该系统本地系统,该系统可以使用 webhook 网址发送到 特定 Chat 聊天室。
- 用户可以在以下应用中接收来自 Chat 应用的消息: 但无法与对方聊天 Chat 应用。
前提条件
Python
- Business 或 Enterprise 有权访问以下内容的 Google Workspace 账号: Google Chat。 您的 Google Workspace 组织必须允许用户 添加和使用传入的网络钩子。
- Python 3.6 或更高版本
- pip 软件包管理工具
httplib2
库。如需安装该库,请在命令行界面中运行以下命令:pip install httplib2
Google Chat 聊天室。如要使用 Google Chat API 创建联系人,请参阅 创建聊天室。要在 Chat 中创建账号,请执行以下操作: 请访问 帮助中心文档。
Node.js
- Business 或 Enterprise 有权访问以下内容的 Google Workspace 账号: Google Chat。 您的 Google Workspace 组织必须允许用户 添加和使用传入的网络钩子。
- Node.js 14 或更高版本
- npm 软件包管理工具
- Google Chat 聊天室。如要使用 Google Chat API 创建联系人,请参阅 创建聊天室。要在 Chat 中创建账号,请执行以下操作: 请访问 帮助中心文档。
Java
- Business 或 Enterprise 有权访问以下内容的 Google Workspace 账号: Google Chat。 您的 Google Workspace 组织必须允许用户 添加和使用传入的网络钩子。
- Java 11 或更高版本
- Maven 软件包管理工具
- Google Chat 聊天室。如要使用 Google Chat API 创建联系人,请参阅 创建聊天室。要在 Chat 中创建账号,请执行以下操作: 请访问 帮助中心文档。
Apps 脚本
- Business 或 Enterprise 有权访问以下内容的 Google Workspace 账号: Google Chat。 您的 Google Workspace 组织必须允许用户 添加和使用传入的网络钩子。
- 创建一个独立的 Apps 脚本项目, 然后启用高级聊天服务。
- Google Chat 聊天室。如要使用 Google Chat API 创建联系人,请参阅 创建聊天室。要在 Chat 中创建账号,请执行以下操作: 请访问 帮助中心文档。
创建网络钩子
如要创建网络钩子,请在您要创建的 Chat 聊天室中注册该网络钩子 来接收消息,然后编写一个发送消息的脚本。
注册传入的网络钩子
- 在浏览器中,打开 聊天。 无法通过 Chat 移动应用配置网络钩子。
- 前往您要添加网络钩子的聊天室。
- 点击相应聊天室标题旁边的 展开箭头,然后点击应用和集成。
点击
Add webhooks。在名称字段中,输入
Quickstart Webhook
。在头像网址字段中,输入
https://developers.google.com/chat/images/chat-product-icon.png
。点击保存。
如需复制网络钩子网址,请点击
更多,然后点击 复制链接。
编写 webhook 脚本
网络钩子脚本示例将一条消息发送到
方法是向网络钩子网址发送 POST
请求。通过
Chat API 会返回一个
Message
。
选择一种语言,了解如何创建网络钩子脚本:
Python
在您的工作目录中,创建一个名为
quickstart.py
的文件。在
quickstart.py
中,粘贴以下代码:将
url
变量的值替换为 是在注册网络钩子时复制的。
Node.js
在您的工作目录中,创建一个名为
index.js
的文件。在
index.js
中,粘贴以下代码:将
url
变量的值替换为 是您在注册网络钩子时复制的
Java
在您的工作目录中,创建一个名为
pom.xml
的文件。在
pom.xml
中,复制并粘贴以下内容:在您的工作目录中,创建以下目录结构
src/main/java
。在
src/main/java
目录中,创建一个名为App.java
的文件。在
App.java
中,粘贴以下代码:将
URL
变量的值替换为您 是在注册 webhook 时复制的。
Apps 脚本
在浏览器中,转到 Apps 脚本。
点击 New Project。
粘贴以下代码:
将
url
变量的值替换为您 是在注册 webhook 时复制的。
运行 webhook 脚本
在 CLI 中,运行以下脚本:
Python
python3 quickstart.py
Node.js
node index.js
Java
mvn compile exec:java -Dexec.mainClass=App
Apps 脚本
- 点击运行。
运行代码时,webhook 会将一条消息发送到 已经注册它
发起或回复消息串
指定
spaces.messages.thread.threadKey
作为消息请求正文的一部分。具体取决于您是开始 回复会话时,请为threadKey
使用以下值:如果要启动线程,请将
threadKey
设置为任意字符串,但 记下该值以向主题帖发布回复。如果要回复某个会话,请指定在
threadKey
会话串已启动。例如,要发布对包含 初始消息使用MY-THREAD
,设置MY-THREAD
。
定义找不到指定的
threadKey
时的线程行为:回复消息串或发起新消息串。将 将
messageReplyOption=REPLY_MESSAGE_FALLBACK_TO_NEW_THREAD
参数设为 网络钩子网址传递此网址参数会导致 Chat 使用指定的threadKey
查找现有线程。如果有 ,则会将该帖子作为回复发布到该会话。如果没有 则相应消息会发起与其对应的新会话threadKey
。回复消息串或不执行任何操作。将
messageReplyOption=REPLY_MESSAGE_OR_FAIL
参数添加到网络钩子网址。 传递此网址参数会导致 Chat 使用指定的threadKey
查找现有线程。如果有 该会话,则会将该帖子作为回复发布到该会话。如果没有 则该邮件不会被发送。
如需了解详情,请参阅
messageReplyOption
。
以下代码示例可发起或回复消息串: