Как добавить несколько треков в поток в Алексе?

Я впервые работаю над 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
}
}';

5

Решение

Следуйте приведенному выше документу:
https://developer.amazon.com/public/solutions/alexa/alexa-skills-kit/docs/custom-audioplayer-interface-reference#playbacknearlyfinished-request

а затем сделать это, чтобы поставить в очередь вторую песню

В 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.

1

Другие решения

Вам нужно дождаться запроса AudioPlayer.PlaybackNearlyFinished от Alexa. В этот момент вы можете поставить в очередь следующую дорожку для воспроизведения. Он приблизится к завершению воспроизведения текущей воспроизводимой дорожки.

Информация об этом здесь:
https://developer.amazon.com/public/solutions/alexa/alexa-skills-kit/docs/custom-audioplayer-interface-reference#playbacknearlyfinished-request

При ответе с директивой PlaybackNearlyFinished убедитесь, что:

  • Вы устанавливаете PlayBehavior на ENQUEUE
    Это приведет к запуску следующей дорожки после окончания текущей

  • Вы НЕ включаете поле outputSpeech
    outputSpeech не допускается, когда вне сеанса. Сеанс заканчивается, когда начинается воспроизведение первого потока.

В этом посте, который я написал, более подробно рассматриваются подходы к разработке и тестированию интерфейса AudioPlayer:
https://bespoken.tools/blog/2016/10/10/unit-testing-alexa-skills

1

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector