Javascript Alexa AudioPlayer请求指令不工作
我正在制作一个音频播放器技能,当我测试技能时,音频会播放,没有错误,但是音频播放器请求,如AudioPlayer.PlaybackStarted、AudioPlayer.playbackstopped diescitives不起作用。我在代码中使用了与Github示例中使用的相同的函数来处理它们 },,Javascript Alexa AudioPlayer请求指令不工作,javascript,alexa,alexa-skills-kit,audio-player,Javascript,Alexa,Alexa Skills Kit,Audio Player,我正在制作一个音频播放器技能,当我测试技能时,音频会播放,没有错误,但是音频播放器请求,如AudioPlayer.PlaybackStarted、AudioPlayer.playbackstopped diescitives不起作用。我在代码中使用了与Github示例中使用的相同的函数来处理它们 },, }; 你能修好吗?你能修好吗? const AudioPlayerEventHandler = { canHandle(handlerInput) { return handle
}; 你能修好吗?你能修好吗?
const AudioPlayerEventHandler = {
canHandle(handlerInput) {
return
handlerInput.requestEnvelope.request.type.startsWith('AudioPlayer.');
},
async handle(handlerInput) {
const {
requestEnvelope,
attributesManager,
responseBuilder
} = handlerInput;
const audioPlayerEventName = requestEnvelope.request.type.split('.')[1];
const {
playbackSetting,
playbackInfo,
audioData,
timeStamp
} = await attributesManager.getPersistentAttributes();
switch (audioPlayerEventName) {
case 'PlaybackStarted':
playbackInfo.token = getToken(handlerInput);
playbackInfo.index = await getIndex(handlerInput);
playbackInfo.inPlaybackSession = true;
playbackInfo.hasPreviousPlaybackSession = true;
break;
case 'PlaybackFinished':
playbackInfo.inPlaybackSession = false;
playbackInfo.hasPreviousPlaybackSession = false;
playbackInfo.nextStreamEnqueued = false;
break;
case 'PlaybackStopped':
playbackInfo.token = getToken(handlerInput);
playbackInfo.index = await getIndex(handlerInput);
playbackInfo.offsetInMilliseconds = getOffsetInMilliseconds(handlerInput);
break;
case 'PlaybackNearlyFinished':
{
if (playbackInfo.nextStreamEnqueued) {
break;
}
const enqueueIndex = (playbackInfo.index + 1) % audioData.length;
if (enqueueIndex === 0 && !playbackSetting.loop) {
break;
}
playbackInfo.nextStreamEnqueued = true;
const enqueueToken = playbackInfo.playOrder[enqueueIndex];
const playBehavior = 'ENQUEUE';
const podcast = audioData[playbackInfo.playOrder[enqueueIndex]];
const expectedPreviousToken = playbackInfo.token;
const offsetInMilliseconds = 0;
responseBuilder.addAudioPlayerPlayDirective(
playBehavior,
podcast.url,
enqueueToken,
offsetInMilliseconds,
expectedPreviousToken,
);
break;
}
case 'PlaybackFailed':
playbackInfo.inPlaybackSession = false;
console.log('Playback Failed : %j', handlerInput.requestEnvelope.request.error);
return;
default:
throw new Error('Should never reach here!');
}
return responseBuilder.speak('directive is sent').getResponse();