Dialogflow-Webhook-Format {:#dialogflow-webhook-format} (Dialogflow)

In diesem Abschnitt wird das Format der JSON-Nutzlast beschrieben, wenn Actions on Google Ihre Auftragsausführung über Dialogflow v2 aufruft.

Wenn Sie mit Dialogflow Aktionen erstellen, wird Ihre Auftragsausführung kommuniziert mit Dialogflow über ein eigenes Standard-Webhook-Format statt über das Actions on Google-Webhook-Format für Unterhaltungen. Das Dialogflow-Webhook-Format enthält alle Informationen Unterhaltungs-Webhook-Format sowie zusätzliche Dialogflow-spezifische Daten, z. B. Informationen zu Kontexte und Parameter.

Weitere Beispiele für JSON-Nachrichten für Dialogflow-Webhooks finden Sie unter an dieses GitHub-Projekt.

Anfragetext

Die request-Nachricht von Dialogflow enthält Daten im Dialogflow-Webhook-Format. Dieses Objekt enthält Actions on Google-spezifische Informationen:

  • Der Wert für originalDetectIntentRequest.source ist „google“.
  • Das originalDetectIntentRequest.version steht für Actions on Google Version für die Anfrage.
  • originalDetectIntentRequest.payload enthält wichtige Actions on Google-spezifische Informationen Informationen, einschließlich der Anfrage JSON von Assistant.
  • Das Feld Conversation.conversationToken wird vom Dialogflow-Webhook nicht unterstützt -Anfragen. Stattdessen kann für die Auftragsausführung ein Dialogflow-Projekt verwendet werden. context, um Daten im gesamten Gesprächsdauer.

Beispiel für eine einfache Aufrufanfrage

Das folgende Snippet zeigt ein Beispiel für eine Aufrufanfrage in Dialogflow. Webhook-Format verwenden.

{
  "responseId": "c4b863dd-aafe-41ad-a115-91736b665cb9",
  "queryResult": {
    "queryText": "GOOGLE_ASSISTANT_WELCOME",
    "action": "input.welcome",
    "parameters": {},
    "allRequiredParamsPresent": true,
    "fulfillmentText": "",
    "fulfillmentMessages": [],
    "outputContexts": [
      {
        "name": "projects/${PROJECTID}/agent/sessions/${SESSIONID}/contexts/google_assistant_welcome"
      },
      {
        "name": "projects/${PROJECTID}/agent/sessions/${SESSIONID}/contexts/actions_capability_screen_output"
      },
      {
        "name": "projects/${PROJECTID}/agent/sessions/${SESSIONID}/contexts/google_assistant_input_type_voice"
      },
      {
        "name": "projects/${PROJECTID}/agent/sessions/${SESSIONID}/contexts/actions_capability_audio_output"
      },
      {
        "name": "projects/${PROJECTID}/agent/sessions/${SESSIONID}/contexts/actions_capability_web_browser"
      },
      {
        "name": "projects/${PROJECTID}/agent/sessions/${SESSIONID}/contexts/actions_capability_media_response_audio"
      }
    ],
    "intent": {
      "name": "projects/${PROJECTID}/agent/intents/8b006880-0af7-4ec9-a4c3-1cc503ea8260",
      "displayName": "Default Welcome Intent"
    },
    "intentDetectionConfidence": 1,
    "diagnosticInfo": {},
    "languageCode": "en-us"
  },
  "originalDetectIntentRequest": {
    "source": "google",
    "version": "2",
    "payload": {
      "isInSandbox": true,
      "surface": {
        "capabilities": [
          {
            "name": "actions.capability.SCREEN_OUTPUT"
          },
          {
            "name": "actions.capability.AUDIO_OUTPUT"
          },
          {
            "name": "actions.capability.WEB_BROWSER"
          },
          {
            "name": "actions.capability.MEDIA_RESPONSE_AUDIO"
          }
        ]
      },
      "inputs": [
        {
          "rawInputs": [
            {
              "query": "Talk to my test app",
              "inputType": "VOICE"
            }
          ],
          "intent": "actions.intent.MAIN"
        }
      ],
      "user": {
        "lastSeen": "2018-03-16T22:08:48Z",
        "permissions": [
          "UPDATE"
        ],
        "locale": "en-US",
        "userId": "ABwppHEvwoXs18xBNzumk18p5h02bhRDp_riW0kTZKYdxB6-LfP3BJRjgPjHf1xqy1lxqS2uL8Z36gT6JLXSrSCZ"
      },
      "conversation": {
        "conversationId": "${SESSIONID}",
        "type": "NEW"
      },
      "availableSurfaces": [
        {
          "capabilities": [
            {
              "name": "actions.capability.SCREEN_OUTPUT"
            },
            {
              "name": "actions.capability.AUDIO_OUTPUT"
            }
          ]
        }
      ]
    }
  },
  "session": "projects/${PROJECTID}/agent/sessions/${SESSIONID}"
}

Beispiel für eine einfache Unterhaltungsanfrage

Das folgende Snippet zeigt ein Beispiel für eine dialogorientierte Anfrage in Dialogflow. Webhook-Format, wobei die Nutzereingabe ein Textstring ist.

{
  "responseId": "68efa569-4ba1-4b7f-9b1b-ac2865deb539",
  "queryResult": {
    "queryText": "query from the user",
    "action": "action.name.of.matched.dialogflow.intent",
    "parameters": {},
    "allRequiredParamsPresent": true,
    "outputContexts": [
      {
        "name": "projects/${PROJECTID}/agent/sessions/${SESSIONID}/contexts/actions_capability_screen_output"
      },
      {
        "name": "projects/${PROJECTID}/agent/sessions/${SESSIONID}/contexts/actions_capability_audio_output"
      },
      {
        "name": "projects/${PROJECTID}/agent/sessions/${SESSIONID}/contexts/google_assistant_input_type_keyboard"
      },
      {
        "name": "projects/${PROJECTID}/agent/sessions/${SESSIONID}/contexts/actions_capability_media_response_audio"
      },
      {
        "name": "projects/${PROJECTID}/agent/sessions/${SESSIONID}/contexts/actions_capability_web_browser"
      }
    ],
    "intent": {
      "name": "projects/${PROJECTID}/agent/intents/1f4e5bd9-a670-4161-a22e-2c97b077f29f",
      "displayName": "Name of Dialogflow Intent"
    },
    "intentDetectionConfidence": 1,
    "diagnosticInfo": {},
    "languageCode": "en-us"
  },
  "originalDetectIntentRequest": {
    "source": "google",
    "version": "2",
    "payload": {
      "isInSandbox": true,
      "surface": {
        "capabilities": [
          {
            "name": "actions.capability.SCREEN_OUTPUT"
          },
          {
            "name": "actions.capability.AUDIO_OUTPUT"
          },
          {
            "name": "actions.capability.WEB_BROWSER"
          },
          {
            "name": "actions.capability.MEDIA_RESPONSE_AUDIO"
          }
        ]
      },
      "inputs": [
        {
          "rawInputs": [
            {
              "query": "query from the user",
              "inputType": "KEYBOARD"
            }
          ],
          "arguments": [
            {
              "rawText": "query from the user",
              "textValue": "query from the user",
              "name": "text"
            }
          ],
          "intent": "actions.intent.TEXT"
        }
      ],
      "user": {
        "lastSeen": "2017-10-06T01:06:56Z",
        "locale": "en-US",
        "userId": "AI_yXq-AtrRh3mJX5D-G0MsVhqun"
      },
      "conversation": {
        "conversationId": "1522951193000",
        "type": "ACTIVE",
        "conversationToken": "[]"
      },
      "availableSurfaces": [
        {
          "capabilities": [
            {
              "name": "actions.capability.SCREEN_OUTPUT"
            },
            {
              "name": "actions.capability.AUDIO_OUTPUT"
            }
          ]
        }
      ]
    }
  },
  "session": "projects/${PROJECTID}/agent/sessions/${SESSIONID}"
}

Beispiel für ein Hilfsergebnis

Das folgende Snippet zeigt ein Beispiel für ein Hilfsergebnis im Dialogflow-Webhook-Format. In diesem Beispiel sehen Sie die Antwort des Nutzers, nachdem der Webhook Assistant signalisiert hat die Bestätigung der Nutzenden benötigt.

{
  "responseId": "cb6f5ec2-c26e-4349-b561-a9ddd6a0e495",
  "queryResult": {
    "queryText": "actions_intent_CONFIRMATION",
    "action": "Dialogflow action name of matched intent",
    "parameters": {},
    "allRequiredParamsPresent": true,
    "outputContexts": [
      {
        "name": "projects/${PROJECTID}/agent/sessions/${SESSIONID}/contexts/actions_intent_confirmation",
        "parameters": {
          "CONFIRMATION": true
        }
      }
    ],
    "intent": {
      "name": "projects/${PROJECTID}/agent/intents/1777d616-a5f7-4838-a9a9-870f2956bd14",
      "displayName": "Dialogflow action name of matched intent"
    },
    "intentDetectionConfidence": 1,
    "diagnosticInfo": {},
    "languageCode": "en-us"
  },
  "originalDetectIntentRequest": {
    "source": "google",
    "version": "2",
    "payload": {
      "isInSandbox": true,
      "surface": {},
      "inputs": [
        {
          "rawInputs": [
            {
              "query": "yes",
              "inputType": "VOICE"
            }
          ],
          "arguments": [
            {
              "name": "CONFIRMATION",
              "boolValue": true
            }
          ],
          "intent": "actions.intent.CONFIRMATION"
        }
      ],
      "user": {},
      "conversation": {},
      "availableSurfaces": []
    }
  },
  "session": "projects/${PROJECTID}/agent/sessions/${SESSIONID}"
}

Antworttext

Die Content-Type im Header von HTTP-Beiträgen von Ihrem Endpunkt für die Auftragsausführung an Assistant application/json sein.

Die Antwortnachricht, die von der Auftragsausführung an Dialogflow gesendet wird, muss sich in das Dialogflow-Webhook-Format.

Wenn du mit Assistant kommunizierst, enthält deine Antwort normalerweise ein payload -Objekt, das ein "google" enthält -Objekt enthält. „google“ enthält Actions on Google-spezifische Informationen. Es muss mindestens Folgendes enthalten: Das Feld expectUserResponse und entweder das Feld richResponse oder systemIntent.

Die wichtigsten Felder für „google“ Nutzlastobjekten zusammen:

Feld Beschreibung
expectUserResponse Gibt an, ob die Auftragsausführung eine Nutzerantwort erwartet. Setzen Sie den Wert auf true, wann die Unterhaltung am Laufen gehalten werden soll und false zum Ende das Gespräch zu führen.
userStorage Hier werden nichtflüchtige Daten gespeichert, die einem bestimmten Nutzer zugeordnet sind. Der Gesamtspeicher 10.000 Byte beträgt.
richResponse Dieses Feld enthält Audio, Text, Karten, Vorschläge oder strukturierte Daten, die von Assistant gerendert werden sollen. Weitere Informationen zur Verwendung von Rich-Antworten für Actions on Google, siehe Ansprechende Antworten
systemIntent Dieses Feld hat dieselbe Struktur wie ExpectedInput.possibleIntents Ihre Antwort enthält in der Regel ein systemIntent, wenn die Auftragsausführung einen Helper-Intent. Die possibleIntents in systemIntent muss auf eine ExpectedIntent -Objekt, wobei der Feldname inputValueData in data geändert wurde.

In der ExpectedIntent -Objekt enthält, geben Sie diese Werte an:

  • intent: Ein Intent-Name für das Hilfsprogramm, der den Typ des Informationen, die Nutzende zur Verfügung stellen sollen, und
  • data: Eine Wertspezifikation, d. h. ein String, der die Daten beschreibt, die für Assistant zum Ausführen des Hilfsprogramms erforderlich sind.

Wenn Sie beispielsweise nach der Berechtigung des Nutzers fragen, setzen Sie intent auf actions.intent.PERMISSSION und die data der Wertspezifikation, "@type": "type.googleapis.com/google.actions.v2.PermissionValueSpec" zusammen mit den Feldern für für diesen Typ.

In der folgenden Liste werden die Wertspezifikations-Strings für Hilfsprogramme zusammengefasst, die Sie in einem systemIntent für eine Dialogflow-Webhook-Antwort. Eine vollständige Liste der Actions on Google-Intents für die Konversationssteuerung finden Sie in der Referenz zu Intents.

Intent-Name Dialogflow-Ereignisname Spezifikation des Werts Beschreibung
actions.intent.CONFIRMATION actions_intent_CONFIRMATION "@type": "type.googleapis.com/google.actions.v2.ConfirmationValueSpec" Erhält eine Bestätigung vom Nutzer, z. B. eine Antwort auf eine Ja-oder-Nein-Frage).
actions.intent.DATETIME actions_intent_DATETIME "@type": "type.googleapis.com/google.actions.v2.DateTimeValueSpec" Ruft eine Eingabe für Datum und Uhrzeit vom Nutzer ab.
actions.intent.DELIVERY_ADDRESS actions_intent_DELIVERY_ADDRESS "@type": "type.googleapis.com/google.actions.v2.DeliveryAddressValueSpec" Erhält eine vom Nutzer eingegebene Lieferadresse.
actions.intent.LINK actions_intent_LINK "@type": "type.googleapis.com/google.actions.v2.LinkValueSpec" Fordert einen Deeplink in einer Android-App an.
actions.intent.OPTION actions_intent_OPTION "@type": "type.googleapis.com/google.actions.v2.OptionValueSpec" Ruft das ausgewählte Element über eine Listen- oder Karussell-Benutzeroberfläche ab.
actions.intent.PERMISSION actions_intent_PERMISSION "@type": "type.googleapis.com/google.actions.v2.PermissionValueSpec" Informationen des Nutzers erhält, einschließlich des vollständigen Namens, des ungefähren Standorts oder genauer Standort erfasst.
actions.intent.SIGN_IN actions_intent_SIGN_IN "@type": "type.googleapis.com/google.actions.v2.SignInValueSpec" Fordert einen Kontoverknüpfungsvorgang an, um das Konto eines Nutzers zu verknüpfen.

Beispiel für eine einfache Antwort

Das folgende Snippet zeigt ein Beispiel für eine einfache Antwort in Dialogflow. Webhook-Format verwenden.

{
  "payload": {
    "google": {
      "expectUserResponse": true,
      "richResponse": {
        "items": [
          {
            "simpleResponse": {
              "textToSpeech": "this is a simple response"
            }
          }
        ]
      }
    }
  }
}

Hilfsbeispiel

Das folgende Snippet zeigt ein Beispiel für die Verwendung eines Hilfs-Intents in Dialogflow. Webhook-Format verwenden. In diesem Beispiel verwendet der Webhook den Parameter Helfer-Intent actions.intent.OPTIONS, Assistant anzuweisen, einen Nutzerauswahl zwischen zwei Optionen.

{
  "payload": {
    "google": {
      "expectUserResponse": true,
      "richResponse": {
        "items": [
          {
            "simpleResponse": {
              "textToSpeech": "Choose a item"
            }
          }
        ]
      },
      "systemIntent": {
        "intent": "actions.intent.OPTION",
        "data": {
          "@type": "type.googleapis.com/google.actions.v2.OptionValueSpec",
          "listSelect": {
            "title": "Hello",
            "items": [
              {
                "optionInfo": {
                  "key": "first title key"
                },
                "description": "first description",
                "image": {
                  "url": "/assistant/images/badges/XPM_BADGING_GoogleAssistant_VER.png",
                  "accessibilityText": "first alt"
                },
                "title": "first title"
              },
              {
                "optionInfo": {
                  "key": "second"
                },
                "description": "second description",
                "image": {
                  "url": "https://lh3.googleusercontent.com/Nu3a6F80WfixUqf_ec_vgXy_c0-0r4VLJRXjVFF_X_CIilEu8B9fT35qyTEj_PEsKw",
                  "accessibilityText": "second alt"
                },
                "title": "second title"
              }
            ]
          }
        }
      }
    }
  }
}

Wenn die Nachricht aus dem vorherigen Beispiel eingeht, übernimmt das Gespräch und fordert die Nutzenden auf, die verfügbaren Optionen. Wenn alle erforderlichen Nutzereingaben erfasst wurden, sendet dieses Hilfsergebnis in einer Dialogflow-Webhook-Anfrage an die Auftragsausführung zurück.

Das folgende Snippet zeigt ein Beispiel für das Hilfsergebnis mit der Auswahl der Nutzerauswahl.

{
  "responseId": "ea166558-615a-48f3-ae5b-7f55d895784b",
  "queryResult": {
    "queryText": "actions_intent_OPTION",
    "action": "",
    "parameters": {},
    "allRequiredParamsPresent": true,
    "fulfillmentText": "",
    "fulfillmentMessages": [],
    "outputContexts": [
      {
        "name": "projects/${PROJECTID}/agent/sessions/${SESSIONID}/contexts/actions_intent_option",
        "parameters": {
          "OPTION": "key of selected item"
        }
      }
    ],
    "intent": {
      "name": "projects/${PROJECTID}/agent/intents/1777d616-a5f7-4838-a9a9-870f2956bd14",
      "displayName": "Dialogflow intent name of matched intent"
    },
    "intentDetectionConfidence": 1,
    "diagnosticInfo": {},
    "languageCode": "en-us"
  },
  "originalDetectIntentRequest": {
    "source": "google",
    "version": "2",
    "payload": {
      "isInSandbox": true,
      "surface": {
        "capabilities": []
      },
      "inputs": [
        {
          "rawInputs": [
            {
              "query": "Title of selected item",
              "inputType": "TOUCH"
            }
          ],
          "arguments": [
            {
              "textValue": "Key of selected item",
              "name": "OPTION"
            }
          ],
          "intent": "actions.intent.OPTION"
        }
      ],
      "user": {},
      "conversation": {},
      "availableSurfaces": []
    }
  },
  "session": "projects/${PROJECTID}/agent/sessions/${SESSIONID}"
}

Beispiel für „Unterhaltung beenden“

Das folgende Snippet zeigt ein Beispiel für eine einfache Antwort zum Beenden einer Unterhaltung -Sitzung im Dialogflow-Webhook-Format. Die expectUserResponse Wert von false in den Antwortnachrichtensignalen an Assistant dass keine weitere Nutzereingabe erwartet wird und die aktuelle Gespräch.

{
  "payload": {
    "google": {
      "expectUserResponse": false,
      "richResponse": {
        "items": [
          {
            "simpleResponse": {
              "textToSpeech": "Goodbye!"
            }
          }
        ]
      }
    }
  }
}

Informationen zum Überschreiben des Standardverhaltens beim Aufrufen eines Standards durch Nutzer um eine Unterhaltung mit Assistant zu beenden, Leitfaden zu Unterhaltungsausstiegen.