Я кодирую агент с Dialogflow и веб-перехватчиком, написанным на PHP. В последнее время я реструктурировал части своего кода, и теперь я всегда получаю одну и ту же ошибку в «Действиях на консоли Google»:
Не удалось проанализировать ответ Dialogflow в AppResponse из-за недопустимого ответа платформы. Не удалось найти RichResponse или SystemIntent в ответе платформы для agentId
Вот часть кода моего веб-перехватчика:
if($action == "willkommen")
{
$google->Speak("Hallo Welt");
}
$ google - объект созданного мной PHP-класса-оболочки. Код метода Speak () выглядит так:
public function Speak($text,$endConversation=false)
{
if($endConversation)
$expectUserResponse = false;
else
$expectUserResponse = true;
$toGoogle["payload"]["google"]["expectUserResponse"] = $expectUserResponse;
$toGoogle["payload"]["google"]["richResponse"]["items"][0]["simpleResponse"]["textToSpeech"] = $text;
file_put_contents("test.log",json_encode($toGoogle,JSON_PRETTY_PRINT));
echo json_encode($toGoogle,JSON_PRETTY_PRINT);
}
Для отладки я записываю сгенерированный JSON в файл test.log. Это содержит
{
"payload": {
"google": {
"expectUserResponse": true,
"richResponse": {
"items": [
{
"simpleResponse": {
"textToSpeech": "Hallo Welt"
}
}
]
}
}
}
}
Весь код выполняется от начала до конца, потому что как только я редактирую строку, переданную в Speak (), я вижу изменение строки JSON wirtten на test.log em >. Однако я продолжаю получать сообщение об ошибке выше. Что не так с моей JSON-строкой? Как может быть Google не может найти RichResponse?
Большое спасибо! Любая помощь приветствуется!