Principes de base des modules backend d'Agent Assist

Agent Assist propose désormais des modules backend, une option prête à l'emploi pour intégrer Agent Assist à votre système. Les modules backend incluent un service d'intercepteur Cloud Pub/Sub et un service de connecteur d'interface utilisateur. L'intercepteur traite les notifications d'événements liées aux fonctionnalités de Dialogflow à l'aide de sujets Cloud Pub/Sub, puis le connecteur d'interface utilisateur les envoie à l'interface utilisateur du poste de travail de l'agent. Les connecteurs d'interface utilisateur sont également compatibles avec les signaux de commentaires provenant du poste de travail de l'agent et les envoient à Dialogflow.

Structure des modules backend

Composants des modules backend

Les modules backend nécessitent les produits Google suivants pour intégrer Agent Assist à votre système :

  • Cloud Pub/Sub
  • Intercepteur Cloud Pub/Sub
  • Memorystore pour Redis
  • Connecteur d'interface utilisateur

Cloud Pub/Sub

Les sujets Cloud Pub/Sub sont configurés dans les profils de conversation. Agent Assist publie ensuite des suggestions, de nouveaux messages, de nouvelles notifications de résultat de reconnaissance et des événements liés au cycle de vie de la conversation dans le sujet. Les suggestions se présentent sous la forme HumanAgentAssistantEvent, et les nouveaux messages et événements du cycle de vie de la conversation sous la forme ConversationEvent. Pour chaque profil de conversation, ces quatre types de messages d'événement sont publiés dans des sujets différents. Par exemple, un message d'événement du cycle de vie de la conversation peut être {"conversation":"projects/your-project-id/locations/global/conversations/your-conversation-id","type":"CONVERSATION_STARTED"}, ce qui indique le début d'une conversation.

Intercepteur Cloud Pub/Sub

L'intercepteur Cloud Pub/Sub est déployé sur Cloud Run. La fonctionnalité de chaque instance de conteneur (serveur) de ce service Cloud Run est identique à celle de chaque autre instance, y compris :

  • Le traitement des messages d'événement publiés par les sujets Cloud Pub/Sub à l'aide de requêtes HTTP.
  • La publication des messages reçus dans les canaux Pub/Sub Redis, spécifiques au nom de la conversation et à l'ID du serveur du connecteur d'interface utilisateur. Le format du canal est {connector_id}:{conversation_name}.

Redis

Redis utilise Memorystore pour Redis pour effectuer les opérations suivantes :

  • Enregistrer les informations d'ID du serveur du connecteur d'interface utilisateur pour chaque conversation dans le mappage <conversation_name, connector_id>.
  • Transférer les notifications d'événements publiées par l'intercepteur Cloud Pub/Sub au serveur du connecteur d'interface utilisateur correspondant à l'aide du mécanisme Pub/Sub Redis.

Connecteur d'interface utilisateur

Le connecteur d'interface utilisateur est une application qui expose un proxy d'API Dialogflow RESTful et un point de terminaison WebSocket SocketIO pour diffuser les messages Dialogflow provenant d'Agent Assist. Le connecteur d'interface utilisateur est déployé sur Cloud Run. Les connexions WebSocket étant "avec état", le poste de travail de l'agent restera connecté au même conteneur sur Cloud Run pendant toute la durée de la connexion. Par conséquent, chaque serveur de connecteur d'interface utilisateur gère différentes conversations et s'abonne à des canaux Pub/Sub Redis distincts ({connector_id}:*) pour les conversations qu'il gère. Tâches pour chaque serveur de connecteur d'interface utilisateur :

  • Prend en charge une méthode d'authentification personnalisée pour les postes de travail des agents.
  • Génère un jeton JWT temporaire après avoir authentifié les jetons personnalisés des postes de travail des agents. Lorsqu'ils envoient des requêtes à l'API Dialogflow ou à la connexion WebSocket, les connecteurs d'interface utilisateur valident le jeton JWT joint au lieu de vérifier le jeton d'agent d'origine.
  • Établit une connexion WebSocket SocketIO avec le poste de travail de l'agent authentifié en fonction d'un nom de conversation donné.
  • Abonne les messages d'événement aux canaux Pub/Sub Redis pour les conversations qu'il gère.
  • Envoie les événements Agent Assist à l'interface utilisateur du poste de travail à mesure qu'ils sont reçus.

Secret Manager

Le connecteur d'interface utilisateur a besoin d'une clé secrète JWT pour générer des jetons JWT temporaires pour les postes de travail des agents authentifiés. Cette clé secrète est stockée dans le Secret Manager.

Annuaire

Voici une présentation de la structure des répertoires dans le dépôt de code. Contactez votre représentant Google pour obtenir les autorisations si vous ne parvenez pas à accéder au dépôt.

.
├── 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

Tarifs et quotas

Les intégrations Agent Assist incluent les services suivants, qui ont leurs propres tarifs et limites de quotas applicables.

Étape suivante

Pour en savoir plus sur la prise en main de cette méthode d'intégration, consultez le guide d'installation des modules backend.