2017-06-26 2 views
1

J'utilise le "AudioPlayer" du "Alexa Skill Kit" pour diffuser une URL au format audio HLS. Je ne reçois aucune erreur d'AWS Lambda et du portail de développeur. Je teste en utilisant l'écho silencieux (https://silentecho.bespoken.io/). Alexa est capable de lire des URL au format MP3, et certains HLS que j'ai trouvés sur le forum. Cependant, mon URL HLS ne fonctionne pas.Alexa Compétences: L'URL du flux HLS AudioPlayer ne fonctionne pas

Mon URL HLS: http://cpdc101-lh.akamaihd.net/i/[email protected]/master.m3u8

Autre URL HLS: https://as-hls-ww-live.bbcfmt.hs.llnwd.net/pool_6/live/bbc_radio_fourfm/bbc_radio_fourfm.isml/bbc_radio_fourfm-audio % 3d96000.norewind.m3u8

L'autre URL HLS est en cours de lecture, mais je n'entends rien. Néanmoins, leur travail pendant que mon HLS avec Silent Echo arrive avec cette erreur "il y avait un problème avec la réponse de compétences demandée." Est-ce que quelqu'un voit la différence entre mon lien HLS et le leur?

Quelqu'un peut-il m'aider à comprendre comment faire fonctionner cette URL HLS?

Le code:

var lastPlayedByUser = {}; 
 
var streamURL = "http://cpdc101-lh.akamaihd.net/i/[email protected]/master.m3u8"; 
 

 

 
exports.handler = function(event, context) { 
 
    var player = new SidRothPlayer(event, context); 
 
    player.handle(); 
 
}; 
 

 
var SidRothPlayer = function (event, context) { 
 
    this.event = event; 
 
    this.context = context; 
 
}; 
 

 
SidRothPlayer.prototype.handle = function() { 
 
    var requestType = this.event.request.type; 
 
    var userId = this.event.context ? this.event.context.System.user.userId : this.event.session.user.userId; 
 

 
    if (requestType === "LaunchRequest") { 
 
     this.play(streamURL, 0); 
 

 
    } else if (requestType === "IntentRequest") { 
 
     var intent = this.event.request.intent; 
 
     if (intent.name === "Play") { 
 
      this.play(streamURL, 0); 
 

 
     } else if (intent.name === "AMAZON.PauseIntent") { 
 
      this.stop(); 
 

 
     } else if (intent.name === "AMAZON.ResumeIntent") { 
 
      var lastPlayed = this.loadLastPlayed(userId); 
 
      var offsetInMilliseconds = 0; 
 
      if (lastPlayed !== null) { 
 
       offsetInMilliseconds = lastPlayed.request.offsetInMilliseconds; 
 
      } 
 

 
      this.play(streamURL, offsetInMilliseconds); 
 
     } 
 
    } else if (requestType === "AudioPlayer.PlaybackStopped") { 
 
     this.saveLastPlayed(userId, this.event); 
 
     this.context.succeed(true); 
 
    } 
 
}; 
 

 

 
SidRothPlayer.prototype.play = function (audioURL, offsetInMilliseconds) { 
 
    var response = { 
 
     version: "1.0", 
 
     response: { 
 
      shouldEndSession: true, 
 
      directives: [ 
 
       { 
 
        type: "AudioPlayer.Play", 
 
        playBehavior: "REPLACE_ALL", 
 
        audioItem: { 
 
         stream: { 
 
          url: audioURL, 
 
          token: "0", 
 
          expectedPreviousToken: null, 
 
          offsetInMilliseconds: offsetInMilliseconds 
 
         } 
 
        } 
 
       } 
 
      ] 
 
     } 
 
    }; 
 

 
    this.context.succeed(response); 
 
}; 
 

 

 
SidRothPlayer.prototype.stop = function() { 
 
    var response = { 
 
     version: "1.0", 
 
     response: { 
 
      shouldEndSession: true, 
 
      directives: [ 
 
       { 
 
        type: "AudioPlayer.Stop" 
 
       } 
 
      ] 
 
     } 
 
    }; 
 

 
    this.context.succeed(response); 
 
}; 
 

 
SidRothPlayer.prototype.saveLastPlayed = function (userId, lastPlayed) { 
 
    lastPlayedByUser[userId] = lastPlayed; 
 
}; 
 

 
SidRothPlayer.prototype.loadLastPlayed = function (userId) { 
 
    var lastPlayed = null; 
 
    if (userId in lastPlayedByUser) { 
 
     lastPlayed = lastPlayedByUser[userId]; 
 
    } 
 
    return lastPlayed; 
 
};

Répondre

1

URL de votre flux doit être https.

0

Merci Wejd DAGHFOUS. J'ai changé l'URL en HTTPS et l'erreur est partie! Je peux le jouer maintenant, mais comme les autres liens HLS, je ne peux rien entendre.

Merci joseluismg. Savez-vous si le HLS doit être seulement audio à jouer?

+0

Je viens de tester d'autres HLS que je crois être seulement audio. Ce sont des stations de radio. Travaillé en VLC, cependant il n'est pas joué sur mon écho silencieux. Autres HLS: - https://c4.prod.playlists.ihrhls.com/3379/playlist.m3u8 - http://radioitaliasmi-lh.akamaihd.net/i/[email protected]/ master.m3u8 - http://radiom2o-lh.akamaihd.net/i/[email protected]/master.m3u8 –

+0

La méthode correcte consiste simplement à convertir l'URL en HTTPS. Réponse super simple, merci Wejd. –