Как приостановить и возобновить ОДИН аудиопоток, используя node js SDK. Также как работают другие элементы управления, такие как Next, Previous, Repeat et c - PullRequest
0 голосов
/ 28 января 2020

Можно ли приостановить и возобновить умение Alexa, используя один аудиопоток. Я пытался искать ответы, но всякий раз, когда я говорю «пауза», это останавливает навык. Хотелось узнать, каково поведение для одного потока.

Я хочу, чтобы мой единственный аудиопоток приостанавливался и возобновлялся при вызове этих команд. Ниже моя пауза и обработчики резюме. Пожалуйста, проверьте. Это приводит к сбою моего навыка при проверке функциональности моего навыка.

    //Resume Handler
    const PlaybackStartedIntentHandler = {
     async canHandle(handlerInput) {
           const request = handlerInput.requestEnvelope.request;

        if (request.type === 'PlaybackController.PlayCommandIssued') {
          return true;
        }

        if (request.type === 'IntentRequest') {
          return request.intent.name === 'PlayStreamIntent' ||
            request.intent.name === 'AMAZON.ResumeIntent';
        }

      },
     async handle(handlerInput) {

        var calm_audio_name = handlerInput.requestEnvelope.request.intent.slots.audio.value;
        const response = await httpGet(calm_audio_name);
        const jsonurl=response.video_url;

        const STREAMS = [
      {
        "token": "1",
        "url": response.video_url,
        "metadata" : {
          "title": calm_audio_name,
          "subtitle": calm_audio_name
        }
      }

    ];

     let stream = STREAMS[0]; 

        handlerInput.responseBuilder
          .speak(`Resuming`)
           .withShouldEndSession(false)
         // .addAudioPlayerClearQueueDirective('CLEAR_ENQUEUED');
          .addAudioPlayerPlayDirective('REPLACE_ALL',jsonurl, stream.token, 0,null, stream.metadata)

        return handlerInput.responseBuilder
          .getResponse();
      },
    };

//Pause Handler
    const CancelAndStopIntentHandler = {
     async canHandle(handlerInput) {
        return handlerInput.requestEnvelope.request.type === 'IntentRequest'
            && (
              handlerInput.requestEnvelope.request.intent.name === 'AMAZON.StopIntent' ||
              handlerInput.requestEnvelope.request.intent.name === 'AMAZON.PauseIntent' ||
              handlerInput.requestEnvelope.request.intent.name === 'AMAZON.CancelIntent'               
            );
      },
      handle(handlerInput) {

        handlerInput.responseBuilder
          //.speak(`Okay!`)
          .addAudioPlayerClearQueueDirective('CLEAR_ALL')
           .withShouldEndSession(false)
          .addAudioPlayerStopDirective();

        return handlerInput.responseBuilder
          .getResponse();
      },
    };
...