AudioPlayer.stop - Alexa 支持 PHP
AudioPlayer.stop - Alexa backlend with PHP
我正在尝试为我的 Alexa 技能开发一个 PHP 后端。没什么大不了的,只是为了学习。
我想做的事情:
我想在技能启动后立即播放一些音乐。我通过以下方式解决了这个问题:
if ($RequestMessageType == "LaunchRequest") {
$ReturnValue = '
{
"version": "1.0",
"sessionAttributes": {},
"response": {
"outputSpeech": {
"type": "PlainText",
"text": null
},
"card": {
"type": "Simple",
"title": "Play Audio",
"content": ""
},
"reprompt": {
"outputSpeech": {
"type": "PlainText",
"text": null
}
},
"directives": [
{
"type": "AudioPlayer.Play",
"playBehavior": "REPLACE_ALL",
"audioItem": {
"stream": {
"token": "33|fdd9052a-717f-414f-a438-1072a64d0f49|831",
"url": "hereismyurl",
"offsetInMilliseconds": 0
}
}
}
],
"shouldEndSession": true
}
}';
}
效果很好。
除此之外,如果我说:"Alexa, stop",我希望技能停止播放音乐。这似乎行不通。我尝试了以下方法:
if ($RequestMessageType == "AMAZON.StopIntent" ) {
$ReturnValue = '{
"card": {
"type": "Simple",
"title": "Stop Audio",
"content": "Bla bla"
},
"directives": [
{
"type": "AudioPlayer.Stop",
}
],
"shouldEndSession": true
} }';
}
if ($RequestMessageType == "AMAZON.CancelIntent"){
$ReturnValue = '{
"card": {
"type": "Simple",
"title": "Stop Audio",
"content": "Bla bla"
},
"directives": [
{
"type": "AudioPlayer.Stop",
}
],
"shouldEndSession": true
} }';
}
我总是收到 "Bad Response": 技能返回无效响应。
我的 SessionEndedRequest 如下所示:
if ($RequestMessageType == "SessionEndedRequest") {
$ReturnValue = '{
"type": "SessionEndedRequest",
"requestId": "$RequestId",
"timestamp": "' . date("c") . '",
"reason": "USER_INITIATED "
}';
}
有谁知道如何以正确的方式停止 AudioPlayer?
您不需要覆盖意图,因为您的技能在请求时未激活。当音频正在流式传输并且用户请求停止时,您将收到 AudioPlayer.PlaybackStopped 通知事件并且 Alexa 将停止请求您的音频流。处理这个是可选的。
来自help page。
当 Alexa 停止播放音频流以响应语音请求或 AudioPlayer 指令时发送。
您可以使用AudioPlayer.Stop函数让自己的技能停止音频,但调用过程将是:Alexa,my_skillname,停止。
我正在尝试为我的 Alexa 技能开发一个 PHP 后端。没什么大不了的,只是为了学习。
我想做的事情: 我想在技能启动后立即播放一些音乐。我通过以下方式解决了这个问题:
if ($RequestMessageType == "LaunchRequest") {
$ReturnValue = '
{
"version": "1.0",
"sessionAttributes": {},
"response": {
"outputSpeech": {
"type": "PlainText",
"text": null
},
"card": {
"type": "Simple",
"title": "Play Audio",
"content": ""
},
"reprompt": {
"outputSpeech": {
"type": "PlainText",
"text": null
}
},
"directives": [
{
"type": "AudioPlayer.Play",
"playBehavior": "REPLACE_ALL",
"audioItem": {
"stream": {
"token": "33|fdd9052a-717f-414f-a438-1072a64d0f49|831",
"url": "hereismyurl",
"offsetInMilliseconds": 0
}
}
}
],
"shouldEndSession": true
}
}';
}
效果很好。
除此之外,如果我说:"Alexa, stop",我希望技能停止播放音乐。这似乎行不通。我尝试了以下方法:
if ($RequestMessageType == "AMAZON.StopIntent" ) {
$ReturnValue = '{
"card": {
"type": "Simple",
"title": "Stop Audio",
"content": "Bla bla"
},
"directives": [
{
"type": "AudioPlayer.Stop",
}
],
"shouldEndSession": true
} }';
}
if ($RequestMessageType == "AMAZON.CancelIntent"){
$ReturnValue = '{
"card": {
"type": "Simple",
"title": "Stop Audio",
"content": "Bla bla"
},
"directives": [
{
"type": "AudioPlayer.Stop",
}
],
"shouldEndSession": true
} }';
}
我总是收到 "Bad Response": 技能返回无效响应。
我的 SessionEndedRequest 如下所示:
if ($RequestMessageType == "SessionEndedRequest") {
$ReturnValue = '{
"type": "SessionEndedRequest",
"requestId": "$RequestId",
"timestamp": "' . date("c") . '",
"reason": "USER_INITIATED "
}';
}
有谁知道如何以正确的方式停止 AudioPlayer?
您不需要覆盖意图,因为您的技能在请求时未激活。当音频正在流式传输并且用户请求停止时,您将收到 AudioPlayer.PlaybackStopped 通知事件并且 Alexa 将停止请求您的音频流。处理这个是可选的。
来自help page。 当 Alexa 停止播放音频流以响应语音请求或 AudioPlayer 指令时发送。
您可以使用AudioPlayer.Stop函数让自己的技能停止音频,但调用过程将是:Alexa,my_skillname,停止。