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
- Installieren Sie die Google Cloud CLI, falls noch nicht geschehen.
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-Laufzeitdienstkonteniam.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
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'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.
CONNECTOR_SERVICE_ACCOUNT
: Das Dienstkonto für die Laufzeit des UI-Connectors. Beispiel:aa-ui-connector@my-project-id.iam.gserviceaccount.com
.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.
- Öffnen Sie im Code-Repository die Datei
ui_connector/auth.py
. Geben Sie den unterstützten Identitätsanbieter an, indem Sie die Umgebungsvariable
AUTH_OPTION
festlegen, oder implementieren Sie Ihre Authentifizierungsmethode mitauth.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 Anfragefalse
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 solltedefault
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 mitCONNECTOR_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 mitINTERCEPTOR_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 istHi 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