构建 Google Chat 界面

本页简要介绍了如何为扩展 Google Chat 的 Google Workspace 插件构建界面 (UI)。

如需为 Chat 应用构建界面,您可以使用以下插件组件:

  • 触发器:Google Chat 用户调用 Chat 应用的方式,例如将其添加到聊天室或向其发送消息。
  • 事件对象:Chat 应用从触发器或界面互动接收的数据。
  • 操作:Chat 应用响应互动的方式,例如发送消息或返回基于卡片的界面。
Chat 应用从“已添加到聊天室”触发器接收事件对象
图 1:当用户将 Chat 应用添加到聊天室时,添加到聊天室触发器会触发并发送事件对象。如需通过消息进行回复,Chat 应用会处理事件对象并返回一个用于创建消息的操作。

聊天应用可以在以下界面中构建和显示卡片:

  • 可以包含文字、静态或互动卡片以及按钮的消息
  • 对话框:在新的窗口中打开的卡片,通常会提示用户提交信息。
  • 链接预览,即用于预览外部服务相关信息的卡片。

触发器

本部分介绍 Google Workspace 加载项在 Chat 中使用的触发器。

触发器是指用户通过 Chat 界面(例如使用 @提及或应用命令)调用 Chat 应用的具体方式。

下表显示了 Chat 触发器、说明以及 Chat 应用通常如何响应:

触发器 说明 典型回答
已添加到聊天室

用户将 Chat 应用添加到聊天室,或者 Google Workspace 管理员在私信聊天室中为组织中的用户安装 Chat 应用。如需了解管理员安装的 Chat 应用,请参阅 Google Workspace 管理员帮助文档中的在您的网域中安装 Marketplace 中的应用

Chat 应用会发送一条引导消息,说明其用途以及聊天室中的用户如何与其互动。
短信

用户可以通过以下任一方式在消息中与 Chat 应用互动:

  • 在私信 (DM) 聊天室中使用 Chat 应用发送消息。
  • 在任何类型的聊天室中 @提及 Chat 应用。
  • 发送包含与链接预览的网址格式匹配的链接的消息。
  • selectionInput widget 的多选菜单中输入文本。
Chat 应用会根据消息内容做出回答。例如,聊天应用会回复斜杠命令 /about,并发送一条消息来解释该聊天应用可以执行的任务。
已从聊天室中移除

用户从聊天室中移除 Chat 应用,或者 Google Workspace 管理员为其组织中的用户卸载 Chat 应用。

用户无法移除由管理员安装的 Chat 扩展应用。如果用户之前已安装 Chat 应用,则无论 Google Workspace 管理员是否尝试卸载,Chat 应用都会保持已安装状态。

Chat 应用会移除为聊天室配置的所有入站通知(例如删除 Webhook),并清理所有内部存储空间。聊天应用无法通过消息响应此触发器,因为它们已不再是相应聊天室的成员。
应用命令

用户使用 Chat 应用命令

Chat 应用会响应该命令。例如,回复消息或打开对话框。

与其他 Google Workspace 插件不同,您必须使用 Google Chat API 为这些触发器配置任何回调函数。如需获取指导,请参阅配置 Google Chat 应用

如需响应触发器,请参阅以下指南:

活动对象

当 Chat 触发器触发时,或者当 Chat 用户与 Chat 应用中的界面(例如点击按钮)互动时,Chat 应用会收到事件对象。事件对象包含有关互动的数据,Chat 应用可使用这些数据来做出响应或更新界面。

如需了解如何处理事件对象,请参阅以下指南:

如需了解 Chat 和其他 Google Workspace 应用中的插件事件对象,请参阅事件对象

聊天操作

本部分将介绍 Chat 应用如何使用插件操作来响应用户互动。

如需通过插件操作进行响应,Chat 应用必须在 30 秒内做出响应,并且响应必须发布在发生互动的对话空间中。否则,Chat 应用必须设置身份验证并调用 Google Chat API 才能做出响应。

聊天应用可以通过多种方式处理互动并做出回应。 在许多情况下,聊天应用会回复一条消息。 聊天应用还可以从数据源中查找某些信息、记录事件对象信息,或者执行其他任何操作。这种处理行为从本质上定义了 Google Chat 应用。

为了响应用户互动,Chat 应用必须处理相应的事件对象,并返回以下 JSON 对象之一:

下表显示了 Chat 应用如何通过操作进行响应。Chat 应用可以返回 JSON 对象,也可以使用 Apps 脚本的 AddOnResponseService 构建响应。

聊天应用回复 返回(JSON)所需的操作 返回所需的操作 (Apps 脚本)
发送或更新消息 DataActions DataActionsResponse
打开、更新或关闭对话框 RenderActions ActionResponse
为了从卡片或对话框中收集信息,根据用户在多选菜单中输入的内容建议选择项。 RenderActions ActionResponse
Chat 用户在聊天室中发送的消息中的预览链接 DataActions DataActionsResponse

使用 Google Chat API 进行回复

Chat 应用可能需要使用 Google Chat API 来响应互动,而不是返回加购项操作。例如,Chat 应用必须调用 Google Chat API 才能执行以下任何操作:

  • 在 30 秒后响应互动。
  • 在互动发生的空间之外执行任务。
  • 在 Chat 中执行无法作为插件操作执行的任务。例如,列出用户或 Chat 应用所属的聊天室,或将用户添加到聊天室。
  • 代表 Chat 用户执行任务(需要用户身份验证)。

在 30 秒后响应互动事件时,为避免出现面向用户的错误消息(指出您的 Chat 扩展应用未响应),您必须在 30 秒内通过发送空响应来确认收到互动事件,如下所示:

Node.js

async function onEvent(req, res) {
  // Trigger asynchronous job that will respond using the Google Chat API.
  ...

  // Respond with an empty response to the Google Chat platform.
  return res.send({});
};

Python

def on_event(event) -> dict:
  # Trigger asynchronous job that will respond using the Google Chat API.
  ...

  # Respond with an empty response to the Google Chat platform.
  return {}

Java

public String onEvent(JsonNode event) {
  // Trigger asynchronous job that will respond using the Google Chat API.
  ...

  // Respond with an empty response to the Google Chat platform.
  return "{}";
}

Apps 脚本

function onEvent(event) {
  // Trigger asynchronous job that will respond using the Google Chat API.
  ...

  // Respond with an empty response to the Google Chat platform.
  return null;
}

如需了解如何对 Chat API 进行身份验证和调用,请参阅 Chat API 概览