我写了一个Alexa技能,它使用Lambda函数播放给定网址的唯一音频。
意图叫" PlayAudio"正在工作,并播放我们的JSON格式的API中的第一个音频项目。
意图叫" PlaybackNearlyFinished"不起作用,又称,不播放我正在播放的音频文件。任何人都可以确切地解释为什么这不起作用?
以下是我的Lambda函数的一个部分,其中包含两个Intent:
Fact.prototype.intentHandlers = {
"PlayAudio": function (event, context, response) {
fetchEnseParse("/latest", function(body) {
if(body == "error") {
}
else {
var directives = body.enses.map(function(ense) {
var a = ense[1].fileUrl;
return {
'playBehavior': 'REPLACE_ALL',
'audioItem':
{
'stream':
{
'url': 'https://s3.amazonaws.com/media.ense.nyc/enses/2017_01_13T16_57_20.190Z/30312/0',
'token': '33529',
'offsetInMilliseconds': 0
}
},
'type': 'AudioPlayer.Play'
};
})
}
var jsonresponse = {
'outputSpeech': {
'text': '',
'type': 'PlainText'
},
'directives': [directives[0]]
};
response.justUseThisJsonPlease( { response: jsonresponse } );
});
},
"AudioPlayer.PlaybackNearlyFinished" : function(event, context, response) {
var second =
{
"type": "AudioPlayer.Play",
"playBehavior": "REPLACE_ENQUEUED",
"audioItem": {
"stream": {
"url": "https://s3.amazonaws.com/media.ense.nyc/enses/violetindigoviolet/30034/0",
"token": "33530",
"offsetInMilliseconds": 0
}
}
}
response.justUseThisJsonPlease( { response: second } );
},
答案 0 :(得分:4)
您似乎在回复中包含了outputSpeech。
对于常规意图,这是可以的,但对于此页面,不适用于AudioPlayer请求: https://developer.amazon.com/public/solutions/alexa/alexa-skills-kit/docs/custom-audioplayer-interface-reference
查看确切的有效负载也可以提供帮助。您可以使用它在本地测试并获取: https://bespoken.tools/blog/2016/08/24/introducing-bst-proxy-for-alexa-skill-development
你应该看到来自Alexa的额外请求,SystemExceptionEncountered,它应该提供有关错误的更多信息。当对AudioPlayer请求的响应不正确时,它会发送此信息。