友
我正在研究一种试图从公共可访问的S3存储桶中传输mp3文件的Alexa技能。我的lambda函数工作正常,并返回一个audio指令。我使用的是npm包alexa-sdk。
然而,当响应被发送回Echo设备时,我收到了#34的一般错误;您的技能响应出错。"我用Google搜索某种类型的Alexa响应lintet来尝试验证我的响应对象。
下面是我的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 :(得分:0)
根据AudioPlayer Directives Documentation,在向服务器发送AudioPlayer指令时,必须设置类型属性并将其包含在响应的指令数组中。根据你的例子,你没有这样做。
在您的示例中,在键 playBehavior 之前,您应该添加以下键:
"type": "AudioPlayer.Play",
另外,请确保您的音频符合亚马逊的要求:
支持的音频文件格式包括AAC / MP4,MP3,HLS,PLS和M3U。比特率:16kbps至384kbps。