actions-on-google / actions-on-google-nodejs

Node.js client library for Actions on Google
https://actions-on-google.github.io/actions-on-google-nodejs
Apache License 2.0
900 stars 197 forks source link

On Google Home devices MediaObject stops playing after one second #348

Open GPack1 opened 4 years ago

GPack1 commented 4 years ago

I have an action that automatically loops on a collection of shorts audio tracks (each about 30 secs). The action (same action, same code) on Google Assistant app executed on real smartphone works well, but on Google Home devices it has a strange behavior:

So, is there any difference between the MediaObject on smartphone and the Google Home one? Any hints, please? Thanks

UPDATE sept 2019: The behavior of the Home device got worse over the last week (without changes to the active code): now the first track plays completely, the second stops after a second, the third doesn't sound at all and the loop stops (crashes?).

SAMPLE CODE:

-> The next track automatically plays at receiving MEDIA_STATUS = FINISHED

app.intent('Media Status', (conv) => {
   const mediaStatus = conv.arguments.get('MEDIA_STATUS');
   if (mediaStatus && mediaStatus.status === 'FINISHED') {
      // Automatically start playing the next track
      nextTrackPower(conv, true, false, datapower);
   } else {
      console.log('Unknown media status received.');
      conv.close(getRandomPrompt(conv, 'error'));
   }
});

-> Then I emit three ask command from nextTrackPower() function (an intro text, in the middle the right MediaObject, finally some suggestion chips)

const nextTrackPower = (conv, intro, backwards, datapower) => {
   // Loops the tracks
    --- OMITTED ---
   // Plays the next track
   trackpower = datapower[conv.user.storage.trackpower - 1];

   // Add a prompt intro
   if (intro) {
      conv.ask(nextPrompt);
   }

   // Create a media response
   conv.ask(new MediaObject({
    name: trackpower.title,
    url: POWER_BASE_URL + trackpower.clip,
    description: trackpower.artist,
    icon: new Image({
      url: POWER_BASE_URL + trackpower.link,
      alt: 'Media icon'
       })
    }));

   // Add suggestions to continue the conversation
     conv.ask(suggestions1 );
};
actionsoneverything commented 4 years ago

Cheeky workaround to detect a lack of screen then play 1s blank audio between your tracks? 😄

Fleker commented 4 years ago

Can you provide a code sample to reproduce this behavior? Are you jumping from one media response directly into the next one? Are you adding in any simple text responses?

igilham commented 4 years ago

Unfortunately the blank audio solution is not allowed, even if it works and they don't really check up on you.

GPack1 commented 4 years ago

Added sample code

Fleker commented 4 years ago

Can you make your sample more off-the-shelf, so I can better reproduce it.

kouz75 commented 4 years ago

Hi, @GPack1 have you found a solution ? We have the same issue with differents AoG. We use Jovo Framework instead of actions on google but the bug is the same ...

GPack1 commented 4 years ago

@kouz75 Hi, sorry no solution so far. I checked several times, the code works well on smartphones. I hope the bug will be fixed soon on the Home device.

GPack1 commented 4 years ago

I added updates about behavior on Home device.