Agent Assist バックエンド モジュールの基本

Agent Assist に、Agent Assist をシステムに統合するためのすぐに使用できるオプションであるバックエンド モジュールが追加されました。バックエンド モジュールには、Cloud Pub/Sub インターセプタ サービスと UI コネクタ サービスが含まれます。インターセプタは、Cloud Pub/Sub トピックを使用して Dialogflow からの機能関連のイベント通知を処理し、UI コネクタがエージェント デスクトップ UI にプッシュします。UI コネクタは、エージェント デスクトップからのフィードバック シグナルもサポートし、それらを Dialogflow に送信します。

バックエンド モジュールの構造

バックエンド モジュールのコンポーネント

バックエンド モジュールでは、次の Google プロダクトを使用して Agent Assist をシステムに統合する必要があります。

  • Cloud Pub/Sub
  • Cloud Pub/Sub インターセプタ
  • Memorystore for Redis
  • UI コネクタ

Cloud Pub/Sub

Cloud Pub/Sub トピックは、会話プロファイルで構成されます。Agent Assist は、候補、新しいメッセージ、新しい認識結果通知、会話のライフサイクル関連イベントをトピックに公開します。候補は HumanAgentAssistantEvent の形式で、新しいメッセージと会話のライフサイクル イベントは ConversationEvent の形式です。会話プロファイルごとに、これらの 4 種類のイベント メッセージが異なるトピックにパブリッシュされます。たとえば、会話のライフサイクル イベント メッセージは {"conversation":"projects/your-project-id/locations/global/conversations/your-conversation-id","type":"CONVERSATION_STARTED"} になることがあります。これは、会話の開始を示します。

Cloud Pub/Sub インターセプタ

Cloud Pub/Sub インターセプタは Cloud Run にデプロイされます。この Cloud Run サービスの各コンテナ インスタンス(サーバー)の機能は、次のものを含め、他のインスタンスと同一です。

  • HTTP リクエストを使用して、Cloud Pub/Sub トピックによって投稿されたイベント メッセージを処理します。
  • 受信したメッセージを Redis Pub/Sub チャネルにパブリッシュします。これは、会話名と UI コネクタ サーバー ID に固有のものです。チャンネルの形式は {connector_id}:{conversation_name} です。

Redis

Redis は Memorystore for Redis を使用して、次の処理を行います。

  • マッピング <conversation_name, connector_id> で、各会話の UI コネクタ サーバー ID 情報を記録します。
  • Cloud Pub/Sub インターセプタによって公開されたイベント通知を、Redis Pub/Sub メカニズムを使用して対応する UI コネクタ サーバーに転送します。

UI コネクタ

UI コネクタは、RESTful Dialogflow API プロキシと SocketIO WebSocket エンドポイントを公開して、Agent Assist から送信された Dialogflow メッセージをストリーミングするアプリケーションです。UI コネクタは Cloud Run にデプロイされます。WebSocket 接続はステートフルであるため、エージェント デスクトップは接続が終了するまで Cloud Run 上の同じコンテナに接続された状態を保持します。そのため、各 UI コネクタ サーバーは異なる会話を処理し、処理する会話用に個別の Redis Pub/Sub チャネル({connector_id}:*)をサブスクライブします。各 UI コネクタ サーバーのタスク:

  • エージェント デスクトップのカスタマイズされた認証方法をサポートします。
  • エージェント デスクトップのカスタマイズされたトークンを認証した後、一時的な JWT を生成します。Dialogflow API または WebSocket 接続にリクエストを送信すると、UI コネクタは元のエージェント トークンをチェックする代わりに、添付された JWT を検証します。
  • 指定された会話名に基づいて、認証されたエージェント デスクトップとの SocketIO WebSocket 接続を確立します。
  • 処理する会話のイベント メッセージを Redis Pub/Sub チャネルに登録します。
  • エージェント アシスト イベントを受信すると、デスクトップ UI にプッシュします。

Secret Manager

UI コネクタは、認証されたエージェント デスクトップの一時 JWT を生成するために JWT 秘密鍵を必要とします。このシークレット キーは Secret Manager に保存されます。

ディレクトリ

コード リポジトリのディレクトリ構造の概要は次のとおりです。リポジトリにアクセスできない場合は、Google の担当者に権限についてお問い合わせください。

.
├── cloud-pubsub-interceptor
│   ├── Dockerfile: Docker-image creation for Cloud Pub/Sub Interceptor deployment on Cloud Run
│   ├── main.py: A starter for flask app
│   ├── requirements.txt: Python packages for running Cloud Pub/Sub Interceptor service
│   └── unit_test.py: Unit test code for Cloud Pub/Sub Interceptor
├── cloudbuild.yaml: An example configuration file for Cloud Build
├── deploy.sh: An automated deployment script
├── images
├── readme.md
└── ui-connector
    ├── Dockerfile: Builds Docker image for UI Connector deployment on Cloud Run
    ├── auth.py: JWT validation and registration handling
    ├── auth_options.py: Support for authentication through different identity providers
    ├── config.py: Configuration for variables about authentication, logging, and CORS origins
    ├── dialogflow.py: With Dialogflow utilities for runtime-conversation handling
    ├── main.py: A starter for flask app
    ├── requirements.txt: Python packages for running UI Connector
    ├── templates
    │   └── index.html: A simple interactive demo
    └── unit_test.py: Unit test code for UI Connector

料金と割り当て

Agent Assist の統合には、次のサービスが含まれます。これらのサービスには、独自の料金と割り当て上限が適用されます。

次のステップ

この統合方法の概要については、バックエンド モジュールのインストール ガイドをご覧ください。