Python Alexa流媒体音频的最简单示例
我正在尝试让新的流式音频API开始运行。以下回答有效吗?当我在我的设备上测试它时,我得到了一个“技能有问题”错误 以下是我的AWS lambda函数的代码:Python Alexa流媒体音频的最简单示例,python,aws-lambda,alexa-skills-kit,Python,Aws Lambda,Alexa Skills Kit,我正在尝试让新的流式音频API开始运行。以下回答有效吗?当我在我的设备上测试它时,我得到了一个“技能有问题”错误 以下是我的AWS lambda函数的代码: def lambda_handler(event, context): return { "response": { "directives": [ { "type": "AudioPlayer.Play",
def lambda_handler(event, context):
return {
"response": {
"directives": [
{
"type": "AudioPlayer.Play",
"playBehavior": "REPLACE_ALL",
"audioItem": {
"stream": {
"token": "12345",
"url": "http://emit-media-production.s3.amazonaws.com/pbs/the-afterglow/2016/08/24/1700/201608241700_the-afterglow_64.m4a",
"offsetInMilliseconds": 0
}
}
}
],
"shouldEndSession": True
}
}
以下代码适用于我:
def lambda_handler(event, context):
return {
"response": {
"directives": [
{
"type": "AudioPlayer.Play",
"playBehavior": "REPLACE_ALL",
"audioItem": {
"stream": {
"token": "12345",
"url": "https://emit-media-production.s3.amazonaws.com/pbs/the-afterglow/2016/08/24/1700/201608241700_the-afterglow_64.m4a",
"offsetInMilliseconds": 0
}
}
}
],
"shouldEndSession": True
}
}
]
唯一的区别是URL是https而不是http
如果在技能模拟器中不起作用,请不要拖延。它还没有升级到流媒体音频。你甚至看不到你的指令。但是,当与您的设备一起使用时,它应该工作。程序应该在“LaunchRequest”和“sessionedrequest”上返回一些响应,否则您将得到“请求的技能报告有问题” 您需要添加意图“播放音乐”并更改文件的url 另外,我不确定哪个
version
应该在build\u audio\u response
函数中,我从
我们在Github上创建了一个非常简单的项目,展示了使用AudioPlayer的最简单方法:
我们还在这里为它创建了一个writeup:
该项目演示如何播放曲目,以及暂停和恢复 下面是显示音频文件实际播放的代码:
SimplePlayer.prototype.play = function (audioURL, offsetInMilliseconds) {
var response = {
version: "1.0",
response: {
shouldEndSession: true,
directives: [{
type: "AudioPlayer.Play",
playBehavior: "REPLACE_ALL", // Setting to REPLACE_ALL means that this track will start playing immediately
audioItem: {
stream: {
url: audioURL,
token: "0", // Unique token for the track - needed when queueing multiple tracks
expectedPreviousToken: null, // The expected previous token - when using queues, ensures safety
offsetInMilliseconds: offsetInMilliseconds
}
}
}]
}
}
this.context.succeed(response);
};
嘿,我看了API。它们有一条与您想要的消息非常相似的示例消息,但有更多字段可标识
标题
和有效负载
。API为,消息位于“示例消息部分”。如果你使用这种格式,你仍然会出现错误吗?只是尝试了一下,似乎没有帮助。这确实适用于HTTPS,但是,你如何让它停止?一旦流启动,Cancel和Stop命令就不起作用了。Stop对我来说很有效(我认为它只是放弃了技能),如果你想处理其他意图,你必须为它们编写自定义处理程序。这太好了,非常感谢!你怎么知道要试试这个?好吧,一开始我以为是因为它缺少正常的标题、输出文本等等。因此,我经历了很多循环,最终在硬件设备上收到一条消息,说需要使用https。一旦成功了,我就一步一步地把我加入的所有其他东西都拿出来,直到剩下这个。所以看起来我只添加了一个字符。但我花了很长时间才弄清楚是哪个角色。:-)谢谢你的分数!您在硬件设备上的何处看到该消息?如果我能在某个地方看到记录的错误,这将对我帮助很大!Alexa在沟通错误方面非常差。我想我说“在硬设备上”时弄错了。我应该说的是“显示在配套应用程序中”。有时它会把有用的东西放在那里。但是,因为它是一款消费类设备,所以信息往往是模糊的和非技术性的。啊,很酷,我会关注这一点,是的,它让开发成为一个真正的挑战,嗯!
SimplePlayer.prototype.play = function (audioURL, offsetInMilliseconds) {
var response = {
version: "1.0",
response: {
shouldEndSession: true,
directives: [{
type: "AudioPlayer.Play",
playBehavior: "REPLACE_ALL", // Setting to REPLACE_ALL means that this track will start playing immediately
audioItem: {
stream: {
url: audioURL,
token: "0", // Unique token for the track - needed when queueing multiple tracks
expectedPreviousToken: null, // The expected previous token - when using queues, ensures safety
offsetInMilliseconds: offsetInMilliseconds
}
}
}]
}
}
this.context.succeed(response);
};