Я пытаюсь разработать бэкэнд PHP для своего навыка Alexa. Ничего особенного, просто для обучения.
Что я хочу делать: я хочу играть музыку, как только появится навык. Я решил это следующим образом:
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
}
}';
}
Это прекрасно работает.
Кроме того, я хочу, чтобы Skill перестал воспроизводить музыку, если я скажу: «Алекса, остановись». Кажется, это не работает. Я пробовал следующее:
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
} }';
}
Я всегда получаю «Плохой ответ»: навык вернул неверный ответ.
Мой SessionEndedRequest выглядит следующим образом:
if ($RequestMessageType == "SessionEndedRequest") {
$ReturnValue = '{
"type": "SessionEndedRequest",
"requestId": "$RequestId",
"timestamp": "' . date("c") . '",
"reason": "USER_INITIATED "
}';
}
Кто-нибудь знает, как правильно остановить AudioPlayer?