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 中,然後將密鑰資源提供給 Dialogflow CX:

存取權杖

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

GitHub

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

  • 存放區權限 > 內容:讀取和寫入
  • 存放區權限 > 中繼資料:唯讀 (選取「內容」權限後,系統應會自動選取此選項)

GitLab

您需要取得 Gitlab 個人存取權杖

Bitbucket

您需要取得 Bitbucket 存取權杖

Secret Manager

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

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

Dialogflow CX 設定

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

  1. 授予 Dialogflow 服務代理程式權限,存取 Secret Manager 中的存取權杖密鑰。在代理程式專案中,將 Secret Manager Secret Accessor 角色授予 gcp-sa-dialogflow.iam.gserviceaccount.com 服務帳戶。請參閱「授予 Secret Manager 密鑰存取權」。
  2. 開啟 Git 整合設定:
    • Conversational Agents 控制台
      1. 按一下右上角的設定圖示,開啟設定畫面。
      2. 向下捲動並按一下「新增 Git 整合」
    • 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 提取代理程式。

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

具有 Dialogflow 讀取者角色的使用者可以推送至 Git 存放區。為避免不必要的推送,請使用唯讀個人存取權杖設定這些服務專員。

「還原」按鈕用於從 Git 分支版本 (在「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 代理程式。