选择 Google Chat 应用架构

本页面介绍了一些常用的服务架构方法, 创建 Google Chat 应用。如果您想要对现有应用 集成到 Google Chat 中,则可以使用或调整现有的实现。 如果您要构建新的 Chat 应用,此页面会显示 帮助您选择架构 适合您的用例:

按特性和功能概览

下表重点介绍了 Chat 应用和推荐应用 () 服务架构样式。 在某些情况下,可以使用其他架构样式 但对于这类应用场景, 样式 ()。

特性和功能

Web 或 HTTP 服务

Pub/Sub

Webhook

Apps 脚本

AppSheet

Dialogflow

脚本

目标观众

你的球队

您的组织

公众

用户互动

使用自然语言处理

消息传递模式

发送和接收同步消息

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

仅发送异步消息

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

访问其他服务和系统

与其他 Google 服务相整合

在防火墙后面通信

查询或订阅 Chat 事件

编码和部署样式

无需代码即可开发

使用少量代码进行开发

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

简化的 DevOps

完成 DevOps 和 CI/CD 管理

服务架构样式

本部分介绍了一些用于构建 创建聊天应用。

Web 或 HTTP 服务

网络或 HTTP 服务是最常部署的架构,因为 可让开发者以最灵活的方式 聊天应用。建议将此架构用于以下 用例:

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

在此设计中,您将配置 Chat 以与 进行远程服务,如下图所示:

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

在上图中,用户与 HTTP Chat 应用具有以下信息流:

  1. 用户在 Chat 聊天室中向 Chat 应用。
  2. HTTP 请求被发送到网络服务器,该服务器可以是云或 包含 Chat 应用的本地系统 逻辑。
  3. Chat 应用逻辑可以选择 外部第三方服务(例如项目管理系统或 票务工具
  4. Web 服务器会将 HTTP 响应发回给 Chat 中的 Chat 应用服务。
  5. 系统将响应传送给用户。
  6. (可选)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 构建的聊天应用:

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

在上图中,用户与 Pub/Sub 进行交互 Chat 应用具有以下信息流:

  1. 用户在 Chat 中向 聊天应用(可通过私信或 Chat 聊天室,或 Chat 聊天室中发生的活动 且 Chat 应用已启用 订阅

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

  3. 一个应用服务器,可以是云系统或本地系统, 包含 Chat 应用逻辑,会订阅 Pub/Sub 主题以通过防火墙接收消息。

  4. (可选)Chat 应用可以调用 用于异步发布消息或执行其他任务的 操作。

要开始使用,请参阅 使用 Pub/Sub 作为 Chat 应用的端点

Webhook

您可以创建仅能发送消息的 Chat 扩展应用 通过向 Chat 发起通话,将对方添加到特定 Chat 聊天室 webhook 网址。建议为以下用例使用此架构:

  • Chat 应用已部署到您的团队。
  • Chat 应用从外部人员发送消息 单个 Chat 聊天室。

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

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

在上图中,Chat 应用具有以下特征 信息流:

  1. Chat 应用逻辑会从 外部第三方服务(例如项目管理系统或 票务工具
  2. Chat 应用逻辑托管在云端或 该系统本地系统,该系统可以使用 webhook 网址发送到 特定 Chat 聊天室。
  3. 用户可以在以下应用中接收来自 Chat 应用的消息: 但无法与对方聊天 Chat 应用。

此类型的 Chat 扩展应用无法与其他应用共享 Chat 聊天室或其他团队,并且无法发布到 Google Workspace Marketplace。建议对传入的网络钩子 用于报告提醒或状态的聊天应用,或用于报告某些类型的 Chat 应用原型设计。

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

Apps 脚本

您完全可以在 JavaScript。Google Apps 脚本是一个低代码开发平台, 聊天应用。Apps 脚本负责处理 授权流程和用于用户身份验证的 OAuth 2.0 令牌。您可以使用 使用 Apps 脚本构建公开 Chat 应用,但不是 由于每天 配额和限制

建议为以下用例使用此架构:

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

此架构对于还集成了 与其他 Google Workspace 和 Google 服务(例如 Google 表格、Google 幻灯片、Google 日历、Google 云端硬盘、 Google 地图和 YouTube,如 如下图所示:

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

在上图中,用户与 Apps 脚本互动 Chat 应用具有以下信息流:

  1. 用户向 Chat 应用发送消息,既可以使用 私信或 Chat 聊天室中。
  2. 在 Google Cloud 中实现的 Chat 应用逻辑 位于 Google Cloud 中的 Apps 脚本 消息内容。
  3. (可选)Chat 应用逻辑可以与 Google Workspace 服务,例如日历或 表格或其他 Google 服务(例如 Google 地图) 或 YouTube。
  4. Chat 应用逻辑会将响应发送回 Chat 中的 Chat 应用服务。
  5. 系统将响应传送给用户。

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

AppSheet

您无需代码即可创建网域共享 Chat 应用 (使用 AppSheet)。您可以通过以下方式简化开发流程: 使用自动配置模式和以下模板构建 Chat 应用操作。不过, Chat 应用中无法使用 AppSheet Web 应用功能

建议为以下用例使用此架构:

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

下图显示了 使用 AppSheet 构建的聊天应用:

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

在上图中,用户与 AppSheet 互动 Chat 应用具有以下信息流:

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

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

Dialogflow

您可以使用 Dialogflow、 用于自动对话和动态响应的自然语言平台。 建议为以下用例使用此架构:

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

下图显示了 使用 Dialogflow 构建的聊天应用:

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

在上图中,用户与 Dialogflow 交互 Chat 应用具有以下信息流:

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

要开始使用,请参阅 构建 Dialogflow Google 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 用于 Chat 扩展应用 Dialogflow ESDialogflow CX Chat 集成, 让您可以创建虚拟客服,以实现自动化对话和动态 响应。

主动向 Chat 发出请求

聊天应用还可以向以下对象发送消息或其他请求: 聊天,用户无需进行直接互动即可触发聊天 聊天。不过,这些聊天应用 由第三方应用触发,或使用命令行触发) 但用户无法与这些对象互动 直接在 Chat 中使用 Chat 扩展应用。

非交互式 Chat 应用使用 Chat API 发送 消息或其他类型的 Chat 请求。

对话模式

您应该考虑希望 Chat 应用 与用户互动以下部分介绍了一些对话模式, 您的 Chat 应用可能会实现的功能。

调用和响应(同步)

在同步调用和响应模式中, 聊天应用会回复用户发来的消息 进行一对一学习。用户向 Chat 应用发送的一条消息 Chat 应用会收到一条响应,如 如下图所示:

同步消息的架构。

在上图中,用户与一个 Chat 应用具有以下信息流:

  1. 当用户将同步消息发送到 Chat 应用,例如“我的下一个会议是什么?”。
  2. Chat 应用会向 用户,例如“Dr.Silva 在 2:30 开始。

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

多个响应(异步)

多响应模式可包括同步和异步 消息。这种模式的特点是 和 Chat 应用,而 生成任意数量的附加消息的聊天应用, 如下图所示:

异步消息的架构。

在上图中,用户与一个 Chat 应用具有以下信息流:

  1. 当用户将同步消息发送到 Chat 应用,例如“监控流量”。
  2. Chat 应用会向 用户确认请求,例如,“监控开启”。
  3. 之后,Chat 应用会将一个或多个异步 (例如,“新流量”),以通过 REST API 向用户发送消息。
  4. 用户向 Chat 应用,例如“忽略路况”。
  5. Chat 应用会向 用户确认请求,例如“监控已关闭”。

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

查询或订阅事件(异步)

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

聊天应用可以接收多种类型的事件,包括事件 聊天室、会员资格、消息和回应。当 Chat 应用通过查询 Chat API 或通过有效订阅, 然后,聊天应用可选择生成任意数量的 并使用 Chat API。

您可以使用这种类型的逻辑来更新外部系统,例如工单 管理系统,或向 Chat 聊天室发送消息 异步执行,例如,在新用户加入时发送欢迎辞 Chat 聊天室。

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

Chat 事件订阅架构

在上图中,Chat 与 Chat 应用具有以下信息流:

  1. Chat 应用订阅了 Google Chat 聊天室。
  2. Chat 应用订阅的聊天室 更改。
  3. Chat 应用向以下列表中的主题发送活动: Pub/Sub,充当订阅的通知端点。通过 事件包含有关资源中所做更改的数据。
  4. Chat 应用会处理 包含事件的 Pub/Sub 消息,并在必要时采取措施。

对于此类对话模式,您可以实现一个 使用 Pub/Sub(一项网络服务)的聊天应用架构 或 Apps 脚本。

要了解有关接收和回复活动的详情,请参阅 处理 Google Chat 活动中的活动

来自 Chat 应用的单向消息

来自 Chat 应用模式的单向消息 Chat 应用将异步消息发送到 Chat 聊天室,但不允许用户直接与 Chat 应用。此格式既不是对话式的,也不是对话式的 但可用于警报报告等用途 如下图所示:

单向消息的架构。

在上图中,用户与 Chat 应用具有以下信息流:

  • Chat 应用会发送异步消息 通过调用 Chat API 或发布到网络钩子来向用户发布消息 网址,例如“队列溢出警报”。
  • (可选)Chat 应用也可以发送 异步消息

对于此类对话模式,您可以实现一个 使用 Web 服务、网络钩子、 Apps Script、AppSheet、命令行应用 或脚本。

发送至 Chat 应用的单向消息

通过向 Chat 应用模式发送单向消息,用户可以 在不使用 Chat 应用在处理请求的同时正在响应。 虽然此架构在技术上是可行的,但这会导致用户体验不佳 我们强烈反对这种做法。