Git のエクスポート/復元

会話エージェント(Dialogflow CX)は、複数の Git プロバイダ(GitHub、Gitlab、Bitbucket など)と統合されています。この統合により、Git プロバイダに push するために JSON を使用してエージェントをエクスポートすることや、エージェントを復元するために Git プロバイダから pull することが容易になりました。Git プロバイダに push される JSON エクスポート形式は、エクスポートされたエージェントの展開された zip ファイルの内容です。

この機能を使用すると、次のような Git プロバイダのソース コントロール機能を利用できます。

  • コードレビュー ツールを使用したエージェントの変更レビュー
  • 差分ツールを使用してエージェントの差分を調べる
  • 結合

制限事項

次の制限が適用されます。

  • [古い統合バージョンのみ] GitHub API には、1 回の commit で更新できるファイルの数に制限があります。ファイル数が 500 を超えると、会話エージェント(Dialogflow CX)から GitHub に push できなくなる場合があります。その場合は、エージェントを zip としてエクスポートし、マシンの Git CLI を使用してエージェント ファイルを GitHub に push できます。この制限については、今後の会話エージェント(Dialogflow CX)リリースで対処する予定です。
  • GitHub のプライベート アクセス セルフホスト リポジトリは、会話エージェント(Dialogflow CX)がこれらのリポジトリにアクセスできないため、サポートされていません。
  • Git リポジトリには、エージェント エクスポートによってエクスポートされたエージェント ファイル以外のファイルを含めることはできません。リポジトリ内の他のすべてのファイルは、push のたびに削除されます。

構成

この機能を構成するには、Git プロバイダからアクセス トークンを取得し、Secret Manager に保存して、会話エージェント(Dialogflow CX)にシークレット リソースを提供する必要があります。

アクセス トークン

Git プロバイダからアクセス トークンを取得するには:

GitHub

GitHub 個人用トークンを取得する必要があります。きめ細かい個人用アクセス トークンを使用する場合は、次の権限のアクセス権が必要です。

  • [リポジトリ権限] > [コンテンツ]: 読み取りと書き込み
  • [リポジトリ権限] > [メタデータ]: 読み取り専用(コンテンツ権限の選択後に自動選択される)

GitLab

GitLab 個人アクセス トークンを取得する必要があります。

Bitbucket

Bitbucket アクセス トークンを取得する必要があります。

Secret Manager

アクセス トークンを取得したので、トークンのシークレットを作成する必要があります。

  1. Secret Manager API を有効にします
  2. シークレットを作成します

会話エージェント(Dialogflow CX)の構成

会話エージェント(Dialogflow CX)用にこの統合を構成するには:

  1. Secret Manager のアクセス トークン シークレットにアクセスする権限を Dialogflow サービス エージェントに付与します。エージェント プロジェクトの gcp-sa-dialogflow.iam.gserviceaccount.com サービス アカウントに Secret Manager Secret Accessor ロールを付与します。Secret Manager シークレットへのアクセス権を付与するをご覧ください。
  2. Git 統合の構成を開きます。
    • 会話型エージェント コンソール
      1. 右上にある設定アイコンをクリックして、設定画面を開きます。
      2. 下にスクロールして [Add Git integration] をクリックします。
    • Dialogflow CX コンソール
      1. [管理] タブをクリックします。
      2. [Testing & Deployment] セクションで [Git] をクリックします。
      3. [新規作成] をクリックします。
  3. 構成の詳細を入力します。
    1. 次のように入力します。
      • GitHub 接続の表示名。
      • Git リポジトリの URL(例: https://github.com/<path-to-repo>.git)。
      • エージェントがやり取りする Git ブランチを追加します。ブランチ名の横にあるスターアイコンをクリックすると、ブランチをデフォルトのブランチとして指定できます。
      • アクセス トークン シークレット。これは、特定のバージョンの場合は projects/*/secrets/*/versions/*、最新バージョンの場合は projects/*/secrets/*/versions/latest の形式で作成したシークレット バージョンです。
    2. [接続] をクリックします。
    3. Git サービスを使用できるようになるまで 1 分ほどかかることがあります。コンソールに通知が表示されます。

プッシュと復元

構成が完了すると、Git との間でエージェントを push または pull できます。

[Push] ボタンは、エージェントをエクスポートして、[Git ブランチ] プルダウンで選択した Git ブランチに commit するために使用されます。この commit は特定変更ではなくエージェント全体で構成され、リポジトリ内の既存のファイルはすべて削除されます。

Dialogflow 閲覧者ロールを持つユーザーは、Git リポジトリに push できます。不要な push を防ぐには、これらのエージェントに読み取り専用の個人アクセス トークンを構成します。

[復元] ボタンは、[Git ブランチ] プルダウンで選択した Git ブランチからエージェント データを pull し、このデータから会話エージェント(Dialogflow CX)エージェントを復元するために使用します。これによって、エージェントの復元と同じ方法でエージェントが上書きされます。

使用例

次の例は、複数のユーザーがこの機能を使用して、本番環境のエージェントにさまざまなエージェントの変更を提案する方法を示しています。

エージェントが次の Git ブランチを使用していることを考慮します。

  • Prod: 本番環境エージェントのブランチ
  • Dev1: エージェント開発用のブランチ
  • Dev2: エージェント開発用の別のブランチ

ユーザー 1 はエージェントの変更を提案し、次の手順を実行します。

  1. 本番環境用エージェントを新しいエージェントにエクスポートします。
  2. このエージェントのコピーに必要な変更を加えます。
  3. 変更をテストします。
  4. 変更したエージェントを Dev1 ブランチに push します。
  5. Prod ブランチへのマージ リクエストを作成します。

ユーザー 2 はエージェントの変更を提案し、次の手順を実行します。

  1. 本番環境用エージェントを新しいエージェントにエクスポートします。
  2. このエージェントのコピーに必要な変更を加えます。
  3. 変更をテストします。
  4. 変更したエージェントを Dev2 ブランチに push します。
  5. Prod ブランチへのマージ リクエストを作成します。

ユーザー 3 は両方のユーザーからのマージ リクエストを確認し、次の手順を行います。

  1. 競合を解決します。
  2. 承認された変更を commit します。
  3. 本番環境の Git ブランチを本番環境の会話エージェント(Dialogflow CX)エージェントに復元します。