Git 导出/恢复

对话式 AI 助理 (Dialogflow CX) 可与多个 Git 提供程序(GitHub、Gitlab、Bitbucket 等)集成。通过此集成,您可以轻松将代理导出为 JSON 以推送到 Git 提供程序,也可以从 Git 提供程序拉取以恢复代理。推送到 Git 提供程序的 JSON 导出格式是已导出代理的展开式 ZIP 文件内容。

借助此功能,您可以利用 Git 提供程序源代码控制功能,例如:

  • 使用代码审核工具审核代理更改
  • 使用 diff 工具检查代理差异
  • 合并

限制

存在以下限制:

  • [仅限旧版集成]GitHub API 对单次提交中可更新的文件数量有限制。如果文件数量超过 500 个,您可能无法从对话式代理 (Dialogflow CX) 推送到 GitHub。在这种情况下,您可以将代理导出为 ZIP 文件,然后在机器上使用 Git CLI 将代理文件推送到 GitHub。我们会在后续的 Conversational Agents (Dialogflow CX) 版本中解决此限制。
  • 不支持 GitHub 私有访问自托管代码库,因为对话式 AI 助理 (Dialogflow CX) 无法访问这些代码库。
  • Git 代码库中除了代理导出功能导出的代理文件之外,不得包含任何其他文件。每次推送时,代码库中的所有其他文件都会被移除。

配置

如需配置此功能,您需要从 Git 提供商获取访问令牌,将其存储在 Secret Manager 中,并向对话式 AI 助理 (Dialogflow CX) 提供 Secret 资源:

访问令牌

如需从 Git 提供商获取访问令牌,请执行以下操作:

GitHub

您需要获取 GitHub 个人令牌。如果您使用精细的个人访问令牌,则需要拥有以下权限

  • 代码库权限 > 内容:读取和写入
  • 代码库权限 > 元数据:只读(选择“内容”权限后应自动选择)

GitLab

您需要获取 Gitlab 个人访问令牌

Bitbucket

您需要获取 Bitbucket 访问令牌

Secret Manager

现在,您已拥有访问令牌,接下来需要为令牌创建 Secret:

  1. 启用 Secret Manager API
  2. 创建 Secret

对话代理 (Dialogflow CX) 配置

如需为 Conversational Agents (Dialogflow CX) 配置此集成,请执行以下操作:

  1. 向 Dialogflow 服务代理授予访问 Secret Manager 的权限。向代理项目中的 gcp-sa-dialogflow.iam.gserviceaccount.com 服务账号提供 Secret Manager Secret Accessor 角色。请参阅授予 IAM 角色
  2. 打开 Git 集成配置:
    • 对话代理控制台
      1. 点击右上角附近的设置图标,打开设置界面。
      2. 向下滚动,然后点击 Add Git integration(添加 Git 集成)。
    • Dialogflow CX 控制台
      1. 点击管理标签页。
      2. 点击测试和部署部分中的 Git
      3. 点击新建 (Create new)。
  3. 提供配置详细信息:
    1. 输入以下内容:
      • GitHub 连接的显示名称。
      • Git 代码库网址(例如:https://github.com/<path-to-repo>.git)。
      • 添加代理将与之互动的 Git 分支。 您可以点击分支旁边的星形图标,将其指定为默认分支。
      • 访问令牌 Secret,即您为特定版本创建的 Secret 版本(采用 projects/*/secrets/*/versions/* 格式),或为最新版本创建的 Secret 版本(采用 projects/*/secrets/*/versions/latest 格式)。
    2. 点击连接
    3. Git 服务可能需要一分钟才能准备就绪。 控制台会显示通知。

推送和恢复

配置完成后,您可以将代理推送/拉取到/从 Git。

Push 按钮用于导出代理并向 Git 分支下拉菜单中选择的 Git 分支提交。此提交将包含整个代理,而不是特定更改,并且会删除代码库中的所有现有文件。

具有 Dialogflow Reader 角色的用户可以推送到 Git 代码库。为防止意外推送,请使用只读个人访问令牌配置这些代理。

恢复按钮用于从 Git 分支下拉菜单中选择的 Git 分支中拉取代理数据,并根据这些数据恢复 Conversational Agents (Dialogflow CX) 代理。这将以与任何代理恢复相同的方式覆盖您的代理。

用例示例

以下示例展示了多位用户如何使用此功能向生产代理提出不同的代理更改建议。

假设您的代理使用以下 Git 分支:

  • Prod:正式版代理的分支
  • Dev1:用于代理开发的分支
  • Dev2:用于代理开发的另一个分支

用户 1 想要提议代理更改,并执行以下步骤:

  1. 将生产代理导出到新的代理。
  2. 对此客服人员文案进行所需的更改。
  3. 测试所做更改。
  4. 将经过更改的代理推送到 Dev1 分支。
  5. 创建一个合并请求,将代码合并到生产分支。

用户 2 想要提议更改客服人员,并执行以下步骤:

  1. 将生产代理导出到新的代理。
  2. 对此客服人员文案进行所需的更改。
  3. 测试所做更改。
  4. 将经过更改的代理推送到 Dev2 分支。
  5. 创建一个合并请求,将代码合并到生产分支。

用户 3 会审核这两位用户的合并请求,并执行以下步骤:

  1. 解决冲突。
  2. 提交已获批准的更改。
  3. 将正式版 Git 分支恢复为正式版 Conversational Agents (Dialogflow CX) 代理。