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

バックエンド モジュールのコンポーネント
バックエンド モジュールでは、Agent Assist をシステムに統合するために、次の Google プロダクトが必要です。
- 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 トピックによって投稿されたイベント メッセージを処理する。
- 受信したメッセージを、会話名と UI コネクタ サーバー ID に固有の Redis Pub/Sub チャネルにパブリッシュする。チャネルの形式は
{connector_id}:{conversation_name}です。
Redis
Redis は Memorystore for Redis を使用して次の処理を行います。
- マッピング
<conversation_name, connector_id>で、会話ごとに UI コネクタ サーバー ID 情報を記録する。 - Redis Pub/Sub メカニズムを使用して、Cloud 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 チャネルにイベント メッセージをサブスクライブします。
- Agent Assist イベントを受信すると、デスクトップ 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 統合には、独自の料金と割り当て上限が適用される次のサービスが含まれます。
次のステップ
この統合方法を始める方法については、 バックエンド モジュールのインストール ガイド をご覧ください。