const playlist_title= 'マイミュージック'; //ファイル名・スキル名とは別に表示させたいテキスト(アーティストなど) const playlist_cover= ''; //カバー画像(推奨サイズ480x480ピクセル以上) const playlist_background= ''; //背景画像ファイル(推奨サイズ1024x640ピクセル) const playlist_tracks=[ //メディアストレージに置いた音楽ファイル名を下記の例のように列挙 'sample01.mp3', 'sample02.mp3', ]; const token_prefix='mymusic001'; //画像などを変更したとき、この識別子を変更するとすぐに反映される const Util = require('util.js'); const Alexa = require('ask-sdk-core'); exports.handler=Alexa.SkillBuilders.custom().addRequestHandlers({ canHandle(input){return true;}, handle(input){ var a=[],i; var behavior='REPLACE_ALL'; for(i=0;i0;i--){ var r=Math.floor(Math.random()*(i+1)),t=a[i];a[i]=a[r];a[r]=t; } var token=(input.requestEnvelope.context.AudioPlayer||{}).token||token_prefix+":::0"; var is_once=token.match(/:once:/)?'once':''; var shuffled=token.match(/:[\d,]+:/)?(token.split(/:/)||["","",a.join(',')])[2].split(/,/):null; var pos=(token.split(/:/)||["","","","0"])[3]*1; var offset=(input.requestEnvelope.context.AudioPlayer||{}).offsetInMilliseconds||0; var meta={title:'',subtitle:playlist_title}; if(playlist_cover){ meta.art={contentDescription:'カバーアート',sources:[{url:Util.getS3PreSignedUrl('Media/'+playlist_cover)}]}; } if(playlist_background){ meta.backgroundImage={contentDescription:'背景画像',sources:[{url:Util.getS3PreSignedUrl('Media/'+playlist_background)}]}; } switch(('IntentRequest'===input.requestEnvelope.request.type)?input.requestEnvelope.request.intent.name:input.requestEnvelope.request.type){ case('AMAZON.StartOverIntent'): case('AMAZON.RepeatIntent'): case('PlayMyMusicIntent'): case('LaunchRequest'):{ offset=0; break; } case('AMAZON.LoopOffIntent'):{ is_once='once'; break; } case('AMAZON.LoopOnIntent'):{ is_once=''; break; } case('AMAZON.ShuffleOffIntent'):{ shuffled=null; break; } case('AMAZON.ShuffleOnIntent'):{ shuffled=shuffled||a; break; } case('AudioPlayer.PlaybackNearlyFinished'): case('AMAZON.NextIntent'): case('PlaybackController.NextCommandIssued'):{ pos++; offset=0; if(pos