接收和响应用户互动

本页将介绍 Google Chat 应用如何接收和 响应用户互动,也称为 Google Chat 应用 互动事件

本页面介绍了如何执行以下操作:

  • 将您的 Chat 应用配置为接收互动 事件。
  • 在基础架构上处理互动事件。
  • 适当地响应互动事件。

前提条件

一款已启用互动功能的 Google Chat 应用。要创建 交互式 Chat 应用,请完成以下快速入门之一 针对您要使用的应用架构

互动事件的工作原理

Google Chat 应用互动事件是指 Google Chat 应用互动事件中发生的任何操作 用户调用 Chat 应用或与其互动,例如 例如用“@”提及 Chat 应用或将其添加到 空间。当用户与 Chat 应用互动时, Google Chat 会向 Chat 应用发送互动事件。 Chat 应用可以使用该事件来处理 然后创建响应

例如,Chat 应用使用互动事件执行 以下:

互动事件示例 Chat 应用的一般回复
用户通过以下方式调用 Chat 应用: 使用“@”提及或使用斜杠命令。 通过 Chat 应用会处理收到的消息内容 创建消息。例如,聊天应用会回复 /about 命令,并提供一条消息,说明您要执行的 Chat 应用具备的功能。
用户将 Chat 应用添加到 空间。 Chat 应用会发送初始配置 消息,说明它的用途以及聊天室中的用户可以如何与 。
用户移除了 聊天室中的 Chat 应用。 通过 Chat 应用会移除收到的所有通知 (例如删除 webhook) 并清除所有 内部存储空间
用户点击由 Chat 应用。 Chat 应用会处理和存储 用户提交的数据,或者返回其他卡片或对话框。

对于每种类型的用户互动,Google Chat 都会发送不同类型的 这些互动事件可帮助您的 Chat 应用处理 事件类型。例如,Google Chat 使用事件类型 ADDED_TO_SPACE,表示用户添加了 将 Chat 应用添加到聊天室 Chat 应用可以处理响应,例如发布 欢迎辞加入聊天室。要查看所有支持的互动事件,请参阅 EventType 参考文档 文档

接收 Chat 应用互动事件

本部分介绍了如何接收和处理 Chat 应用。

将您的 Chat 应用配置为接收互动事件

并非所有 Chat 应用都是互动式应用。例如: 传入的网络钩子只能外发消息且 无法回复用户。如果您要构建互动式广告 你必须选择一个端点 聊天应用接收、处理和响应互动 事件。如需详细了解如何设计您的 Chat 应用,请参阅 Chat 应用实现架构

对于您想要构建的每个互动功能,您必须更新 您在 Chat API 中的配置,这样 Google Chat 就可以 Chat 应用添加相关的互动事件:

  1. 在 Google Cloud 控制台中,前往 Chat API 页面,然后点击 配置页面:

    前往“Chat API 配置”页面

  2. 互动功能下,查看设置并根据以下内容进行更新: 您希望构建的功能:

    字段 说明
    功能 必需。一组字段,用于确定 Chat 应用如何与用户互动:
    • 接收 1 对 1 消息:用户可以直接在 Google Chat 中找到 Chat 应用并向其发送消息。
    • 加入聊天室和群组对话:用户可以将 Chat 应用添加到聊天室和群组对话。
    连接设置 必需。Chat 应用的端点,可以是以下端点之一:
    • 应用网址:托管 Chat 应用实现的 HTTPS 端点。
    • Apps 脚本项目:实现 Chat 应用的 Apps 脚本项目的部署 ID。
    • Cloud Pub/Sub 主题名称:Chat 应用订阅为端点的 Pub/Sub 主题。
    • Dialogflow:使用 Dialogflow 集成注册 Chat 应用。如需了解详情,请参阅构建理解自然语言的 Dialogflow Google Chat 应用
    斜杠命令 可选。可在 Google Chat 中向用户显示的命令。允许用户在 Google Chat 中查看您的 Chat 应用的核心操作,并选择希望与之互动的具体操作。有关详情,请参阅以 Chat 应用的身份响应斜杠命令
    链接预览 可选。Chat 应用可在用户发送链接时识别并提供额外内容的网址格式。如需了解详情,请参阅预览链接
    公开范围 可选。最多可以有 5 人查看和安装您的 Chat 应用,或者一个或多个 Google 群组。使用此字段可测试您的 Chat 应用,或与您的团队分享 Chat 应用。如需了解详情,请参阅测试互动功能
  3. 点击保存。保存 Chat 应用时 您的 Chat 扩展应用可供 您 Google Workspace 组织中的特定用户。

您的 Chat 应用现已配置为接收互动 Google Chat 中的活动。

处理服务的 HTTP 调用重试

如果对您的服务的 HTTPS 请求失败(如超时、临时网络 或非 2xx HTTPS 状态代码),Google Chat 可能会重新尝试发送一些 (但不能保证这一点)。因此, Chat 应用可能会在以下时间后多次收到相同的消息: 。如果请求成功完成,但返回了无效 消息载荷,Google Chat 不会重试请求。

处理或响应互动事件

本部分介绍了 Google Chat 应用会如何处理和响应 互动事件

您的 Chat 应用收到以下互动事件后: Google Chat,他们可以通过多种方式进行回复。在许多情况下 聊天应用会回复用户。 Google Chat 应用还可以从数据中查找一些信息 来源、记录互动事件信息等内容。 从本质上讲,这种处理行为定义了 Google Chat 应用。

如要同步回复,Chat 应用必须做出响应 而且回复必须张贴在 是否发生过互动。否则,Chat 应用可以: 异步响应。

对于每个互动事件,Chat 应用都会收到请求正文, ,这是代表事件的 JSON 载荷。您可以使用 信息来处理响应。如需查看事件载荷示例,请参阅 Chat 应用互动事件类型

下图演示了如何 Google Chat 应用通常会处理或响应不同类型的 互动事件:

Google Chat 应用如何处理互动事件的架构。

实时回答

互动事件可让 Chat 应用实时响应,或者 同步。同步响应不需要 authentication

回复加入聊天室

在此示例中,您的 Chat 应用会创建并发送 消息。如需了解 新手入门用户,请参阅 向用户介绍您的 Chat 应用

在用户添加您的 Chat 应用时发送短信 聊天室,您的 Chat 应用 响应 ADDED_TO_SPACE 互动事件。回复 ADDED_TO_SPACE 互动事件,请使用以下代码:

Node.js

/**
 * Sends an onboarding message when the Chat app is added to a space.
 *
 * @param {Object} req The event object from Chat API.
 * @param {Object} res The response object from the Chat app. An onboarding message that
 * introduces the app and helps people get started with it.
 */
exports.onMessage = function onMessage(req, res) {
  if (req.method === 'GET' || !req.body.message) {
    res.send(
      'Hello! This function is meant to be used in a Google Chat space.');
  }

  // Send an onboarding message when added to a Chat space
  if (req.body.type === 'ADDED_TO_SPACE') {
    res.json({
      'text': 'Hi, Cymbal at your service. I help you manage your calendar
      from Google Chat. Take a look at your schedule today by typing
      `/checkCalendar`, or schedule a meeting with `/scheduleMeeting`. To
      learn what else I can do, type `/help`.'
    });
  }
};

Apps 脚本

/**
 * Sends an onboarding message when the Chat app is added to a space.
 *
 * @param {Object} event The event object from Chat API.
 * @return {Object} Response from the Chat app. An onboarding message that
 * introduces the app and helps people get started with it.
 */
function onAddToSpace(event) {

  return {
    'text': 'Hi, Cymbal at your service. I help you manage your calendar
    from Google Chat. Take a look at your schedule today by typing
    `/checkCalendar`, or schedule a meeting with `/scheduleMeeting`. To learn
    what else I can do, type `/help`.'
  }
}

该代码示例会返回以下文本消息:

新手入门消息示例。

响应互动的其他示例

要创建对互动事件的同步响应,请参阅以下内容 指南:

异步响应

有时,Chat 应用必须在 30 天后响应互动事件 或是在发生互动事件的空间之外执行任务, 。例如,Chat 应用可能需要 在完成长时间运行的任务后响应用户。在此示例中 聊天应用可以通过调用 Google Chat API 进行异步响应。

如需使用 Chat API 创建消息,请参阅 创建消息。使用指南 其他 Chat API 方法,请参阅 Chat API 概览