2017-09-05 6 views
1

J'utilise python pour créer un webhook pour l'application Assistat. Je suis en mesure de demander à l'utilisateur la permission de l'emplacement, mais dès que l'utilisateur donne son consentement, je reçois l'erreur suivanteActions API.ai sur l'API Google Version 2: Echec de l'analyse de la chaîne de réponse JSON avec l'erreur 'INVALID_ARGUMENT': ": champ introuvable."

UnparseableJsonResponse 
API Version 2: Failed to parse JSON response string with 'INVALID_ARGUMENT' error: ": Cannot find field.". 

J'ai vérifié mon serveur webhook et aucune demande vient à elle. Cela ressemble à un problème du côté API.ai.
est inférieure à la réponse de débogage de la console lors de l'utilisation Actions client Python

{ 
    "assistantToAgentDebug": { 
    "curlCommand": "curl -v '<URL>'{\"user\":{\"userId\":\"<USED_ID>\",\"locale\":\"en-US\"},\"conversation\":{\"conversationId\":\"1504592665563\",\"type\":\"ACTIVE\",\"conversationToken\":\"[\\\"defaultwelcomeintent-followup\\\"]\"},\"inputs\":[{\"intent\":\"actions.intent.PERMISSION\",\"rawInputs\":[{\"inputType\":\"VOICE\",\"query\":\"yes\"}],\"arguments\":[{\"name\":\"PERMISSION\",\"textValue\":\"true\"}]}],\"surface\":{\"capabilities\":[{\"name\":\"actions.capability.AUDIO_OUTPUT\"},{\"name\":\"actions.capability.SCREEN_OUTPUT\"}]},\"device\":{\"location\":{\"coordinates\":{\"latitude\":37.4219806,\"longitude\":-122.0841979}}},\"isInSandbox\":true}'", 
    "assistantToAgentJson": { 
     "user": { 
     "userId": "<USED_ID>", 
     "locale": "en-US" 
     }, 
     "conversation": { 
     "conversationId": "1504592665563", 
     "type": "ACTIVE", 
     "conversationToken": "[\"defaultwelcomeintent-followup\"]" 
     }, 
     "inputs": [ 
     { 
      "intent": "actions.intent.PERMISSION", 
      "rawInputs": [ 
      { 
       "inputType": "VOICE", 
       "query": "yes" 
      } 
      ], 
      "arguments": [ 
      { 
       "name": "PERMISSION", 
       "textValue": "true" 
      } 
      ] 
     } 
     ], 
     "surface": { 
     "capabilities": [ 
      { 
      "name": "actions.capability.AUDIO_OUTPUT" 
      }, 
      { 
      "name": "actions.capability.SCREEN_OUTPUT" 
      } 
     ] 
     }, 
     "device": { 
     "location": { 
      "coordinates": { 
      "latitude": 37.4219806, 
      "longitude": -122.0841979 
      } 
     } 
     }, 
     "isInSandbox": true 
    } 
    }, 
    "agentToAssistantDebug": { 
    "agentToAssistantJson": { 
     "message": "Unexpected apiai response format: Empty speech response", 
     "apiResponse": { 
     "id": "<ID>", 
     "timestamp": "2017-09-05T06:24:41.711Z", 
     "lang": "en", 
     "result": {}, 
     "status": { 
      "code": 200, 
      "errorType": "success" 
     }, 
     "sessionId": "1504592665563" 
     } 
    } 
    }, 
    "sharedDebugInfo": [ 
    { 
     "name": "GOOGLE_SYSTEM_ACTION", 
     "debugInfo": "Your query was handled by Actions on Google." 
    }, 
    { 
     "name": "GOOGLE_SYSTEM_ACTION", 
     "debugInfo": "Your query was handled by Actions on Google." 
    }, 
    { 
     "name": "ResponseValidation", 
     "subDebugEntry": [ 
     { 
      "name": "UnparseableJsonResponse", 
      "debugInfo": "API Version 2: Failed to parse JSON response string with 'INVALID_ARGUMENT' error: \": Cannot find field.\"." 
     } 
     ] 
    } 
    ] 
} 

Utilisation de la bibliothèque Python Flask-Assistant

Comment puis-je résoudre ce problème?

MISE À JOUR Node Le client JS fonctionne ... quel est le problème avec le client Python?

Action Réponse console de débogage

{ 
    "assistantToAgentDebug": { 
    "curlCommand": "curl -v '<URL>'{\"user\":{\"userId\":\"<USER_ID>\",\"locale\":\"en-US\"},\"conversation\":{\"conversationId\":\"<ID>\",\"type\":\"ACTIVE\",\"conversationToken\":\"[\\\"_actions_on_google_\\\",\\\"defaultwelcomeintent-followup\\\"]\"},\"inputs\":[{\"intent\":\"actions.intent.PERMISSION\",\"rawInputs\":[{\"inputType\":\"VOICE\",\"query\":\"yes\"}],\"arguments\":[{\"name\":\"PERMISSION\",\"textValue\":\"true\"}]}],\"surface\":{\"capabilities\":[{\"name\":\"actions.capability.AUDIO_OUTPUT\"}]},\"device\":{\"location\":{\"coordinates\":{\"latitude\":37.4219806,\"longitude\":-122.0841979},\"formattedAddress\":\"Googleplex, Mountain View, CA 94043, United States\",\"zipCode\":\"94043\",\"city\":\"Mountain View\"}},\"isInSandbox\":true}'", 
    "assistantToAgentJson": { 
     "user": { 
     "userId": "<USER_ID>", 
     "locale": "en-US" 
     }, 
     "conversation": { 
     "conversationId": "<ID>", 
     "type": "ACTIVE", 
     "conversationToken": "[\"_actions_on_google_\",\"defaultwelcomeintent-followup\"]" 
     }, 
     "inputs": [ 
     { 
      "intent": "actions.intent.PERMISSION", 
      "rawInputs": [ 
      { 
       "inputType": "VOICE", 
       "query": "yes" 
      } 
      ], 
      "arguments": [ 
      { 
       "name": "PERMISSION", 
       "textValue": "true" 
      } 
      ] 
     } 
     ], 
     "surface": { 
     "capabilities": [ 
      { 
      "name": "actions.capability.AUDIO_OUTPUT" 
      } 
     ] 
     }, 
     "device": { 
     "location": { 
      "coordinates": { 
      "latitude": 37.4219806, 
      "longitude": -122.0841979 
      }, 
      "formattedAddress": "Googleplex, Mountain View, CA 94043, United States", 
      "zipCode": "94043", 
      "city": "Mountain View" 
     } 
     }, 
     "isInSandbox": true 
    } 
    }, 
    "agentToAssistantDebug": { 
    "agentToAssistantJson": { 
     "conversationToken": "[\"_actions_on_google_\",\"defaultwelcomeintent-followup\"]", 
     "expectUserResponse": true, 
     "expectedInputs": [ 
     { 
      "inputPrompt": { 
      "richInitialPrompt": { 
       "items": [ 
       { 
        "simpleResponse": { 
        "textToSpeech": "Given permission" 
        } 
       } 
       ] 
      } 
      }, 
      "possibleIntents": [ 
      { 
       "intent": "assistant.intent.action.TEXT" 
      } 
      ] 
     } 
     ], 
     "responseMetadata": { 
     "status": { 
      "code": 14 
     }, 
     "queryMatchInfo": { 
      "queryMatched": true, 
      "intent": "Default Welcome Intent - fallback" 
     } 
     } 
    } 
    } 
} 

Demande de serveur Actions à mon serveur webhook noeud JS

{ originalRequest: 
    { source: 'google', 
    version: '2', 
    data: 
     { isInSandbox: true, 
     surface: [Object], 
     inputs: [Array], 
     user: [Object], 
     device: [Object], 
     conversation: [Object] } }, 
    id: '<ID>', 
    timestamp: '2017-09-06T05:43:21.342Z', 
    lang: 'en', 
    result: 
    { source: 'agent', 
    resolvedQuery: 'actions_intent_PERMISSION', 
    speech: '', 
    action: 'DefaultWelcomeIntent.DefaultWelcomeIntent-fallback', 
    actionIncomplete: false, 
    parameters: {}, 
    contexts: [ [Object], [Object], [Object], [Object], [Object] ], 
    metadata: 
     { intentId: '<ID>', 
     webhookUsed: 'true', 
     webhookForSlotFillingUsed: 'false', 
     nluResponseTime: 2, 
     intentName: 'Default Welcome Intent - fallback' }, 
    fulfillment: { speech: 'Given permission', messages: [Array] }, 
    score: 1 }, 
    status: { code: 200, errorType: 'success' }, 
    sessionId: '<SID>' 
    } 

API.ai paramètres Intention
Fallback Intent for Welcome Intent Fallback Intent details

+1

Pouvez-vous montrer l'JSON vous réagissez avec dans votre accomplissement. –

+0

J'utilise la bibliothèque d'assistants flask http://flask-assistant.readthedocs.io/en/latest/quick_start.html Mais pour ce problème, il n'y a pas de hit sur mon serveur. –

+0

Pouvez-vous poster une capture d'écran de l'intention dans API.AI que vous pensez devoir gérer le consentement de l'utilisateur? – Prisoner

Répondre

0

La raison la plus probable pour laquelle vous n'obtenez aucun résultat sur votre webhook est que vous n'avez pas d'intention enregistrée pour obtenir la réponse. Vous pouvez le faire en créant une intention avec l'événement défini sur actions_intent_PERMISSION.

Voir aussi les réponses sur le SO suivantes:

+0

Cela fonctionne en utilisant le noeud. Mais avec python je reçois cette erreur. –

+0

S'il vous plaît mettre à jour votre question pour indiquer cette information, avec la capture d'écran de l'intention que vous pensez le manipuler. Puisque le noeud le gère, pouvez-vous également fournir le JSON que ce noeud reçoit quand il fonctionne? – Prisoner

+0

mise à jour question .. s'il vous plaît vérifier –