Ein Webhook kann entweder ein Standard-Webhook oder ein flexibler Webhook sein. Bei einem Standard-Webhook werden die Anfrage- und Antwortfelder von Dialogflow CX definiert. Bei einem flexiblen Webhook definieren Sie die Anfrage- und Antwortfelder.
Sie können auch über den Anfrageparameter $request.webhook_status_code auf den HTTP-Statuscode des Webhook-Aufrufs zugreifen.
Standard-Webhooks
Bei Standard-Webhooks verwenden Sie von Dialogflow CX definierte Anfrage- und Antwortnachrichten. Die Anfragenachricht enthält viele Details zur Sitzung. Dazu gehören beispielsweise die aktuelle aktive Seite, der zuletzt abgeglichene Intent, Werte für Sitzungsparameter und vom Agent definierte Antworten.
Standard-Webhook-Anfrage
Wenn eine Auftragsausführung mit einem Webhook aufgerufen wird, sendet Dialogflow CX eine HTTPS-POST-Webhook-Anfrage an Ihren Webhook-Dienst. Der Text dieser Anfrage ist ein WebhookRequest-JSON-Objekt mit Informationen zur Sitzung.
Bei einigen Integrationen wird das Feld WebhookRequest.payload mit zusätzlichen Informationen gefüllt. Die Dialogflow CX Phone Gateway-Integration stellt beispielsweise die Anrufer-ID des Endnutzers bereit.
Weitere Informationen finden Sie in der Referenzdokumentation zu WebhookRequest (V3) oder WebhookRequest (V3Beta1).
Standard-Webhook-Antwort
Nachdem Ihr Webhook-Dienst eine Anfrage empfangen hat, muss er eine Antwort senden, die die folgenden Anforderungen erfüllt:
- Die Antwort muss innerhalb des Zeitlimits erfolgen, das beim Erstellen der Webhook-Ressource konfiguriert wurde.
- Die Antwort darf maximal 64 KiB groß sein.
Weitere Informationen finden Sie in der Referenzdokumentation zu WebhookResponse (V3) oder WebhookResponse (V3Beta1).
Standardeinstellungen für Webhook-Ressourcen
In der folgenden Tabelle werden die Einstellungen für Webhook-Ressourcen für Standard-Webhooks beschrieben:
| X | Element |
|---|---|
| Anzeigename | Der Name, der in der Konsole für den Webhook angezeigt wird. |
| Webhook-Zeitlimit | Wenn Dialogflow CX eine HTTP-Anfrage an Ihren Webhook-Dienst sendet, wird mit dieser Einstellung das Zeitlimit in Sekunden für jeden einzelnen Anfrageversuch festgelegt, nicht für die gesamte Konversationsrunde. Wenn bei einem Versuch das Zeitlimit überschritten wird oder er mit einem vorübergehenden Fehler fehlschlägt, wird er von Dialogflow CX automatisch einmal wiederholt. Dieser Wiederholungsversuch kann dazu führen, dass die gesamte Bearbeitungszeit bis zur Rückgabe eines Fehlers bis zum Doppelten des konfigurierten Zeitüberschreitungswerts beträgt. Wenn nach dem Wiederholen ein Zeitlimit überschritten wird, ruft Dialogflow CX das Ereignis webhook.error.timeout auf. Weitere Informationen finden Sie unter Automatische Wiederholungsversuche. |
| Typ | Legen Sie Service Directory fest, wenn Sie Service Directory für den privaten Netzwerkzugriff verwenden. Andernfalls legen Sie Allgemeiner Webdienst fest. |
| Webhook-URL | Geben Sie die URL-Adresse für Ihren Webhook-Dienst an. |
| Untertyp | Legen Sie Standard fest. |
| Umgebungsspezifischer Webhook | Sie können umgebungsspezifische Webhooks angeben. |
| Authentifizierung | Weitere Informationen finden Sie im Abschnitt zur Authentifizierung. |
| Benutzerdefiniertes CA-Zertifikat | Damit können Sie benutzerdefinierte CA-Zertifikate hochladen. |
Flexible Webhooks
Bei flexiblen Webhooks definieren Sie die HTTP-Methode der Anfrage, die URL-Parameter der Anfrage sowie die Felder der Anfrage- und Antwortnachrichten. In der Anfrage können nur ausgewählte Parameterwerte angegeben werden und in der Antwort nur Parameterüberschreibungswerte. Dadurch wird die Schnittstelle zwischen dem Agent und dem Webhook vereinfacht, da in der Regel nur Sitzungsparameterwerte übermittelt werden müssen. Außerdem wird die Webhook-Implementierung vereinfacht, da die Anfrage- und Antwortnachrichten nur die benötigten Informationen enthalten und Sie für verschiedene Szenarien eindeutige Webhook-Nachrichten bereitstellen können.
Flexible Webhook-Anfrage
Wenn Sie die Webhook-Ressource für Ihren Agent erstellen, können Sie Folgendes für Webhook-Anfragen angeben:
- Die HTTP-Methode, die für Webhook-Anfragen verwendet wird, die an Ihren Webhook-Dienst gesendet werden.
- Werte von Sitzungsparametern, die von Dialogflow CX über die URL an Ihren Webhook-Dienst gesendet werden sollen.
- Sitzungsparameterwerte, die Dialogflow CX über den JSON-Text der Anfrage an Ihren Webhook-Dienst senden soll, wenn Sie
POST,PUToderPATCHals Methode auswählen.
Wenn Sie Werte für Sitzungsparameter über die Anfrage-URL oder den JSON-Text senden möchten, verwenden Sie Parameterverweise. Sie müssen die Parameterreferenz nicht URL-codieren oder in Anführungszeichen setzen. Zur Laufzeit führt Dialogflow CX bei Bedarf eine URL-Escapierung des Parameterwerts durch. Eine Liste oder ein zusammengesetzter Wert wird als JSON bereitgestellt.
Wenn Sie einen Parameterverweis im JSON-Text verwenden, müssen Sie den Verweis in Anführungszeichen setzen, unabhängig vom Typ des Parameters. Wenn der Parameter tatsächlich ein numerischer Skalar-, Listen- oder zusammengesetzter Wert ist, entfernt Dialogflow CX die Anführungszeichen, wenn die Anfrage zur Laufzeit gesendet wird, um den Datentyp des Parameters beizubehalten. Skalare Stringtypen bleiben in Anführungszeichen. Wenn in einem Stringwert auf einen numerischen Skalar, eine Liste oder einen zusammengesetzten Wert verwiesen wird (z. B. „Das ist eine Zahl: $session.params.size“), wird der Parameter als String behandelt („Das ist eine Zahl: 3“).
Sie können beispielsweise die Sitzungsparameterwerte fruit und size wie folgt in der Anfrage-URL angeben:
https://your-webhook-service.com/handler?f=$session.params.fruit&s=$session.params.size
Und dem JSON-Anfragetext so:
{
"fruitParameter": "$session.params.fruit",
"sizeParameter": "$session.params.size"
}
Flexible Webhook-Antwort
Wenn Sie die Webhook-Ressource für Ihren Agent erstellen, können Sie Sitzungsparameter angeben, die von Dialogflow CX zur Laufzeit auf bestimmte Felder der Webhook-Antwort festgelegt werden sollen.
Ihre Antwort muss die folgenden Einschränkungen erfüllen:
- Die Antwort muss innerhalb des Zeitlimits erfolgen, das beim Erstellen der Webhook-Ressource konfiguriert wurde. Andernfalls wird das Zeitlimit der Anfrage überschritten.
- Die Antwort darf maximal 64 KiB groß sein.
Verwenden Sie das folgende Format, um ein Skalar-, Listen- oder zusammengesetztes Feld anzugeben:
$.fully.qualified.path.to.field
Betrachten Sie beispielsweise die folgende JSON-Antwort:
{
"routes" : [
{
"legs" : [
{
"distance" : {
"text" : "2,064 mi",
"value" : 3321004
}
}
]
}
]
}
Verwenden Sie Folgendes, um das Feld „value“ anzugeben:
$.routes[0].legs[0].distance.value
Flexible Ressourceneinstellungen für Webhooks
In der folgenden Tabelle werden die Einstellungen für Webhook-Ressourcen für flexible Webhooks beschrieben.
| X | Element |
|---|---|
| Anzeigename | Der Name, der in der Konsole für den Webhook angezeigt wird. |
| Webhook-Zeitlimit | Wenn Dialogflow CX eine HTTP-Anfrage an Ihren Webhook-Dienst sendet, wird mit dieser Einstellung das Zeitlimit in Sekunden für jeden einzelnen Anfrageversuch festgelegt, nicht für die gesamte Konversationsrunde. Wenn bei einem Versuch das Zeitlimit überschritten wird oder er mit einem vorübergehenden Fehler fehlschlägt, wird er von Dialogflow CX automatisch einmal wiederholt. Dieser Wiederholungsversuch kann dazu führen, dass die gesamte Bearbeitungszeit bis zur Rückgabe eines Fehlers bis zum Doppelten des konfigurierten Zeitüberschreitungswerts beträgt. Wenn nach dem Wiederholen ein Zeitlimit überschritten wird, ruft Dialogflow CX das Ereignis webhook.error.timeout auf. Weitere Informationen finden Sie unter Automatische Wiederholungsversuche. |
| Typ | Legen Sie Service Directory fest, wenn Sie Service Directory für den privaten Netzwerkzugriff verwenden. Andernfalls legen Sie Allgemeiner Webdienst fest. |
| Webhook-URL | Geben Sie die URL-Adresse für Ihren Webhook-Dienst an. Sie kann Verweise auf Sitzungsparameter enthalten. |
| Untertyp | Auf Flexibel festlegen. |
| Methode | Legen Sie die HTTP-Methode für die Webhook-Anfrage fest. |
| Anfragetext | Geben Sie den JSON-Anfragetext wie oben beschrieben an. |
| Antwortkonfiguration | Geben Sie die Sitzungsparameter an, die auf Antwortfelder festgelegt werden sollen wie oben beschrieben. |
| Umgebungsspezifischer Webhook | Sie können umgebungsspezifische Webhooks angeben. |
| Authentifizierung | Weitere Informationen finden Sie im Abschnitt zur Authentifizierung. |
| Benutzerdefiniertes CA-Zertifikat | Damit können Sie benutzerdefinierte CA-Zertifikate hochladen. |
Vordefinierte benutzerdefinierte Vorlage verwenden
Dialogflow bietet vordefinierte benutzerdefinierte Vorlagen, mit denen Sie flexible Webhooks in Salesforce CRM einbinden können.
- Rufen Sie den Tab Verwalten auf, wählen Sie Webhooks aus und klicken Sie dann auf Erstellen.
- Wählen Sie unter Subtype (Untertyp) die Option Flexible (Flexibel) aus.
- Klicken Sie auf Mit vordefinierter Vorlage konfigurieren.
- Wählen Sie im Menü Integrationstyp die Option Salesforce aus.
- Wählen Sie im Menü API-Name einen API-Namen aus. Das Webhook-Formular wird automatisch anhand des von Ihnen ausgewählten API-Namens ausgefüllt.
- Konfigurieren Sie die folgenden Felder gegebenenfalls manuell anhand Ihrer Parameter:
- Webhook-URL
- Methode
- JSON-Text der Anfrage
- Antwortkonfiguration
- Die erforderlichen OAuth-Felder werden im Bereich Authentifizierung hervorgehoben.
- Konfigurieren Sie die folgenden Felder gegebenenfalls manuell anhand Ihrer Parameter:
- Klicken Sie auf Speichern.
Webhook-Dienstanforderungen
Ihr Webhook-Dienst muss die folgenden Anforderungen erfüllen:
- HTTPS-Anfragen verarbeiten HTTP wird nicht unterstützt. Wenn Sie Ihren Webhook-Dienst auf Google Cloud mit einer Compute- oder Serverless Computing-Lösung hosten, lesen Sie die Dokumentation zur Bereitstellung mit HTTPS. Informationen zu anderen Hostingoptionen finden Sie unter SSL-Zertifikat für eine Domain anfordern.
- Die Webhook-Dienst-URL muss öffentlich zugänglich sein, es sei denn, sie wird als Cloud Run-Ressource gehostet oder als Service Directory-Webhook aufgerufen.
- Verarbeiten Sie Anfragen und Antworten wie im Abschnitt Standard-Webhook oder Flexibler Webhook beschrieben.
- Wenn Ihr Agent nicht in den privaten Verzeichniszugriff von Service Directory eingebunden ist, werden Webhook-Aufrufe außerhalb des Dienstperimeters betrachtet und beim Aktivieren von VPC Service Controls blockiert. Service Directory unterstützt eingeschränkte Endpunkte. Weitere Informationen finden Sie unter Service Directory.
Authentifizierung
Sichern Sie Ihren Webhook-Dienst so, dass nur Sie oder Ihr Dialogflow CX-Agent Anfragen stellen können. Sie konfigurieren dies beim Erstellen oder Bearbeiten einer Webhook-Ressource. Dialogflow CX unterstützt die folgenden Authentifizierungsmechanismen:
| X | Element |
|---|---|
| Authentifizierungs-Header | Für Webhook-Einstellungen können Sie optionale Schlüssel/Wert-Paare für HTTP-Header angeben. Wenn diese angegeben werden, fügt Dialogflow CX diese HTTP-Header Webhook-Anfragen hinzu. Es ist üblich, ein einzelnes Paar mit dem Schlüssel authorization anzugeben. Die Headerwerte unterstützen Sitzungsparameterreferenzen und Parsing von Systemfunktionen wie in statischen Antwortnachrichten. Wenn Sie statische Anmeldedaten für den authorization-Header verwenden, empfehlen wir, die Anmeldedaten über Secret Manager bereitzustellen. |
| Basisauthentifizierung mit Nutzername und Passwort | Für Webhook-Einstellungen können Sie optionale Werte für Nutzernamen und Passwort für die Anmeldung angeben. Wenn angegeben, fügt Dialogflow CX Webhook-Anfragen einen Autorisierungs-HTTP-Header hinzu. Dieser Header hat das Format "authorization: Basic <base 64 encoding of the string username:password>". Wir empfehlen, Nutzername und Passwort über Secret Manager anzugeben. |
| OAuth von Drittanbietern | Sie können die OAuth-Konfiguration von Drittanbietern so festlegen, dass Dialogflow CX ein Zugriffstoken vom OAuth-System austauscht und es in den HTTP-Autorisierungsheader einfügt. Es wird nur der Ablauf der Clientanmeldedaten unterstützt. Wir empfehlen, das Client-Secret über Secret Manager bereitzustellen. |
| Zugriffstokens für Dienst-Agents | Eingestellt. |
| Dienstkonto | Sie können ein Dienstkonto zur Authentifizierung verwenden. Damit kann auf andere Google Cloud APIs zugegriffen werden. |
| Dienst-Agent-ID-Tokens | Sie können im Abschnitt „Dienst-Agent-Authentifizierung“ die Option „ID-Token“ auswählen, um Dienst-Agent-ID-Token für die Authentifizierung zu verwenden. Damit können Sie auf Cloud Run-Ressourcen zugreifen. |
| Gegenseitige TLS-Authentifizierung | Weitere Informationen finden Sie in der Dokumentation zur gegenseitigen TLS-Authentifizierung. |
OAuth von Drittanbietern
Dialogflow CX ruft ein Zugriffstoken von einem OAuth-Drittanbieter ab und fügt es beim Senden von Webhook-Anfragen dem HTTP-Autorisierungsheader hinzu.
In der folgenden Tabelle werden die Ressourceneinstellungen für OAuth von Drittanbietern beschrieben:
| X | Element |
|---|---|
| Client-ID | Die Client-ID, die beim Anfordern eines OAuth-Tokens verwendet werden soll. |
| Clientschlüssel | Das Secret, das beim Anfordern eines OAuth-Tokens verwendet werden soll. Wir empfehlen, das Client-Secret über Secret Manager bereitzustellen. |
| OAuth-Endpunkt-URL | Die URL, die zum Anfordern eines OAuth-Tokens verwendet werden soll. |
| OAuth-Bereiche | Eine durch Kommas getrennte Liste von Bereichen, für die das OAuth-Token verwendet werden kann. |
An die OAuth-Endpunkt-URL gesendete Anfragen zum Empfangen eines Tokens enthalten nicht die benutzerdefinierten Anfrageheader, die für die Webhook-Anfrage konfiguriert wurden. Sie können benutzerdefinierte Informationen als Parameter im Abfragestring der OAuth-Endpunkt-URL an den OAuth-Server übergeben.
Dienst-Agent-ID-Token
Dialogflow CX kann mit dem Dialogflow CX-Dienst-Agent ein ID-Token generieren. Dieses Token wird dem HTTP-Autorisierungsheader hinzugefügt, wenn Dialogflow CX einen Webhook aufruft.
Ein ID-Token kann für den Zugriff auf Cloud Run-Ressourcen verwendet werden, nachdem Sie
(roles/run.invoker)
service-agent-project-number@gcp-sa-dialogflow.iam.gserviceaccount.com
Die Zielgruppe, die zum Generieren des ID-Tokens verwendet wird, ist die gesamte Webhook-URL ohne Suchparameter. Wenn Sie Cloud Run verwenden, muss diese URL von den Cloud Run-Zielgruppen unterstützt werden.
Wenn die Webhook-URL beispielsweise so aussieht:
https://myproject.cloudfunctions.net/my-function/method1?query=value
Die folgende URL muss in benutzerdefinierten Zielgruppen enthalten sein:
https://myproject.cloudfunctions.net/my-function/method1
Jeder Webhook kann das Token optional auch mit Google-Clientbibliotheken oder Open-Source-Bibliotheken wie der Google-Authentifizierungsbibliothek für Node.js validieren.
Wenn Ihr Webhook in Cloud Run gehostet und über einen Load-Balancer aufgerufen wird, fügen Sie die URL des Load-Balancers als benutzerdefinierte Zielgruppe zu Cloud Run hinzu. Weitere Informationen zu benutzerdefinierten Zielgruppen finden Sie unter Benutzerdefinierte Zielgruppen für Dienste festlegen.
Dienstkonto
Dienstkonten können verwendet werden, um Webhook-Anfragen bei allen Google APIs zu authentifizieren, die sie unterstützen.
Erstellen Sie ein Dienstkonto, falls noch nicht geschehen.
Da es sich bei Dienstkonten um Hauptkonten handelt, können sie auf Ressourcen in Ihrem Projekt zugreifen, indem Sie ihnen eine Rolle zuweisen, wie Sie es auch für jedes andere Hauptkonto tun würden. Die E-Mail-Adresse des Dienstkontos wird verwendet, um ein Zugriffstoken zu generieren, das im Authorization-Header der Webhook-Anfrage gesendet wird.
Wenn Sie den Webhook so konfigurieren möchten, dass Dienstkonten verwendet werden, benötigen Sie die folgenden Berechtigungen:
roles/iam.serviceAccountUser
Zum Generieren von Tokens muss der Dialogflow-Dienst-Agent die folgenden Berechtigungen haben:
roles/iam.serviceAccountTokenCreator
Das Dienstkonto muss auch Berechtigungen für den Zugriff auf den Dienst haben, der den Webhook hostet.
Secret Manager-Authentifizierung
Wenn Sie Authentifizierungsheader, die Basisauthentifizierung mit Nutzername und Passwort oder OAuth von Drittanbietern verwenden, können Sie die Anmeldedaten mit Secret Manager als Secrets speichern. So authentifizieren Sie Ihren Webhook mit Secrets:
- Erstellen Sie ein Secret, falls Sie noch keines haben.
- Weisen Sie dem Dialogflow-Dienst-Agenten die Rolle Zugriffsperson für Secret Manager-Secret (
roles/secretmanager.secretAccessor) für das neue Secret zu. - Kopieren Sie die Anmeldedaten in die Zwischenablage.
- Fügen Sie Ihrem Secret eine neue Secret-Version hinzu und fügen Sie die Anmeldedaten als Secret-Wert ein:
- Wenn Sie Authentifizierungsheader verwenden, geben Sie
Bearer <YOUR_CREDENTIAL>ein. - Wenn Sie die einfache Authentifizierung mit Nutzername und Passwort verwenden, geben Sie
<YOUR_USERNAME>:<YOUR_PASSWORD>ein. - Lassen Sie am Ende alle Zeilenumbruchzeichen weg.
- Wenn Sie Authentifizierungsheader verwenden, geben Sie
- Kopieren Sie den Namen der Secret-Version, die Sie hinzugefügt haben. Das Namensformat ist
projects/<var>PROJECT_ID</var>/secrets/<var>SECRET_ID</var>/versions/<var>VERSION_ID</var>. - Öffnen Sie den Bildschirm zum Bearbeiten des Webhooks.
- Konfigurieren Sie die Authentifizierungseinstellungen:
- Wenn Sie Authentifizierungsheader verwenden, erstellen Sie einen neuen Secret-Versionsanfrageheader. Geben Sie „Authorization“ in das Feld Schlüssel ein und fügen Sie den Namen der Secret-Version in das Feld Secret-Version ein.
- Klicken Sie für die einfache Authentifizierung mit Nutzername und Passwort unter Basisauthentifizierung auf Secret-Version und fügen Sie den Namen der Secret-Version in das Feld Secret-Version ein.
- Wenn Sie Drittanbieter-OAuth verwenden, klicken Sie unter Drittanbieter-OAuth auf Secret-Version und fügen Sie den Namen der Secret-Version in das Feld Secret-Version ein.
- Klicken Sie auf Speichern.
HTTPS-Zertifikatsüberprüfung
Dialogflow CX verwendet standardmäßig den Standard-Trust Store von Google, um HTTPS-Zertifikate zu prüfen. Wenn Sie Zertifikate verwenden möchten, die vom Standard-Trust Store von Google nicht für Ihren HTTPS-Server erkannt werden, z. B. selbst signierte oder benutzerdefinierte Root-Zertifikate, lesen Sie die Informationen unter Benutzerdefinierte CA-Zertifikate.
Umgebungsspezifische Webhooks
Wenn Sie Umgebungen verwenden, um die Produktion von der Entwicklung zu trennen, können Sie Ihre Webhooks umgebungsspezifisch konfigurieren. Sie können umgebungsspezifische URL- und Authentifizierungseinstellungen für jede Webhook-Ressource angeben.
Mit dieser Konfiguration können Sie Ihre Webhook-Code-Updates sicher entwickeln und testen, bevor Sie sie in der Produktion bereitstellen.
Webhook-Ressourcen erstellen oder bearbeiten
Wenn ein Webhook-Dienst ausgeführt wird, müssen Sie in Ihrem Agent eine Webhook-Ressource mit Verbindungs- und Authentifizierungsinformationen erstellen. Sie können die Einstellungen für Webhook-Ressourcen jederzeit bearbeiten.
So erstellen oder bearbeiten Sie eine Webhook-Ressource:
Console
- Öffnen Sie die Dialogflow CX-Konsole.
- Rufen Sie Ihr Projekt auf.
- Wählen Sie den Agent aus.
- Klicke auf den Tab Verwalten.
- Klicken Sie auf Webhooks.
- Klicken Sie auf Erstellen oder wählen Sie einen vorhandenen Webhook aus, um ihn zu bearbeiten.
- Konfigurieren Sie die Standardeinstellungen für Webhook-Ressourcen oder die flexiblen Einstellungen für Webhook-Ressourcen.
- Klicken Sie auf Speichern.
API
Informationen zum Erstellen einer Webhook-Ressource finden Sie in der Methode create für den Typ Webhook. Informationen zum Bearbeiten einer Webhook-Ressource (mit Ausnahme umgebungsspezifischer Einstellungen) finden Sie in der Methode patch oder update für den Typ Webhook.
Wählen Sie ein Protokoll und eine Version für die Webhook-Referenz aus:
| Protokoll | V3 | V3beta1 |
|---|---|---|
| REST | Webhook-Ressource | Webhook-Ressource |
| RPC | Webhook-Schnittstelle | Webhook-Schnittstelle |
| C++ | WebhooksClient | Nicht verfügbar |
| C# | WebhooksClient | Nicht verfügbar |
| Go | WebhooksClient | Nicht verfügbar |
| Java | WebhooksClient | WebhooksClient |
| Node.js | WebhooksClient | WebhooksClient |
| PHP | Nicht verfügbar | Nicht verfügbar |
| Python | WebhooksClient | WebhooksClient |
| Ruby | Nicht verfügbar | Nicht verfügbar |
Informationen zum Bearbeiten der umgebungsspezifischen Einstellungen für einen Webhook finden Sie in der Methode patch oder update für den Typ Environment.
Wählen Sie ein Protokoll und eine Version für die Umgebungsreferenz aus:
| Protokoll | V3 | V3beta1 |
|---|---|---|
| REST | Umgebungsressource | Umgebungsressource |
| RPC | Umgebungsschnittstelle | Umgebungsschnittstelle |
| C++ | EnvironmentsClient | Nicht verfügbar |
| C# | EnvironmentsClient | Nicht verfügbar |
| Go | EnvironmentsClient | Nicht verfügbar |
| Java | EnvironmentsClient | EnvironmentsClient |
| Node.js | EnvironmentsClient | EnvironmentsClient |
| PHP | Nicht verfügbar | Nicht verfügbar |
| Python | EnvironmentsClient | EnvironmentsClient |
| Ruby | Nicht verfügbar | Nicht verfügbar |
Webhook-Fehler
Wenn Ihr Webhook-Dienst bei der Verarbeitung einer Webhook-Anfrage einen Fehler feststellt, muss Ihr Webhook-Code einen der folgenden HTTP-Statuscodes zurückgeben:
400: Ungültige Anfrage401: Nicht autorisiert403: Verboten404: Nicht gefunden500: Serverfehler503: Dienst nicht verfügbar
In den folgenden Fehlersituationen ruft Dialogflow CX einen Webhook-Fehler oder ein integriertes Zeitlimitereignis auf und fährt mit der Verarbeitung wie gewohnt fort:
- Das Zeitlimit für die Antwort wurde überschritten.
- Ein Fehlerstatuscode wird empfangen.
- Die Antwort ist ungültig.
- Der Webhook-Dienst ist nicht verfügbar.
Wenn der Webhook-Dienstaufruf durch einen API-Aufruf zur Intent-Erkennung ausgelöst wurde, enthält das Feld queryResult.webhookStatuses in der Antwort zur Intent-Erkennung die Webhook-Statusinformationen.
Automatische Wiederholungsversuche
Dialogflow CX wiederholt Anfragen bei bestimmten Webhook-Fehlern automatisch, um die Robustheit zu verbessern. Automatische Wiederholungsversuche sind standardmäßig aktiviert und können nicht deaktiviert werden.
Dialogflow CX führt einen einzelnen Wiederholungsversuch für vorübergehende Fehler aus, z. B. Zeitüberschreitungen bei Anfragen, unterbrochene Netzwerkverbindungen und HTTP-Statuscodes im Bereich 5xx (z. B. 500 Server fault oder 503 Service unavailable). Endgültige Clientfehler, z. B. der HTTP-Statuscode 404 Not found, schlagen sofort fehl, ohne dass ein Wiederholungsversuch unternommen wird.
Kumulative Latenz und Timeout-Budgetierung
Da Dialogflow CX vorübergehende Fehler einmal wiederholt, kann ein nicht reagierender Webhook-Endpunkt zu einer kumulativen Bearbeitungszeit von bis zum Doppelten des konfigurierten Zeitüberschreitungswerts führen, bevor Dialogflow CX einen Fehler zurückgibt. Bei der standardmäßigen Zeitüberschreitungseinstellung von 5 Sekunden tritt beispielsweise bei einem nicht reagierenden Endpunkt beim ersten Versuch nach 5 Sekunden eine Zeitüberschreitung auf und beim Wiederholungsversuch nach weiteren 5 Sekunden. Das führt zu einer Gesamtlatenz von etwa 10 Sekunden, bevor Dialogflow CX Fehler-Handler wie einen webhook.error.timeout-Event-Handler oder einen sys.no-match-default-Event-Handler aufruft.
Wenn Ihre Architektur strenge Upstream-Latenzlimits hat (z. B. Telefonie- oder IVR-Systeme (Interactive Voice Response), die Anrufe nach einem Zeitlimit von 10 Sekunden beenden), planen Sie beide Versuche ein, indem Sie das Webhook-Zeitlimit auf die Hälfte des zulässigen Zeitlimits festlegen (z. B. zwischen 2,5 und 4 Sekunden).
Best Practices für Wiederholungsversuche
So gehen Sie in Ihrem Webhook-Dienst effektiv mit Wiederholungsversuchen um:
- Implementieren Sie Idempotenz oder die Deduplizierung von Anfragen in der Logik Ihres Webhook-Dienstes, um doppelte Anfragen sicher zu verarbeiten.
- Wenn Ihr Webhook-Vorgang länger als das konfigurierte Zeitlimit dauert, geben Sie sofort eine
200 OK-Antwort mit einer Fallback-Nachricht zurück und verarbeiten Sie die zeitaufwendige Aufgabe asynchron.
Cloud Run verwenden
Dialogflow CX lässt sich in Cloud Run einbinden, sodass Sie einen sicheren, serverlosen Webhook erstellen können. Wenn Sie eine Cloud Run-Ressource erstellen, die sich im selben Projekt wie Ihr Agent befindet, wählen Sie Service Agent Auth (Dienst-Agent-Authentifizierung) und dann ID token (ID-Token) in der Authentifizierungskonfiguration aus, damit Ihr Agent den Webhook sicher aufrufen kann.
In den folgenden beiden Situationen müssen Sie diese Integration manuell einrichten:
- Das Dienstkonto Dialogflow CX-Dienst-Agent mit der folgenden Adresse muss für Ihr Agent-Projekt vorhanden sein:
Dieses spezielle Dienstkonto und der zugehörige Schlüssel werden beim Erstellen des ersten Agents für ein Projekt normalerweise automatisch erstellt. Wenn Ihr Agent vor dem 1. November 2020 erstellt wurde, können Sie dieses spezielle Dienstkonto erstellen:service-agent-project-number@gcp-sa-dialogflow.iam.gserviceaccount.com
- Erstellen Sie einen neuen Agent für das Projekt.
- Führen Sie den folgenden Befehl aus:
gcloud beta services identity create --service=dialogflow.googleapis.com --project=agent-project-id
- Wenn sich die Webhook-Funktion in einem anderen Projekt als der Agent befindet, müssen Sie dem Dienstkonto Dialogflow CX-Dienst-Agent im Projekt Ihrer Cloud Run-Ressource die IAM-Rolle Cloud Run-Aufrufer oder Cloud Functions-Aufrufer zuweisen.
Wählen Sie als Nächstes im Abschnitt Auth configuration (Authentifizierungskonfiguration) die Option Service Agent Auth > ID Token (Authentifizierung für Dienst-Agent > ID-Token) aus.
Containerisierte Webhooks und das Go-Framework „ezcx“ verwenden
Informationen zum Implementieren eines containerisierten Webhooks mit Go finden Sie im Go-EZCX-Framework. Dieses Framework vereinfacht viele der Schritte, die zum Erstellen eines Webhooks erforderlich sind.
Cloud Run mit rein internem Traffic verwenden
Sie können Cloud Run-Ressourcen, die so konfiguriert sind, dass sie internen Traffic aus VPC-Netzwerken (Virtual Private Cloud) im selben Projekt oder im selben VPC Service Controls-Perimeter akzeptieren, als Webhook verwenden, sofern sich der Agent im selben Projekt oder im selben VPC Service Controls-Perimeter befindet.
Service Directory für den privaten Netzwerkzugriff verwenden
Dialogflow CX wird in privaten Service Directory-Zugriff eingebunden, sodass eine Verbindung zu Webhook-Zielen in Ihrem VPC-Netzwerk hergestellt werden kann. Dadurch wird der Traffic innerhalb des Google Cloud Netzwerks beibehalten und IAM sowie VPC Service Controls erzwungen.
So richten Sie einen Webhook ein, der auf ein privates Netzwerk ausgerichtet ist:
Folgen Sie der Anleitung unter Private Netzwerkkonfiguration für Service Directory, um Ihr VPC-Netzwerk und Ihren Service Directory-Endpunkt zu konfigurieren.
Das Dienstkonto Dialogflow CX-Dienst-Agent mit der folgenden Adresse muss für Ihr Agent-Projekt vorhanden sein:
service-agent-project-number@gcp-sa-dialogflow.iam.gserviceaccount.com
Weisen Sie dem Dienstkonto Dialogflow CX-Dienst-Agent in dem Projekt, in dem sich Ihr Service Directory befindet, die folgenden Rollen zu:
servicedirectory.viewerservicedirectory.pscAuthorizedService
Wenn sich Ihr Service Directory in einem anderen Projekt als Ihr Dialogflow CX-Agent befindet, müssen Sie dem Dialogflow CX-Dienst-Agent-Konto im Projekt, in dem Ihr Dialogflow CX-Agent gehostet wird, außerdem die Rolle
servicedirectory.viewerzuweisen.Geben Sie beim Erstellen des Webhooks den Service Directory-Dienst, die URL und optionale Authentifizierungsinformationen an.
Console

API
Weitere Informationen finden Sie im Feld
serviceDirectoryfür den TypWebhook.Wählen Sie ein Protokoll und eine Version für die Webhook-Referenz aus:
Protokoll V3 V3beta1 REST Webhook-Ressource Webhook-Ressource RPC Webhook-Schnittstelle Webhook-Schnittstelle C++ WebhooksClient Nicht verfügbar C# WebhooksClient Nicht verfügbar Go WebhooksClient Nicht verfügbar Java WebhooksClient WebhooksClient Node.js WebhooksClient WebhooksClient PHP Nicht verfügbar Nicht verfügbar Python WebhooksClient WebhooksClient Ruby Nicht verfügbar Nicht verfügbar
Zur Fehlerbehebung können Sie eine private Verfügbarkeitsdiagnose einrichten, um zu prüfen, ob Ihr Service Directory richtig konfiguriert ist.
Beispiele und Fehlerbehebung
Weitere Informationen finden Sie in der Webhook-Anleitung.