Я разрабатываю приложение Google Assistant / Dialogflow с помощью Jovo, и у меня возникла следующая проблема:
Я отвечаю ответом в формате mp3 (с подсказками и коротким вводным предложением, чтобы остаться в сеансе). Пока воспроизводится вступительное предложение, я могу без проблем использовать фишки предложений / голосовой ввод, например, для вызова другого намерения. Но как только медиа начинает воспроизводить каждое действие, которое я сделаю (чип голосового ввода / предложения), отправляет только событие MediaStatus FINISHED (и резервное намерение) без каких-либо указаний на ввод, сделанный пользователем.
Обновление: Я использовал такие термины, как «предыдущий / следующий эпизод» (по-немецки!). Каким-то образом Google использовал это для управления медиаплеером. Сегодня у меня была возможность протестировать это на Nest Hub, и на мой сервер не было отправлено никаких запросов, но MP3 был запущен с самого начала. Другие намерения, такие как "hello world", работают.
В проекте Jovo я слушаю событие FINISHED , но это не должно влиять на запрос, отправляемый Google Assistant.
AUDIOPLAYER: {
'GoogleAction.Finished': MediaFinishedIntent
},
Вот запрос к моему серверу после нажатия на чип предложения во время воспроизведения звука:
{
"responseId": "04956876-1bf2-4a04-ac1f-1858d1c6e8c1-83ffff32",
"queryResult": {
"parameters": {},
"allRequiredParamsPresent": true,
"outputContexts": [
{
"name": "projects/#####/agent/sessions/ABwppHGYIsRPePpGT26p294iQNlywszGliHgYFtqGviNuIgtsmP33jEh5WP4xjri8770RzQozJ3innKInSq7sFz15HMW/contexts/actions_capability_screen_output"
},
{
"name": "projects/#####/agent/sessions/ABwppHGYIsRPePpGT26p294iQNlywszGliHgYFtqGviNuIgtsmP33jEh5WP4xjri8770RzQozJ3innKInSq7sFz15HMW/contexts/actions_capability_web_browser"
},
{
"name": "projects/#####/agent/sessions/ABwppHGYIsRPePpGT26p294iQNlywszGliHgYFtqGviNuIgtsmP33jEh5WP4xjri8770RzQozJ3innKInSq7sFz15HMW/contexts/actions_capability_audio_output"
},
{
"name": "projects/#####/agent/sessions/ABwppHGYIsRPePpGT26p294iQNlywszGliHgYFtqGviNuIgtsmP33jEh5WP4xjri8770RzQozJ3innKInSq7sFz15HMW/contexts/actions_capability_media_response_audio"
},
{
"name": "projects/#####/agent/sessions/ABwppHGYIsRPePpGT26p294iQNlywszGliHgYFtqGviNuIgtsmP33jEh5WP4xjri8770RzQozJ3innKInSq7sFz15HMW/contexts/actions_capability_account_linking"
},
{
"name": "projects/#####/agent/sessions/ABwppHGYIsRPePpGT26p294iQNlywszGliHgYFtqGviNuIgtsmP33jEh5WP4xjri8770RzQozJ3innKInSq7sFz15HMW/contexts/_jovo_session_nbtbg",
"parameters": {
"sLastResponseName": "oEpisode"
}
},
{
"name": "projects/#####/agent/sessions/ABwppHGYIsRPePpGT26p294iQNlywszGliHgYFtqGviNuIgtsmP33jEh5WP4xjri8770RzQozJ3innKInSq7sFz15HMW/contexts/actions_intent_media_status",
"parameters": {
"MEDIA_STATUS": {
"@type": "type.googleapis.com/google.actions.v2.MediaStatus",
"status": "FINISHED"
}
}
},
{
"name": "projects/#####/agent/sessions/ABwppHGYIsRPePpGT26p294iQNlywszGliHgYFtqGviNuIgtsmP33jEh5WP4xjri8770RzQozJ3innKInSq7sFz15HMW/contexts/__system_counters__",
"lifespanCount": 1,
"parameters": {
"no-input": 0,
"no-match": 1
}
}
],
"intent": {
"name": "projects/#####/agent/intents/54975645-dd40-41c9-8380-f49b769b3248",
"displayName": "FallbackIntent",
"isFallback": true
},
"intentDetectionConfidence": 1,
"languageCode": "de"
},
"originalDetectIntentRequest": {
"source": "google",
"version": "2",
"payload": {
"user": {
"locale": "de-DE",
"lastSeen": "2020-06-17T14:08:45Z",
"userStorage": "{\"userId\":\"be340535-0ed2-4cd3-ae52-0b753599d71e\"}",
"userVerificationStatus": "VERIFIED"
},
"conversation": {
"conversationId": "ABwppHGYIsRPePpGT26p294iQNlywszGliHgYFtqGviNuIgtsmP33jEh5WP4xjri8770RzQozJ3innKInSq7sFz15HMW",
"type": "ACTIVE",
"conversationToken": "[\"_jovo_session_nbtbg\"]"
},
"inputs": [
{
"intent": "actions.intent.MEDIA_STATUS",
"rawInputs": [
{}
],
"arguments": [
{
"name": "MEDIA_STATUS",
"extension": {
"@type": "type.googleapis.com/google.actions.v2.MediaStatus",
"status": "FINISHED"
}
}
]
}
],
"surface": {
"capabilities": [
{
"name": "actions.capability.SCREEN_OUTPUT"
},
{
"name": "actions.capability.WEB_BROWSER"
},
{
"name": "actions.capability.AUDIO_OUTPUT"
},
{
"name": "actions.capability.MEDIA_RESPONSE_AUDIO"
},
{
"name": "actions.capability.ACCOUNT_LINKING"
}
]
},
"isInSandbox": true,
"availableSurfaces": [
{
"capabilities": [
{
"name": "actions.capability.AUDIO_OUTPUT"
},
{
"name": "actions.capability.SCREEN_OUTPUT"
},
{
"name": "actions.capability.WEB_BROWSER"
}
]
}
]
}
},
"session": "projects/#####/agent/sessions/ABwppHGYIsRPePpGT26p294iQNlywszGliHgYFtqGviNuIgtsmP33jEh5WP4xjri8770RzQozJ3innKInSq7sFz15HMW"
}
Он всегда имеет FallbackIntent
как намерение, хотя точно такое же Кнопка предложения работает нормально до начала воспроизведения звука. Это должно произойти?
PS: Выполнение этого в консоли действий всегда приводит к пустому блоку, который убивает приложение (запрос не отправляется) Изображение консоли действий