本指南介绍了如何使用 Google Chat API 的 Message 资源中的 update 方法更新聊天室中的文本或卡片消息。更新消息以更改消息属性,例如消息内容或卡片内容。您还可以将文本消息附加到卡片消息前面,或将卡片附加到文本消息后面。
在 Chat API 中,聊天消息由 Message 资源表示。虽然 Chat 用户只能发送包含文本的消息,但 Chat 应用可以使用许多其他消息传递功能,包括显示静态或交互式界面、从用户收集信息以及私下传递消息。如需详细了解 Chat API 提供的消息功能,请参阅 Google Chat 消息概览。
前提条件
Node.js
- 可访问 Google Chat 的 Google Workspace 商务版或企业版账号。
- 设置环境:
- 创建 Google Cloud 项目。
- 配置 OAuth 权限请求页面。
- 启用并配置 Google Chat API,为您的 Chat 应用设置名称、图标和说明。
- 安装 Node.js Cloud 客户端库。
- 根据您希望在 Google Chat API 请求中进行身份验证的方式,创建访问凭据:
- 如需以 Chat 用户身份进行身份验证,请创建 OAuth 客户端 ID 凭证,并将凭证作为名为
credentials.json的 JSON 文件保存到本地目录。 - 如需以 Chat 应用身份进行身份验证,请创建服务账号凭证,并将凭证保存为名为
credentials.json的 JSON 文件。
- 如需以 Chat 用户身份进行身份验证,请创建 OAuth 客户端 ID 凭证,并将凭证作为名为
- 根据您是要以用户身份还是以 Chat 应用身份进行身份验证, 选择授权范围。
Python
- 可访问 Google Chat 的 Google Workspace 商务版或企业版账号。
- 设置环境:
- 创建 Google Cloud 项目。
- 配置 OAuth 权限请求页面。
- 启用并配置 Google Chat API,为您的 Chat 应用设置名称、图标和说明。
- 安装 Python Cloud 客户端库。
- 根据您希望在 Google Chat API 请求中进行身份验证的方式,创建访问凭据:
- 如需以 Chat 用户身份进行身份验证,请创建 OAuth 客户端 ID 凭证,并将凭证作为名为
credentials.json的 JSON 文件保存到本地目录。 - 如需以 Chat 应用身份进行身份验证,请创建服务账号凭证,并将凭证保存为名为
credentials.json的 JSON 文件。
- 如需以 Chat 用户身份进行身份验证,请创建 OAuth 客户端 ID 凭证,并将凭证作为名为
- 根据您是要以用户身份还是以 Chat 应用身份进行身份验证, 选择授权范围。
Java
- 可访问 Google Chat 的 Google Workspace 商务版或企业版账号。
- 设置环境:
- 创建 Google Cloud 项目。
- 配置 OAuth 权限请求页面。
- 启用并配置 Google Chat API,为您的 Chat 应用设置名称、图标和说明。
- 安装 Java Cloud 客户端库。
- 根据您希望在 Google Chat API 请求中进行身份验证的方式,创建访问凭据:
- 如需以 Chat 用户身份进行身份验证,请创建 OAuth 客户端 ID 凭证,并将凭证作为名为
credentials.json的 JSON 文件保存到本地目录。 - 如需以 Chat 应用身份进行身份验证,请创建服务账号凭证,并将凭证保存为名为
credentials.json的 JSON 文件。
- 如需以 Chat 用户身份进行身份验证,请创建 OAuth 客户端 ID 凭证,并将凭证作为名为
- 根据您是要以用户身份还是以 Chat 应用身份进行身份验证, 选择授权范围。
Apps 脚本
- 可访问 Google Chat 的 Google Workspace 商务版或企业版账号。
- 设置环境:
- 创建 Google Cloud 项目。
- 配置 OAuth 权限请求页面。
- 启用并配置 Google Chat API,为您的 Chat 应用设置名称、图标和说明。
- 创建独立的 Apps 脚本项目,并启用高级 Chat 服务。
- 在本指南中,您必须使用用户或应用身份验证。如需以 Chat 应用身份进行身份验证,请创建服务账号凭证。如需了解相关步骤,请参阅以 Google Chat 应用身份进行身份验证和授权。
- 根据您是要以用户身份还是以 Chat 应用身份进行身份验证, 选择授权范围。
代表用户更新消息
使用用户身份验证时,只能更新消息的文本。
如需通过用户身份验证更新消息,请在请求中传递以下内容:
- 指定
chat.messages授权范围。 - 调用
UpdateMessage方法。 - 使用以下代码将
message作为Message的实例传递:name字段设置为要更新的消息,其中包含聊天室 ID 和消息 ID。text字段设置为新文本。
- 传递值为
text的updateMask。
如果更新后的消息是卡片消息,则文本会附加到卡片(继续显示)前面。
以下方法介绍了如何更新消息,或如何使用用户身份验证在卡片消息前面添加文本消息:
Node.js
Python
Java
Apps 脚本
如需运行此示例,请替换以下内容:
SPACE_NAME:聊天室的name中的 ID。您可以通过调用ListSpaces方法或从聊天室的网址中获取该 ID。MESSAGE_NAME:消息的name中的 ID。您可以从使用 Chat API 异步创建消息后返回的响应正文中获取该 ID,也可以从创建消息时分配给消息的自定义名称中获取该 ID。
Chat API 会返回一个 Message 实例,其中详细说明了更新后的消息。
以 Chat 应用身份更新消息
通过应用身份验证,可以同时更新消息的文本和卡片。
如需通过应用身份验证更新消息,请在请求中传递以下内容:
- 指定
chat.bot授权范围。 - 调用
UpdateMessage方法。 - 使用以下代码将
message作为Message的实例传递:name字段设置为要更新的消息,其中包含聊天室 ID 和消息 ID。- 如果需要更新,则
text字段会设置为新文本。 - 如果需要更新,则使用新卡片设置
cardsV2字段。
- 传递
updateMask以及要更新的字段列表,例如text和cardsV2。
如果更新后的消息是卡片消息,并且文本已更新,则更新后的文本会附加到卡片(继续显示)前面。如果更新后的消息是短信,并且卡片已更新,则更新后的卡片会附加到文本(继续显示)中。
以下是使用应用身份验证更新消息的文本和卡片的方法:
Node.js
Python
Java
Apps 脚本
如需运行此示例,请替换以下内容:
SPACE_NAME:聊天室的name中的 ID。您可以通过调用ListSpaces方法或从聊天室的网址中获取该 ID。MESSAGE_NAME:消息的name中的 ID。您可以通过以下方式获取 ID:使用 Chat API 异步创建消息后返回的响应正文,或在创建时分配给消息的自定义名称。
Chat API 会返回一个 Message 实例,其中详细说明了更新后的消息。
异步更新卡片
您可以使用 replaceCards 方法异步更新消息中的卡片。这对于在没有用户互动的情况下更新卡片内容非常有用,例如刷新链接预览或更新任务状态。此方法适用于应用创建的消息,包括代表用户创建的消息。
如需了解详情,请参阅创建和更新互动式卡片。