2017-07-24 3 views
0

J'ai le problème suivant avec Java sur AWS lambda:onPlaybackNearlyFinished ne fonctionne pas

L'intention appelée « PlaybackNearlyFinished » ne fonctionne pas, alias, ne joue pas le fichier audio que je suis le nourrir. Quelqu'un peut-il craquer exactement pourquoi cela ne fonctionne pas?

Voici mon code Java:

@Override 
    public SpeechletResponse onPlaybackFinished(SpeechletRequestEnvelope<PlaybackFinishedRequest> 
                 speechletRequestEnvelope) { 
    // logging info("onPlaybackFinished start"); 


    SpeechletResponse response = new SpeechletResponse(); 

    Stream stream = new Stream(); 
    stream.setToken("test mp3"); 
    stream.setUrl("https://ia802508.us.archive.org/5/items/testmp3testfile/mpthreetest.mp3"); 
    stream.setOffsetInMilliseconds(0); 

    AudioItem audioItem = new AudioItem(); 
    audioItem.setStream(stream); 

    PlayDirective playDirective = new PlayDirective(); 
    playDirective.setAudioItem(audioItem); 
    playDirective.setPlayBehavior(PlayBehavior.REPLACE_ALL); 

    List<Directive> directives = new ArrayList<>(); 
    directives.add(playDirective); 
    response.setDirectives(directives); 
    response.setShouldEndSession(true); 
    // logging info("onPlaybackFinished end, return testmp3"); 

    return response; 
    } 

Répondre

0

quelques points ici:

  1. La méthode a montré avait le nom de onPlaybackFinished alors qu'il aurait dû être onPlaybackNearlyFinished
  2. On dirait que le le nouveau flux manque le jeton précédent attendu. Il devrait être égal au jeton du ruisseau qui termine - requestEnvelope.getRequest().getToken()
  3. Je voudrais aussi fait PlayBehavior.ENQUEUE au lieu de PlayBehavior.REPLACE_ALL mais je ne suis pas sûr ici ... expérimenter encore

Hope it helps!