J'ai essayé de connecter DialogFlow et Actions sur Google. J'ai donc créé des intentions, connecté les services, ajouté des invocations explicites et implicites, etc., mais lorsque j'ai essayé le bot dans le simulateur https: // console.actions.google.com/project/[projectId]/simulator/ il me donne toujours l'erreur:
"Échec de l'analyse de la réponse Dialogflow dans AppResponse, exception Émise avec le message: Réponse de parole vide"
même inputType était "KEYBOARD".
Ce que j'ai essayé jusqu'à présent:
Malheureusement, les docs ne disent rien à propos de cette erreur. Des idées?
Voici une capture d'écran de l'erreur sur l'intégration Actions:
Voici la sortie de débogage complète:
{
"agentToAssistantDebug": {
"agentToAssistantJson": {
"message": "Failed to parse Dialogflow response into AppResponse, exception thrown with message: Empty speech response",
"apiResponse": {
"id": "c12e1389-e887-49d4-b399-a332188ca946",
"timestamp": "2018-01-27T03:55:30.931Z",
"lang": "en-us",
"result": {},
"status": {
"code": 200,
"errorType": "success"
},
"sessionId": "1517025330705"
}
}
},
"assistantToAgentDebug": {
"assistantToAgentJson": {
"user": {
"userId": "USER_ID",
"locale": "en-US",
"lastSeen": "2018-01-27T03:55:03Z"
},
"conversation": {
"conversationId": "1517025330705",
"type": "NEW"
},
"inputs": [
{
"intent": "actions.intent.MAIN",
"rawInputs": [
{
"inputType": "KEYBOARD",
"query": "Talk to Mica, the Hipster Cat Bot"
}
]
}
],
"surface": {
"capabilities": [
{
"name": "actions.capability.MEDIA_RESPONSE_AUDIO"
},
{
"name": "actions.capability.WEB_BROWSER"
},
{
"name": "actions.capability.AUDIO_OUTPUT"
},
{
"name": "actions.capability.SCREEN_OUTPUT"
}
]
},
"isInSandbox": true,
"availableSurfaces": [
{
"capabilities": [
{
"name": "actions.capability.AUDIO_OUTPUT"
},
{
"name": "actions.capability.SCREEN_OUTPUT"
}
]
}
]
},
"curlCommand": "curl -v 'https://api.api.ai/api/integrations/google?token=TOKEN' -H 'Content-Type: application/json;charset=UTF-8' -H 'Google-Actions-API-Version: 2' -H 'Authorization: AUTH_TOKEN' -A 'Mozilla/5.0 (compatible; Google-Cloud-Functions/2.1; +http://www.google.com/bot.html)' -X POST -d '{\"user\":{\"userId\":\"USER_ID\",\"locale\":\"en-US\",\"lastSeen\":\"2018-01-27T03:55:03Z\"},\"conversation\":{\"conversationId\":\"1517025330705\",\"type\":\"NEW\"},\"inputs\":[{\"intent\":\"actions.intent.MAIN\",\"rawInputs\":[{\"inputType\":\"KEYBOARD\",\"query\":\"Talk to Mica, the Hipster Cat Bot\"}]}],\"surface\":{\"capabilities\":[{\"name\":\"actions.capability.MEDIA_RESPONSE_AUDIO\"},{\"name\":\"actions.capability.WEB_BROWSER\"},{\"name\":\"actions.capability.AUDIO_OUTPUT\"},{\"name\":\"actions.capability.SCREEN_OUTPUT\"}]},\"isInSandbox\":true,\"availableSurfaces\":[{\"capabilities\":[{\"name\":\"actions.capability.AUDIO_OUTPUT\"},{\"name\":\"actions.capability.SCREEN_OUTPUT\"}]}]}'"
},
"sharedDebugInfo": [
{
"name": "ResponseValidation",
"subDebugEntry": [
{
"debugInfo": "API Version 2: Failed to parse JSON response string with 'INVALID_ARGUMENT' error: \": Cannot find field.\".",
"name": "UnparseableJsonResponse"
}
]
}
]
}
Aussi "debugInfo" ressemble à un problème interne:
"API version 2: échec de l'analyse de la chaîne de réponse JSON avec Erreur 'INVALID_ARGUMENT': \": Champ introuvable.\"."
Voici une capture d'écran de l'intention de bienvenue:
ps. Il m'a fallu un certain âge pour comprendre
"Le modèle de requête est manquant pour une intention personnalisée"
signifie - je viens donc de le documenter ici: Dans Dialog Flow - Intent - "L'utilisateur dit", vous devez DOUBLE CLIQUER sur un mot dans le champ de saisie de texte lorsque vous souhaitez le définir comme paramètre de requête - ce qui semble être obligatoire pour Actions sur Google.
Cela m'est arrivé Si cela se produit pour une intention que vous venez d'ajouter dans la console Dialogflow et que vous utilisez l'exécution Webhook pour l'action, vérifiez les paramètres d'exécution de l'intention et assurez-vous que le curseur d'exécution Webhook est activé. Il est évident que les nouvelles intentions n'entraînent pas automatiquement la réalisation de Webhook: vous devez choisir chacune d'elles au coup par coup (ou du moins, c'était mon expérience).
Je suis tombé sur cette erreur en essayant de développer mon propre WebHook. J'ai d'abord vérifié que mon code avait été appelé en consultant le journal Nginx, après quoi je savais qu'il y avait un problème dans ma sortie JSON car je me basais sur des exemples obsolètes.
La documentation (mise à jour) des versions V1 et V2 de l'API est disponible ici: https://dialogflow.com/docs/fulfillment/how-it-works
Cet exemple de réponse pour la v2 de l'API webhook de dialogflow m'a aidé à résoudre cette erreur:
{
"payload": {
"google": {
"expectUserResponse": true,
"richResponse": {
"items": [
{
"simpleResponse": {
"textToSpeech": "this is a simple response"
}
}
]
}
}
}
}
Vous pouvez trouver plus d'exemples dans le répertoire officiel de github (lien ci-dessus).
Je l'ai compris en parcourant le didacticiel de codelabs ( https://codelabs.developers.google.com/codelabs/actions-1/index.html#4 ) et je n'ai pas donné le même nom à mon intention. est référencé dans le script webhook: