Alexa - 在audioPlayer.Play期间执行后台任务

时间:2018-06-05 18:24:42

标签: node.js alexa alexa-skills-kit

当Alexa正在使用audioPlayer.Play播放内容时,如何执行任何后台任务?

下面播放音频流,但我需要在后台执行其他任务,而不会在播放流时进行干预。我知道这是可能的,因为其他技能可以做到。

var handlers = {
  'LaunchRequest': function() {
    this.emit('Play');        
  },

  'Play': function() {   

    this.response.speak('Sure.').
    audioPlayerPlay(
        'REPLACE_ALL', 
        stream.url, 
        stream.url, 
        null, 
        0);

    this.emit(':responseReady');
    }
}

有人知道或有任何建议吗?从我所看到的,一旦它开始播放流,我不能让它做任何事情,除非我打断流来指挥另一个意图?

1 个答案:

答案 0 :(得分:0)

为了这个目的,Alexa有一些内置请求,她会在音频流的整个生命周期内发送给您的技能!它们如下:

  1. AudioPlayer.PlaybackStarted - 新音频项目开始播放时发送。
  2. AudioPlayer.PlaybackNearlyFinished - 当音频项目几乎结束时发送(技能服务最常用于处理下一个项目的排队。)
  3. AudioPlayer.PlaybackFinished - 音频项目结束时发送。
  4. 还有其他一些你可以阅读here的内容,但我的猜测是这些可以满足您的需求。

    要使用它们,只需在代码中为任何这些请求设置处理程序,并执行您需要的任何任务!

    我根本不知道node.js,但我的猜测是最终结果看起来比较接近:

    var handlers = {
      'LaunchRequest': function() { /* your launch request code from above */ }
      'Play': function() { /* your play code from above */ }
      'AudioPlayer.PlaybackNearlyFinished': function() { 
        // Perform any background tasks here
      }
    }