Диалоговый поток - MediaResponse работает в симуляторе, но не в Google Assistant - Требования к серверу - PullRequest
0 голосов
/ 07 февраля 2020

Я создаю небольшого Dialogflow-Chatbot, который предполагается использовать в Google Assistant. Суть в том, что он должен отправлять .mp3-файлы (> 120 с), которые находятся на моем частном сервере, как MediaResponse для определенных команд.

Для этого я настроил свой сервер как выполнение для этих команд, который должен отправить MediaResponse. На данный момент Backend написан в Python и отправляет чистые JSON -файлы. Я использую пример из https://developers.google.com/assistant/conversational/responses#df_json_media_response:

SAMPLE_PAYLOAD_JSON = {
    "payload": {
        "google": {
            "richResponse": {
                "items": [
                    {
                        "simpleResponse": {
                            "textToSpeech": "Ok, here is a file for you."
                        }
                    },
                    {
                        "mediaResponse": {
                            "mediaType": "AUDIO",
                            "mediaObjects": [
                                {
                                    "name": "Name-of-my-file",
                                    "contentUrl": "https://storage.googleapis.com/automotive-media/Jazz_In_Paris.mp3",
                                    "description": "3 min meditation",
                                    "largeImage": {
                                        "url": "https://storage.googleapis.com/automotive-media/album_art.jpg",
                                        "accessibilityText": "Album cover of an ocean view"
                                    }
                                }
                            ]
                        }
                    }
                ],
                "suggestions": [
                    {
                        "title": "That was appropriate"
                    },
                    {
                        "title": "I didn't like this one"
                    },
                ]
            }
        }
    }
}

Теперь этот точный Media Response работает отлично, как в симуляторе на https://console.actions.google.com, так и также как в Google Assistant на моем телефоне.

Однако, как я уже говорил, я хочу, чтобы он работал с файлами на моем сервере, и по какой-то причине, если я изменил contentURL на URL на моем сервере (я просто использовал исходный файл примера, скопированный на мой сервер: https://cstenkamp.de/meditation_files/Jazz_In_Paris.mp3), он больше не работает в Google Assistant. В симуляторе он по-прежнему работает нормально, но если я попробую его на любом телефоне с помощью Google Assistant, он попытается загрузить аудиофайл и завершится сообщением «Unable to play audio».

Так что мне остается только подумать, какие-либо требования к серверу для Google Asstant Media Response, в частности, которые отсутствуют для симулятора.

О моем сервере: это самая маленькая дроплет DigitalOcean, 512 МБ оперативной памяти, Ubuntu 16, с apache2. HTTPS доступен, и файл может быть доступен из браузера (см. Вторую ссылку). Pinging занимает 25 мс в отличие от 15 мс для storage.googleapis.com. URL-адрес берется из NameCheap, если это как-то уместно: shrug:

Спасибо, если я не достаточно хорошо указывал муравейник, пожалуйста, дайте мне знать.

...