Я использую настройку тестового приложения в Google Action. Итак, я сделал новое действие, а затем создал его агент на Dialogflow и Firebase.
В агенте Dialogflow я использовал опцию «Восстановить из Zip» в настройках проекта. Теперь все намерения восстановлены.
Я перешел на вкладку выполнения и переключил опцию Webhook, использовал ссылку для webhook и сохранил ее (я использовал ngrok http 5000 в качестве сервера для генерации ссылки на Webhook, которую я должен обновлять при каждом повторном запуске сервера). Теперь я вернулся к своему действию и попытался протестировать мое приложение с симулятора и получил ошибку «Не удалось проанализировать ответ Dialogflow в AppResponse из-за пустого речевого ответа».
Я проверил токен доступа клиента в настройках Агента диалога и вкладке Отладка в симуляторе консоли действий, и оба они были одинаковыми.
В консоли ngrok отображается «302 найдено».
302 Найденная ошибка и ошибка 404 Не найден
Я попытался удалить и снова собрать Агента Dialogflow, но результат был тот же.
Это ответ, который генерируется при тестировании моего приложения.
{
"responseMetadata": {
"status": {
"code": 10,
"message": "Failed to parse Dialogflow response into AppResponse because of empty speech response",
"details": [
{
"@type": "type.googleapis.com/google.protobuf.Value",
"value": "{\"id\":\"13defd18-3bd2-49f9-832f-c084e2c67a50\",\"timestamp\":\"2019-04-10T13:55:33.587Z\",\"lang\":\"en-us\",\"result\":{},\"status\":{\"code\":206,\"errorType\":\"partial_content\",\"errorDetails\":\"Webhook call failed. Error: Failed to parse webhook JSON response: Expect message object but got: null.\"},\"sessionId\":\"ABwppHFKNCvUrR9vysffVhu2E6smTc7lBCsXs6GKh77cfjRgDjhYBw-voVq5fYcbE0YLoT4KRhE_G8lRiT8lab84FTU0bw\"}"
}
]
}
}
}
И это отображается на вкладке «Отладка»
{
"response": "Archive test isn't responding right now. Try again soon.",
"expectUserResponse": true,
"conversationToken": "Eo8CS2s1M0...",
"audioResponse": "//NExAARSI...",
"ssmlMarkList": [],
"debugInfo": {
"assistantToAgentDebug": {
"curlCommand": "curl -v 'https://api.api.ai/api/integrations/google?token=749bb0fdf16048d09d1c6109db620061' -H 'Content-Type: application/json;charset=UTF-8' -H 'Google-Actions-API-Version: 2' -H 'Authorization: eyJhbGciOiJSUzI1NiIsImtpZCI6IjZmNjc4MWJhNzExOTlhNjU4ZTc2MGFhNWFhOTNlNWZjM2RjNzUyYjUiLCJ0eXAiOiJKV1QifQ.eyJpc3MiOiJodHRwczovL2FjY291bnRzLmdvb2dsZS5jb20iLCJhdWQiOiJpbnRlcm5ldC1hcmNoaXZlLTg0MTBkIiwibmJmIjoxNTU0OTA3OTAxLCJpYXQiOjE1NTQ5MDgyMDEsImV4cCI6MTU1NDkwODMyMSwianRpIjoiNDNlYmQyNDg2NGFkYTdjZDg5MjBiMjMzOGM1OTFhM2Y2ZTUzMjYzNyJ9.XIhb-qvfBXw1luas0zUIFNZIwIjN1yDsHe9SAQiM2pO9pru6f6rA-lkr2Fk0M2NSQyFa1qVot8Tx7zv8Xd4t0ZEThVw2sTCiWr1Xg4G7s-VN1UbVve9gty2j4IbWxxMdyqmmwzK3h9Q5dC19GgiZkK_e4muAVCIu5tah-OGVqyAWdh2X4WoyooWaLQ3U8TjoojX08vkDqEBkgXZbWOozBIbqhU8S5uJBDj2BG5ddtIEqwIAlmBwfJGCzjLjcdfFNmg9_x-TXz2lHh8x35_LbHWuRWcvlHxWRalSWiPJRV-0MiGp4YLPytYF3ukcaNibLOmg7UOIdlDB52EiIfrqPQQ' -A 'Mozilla/5.0 (compatible; Google-Cloud-Functions/2.1; +http://www.google.com/bot.html)' -X POST -d '{\"user\":{\"userId\":\"ABwppHE--5IkRBwbhoIw34x3AcE1bsikcwcWHlOhgn0TnFrdWmYlARBBuxXF0Kkw_6_U5QsVRQ78RA5KjrCaeDLhuuLQyw\",\"locale\":\"en-US\",\"lastSeen\":\"2019-04-10T14:53:34Z\"},\"conversation\":{\"conversationId\":\"ABwppHEoy1L0upi8ML-kl2otjumOoWAtXa4v5dOJC3vXXCkoD4EPyjPmtWEG6unJD_8_fO0Ddxwo2T7x5g7LwordBkb-ew\",\"type\":\"NEW\"},\"inputs\":[{\"intent\":\"actions.intent.MAIN\",\"rawInputs\":[{\"inputType\":\"KEYBOARD\",\"query\":\"Talk to archive test\"}]}],\"surface\":{\"capabilities\":[{\"name\":\"actions.capability.MEDIA_RESPONSE_AUDIO\"},{\"name\":\"actions.capability.AUDIO_OUTPUT\"},{\"name\":\"actions.capability.ACCOUNT_LINKING\"},{\"name\":\"actions.capability.WEB_BROWSER\"},{\"name\":\"actions.capability.SCREEN_OUTPUT\"}]},\"isInSandbox\":true,\"availableSurfaces\":[{\"capabilities\":[{\"name\":\"actions.capability.SCREEN_OUTPUT\"},{\"name\":\"actions.capability.WEB_BROWSER\"},{\"name\":\"actions.capability.AUDIO_OUTPUT\"}]}],\"requestType\":\"SIMULATOR\"}'",
"assistantToAgentJson": "{\"user\":{\"userId\":\"ABwppHE--5IkRBwbhoIw34x3AcE1bsikcwcWHlOhgn0TnFrdWmYlARBBuxXF0Kkw_6_U5QsVRQ78RA5KjrCaeDLhuuLQyw\",\"locale\":\"en-US\",\"lastSeen\":\"2019-04-10T14:53:34Z\"},\"conversation\":{\"conversationId\":\"ABwppHEoy1L0upi8ML-kl2otjumOoWAtXa4v5dOJC3vXXCkoD4EPyjPmtWEG6unJD_8_fO0Ddxwo2T7x5g7LwordBkb-ew\",\"type\":\"NEW\"},\"inputs\":[{\"intent\":\"actions.intent.MAIN\",\"rawInputs\":[{\"inputType\":\"KEYBOARD\",\"query\":\"Talk to archive test\"}]}],\"surface\":{\"capabilities\":[{\"name\":\"actions.capability.MEDIA_RESPONSE_AUDIO\"},{\"name\":\"actions.capability.AUDIO_OUTPUT\"},{\"name\":\"actions.capability.ACCOUNT_LINKING\"},{\"name\":\"actions.capability.WEB_BROWSER\"},{\"name\":\"actions.capability.SCREEN_OUTPUT\"}]},\"isInSandbox\":true,\"availableSurfaces\":[{\"capabilities\":[{\"name\":\"actions.capability.SCREEN_OUTPUT\"},{\"name\":\"actions.capability.WEB_BROWSER\"},{\"name\":\"actions.capability.AUDIO_OUTPUT\"}]}],\"requestType\":\"SIMULATOR\"}",
"delegatedRequest": {
"delegatedRequest": ""
}
},
"agentToAssistantDebug": {
"agentToAssistantJson": "{\n \"responseMetadata\": {\n \"status\": {\n \"code\": 10,\n \"message\": \"Failed to parse Dialogflow response into AppResponse because of empty speech response\",\n \"details\": [{\n \"@type\": \"type.googleapis.com/google.protobuf.Value\",\n \"value\": \"{\\\"id\\\":\\\"1d8ba08c-783a-4de8-8241-1942da0de46e\\\",\\\"timestamp\\\":\\\"2019-04-10T14:56:42.073Z\\\",\\\"lang\\\":\\\"en-us\\\",\\\"result\\\":{},\\\"status\\\":{\\\"code\\\":206,\\\"errorType\\\":\\\"partial_content\\\",\\\"errorDetails\\\":\\\"Webhook call failed. Error: Failed to parse webhook JSON response: Expect message object but got: null.\\\"},\\\"sessionId\\\":\\\"ABwppHEoy1L0upi8ML-kl2otjumOoWAtXa4v5dOJC3vXXCkoD4EPyjPmtWEG6unJD_8_fO0Ddxwo2T7x5g7LwordBkb-ew\\\"}\"\n }]\n }\n }\n}",
"delegatedResponse": {
"delegatedResponse": ""
}
},
"sharedDebugInfoList": [
{
"name": "ResponseValidation",
"debugInfo": "",
"subDebugEntryList": [
{
"name": "MalformedResponse",
"debugInfo": "Failed to parse Dialogflow response into AppResponse because of empty speech response.",
"subDebugEntryList": []
}
]
}
]
},
"visualResponse": {
"visualElementsList": [
{
"displayText": {
"content": "Archive test isn't responding right now. Try again soon."
}
}
],
"suggestionsList": [],
"agentLogoUrl": ""
},
"clientError": 0,
"is3pResponse": true,
"clientOperationList": [],
"projectName": ""
}
Выход с ошибкой
MalformedResponse
Failed to parse Dialogflow response into AppResponse because of empty speech response.