Как добавить несколько треков в поток в 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
        }
    }';

person Rahul Gupta    schedule 12.01.2017    source источник


Ответы (2)


Следуйте приведенному выше документу: 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.

person Community    schedule 18.01.2017

Вам нужно дождаться запроса 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

person John Kelvie    schedule 13.01.2017
comment
Как узнать, что AudioPlayer.PlaybackNearlyFinished был запущен в php? - person Rahul Gupta; 16.01.2017
comment
Я могу сыграть первую песню, но не знаю, как и что делать, чтобы перейти ко второй, третьей и так далее.. - person Rahul Gupta; 16.01.2017
comment
И я использую язык PHP, поэтому не уверен, возможно ли это в php или нет. - person Rahul Gupta; 16.01.2017