如何在 alexa 中添加多个曲目以进行流式传输?
How to add multiple track to stream in alexa?
我是第一次在 alexa 上工作,我正在开发一个音乐应用程序。我需要添加一位艺术家的多首曲目并连续播放。我无法这样做。但是,一首歌曲可以正常播放,但无法添加和播放多首歌曲。
这是我的代码,
$response = '{
"version" : "1.0",
"response" : {
"outputSpeech": {
"type": "PlainText",
"text": "Playing song for Acon"
},
'.$card.',
"directives": [
{
"type": "AudioPlayer.Play",
"playBehavior": "REPLACE_ALL",
"audioItem": {
"stream": {
"token": "track1",
"url": "https://p.scdn.co/mp3-preview/9153bcc4d7bef50eb80a809fa34e694f2854e539?cid=null",
"offsetInMilliseconds": 0
}
}
}
],
"shouldEndSession" : true
}
}';
您需要等待来自 Alexa 的 AudioPlayer.PlaybackNearlyFinished 请求。那时,您可以排队播放下一首曲目。它将接近当前播放曲目的播放结束。
在回复 PlaybackNearlyFinished 指令时,请确保:
您将 playBehavior 设置为 ENQUEUE
这将导致下一首曲目在当前曲目结束后开始
您不包括 outputSpeech 字段
会话结束时不允许输出语音。当第一个流开始播放时会话结束。
我写的这篇博客 post 详细介绍了 AudioPlayer 接口的开发和测试方法:
https://bespoken.tools/blog/2016/10/10/unit-testing-alexa-skills
然后执行此操作以将第二首歌曲加入队列
在PHP中,您处理其他请求的方式,您也可以处理AudioRequest。例如。
$data = file_get_contents("php://input");
$jsonData = json_decode($data);
if($jsonData->request->type === "AudioPlayer.PlaybackNearlyFinished")
{
$response = '{
"version" : "1.0",
"response" : {
"directives": [
{
"type": "AudioPlayer.Play",
"playBehavior": "ENQUEUE",
"audioItem": {
"stream": {
"token": "track2",
"expectedPreviousToken": "track1",
"url": "Your URL",
"offsetInMilliseconds": 3
}
}
}
],
"shouldEndSession" : true
}
}';
echo $response;
}
这是您可以处理所有 AudioRequest 的方式。
我是第一次在 alexa 上工作,我正在开发一个音乐应用程序。我需要添加一位艺术家的多首曲目并连续播放。我无法这样做。但是,一首歌曲可以正常播放,但无法添加和播放多首歌曲。
这是我的代码,
$response = '{
"version" : "1.0",
"response" : {
"outputSpeech": {
"type": "PlainText",
"text": "Playing song for Acon"
},
'.$card.',
"directives": [
{
"type": "AudioPlayer.Play",
"playBehavior": "REPLACE_ALL",
"audioItem": {
"stream": {
"token": "track1",
"url": "https://p.scdn.co/mp3-preview/9153bcc4d7bef50eb80a809fa34e694f2854e539?cid=null",
"offsetInMilliseconds": 0
}
}
}
],
"shouldEndSession" : true
}
}';
您需要等待来自 Alexa 的 AudioPlayer.PlaybackNearlyFinished 请求。那时,您可以排队播放下一首曲目。它将接近当前播放曲目的播放结束。
在回复 PlaybackNearlyFinished 指令时,请确保:
您将 playBehavior 设置为 ENQUEUE
这将导致下一首曲目在当前曲目结束后开始您不包括 outputSpeech 字段
会话结束时不允许输出语音。当第一个流开始播放时会话结束。
我写的这篇博客 post 详细介绍了 AudioPlayer 接口的开发和测试方法:
https://bespoken.tools/blog/2016/10/10/unit-testing-alexa-skills
然后执行此操作以将第二首歌曲加入队列
在PHP中,您处理其他请求的方式,您也可以处理AudioRequest。例如。
$data = file_get_contents("php://input");
$jsonData = json_decode($data);
if($jsonData->request->type === "AudioPlayer.PlaybackNearlyFinished")
{
$response = '{
"version" : "1.0",
"response" : {
"directives": [
{
"type": "AudioPlayer.Play",
"playBehavior": "ENQUEUE",
"audioItem": {
"stream": {
"token": "track2",
"expectedPreviousToken": "track1",
"url": "Your URL",
"offsetInMilliseconds": 3
}
}
}
],
"shouldEndSession" : true
}
}';
echo $response;
}
这是您可以处理所有 AudioRequest 的方式。