Не удалось проанализировать ответ Dialogflow в AppResponse из-за пустого речевого ответа, когда размер ответа превышает 1021 символ
Я разрабатываю действие Google с выполнением Dialogflow и у меня странная ошибка. В какой-то момент ответ неправильно анализируется в AppResponse, хотя он правильно сформирован.
Единственное отличие, кажется, размер. Я измерил размер и обнаружил, что когда ответ JSON от backend превышает 1021 символ (достаточно одного символа в тексте), он дает мне эту ошибку:
Не удалось проанализировать ответ Dialogflow в AppResponse из-за пустого речевого ответа
Воспроизводимо добавлять только один дополнительный символ в тексте ответа, и это приводит к сбою ответа.
Я не могу найти никаких ограничений по размеру относительно ответа JSON. Все ограничения в ответном тексте и карточке достаточны для моего примера.
{
"payload": {
"google": {
"expectUserResponse": true,
"richResponse": {
"items": [
{
"simpleResponse": {
"textToSpeech": "328 characters here"
}
},
{
"basicCard": {
"title": "39 characters",
"subtitle": "16 characters",
"formattedText": "82 characters here"
}
}
],
"suggestions": [
{
"title": "13 characters"
},
{
"title": "14 characters"
},
{
"title": "6 characters"
}
]
}
}
},
"outputContexts": [
{
"name": "default",
"lifespanCount": 99,
"parameters": {
"data": "54 characters"
}
}
]
}
1 ответ
Эта проблема была связана со сжатием сервера NodeJS Express в сочетании со шлюзом API AWS. После определенного порога сервер Express активирует кодировку содержимого GZIP, которую AWS API Gateway не понимает. Отключение сжатия решило проблему.