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.