web-dev-qa-db-fra.com

Erreur "Réponse vocale vide"

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:

  • J'ai défini l'option "La réponse de cet onglet sera envoyée à l'intégration de Google Assistant" dans Dialog Flow (devez-vous la définir pour chaque intention?), Mais je ne vois pas de paramètre supplémentaire pour la parole. 
  • J'ai désactivé la deuxième langue, j'avais d'abord l'intention également en allemand
  • J'ai aussi désactivé Fullfillment Webhook (implémenté dans API v1 et ensuite aussi v2) sans changement.
  • J'ai seulement trouvé cet utilisateur avec le même problème https://productforums.google.com/forum/#!topic/dialogflow/xYjKlz31yW0;context-place=topicsearchin/dialogflow/Empty $ 20speech $ 20sponse mais pas de résolution.
  • la case à cocher de réalisation est cochée aux intentions
  • Le bot fonctionne bien lorsque je l'utilise via "Essayez maintenant" à l'extrême droite de Dialog Flow ou de la démonstration Web https://bot.dialogflow.com/994dda8b-4849-4a8a-ab24-c0cd03b5f420

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:  enter image description here

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:  enter image description here

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.

4
electrobabe

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).

5
Femi

Une autre possibilité est si vous avez une réponse textuelle (même vide) comme ceci:  Responses Box

Ensuite, vous devez cliquer sur la corbeille en regard de la réponse pour la vider du Webhook.

0
patrickbadley

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"
            }
          }
        ]
      }
    }
  }
}

Source: https://github.com/dialogflow/fulfillment-webhook-json/blob/master/responses/v2/ActionsOnGoogle/RichResponses/SimpleResponse.json

Vous pouvez trouver plus d'exemples dans le répertoire officiel de github (lien ci-dessus).

0
Bertware

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:  Name Intent  Use Intent

0
patrickbadley