选择 Google Chat 应用架构

本页介绍了用于创建 Google Chat 应用的常见服务架构方法。如果您有现有应用想要集成到 Google Chat 中,可以使用或改进现有实现。如果您要构建新的 Chat 应用,此页面会以几种不同的方式呈现类似信息,以帮助您选择适合您的用例的架构:

按功能和特性的概览

下表重点介绍了 Chat 应用的主要功能和特性,以及推荐的 () 服务架构样式。在某些情况下,您或许可以使用这些功能开发其他架构样式,但与其他样式 () 相比,它不太适合该用例。

特性和功能

Web 或 HTTP 服务

Pub/Sub

Webhook

Apps 脚本

AppSheet

Dialogflow

脚本

目标观众

你的球队

您的组织

公众

用户互动

使用自然语言处理

消息传递模式

发送和接收同步消息

发送和接收同步消息,以及发送异步消息

仅发送异步消息

将消息从外部系统发送到单个 Chat 聊天室

访问其他服务和系统

与其他 Google 服务相整合

在防火墙后通信

查询或订阅 Chat 事件

编码和部署样式

无需编写代码即可进行开发

使用低代码进行开发

使用您选择的编程语言进行开发

简化 DevOps

全面管理 DevOps 和 CI/CD

服务架构样式

本部分介绍了用于创建 Chat 应用的一些最常见的架构方法。

Web 或 HTTP 服务

网站或 HTTP 服务是最常部署的架构,因为它为开发者构建公开聊天应用提供了最大的灵活性。建议将此架构用于以下用例:

  • 聊天应用已在 Google Workspace Marketplace 上面向公众部署。
  • Chat 应用可以发送和接收所有消息模式:发送和接收同步消息、发送异步消息,以及从外部系统发送消息。
  • Chat 应用可使用任何编程语言进行开发。
  • Chat 应用需要完整的 DevOps 和 CI/CD 管理。
  • Chat 应用服务在云端或本地服务器中实现。

在此设计中,您将配置 Chat 以使用 HTTP 与远程服务集成,如下图所示:

使用本地服务器中的 Web 服务的 Chat 应用架构。

在上图中,与 HTTP Chat 应用互动的用户的信息流如下所示:

  1. 用户在 Chat 聊天室中向 Chat 应用发送消息。
  2. 系统会向 Web 服务器发送 HTTP 请求,该服务器是包含 Chat 应用逻辑的云端或本地系统。
  3. (可选)Chat 应用逻辑可以与外部第三方服务(例如项目管理系统或工单工具)互动。
  4. 网络服务器将 HTTP 响应发回给 Chat 中的 Chat 应用服务。
  5. 系统会将响应传递给用户。
  6. 聊天应用可以选择调用 Chat API 以异步发布消息或执行其他操作。

由于这些 Chat 应用可以使用不同的编程语言进行设计,因此您可以灵活使用系统中现有的库和组件。您可以通过多种方式实现此架构。在 Google Cloud 上,您可以使用 Cloud Functions、Cloud Run 和 App Engine。如需开始构建,请参阅构建 Google Chat 应用

Pub/Sub

如果 Chat 应用在防火墙后面实现,Chat 将无法向其发出 HTTP 调用。一种方法是使用 Pub/Sub 让 Chat 应用实现订阅包含 Chat 消息的主题。Pub/Sub 是一种异步消息传递服务,可将生成消息的服务与处理这些消息的服务分离开来。建议将此架构用于以下用例:

  • Chat 应用是在防火墙后面构建的。
  • Chat 应用会收到与 Chat 聊天室有关的事件
  • Chat 应用已部署到贵组织。
  • Chat 应用可以发送和接收同步消息,还可以发送异步消息。
  • Chat 应用可使用任何编程语言进行开发。
  • Chat 应用需要完整的 DevOps 和 CI/CD 管理。

下图展示了使用 Pub/Sub 构建的 Chat 应用的架构:

使用 Pub/Sub 实现的 Chat 应用的架构。

在上图中,与 Pub/Sub Chat 应用互动的用户的信息流如下所示:

  1. 用户在 Chat 中向 Chat 应用发送消息(通过私信或 Chat 聊天室),或者 Chat 应用对某个 Chat 聊天室有有效的订阅,而该聊天室中发生了事件。

  2. Chat 会将消息发送到 Pub/Sub 主题。

  3. 应用服务器(即包含 Chat 应用逻辑的云端或本地系统)订阅 Pub/Sub 主题,以便通过防火墙接收消息。

  4. 聊天应用可以选择调用 Chat API 以异步发布消息或执行其他操作。

如需开始使用,请参阅将 Pub/Sub 用作 Chat 应用的端点

Webhook

您可以创建一个 Chat 应用,通过调用 Chat webhook 网址,该应用只能向特定 Chat 聊天室发送消息。建议将此架构用于以下用例:

  • Chat 应用已部署到您的团队。
  • Chat 应用会将外部系统中的消息发送到单个 Chat 聊天室。

采用这种架构时,Chat 应用仅限于特定 Chat 聊天室,且不允许用户互动,如下图所示:

传入的网络钩子向 Chat 发送异步消息的架构。

在上图中,Chat 应用的信息流如下:

  1. Chat 应用逻辑会从外部第三方服务(例如项目管理系统或工单工具)接收信息。
  2. Chat 应用逻辑托管在云端或本地系统中,可以使用网络钩子网址向特定 Chat 聊天室发送消息。
  3. 用户可以在特定 Chat 聊天室中接收 Chat 应用发送的消息,但无法与 Chat 应用互动。

此类 Chat 应用无法在其他 Chat 聊天室中分享或与其他团队分享,也无法发布到 Google Workspace Marketplace。建议 Chat 应用使用入站 webhook 来报告提醒或状态,或用于某些类型的 Chat 应用原型设计。

如需开始使用,请参阅使用网络钩子向 Chat 发送消息

Apps 脚本

您可以完全使用 JavaScript 创建 Chat 应用逻辑。Google Apps 脚本是 Chat 应用的低代码开发平台。Apps Script 会处理授权流程和 OAuth 2.0 令牌,以便进行用户身份验证。您可以使用 Apps 脚本构建公开 Chat 应用,但由于存在每日配额和限制,我们不建议这样做。

建议将此架构用于以下用例:

  • Chat 应用已部署到您的团队或组织。
  • Chat 应用可以发送和接收所有消息模式:发送和接收同步消息、发送异步消息,以及从外部系统发送消息。
  • Chat 应用需要简化 DevOps 管理。

这种架构适用于与其他 Google Workspace 和 Google 服务(例如 Google 表格、Google 幻灯片、Google 日历、Google 云端硬盘、Google 地图和 YouTube)集成的 Chat 应用,如下图所示:

使用 Apps 脚本实现的 Chat 应用的架构。

在上图中,与 Apps Script Chat 应用互动的用户的信息流如下所示:

  1. 用户通过私信或 Chat 聊天室向 Chat 应用发送消息。
  2. 在 Google Cloud 中托管的 Apps 脚本中实现的 Chat 应用逻辑会接收消息。
  3. Chat 应用逻辑可以选择与 Google Workspace 服务(例如 Google 日历或 Google 表格)或其他 Google 服务(例如 Google 地图或 YouTube)集成。
  4. Chat 应用逻辑会将响应发送回 Chat 中的 Chat 应用服务。
  5. 系统将响应传递给用户。

如需开始使用,请参阅使用 Apps 脚本构建 Chat 应用

AppSheet

您可以使用 AppSheet 创建可在网域中共享的 Chat 应用,而无需编写代码。您可以使用自动配置模式和以下模板构建常见的 Chat 应用操作,从而简化开发流程。不过,Chat 应用不支持某些 AppSheet Web 应用功能

建议将此架构用于以下用例:

  • Chat 应用会部署给您和您的团队。
  • Chat 应用可以发送和接收同步消息,还可以发送异步消息。
  • Chat 应用需要简化 DevOps 管理。

下图展示了使用 AppSheet 构建的 Chat 应用的架构:

使用 AppSheet 实现的 Chat 应用的架构。

在上图中,与 AppSheet Chat 应用互动的用户的信息流如下所示:

  1. 用户在 Chat 中通过私信或聊天室向 Chat 应用发送消息。
  2. 在 Google Cloud 中托管的 AppSheet 中实现的 Chat 应用逻辑会接收消息。
  3. (可选)Chat 应用逻辑可以与 Google Workspace 服务(例如 Apps 脚本或 Google 表格)集成。
  4. Chat 应用逻辑会将响应发送回 Chat 中的 Chat 应用服务。
  5. 系统将响应传递给用户。

如需开始使用,请参阅使用 AppSheet 构建 Chat 应用

Dialogflow

您可以使用 Dialogflow 创建 Chat 应用,该平台支持自然语言,可实现自动对话和动态响应。建议将此架构用于以下用例:

  • Chat 应用可以发送和接收同步消息。
  • Chat 应用使用自然语言处理技术来回复用户并与用户互动。

下图展示了使用 Dialogflow 构建的 Chat 应用的架构:

使用 Dialogflow 实现的 Chat 应用的架构。

在上图中,与 Dialogflow Chat 应用互动的用户的信息流如下所示:

  1. 用户在 Chat 中通过私信或聊天室向 Chat 应用发送消息。
  2. 位于 Google Cloud 中的 Dialogflow 虚拟客服人员会接收并处理消息,以生成响应。
  3. (可选)Dialogflow 智能客服可以使用 Dialogflow Webhook 与外部第三方服务(例如项目管理系统或工单工具)进行交互。
  4. Dialogflow 代理将响应发送回 Chat 中的 Chat 应用服务。
  5. 系统会将响应传送到 Chat 聊天室。

如需开始使用,请参阅构建 Dialogflow Google Chat 应用

命令行应用或脚本

您可以创建命令行应用脚本,以向 Chat 发送消息或执行其他操作(例如创建聊天室或管理聊天室成员),而无需让用户直接在 Chat 中调用或响应 Chat 应用。建议将此架构用于以下用例:

  • Chat 应用可使用任何编程语言进行开发。
  • Chat 应用只能发送异步消息。

下图展示了此架构:

使用命令行应用或脚本实现的 Chat 应用的架构。

在上图中,Chat 应用的信息流如下:

  1. Chat 应用调用 Chat API 来发送消息或执行其他操作。
  2. Chat 会执行请求的操作。
  3. (可选)Chat 应用会在 CLI 中输出确认消息。

Chat 扩展应用逻辑实现

Chat 不会限制您实现 Chat 应用逻辑的方式。您可以创建固定语法命令解析器、使用高级 AI 和语言处理库或服务、订阅和响应事件,或执行任何其他适合您的特定目标的操作。

处理用户互动

聊天应用可以通过多种方式接收和响应用户互动。用户互动是指用户为调用或与 Chat 应用互动而执行的任何操作。

命令解析器

命令驱动型 Chat 应用会检查 Chat 应用互动事件的载荷,然后从此内容中提取命令和参数。例如,请参阅设置斜杠命令以与 Chat 用户互动

另一种方法是将消息分解为令牌、提取命令,然后引用一个字典,该字典会将命令映射到每个命令的处理程序函数。

基于对话的界面

基于对话框的应用通过显示基于卡片的对话框来响应 Chat 应用互动事件,用户可以在其中与 Chat 应用互动,例如填写表单或请求执行操作。

每当用户在对话框中执行操作时,系统都会向 Chat 应用发送新的互动事件,Chat 应用可以通过更新对话框或发送消息进行响应。

自然语言处理

许多聊天应用实现都使用自然语言处理 (NLP) 来确定用户请求的内容。实现 NLP 的方法有很多种,您可以根据自己的喜好选择实现 NLP 的方式。

您可以在 Chat 应用实现中使用 Dialogflow ESDialogflow CX Chat 集成来使用 NLP,从而创建虚拟客服来实现自动对话和动态响应。

主动向 Chat 发出请求

聊天应用还可以向 Chat 发送消息或其他请求,这些请求并非由 Chat 中的直接用户互动触发。相反,这些 Chat 应用可以通过第三方应用或用户使用命令行调用等方式触发,但用户无法直接在 Chat 中与这些 Chat 应用互动。

非 Interactive Chat 应用使用 Chat API 向 Chat 发送消息或其他类型的请求。

对话模式

您应考虑 Chat 应用与用户互动的方式。以下部分介绍了聊天应用可能实现的对话模式。

调用和响应(同步)

在同步调用和响应模式下,Chat 应用会逐一回复用户发来的消息。用户向 Chat 应用发送一条消息会导致 Chat 应用发送一条回复,如下图所示:

同步消息的架构。

在上图中,与 Chat 应用互动的用户的信息流如下所示:

  1. 用户向 Chat 应用发送同步消息,例如“我的下一个会议是什么时间?”
  2. Chat 应用向用户发送同步消息,例如“Silva 医生 2:30”。

对于此类对话模式,您可以使用 Web 服务、Pub/Sub、Apps 脚本、AppSheet 或 Dialogflow 实现聊天应用架构。

多个响应(异步)

多个响应模式可以包含同步和异步消息。此模式的特点是用户与聊天应用之间进行双向通信,聊天应用会生成任意数量的其他消息,如下图所示:

异步消息的架构。

在上图中,与 Chat 应用互动的用户的信息流如下所示:

  1. 用户向 Chat 应用发送同步消息,例如“监控流量”。
  2. Chat 应用会向用户发送同步消息以确认请求,例如“正在监控”。
  3. 稍后,Chat 应用会通过调用 REST API 向用户发送一个或多个异步消息,例如“新流量”。
  4. 用户向 Chat 应用发送额外的同步消息,例如“忽略交通”。
  5. Chat 应用会向用户发送同步消息以确认请求,例如“监控已关闭”。

对于此类对话模式,您可以使用 Web 服务、Pub/Sub、Apps Script 或 AppSheet 实现聊天应用架构。

查询或订阅事件(异步)

在异步事件驱动型模式中,Chat 应用通过查询 Chat API 或使用 Google Workspace Events API 创建对 Chat 聊天室或用户的订阅来接收事件。事件代表 Chat 资源发生了变化,例如发布了新消息或用户加入了聊天室。事件驱动型 Chat 应用会检查事件载荷,以获取有关更改的 Chat 资源的数据,然后做出相应响应。

Chat 应用可以接收多种类型的事件,包括与聊天室、成员资格、消息和回应相关的事件。当 Chat 应用通过查询 Chat API 或通过有效订阅接收事件时,Chat 应用可以选择生成任意数量的异步响应,并使用 Chat API 将其发回给 Chat。

您可以使用此类逻辑来更新外部系统(例如工单管理系统),或异步向 Chat 聊天室发送消息,例如在有新用户加入 Chat 聊天室时发送欢迎消息。

下图显示了一个事件驱动型对话模式示例:

Chat 事件订阅的架构

在上图中,Chat 与 Chat 应用之间的交互信息流如下所示:

  1. Chat 应用订阅 Google Chat 聊天室。
  2. Chat 应用订阅的聊天室发生更改。
  3. Chat 应用向 Pub/Sub 中的主题提交事件,它充当订阅的通知端点。该事件包含资源中所发生变化的相关数据。
  4. Chat 应用会处理包含事件的 Pub/Sub 消息,并在必要时采取措施。

对于此类对话模式,您可以使用 Pub/Sub、Web 服务或 Apps Script 实现聊天应用架构。

如需详细了解如何接收和响应事件,请参阅处理 Google Chat 事件中的事件

来自 Chat 应用的单向消息

借助“Chat 应用单向消息”模式,Chat 应用可以向 Chat 聊天室发送异步消息,但用户无法直接与 Chat 应用互动。这种模式不支持对话或互动,但对于报警报告等用途非常有用,如下图所示:

单向消息的架构。

在上图中,与 Chat 应用位于同一聊天室的用户的信息流如下所示:

  • Chat 应用通过调用 Chat API 或发布到网络钩子网址(例如“队列溢出提醒”)向用户发送异步消息。
  • Chat 应用可以根据需要发送其他异步消息。

对于此类对话模式,您可以使用 Web 服务、Webhook、Google Apps 脚本、AppSheet、命令行应用或脚本来实现 Chat 应用架构。

向 Chat 应用发送单向消息

借助“向 Chat 应用发送单向消息”模式,用户可以向 Chat 应用发送消息,而 Chat 应用无需响应,同时仍在处理请求。虽然这种架构在技术上是可行的,但会导致用户体验不佳,因此我们强烈建议不要采用这种模式。