Back-End-Module in Ihr System einbinden

Backend-Module sind eine sofort einsatzbereite Lösung, die eine effektive Backend-Infrastruktur für die Verarbeitung großer Mengen an funktionsbezogenen Nachrichten und die Interaktion mit der Desktop-Benutzeroberfläche von Kundenservicemitarbeitern bietet. In dieser Anleitung wird beschrieben, wie Sie Backend-Module in Ihr Kundenservicesystem einbinden.

Weitere Informationen zu den Konzepten und der Struktur von Hintergrundmodulen finden Sie in der Dokumentation Grundlagen von Back-End-Modulen.

Vorbereitung

Umgebungsvariablen einrichten

Um die Befehle für die Bereitstellung zu vereinfachen, empfehlen wir, die folgenden nützlichen Umgebungsvariablen in Ihrer Shell festzulegen. Sie können die Variablen mit dem folgenden Beispielbefehl festlegen:

$ export GCP_PROJECT_ID='enter_project_id_here' \
&& export SERVICE_REGION='us-central1'

Legen Sie die folgenden Umgebungsvariablen fest:

  • GCP_PROJECT_ID: Die Projekt-ID Ihres Cloud-Plattform-Projekts, in dem die zugehörigen Ressourcen gehostet werden. Beispiel: my-project.
  • SERVICE_REGION: Der Standort oder die Region Ihrer Dienste und zugehörigen Cloud Platform-Ressourcen. Beispiel: us-central1.

Administratorkonto einrichten

Wir empfehlen, separate Google Cloud -Konten für die Dienstverwaltung und die Laufzeitidentität zu verwenden. Die Dienstverwaltung wird hauptsächlich von Nutzern mit Google-Konten durchgeführt. Die Laufzeitidentität gewährt Cloud Run-Diensten Berechtigungen mithilfe von Dienstkonten, um den Zugriff auf die erforderlichen Ressourcen zu ermöglichen.

Administratorkonto vorbereiten

Wenn Sie ein Konto verwenden möchten, das bereits die Berechtigungen „Bearbeiter“ oder „Inhaber“ für Ihr Projekt hat, können Sie mit dem nächsten Abschnitt fortfahren.

Erstellen Sie zum Verwalten der Backend-Infrastruktur ein Administratorkonto und weisen Sie ihm die folgenden IAM-Rollen zu. Die Berechtigungen sind in den einfachen Rollen „Bearbeiter“ (roles/editor) und „Inhaber“ (roles/owner) enthalten.

  • roles/secretmanager.admin (Secret Manager-Administrator): Verwalten von Secrets, die im Secret Manager für die JWT-Generierung und ‑Verifizierung gespeichert sind.
  • roles/run.admin (Cloud Run Admin): Cloud Run-Dienste bereitstellen und verwalten.
  • roles/iam.serviceAccountUser (Dienstkontonutzer): Cloud Run-Laufzeitdienstkonten iam.serviceAccounts.actAs-Berechtigungen erteilen.
  • roles/cloudbuild.builds.editor (Cloud Build-Bearbeiter): Docker-Images für die Integrationsdienste mit Cloud Build erstellen.
  • Artifact Registry-Administrator: Erstellte Docker-Images für die Integrationsdienste speichern und verwalten.
  • roles/pubsub.editor (Cloud Pub/Sub-Editor): Hier können Sie Cloud Pub/Sub-Themen und ‑Abos erstellen und verwalten.
  • roles/redis.admin (Redis-Administrator): Ressourcen von Memorystore for Redis erstellen und verwalten.

Wenn Sie einem Nutzerkonto IAM-Rollen zuweisen möchten, verwenden Sie den Google Cloud CLI-Befehl add-iam-policy-binding. Hier ein Beispiel für einen Befehl:

$ gcloud projects add-iam-policy-binding $GCP_PROJECT_ID \
 --member='user:test-user@gmail.com' \
 --role='roles/pubsub.editor'

Administratorkonto in gcloud festlegen

Ersetzen Sie im folgenden Beispiel $ADMIN_ACCOUNT durch das Administratorkonto, das Sie verwenden möchten (z. B. myaccount@gmail.com):

$ gcloud config set account $ADMIN_ACCOUNT

Dienstkonten einrichten

Cloud Run-Dienste oder -Jobs werden standardmäßig als Compute Engine-Standarddienstkonto ausgeführt. Wir empfehlen, jedem Cloud Run-Dienst eine eigene Identität zuzuweisen. Dazu weisen Sie ihm ein nutzerverwaltetes Dienstkonto mit den minimal erforderlichen Berechtigungen zu. Wenn Sie das Standarddienstkonto beibehalten möchten, können Sie mit Umgebungsvariablen festlegen fortfahren.

Zwei Dienstkonten für jede Cloud Run-Laufzeit erstellen

  1. Ersetzen Sie zum Erstellen der Dienstkonten den Wert von $CONNECTOR_SERVICE_ACCOUNT_ID und $INTERCEPTOR_SERVICE_ACCOUNT_ID und führen Sie die folgenden Befehle aus:

    $ export CONNECTOR_SERVICE_ACCOUNT_ID='aa-ui-connector' && gcloud iam service-accounts create $CONNECTOR_SERVICE_ACCOUNT_ID 
    --description='Agent Assist integration - UI connector service account'
    --display-name='Agent Assist integration - UI connector'

    $ export INTERCEPTOR_SERVICE_ACCOUNT_ID='aa-pubsub-interceptor' && gcloud iam service-accounts create $INTERCEPTOR_SERVICE_ACCOUNT_ID
    --description='Agent Assist integration - Pubsub interceptor service account'
    --display-name='Agent Assist integration - Pubsub interceptor'

  2. Mit dem folgenden Beispielbefehl können Sie den Dienstkonten des UI-Connectors und des Cloud Pub/Sub-Connectors die folgenden Rollen zuweisen:

    $ gcloud projects add-iam-policy-binding $GCP_PROJECT_ID 
    --member='serviceAccount:$CONNECTOR_SERVICE_ACCOUNT_ID@$GCP_PROJECT_ID.iam.gserviceaccount.com'
    --role='roles/pubsub.editor'

Weisen Sie dem Dienstkonto des UI-Connectors die folgenden IAM-Rollen zu:

  • roles/redis.editor
  • roles/vpcaccess.user
  • roles/compute.viewer
  • roles/secretmanager.secretAccessor
  • roles/dialogflow.agentAssistClient

Weisen Sie dem Cloud Pub/Sub-Connector-Dienstkonto die folgenden Rollen zu:

  • roles/redis.editor
  • roles/vpcaccess.user
  • roles/compute.viewer

Umgebungsvariablen festlegen

Legen Sie die Werte der folgenden Umgebungsvariablen auf die von Ihnen gerade erstellten Dienstkonten oder das Standarddienstkonto der Compute Engine in Ihrem Projekt fest.

  1. CONNECTOR_SERVICE_ACCOUNT: Das Dienstkonto für die Laufzeit des UI-Connectors. Beispiel: aa-ui-connector@my-project-id.iam.gserviceaccount.com.
  2. INTERCEPTOR_SERVICE_ACCOUNT: Das Dienstkonto für die Cloud Pub/Sub-Interceptor-Laufzeit. Beispiel: aa-pubsub-interceptor@my-project-id.iam.gserviceaccount.com.

Authentifizierungsmethode für Nutzer anpassen

Das Code-Repository unterstützt sowohl Backend-Nutzer als auch Nutzer des Frontend-Moduls für Genesys Cloud und Twilio.

  1. Öffnen Sie im Code-Repository die Datei ui_connector/auth.py.
  2. Geben Sie den unterstützten Identitätsanbieter an, indem Sie die Umgebungsvariable AUTH_OPTION festlegen, oder implementieren Sie Ihre Authentifizierungsmethode mit auth.check_auth.

    Standardmäßig ist AUTH_OPTION leer und keine Nutzer dürfen JWTs beim UI Connector-Dienst registrieren. Unterstützte Werte:

    • „Salesforce“: Das Authentifizierungstoken wird mit Salesforce OpenID Connect überprüft. Erforderliche Umgebungsvariable: SALESFORCE_ORGANIZATION_ID.
    • GenesysCloud: Authentifiziere das Authentifizierungstoken mit der Genesys SDK UsersAPI.
    • Twilio: Authentifizierungstoken für Twilio bestätigen. Erforderliche Umgebungsvariable: TWILIO_FLEX_ENVIRONMENT.

    Beispiel:

    $ export AUTH_OPTION='Salesforce'

    Für jeden Tokentyp kann es unterschiedliche Validierungsmethoden geben. Sie legen fest, wie das Token validiert wird. Ohne Änderungen gibt auth.check_auth für jede Anfrage false zurück.

JWT-Geheimschlüssel generieren und speichern

Damit der UI-Connector-Dienst sichere Authentifizierungstokens an den Client zurücksenden kann, muss er sie mit einem JWT-Geheimschlüssel verschlüsseln. Der Wert des Schlüssels kann ein beliebiger String sein, sollte aber eindeutig und schwer zu erraten sein.

Dieser geheime Schlüssel wird in Secret Manager gespeichert.

Umgebungsvariable festlegen

  • JWT_SECRET_NAME: Der Name des geheimen Schlüssels im Secret Manager. Es kann ein beliebiger Name sein. Empfohlener Wert: aa-integration-jwt-secret.

Schlüssel generieren

Wir empfehlen, einen zufälligen Hash als geheimen JWT-Schlüssel zu generieren, damit er von Angreifern nicht erraten werden kann. Dazu können Sie Python Secrets verwenden, um sichere Zufallszahlen zu generieren.

Schlüssel in Secret Manager speichern

Ersetzen Sie im folgenden Beispielbefehl my_key durch den Secret-Schlüssel, den Sie verwenden möchten.

printf "my_key" | gcloud secrets create $JWT_SECRET_NAME --data-file=- --replication-policy=user-managed --locations=$SERVICE_REGION

Memorystore for Redis einrichten

Für die Einrichtung von Redis benötigen Sie die folgenden Umgebungsvariablen:

  • VPC_CONNECTOR_NAME: Der Name des Connectors für serverlosen VPC-Zugriff, mit dem Cloud Run-Dienste mit Memorystore for Redis verbunden werden. Empfohlener Wert: aa-integration-vpc.
  • VPC_NETWORK: Das VPC-Netzwerk, an das der Connector für Serverloser VPC-Zugriff angehängt wird. Der Wert sollte default sein, wenn Sie kein VPC für Ihr Google Cloud -Projekt einrichten.
  • REDIS_IP_RANGE: Ein nicht reserviertes internes IP-Netzwerk für Ihren Connector für Serverloser VPC-Zugriff. Es ist nicht zugewiesener Speicherplatz in einem Umfang von /28 erforderlich. Empfohlener Wert: 10.8.0.0/28 (dieser Wert sollte für die meisten neuen Projekte funktionieren).
  • REDIS_INSTANCE_ID: Ein Name für Ihre Redis-Instanz. Empfohlener Wert: aa-integration-redis.

Redis-Instanz in der Region Ihrer Cloud Run-Dienste erstellen

Führen Sie dazu diesen Befehl aus:

$ gcloud redis instances create $REDIS_INSTANCE_ID --size=5 --region=$SERVICE_REGION

Erstellen eines Connectors für Serverless VPC Access

Die Serverless VPC Access API muss für das Projekt aktiviert sein:

$ gcloud services enable vpcaccess.googleapis.com

So erstellen Sie einen Connector für Serverloser VPC-Zugriff mit einem benutzerdefinierten IP-Bereich:

$ gcloud compute networks vpc-access connectors create $VPC_CONNECTOR_NAME \
  --network $VPC_NETWORK \
  --region $SERVICE_REGION \
  --range $REDIS_IP_RANGE

Redis-Host und Redis-Port als Umgebungsvariablen speichern

  • Legen Sie die IP-Adresse Ihrer Redis-Instanz als Umgebungsvariable REDIS_HOST fest.
  • Legen Sie die Portnummer Ihrer Redis-Instanz in der Umgebungsvariablen REDIS_PORT fest.

UI-Connector-Dienst bereitstellen

Für den UI-Connector-Dienst benötigen Sie die folgenden Umgebungsvariablen:

  • CONNECTOR_SERVICE_NAME: Der Name des Cloud Run-Dienstes Ihres UI-Connectors. Empfohlener Wert: ui-connector.
  • CONNECTOR_IMAGE_NAME: Der Image-Name Ihres UI-Connectors. Sie kann mit CONNECTOR_SERVICE_NAME identisch sein. Empfohlener Wert: ui-connector.

Docker-Image erstellen

Führen Sie im Ordner /ui-connector den folgenden Befehl aus:

$ gcloud builds submit --tag gcr.io/$GCP_PROJECT_ID/$CONNECTOR_IMAGE_NAME

UI-Connector in Cloud Run bereitstellen

Führen Sie im Ordner /ui-connector den folgenden Befehl aus. Notieren Sie sich die Dienst-URL für den bereitgestellten UI-Connector, die von Kunden (Agenten-Computern) verwendet wird.

$ gcloud run deploy $CONNECTOR_SERVICE_NAME \
--image gcr.io/$GCP_PROJECT_ID/$CONNECTOR_IMAGE_NAME \
--platform managed \
--service-account=$CONNECTOR_SERVICE_ACCOUNT \
--allow-unauthenticated \
--timeout 3600 \
--region $SERVICE_REGION \
--vpc-connector $VPC_CONNECTOR_NAME \
--set-env-vars REDISHOST=$REDIS_HOST,REDISPORT=$REDIS_PORT,GCP_PROJECT_ID=$GCP_PROJECT_ID \
--update-secrets=/secret/jwt_secret_key=${JWT_SECRET_NAME}:latest

Cloud Pub/Sub-Abfangdienst bereitstellen

Für den Pub/Sub-Abfangdienst benötigen Sie die folgenden Umgebungsvariablen:

  • INTERCEPTOR_SERVICE_NAME: Der Name des Cloud Run-Dienstes Ihres Cloud Pub/Sub-Abfangers. Empfohlener Wert: cloud-pubsub-interceptor.
  • INTERCEPTOR_IMAGE_NAME: Der Image-Name Ihres Cloud Pub/Sub-Abfangdiensts. Sie kann mit INTERCEPTOR_SERVICE_NAME identisch sein. Empfohlener Wert: cloud-pubsub-interceptor.

Docker-Image erstellen

Führen Sie im Ordner /cloud-pubsub-interceptor den folgenden Befehl aus:

$ gcloud builds submit --tag gcr.io/$GCP_PROJECT_ID/$INTERCEPTOR_IMAGE_NAME

Pub/Sub-Abfangmechanismus in Cloud Run bereitstellen

Führen Sie im Ordner /cloud-pubsub-interceptor den folgenden Befehl aus:

$ gcloud run deploy $INTERCEPTOR_SERVICE_NAME \
--image gcr.io/$GCP_PROJECT_ID/$INTERCEPTOR_IMAGE_NAME \
--platform managed \
--service-account=$INTERCEPTOR_SERVICE_ACCOUNT_NAME \
--region $SERVICE_REGION \
--vpc-connector $VPC_CONNECTOR_NAME \
--ingress=internal \
# You can also add LOGGING_FILE here to specify the logging file path on Cloud Run. 
--set-env-vars REDISHOST=$REDIS_HOST,REDISPORT=$REDIS_PORT

Bereitgestellte URL speichern

Legen Sie die bereitgestellte URL als Umgebungsvariable INTERCEPTOR_SERVICE_URL fest.

Cloud Pub/Sub-Abos konfigurieren

Für Cloud Pub/Sub-Abos werden folgende Elemente verwendet:

  • Themen
  • Unterhaltungsprofil
  • Dienstkonto
  • Dienstkontoberechtigung für Interceptor-Dienst
  • Lebenszyklus-Ereignisse für Unterhaltungen

Cloud Pub/Sub-Themen erstellen

Erstellen Sie für jede Art von Ereignisbenachrichtigung, die Sie von Dialogflow benötigen, ein Cloud Pub/Sub-Thema. Die verfügbaren Ereignisbenachrichtigungstypen sind:

  • Ereignisse für neue Vorschläge: Ereignisse, die gesendet werden, wenn neue Vorschläge von Agent Assist verfügbar sind (z. B. neue Vorschläge für Smart Reply als Antwort auf eine Kundenäußerung).
  • Ereignisse vom Typ „Neue Nachricht“: Ereignisse, die gesendet werden, wenn eine neue Äußerung von einem Kunden oder Kundenservicemitarbeiter erkannt wird (z. B. wenn der Kunde Hi sagt).
  • Neue Ereignisse zum Konversationslebenszyklus: Ereignisse, die bei bestimmten Änderungen des Konversationslebenszyklus gesendet werden (z. B. wenn eine Unterhaltung gestartet oder beendet wird).
  • Ereignisse für neue Benachrichtigungen zu Erkennungsergebnissen: Ereignisse, die gesendet werden, wenn ein Zwischentranskript von einem Kundenservicemitarbeiter oder Kunden erkannt wird (z. B. sagt der Kunde Hi, how can I help you? und ein Zwischentranskript ist Hi how can, während der Kunde spricht).

Notieren Sie sich die Themen-ID und den Themennamen für die spätere Backend-Bereitstellung.

Unterhaltungsprofil konfigurieren

Konfigurieren Sie ein Konversationsprofil mit den Cloud Pub/Sub-Themen, die Sie im vorherigen Schritt erstellt haben.

  • Wählen Sie beim Erstellen eines neuen Konversationsprofils Pub/Sub-Benachrichtigungen und dann Pub/Sub-Benachrichtigungen aktivieren aus. Anschließend können Sie die Kästchen neben den Benachrichtigungstypen anklicken, die Sie aktivieren möchten, und die Themen-ID für das zugehörige Cloud Pub/Sub-Thema eingeben.
  • Wählen Sie für jedes Thema JSON als Nachrichtenformat aus.

Dienstkonto für die Pub/Sub-Aboidentität erstellen

Erstellen Sie mit dem folgenden Befehl ein Dienstkonto, das die Pub/Sub-Aboidentität darstellt:

$ gcloud iam service-accounts create cloud-run-pubsub-invoker \
     --display-name "Cloud Run Pub/Sub Invoker"

Gewähren Sie dem Dienstkonto die Berechtigung zum Aufrufen Ihres Interceptor-Dienstes

Führen Sie dazu diesen Befehl aus:

$ gcloud run services add-iam-policy-binding $INTERCEPTOR_SERVICE_NAME \ 
  --member=serviceAccount:cloud-run-pubsub-invoker@$GCP_PROJECT_ID.iam.gserviceaccount.com \
   --role=roles/run.invoker

Cloud Pub/Sub-Abos für Themen erstellen

Für jedes von Ihnen erstellte Thema müssen Sie ein entsprechendes Cloud Pub/Sub-Abo erstellen.

Ereignisse vom Typ „Neuer Vorschlag“

Ersetzen Sie your-new-suggestion-topic-id durch das Cloud Pub/Sub-Thema, das Sie für neue Vorschläge konfiguriert haben:

$ export TOPIC_ID='your-new-suggestion-topic-id' && gcloud pubsub subscriptions create $SUBSCRIPTION_NAME --topic $TOPIC_ID \
   --push-endpoint=$INTERCEPTOR_SERVICE_URL/human-agent-assistant-event \
   --push-auth-service-account=cloud-run-pubsub-invoker@$GCP_PROJECT_ID.iam.gserviceaccount.com

Ereignisse vom Typ „Neue Nachricht“

Ersetzen Sie your-new-message-event-topic-id durch das Cloud Pub/Sub-Thema, das Sie für neue Nachrichtenereignisse konfiguriert haben:

$ export TOPIC_ID='your-new-message-event-topic-id' && gcloud pubsub subscriptions create $SUBSCRIPTION_NAME --topic $TOPIC_ID \
   --push-endpoint=$INTERCEPTOR_SERVICE_URL/new-message-event \
   --push-auth-service-account=cloud-run-pubsub-invoker@$GCP_PROJECT_ID.iam.gserviceaccount.com

Lebenszyklus-Ereignisse für Unterhaltungen

Ersetzen Sie your-conversation-lifecycle-event-topic durch das Cloud Pub/Sub-Thema, das Sie für neue Ereignisse des Konversationslebenszyklus konfiguriert haben:

$ export TOPIC_ID='your-conversation-lifecycle-event-topic' && gcloud pubsub subscriptions create $SUBSCRIPTION_NAME --topic $TOPIC_ID \
   --push-endpoint=$INTERCEPTOR_SERVICE_URL/conversation-lifecycle-event \
   --push-auth-service-account=cloud-run-pubsub-invoker@$GCP_PROJECT_ID.iam.gserviceaccount.com

Neue Benachrichtigungsereignisse für Erkennungsergebnisse

$ export TOPIC_ID='your-new-recognition-result-notification-event-topic' && gcloud pubsub subscriptions create $SUBSCRIPTION_NAME --topic $TOPIC_ID \
   --push-endpoint=$INTERCEPTOR_SERVICE_URL/new-recognition-result-notification-event \
   --push-auth-service-account=cloud-run-pubsub-invoker@$GCP_PROJECT_ID.iam.gserviceaccount.com