Можно ли приостановить и возобновить умение 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();
},
};