Git 匯出/還原

Dialogflow CX 可與多個 Git 供應商整合 (GitHub、Gitlab、Bitbucket 等)。這項整合功能可讓您輕鬆將代理匯出為 JSON,以便推送至 Git 供應商,並從 Git 供應商提取代理還原。推送至 Git 供應商的 JSON 匯出格式,是匯出代理的展開 ZIP 檔案內容。

這項功能可讓您運用 Git 供應商的原始碼控制功能,例如:

  • 使用程式碼審查工具審查代理變更
  • 使用差異工具檢查代理差異
  • 合併

限制

限制如下:

  • [僅限舊版整合] GitHub API 限制單次修訂可更新的檔案數量。如果檔案數量超過 500 個,您可能無法從 Dialogflow CX 推送至 GitHub。在這種情況下,您可以將代理匯出為 ZIP 檔案,並在機器上使用 Git CLI 將代理檔案推送至 GitHub。我們會在日後推出的 Dialogflow CX 版本中解決這項限制。
  • Dialogflow CX 無法存取 GitHub 私人存取權自行託管存放區,因此不支援這類存放區。
  • Git 存放區只能包含透過代理匯出功能匯出的代理檔案。每次推送時,存放區中的其他檔案都會遭到移除。

設定

如要設定這項功能,您必須從 Git 供應商取得存取權杖,並儲存在 Secret Manager 中,然後將 Secret 資源提供給 Dialogflow CX:

存取權杖

如要從 Git 供應商取得存取權杖,請按照下列步驟操作:

GitHub

您需要取得 GitHub 個人權杖。如果使用精細的個人存取權杖,則需要下列權限存取權:

  • Repository Permissions > Contents:讀取和寫入
  • Repository Permissions > Metadata:唯讀 (選取「Contents」權限後,系統應會自動選取此選項)

GitLab

您必須取得 GitLab 個人存取權杖。

Bitbucket

您需要取得 Bitbucket 存取權杖。

Secret Manager

取得存取權杖後,請為權杖建立密鑰:

  1. 啟用 Secret Manager API。
  2. 建立密鑰。

Dialogflow CX 設定

如要為 Dialogflow CX 設定這項整合功能,請按照下列步驟操作:

  1. 授予 Dialogflow 服務代理權限,允許存取 Secret Manager 中的存取權杖 Secret。將 Secret Manager Secret Accessor 角色授予代理專案中的 gcp-sa-dialogflow. 服務帳戶。請參閱「授予 Secret Manager 密鑰存取權」。
  2. 開啟 Git 整合設定:
    • Conversational Agents 控制台
      1. 按一下右上角附近的設定圖示,開啟設定畫面。
      2. 向下捲動,然後點選「Add Git integration」。
    • Dialogflow CX 控制台
      1. 按一下「管理」分頁標籤。
      2. 在「測試與部署」部分,點選「Git」。
      3. 按一下 [Create new] (建立新意圖)。
  3. 提供設定詳細資料:
    1. 輸入下列資訊:
      • GitHub 連線的顯示名稱。
      • Git 存放區網址 (例如:https://github.com/<path-to-repo>.git)。
      • 新增代理會互動的 Git 分支。按一下分支版本旁的星號圖示,即可將該分支版本設為預設分支版本。
      • 存取權杖密鑰,也就是您建立的密鑰版本,格式為 projects/*/secrets/*/versions/* (特定版本) 或 projects/*/secrets/*/versions/latest (最新版本)。
    2. 點選「連線」。
    3. Git 服務可能需要一分鐘才會準備就緒。控制台會顯示通知。

推送及還原

設定完成後,即可將代理推送至 Git,或從 Git 提取代理。

「Push」(推送) 按鈕可用於匯出代理,並將修訂版本推送至 Git 分支版本下拉式選單中選取的分支版本。這項修訂版本會包含整個代理程式,而非特定變更,且會刪除存放區中的所有現有檔案。

具備 Dialogflow 讀取者角色的使用者可以推送至 Git 存放區。為避免不必要的推送,請使用唯讀個人存取權杖設定這些代理程式。

「Restore」(還原) 按鈕可從「Git branch」(Git 分支) 下拉式選單中選取的分支提取代理資料,並從這項資料還原 Dialogflow CX 代理。這項操作會覆寫代理,與任何代理還原行為相同。

用途範例

以下範例說明多人如何使用這項功能,對正式版代理提出不同的代理變更。

假設代理使用下列 Git 分支:

  • Prod:正式版代理的分支版本
  • Dev1:代理開發分支版本
  • Dev2:另一個用於代理開發的分支版本

使用者 1 想提議變更代理,並採取下列步驟:

  1. 將正式版代理匯出至新代理。
  2. 視需要變更這個代理副本。
  3. 測試變更。
  4. 將修改後的代理推送至 Dev1 分支版本。
  5. 建立合併要求,將變更合併至 Prod 分支版本。

使用者 2 想提議變更代理,並採取下列步驟:

  1. 將正式版代理匯出至新代理。
  2. 視需要變更這個代理副本。
  3. 測試變更。
  4. 將修改後的代理推送至 Dev2 分支版本。
  5. 建立合併要求,將變更合併至 Prod 分支版本。

使用者 3 審查兩位使用者的合併要求,並採取下列步驟:

  1. 解決衝突。
  2. 提交已核准的變更。
  3. 將正式版 Git 分支版本還原至正式版 Dialogflow CX 代理。