2017-10-05 102 views
0

朋友,如何获得一个Alexa技巧流媒体MP3到设备

我正在努力尝试从可公开访问的S3存储桶流式传输MP3文件的Alexa技能。我的lambda函数正常工作,并返回一个音频指令。我正在使用npm包alexa-sdk。

但是,当响应被发送回Echo设备时,我收到了一个“您的技能响应出现错误”的通用错误。我搜索了一些Alexa响应小组的类型来尝试和验证我的响应对象。

下面是我的lambda函数IntentHandler,以及从所述函数返回的响应对象。有人可以看看并指出他们看到的任何错误吗?非常感谢。

var handlers = { 
'LaunchRequest': function() { 
    this.emit(':tell', 'Hello'); 
}, 
GetVoiceMailIntent: function(){ 
    this.response.audioPlayerPlay('REPLACE_ALL', 'https://s3.amazonaws.com/romevm/call_1001.mp3', 'vmtoken', 0); 
    this.emit(':responseReady'); 
}, 
SessionEndedRequest: function() { 
console.log('session ended!'); 
} 
} //end intent handlers 

*********** RESPONSE ************** 
{ 
    "version": "1.0", 
    "response": { 
    "speechletResponse": { 
    "directives": [ 
    { 
     "playBehavior": "REPLACE_ALL", 
     "audioItem": { 
     "stream": { 
      "expectedPreviousToken": "0", 
      "token": "vmtoken", 
      "url": "https://s3.amazonaws.com/romevm/call_1001.mp3", 
      "offsetInMilliseconds": 0 
     } 
     } 
    } 
    ], 
    "shouldEndSession": true 
    } 
},"sessionAttributes": {} 
} 

回答

0

按照AudioPlayer Directives Documentation,发送AudioPlayer指令到服务器时,你必须设置类型属性,包括它的响应指令阵列英寸根据你的例子,你没有这样做。

在你的榜样,关键playBehavior之前,您应该添加以下注册表项:

"type": "AudioPlayer.Play", 

此外,还要确保与亚马逊的要求,你的声音符合以下标准:

为支持的格式音频文件包括AAC/MP4,MP3,HLS,PLS和M3U。比特率:16kbps至384kbps。