前回に続いて、コードを書いてAudioPlayerをきちんと理解しよう、という取り組みです。
今回は、複数の曲を扱う前に、少しだけ寄り道してアートワークを表示させてみたいと思います。
曲のメタデータ
AddAudioPlayerDirectiveにはオプションでもう一つ引数があります。
addAudioPlayerPlayDirective(playBehavior: interfaces.audioplayer.PlayBehavior, url: string, token: string, offsetInMilliseconds: number, expectedPreviousToken?: string, audioItemMetadata? : AudioItemMetadata): this;
最後のaudioItemMetadata
、これを指定すると、画面付きデバイス等で曲のメタデータを表示するためのものです。
ということで早速やってみましょう。以下のコードをutil.jsを読み込んだあとぐらいに追加します。画像は今回s3に上げていたものを使いました。
const metadata = { "title": "サンプル1", "subtitle": "サンプル1の説明です", "art": { "sources": [ { "contentDescription": "ジャケット画像の説明です", "url": "https://xxxxx.s3-ap-northeast-1.amazonaws.com/pic512x512.jpg", "widthPixels": 512, "heightPixels": 512 } ] }, "backgroundImage": { "sources": [ { "contentDescription": "背景画像の説明です", "url": "https://xxxxx.s3-ap-northeast-1.amazonaws.com/pic512x512.jpg", "widthPixels": 1200, "heightPixels": 800 } ] } };
addAudioPlayerPlayDirectiveのところを以下のように変更します。
.addAudioPlayerPlayDirective('REPLACE_ALL', url, token, 0, null, metadata);
画面付きデバイスでの表示
ではスキルを実行してみます。echo showだとこんな感じになります。
Amazon Musicっぽくなりますね。
開発者コンソールで見ると、レスポンスはこんな感じで返ってきます。
{ "body": { "version": "1.0", "response": { "outputSpeech": { "type": "SSML", "ssml": "<speak>わかりました。楽曲を再生します。</speak>" }, "directives": [ { "type": "AudioPlayer.Play", "playBehavior": "REPLACE_ALL", "audioItem": { "stream": { "token": "1", "url": "https://amzn1-ask-skill-xxxxxxxx-xxxx-buildsnapshotbucket-xxxxxxxxxxxx.s3.amazonaws.com/Media/hiking.mp3?X-Amz-Algorithm=...", "offsetInMilliseconds": 0 }, "metadata": { "title": "サンプル1", "subtitle": "サンプル1の説明です", "art": { "sources": [ { "url": "https://xxxxx.s3-ap-northeast-1.amazonaws.com/pic512x512.jpg", "widthPixels": 512, "heightPixels": 512 } ] }, "backgroundImage": { "sources": [ { "url": "https://xxxxx.s3-ap-northeast-1.amazonaws.com/pic1200x800.jpg", "widthPixels": 1200, "heightPixels": 800 } ] } } } } ], "type": "_DEFAULT_RESPONSE" }, "sessionAttributes": {}, "userAgent": "ask-node/2.7.0 Node/v10.19.0" } }
ということで、今日はAudioPlayerのアートワーク表示を試してみました。
次回は複数の曲を使ってやってみたいと思います。
画像は以下のものを使用させていただきました。ありがとうございます。