JAWS-UG KANSAI Re:Boot meetup
Deep diving to the Alexa Audio Player Interface.
https://developer.amazon.com/en-US/docs/alexa/custom-skills/audioplayer-interface-reference.html
https://voicelunchjp.connpass.com/event/191516/
https://github.com/jaws-ug-kobe/alexa-summer-memory
View Slide
神戸 宮古島 オランダ
Alexa Audio Player@Deep Diving
はじめに 本日のプレゼンテーションは、JAWS SONIC 2020 で行った JAWS-UG KOBE のセッションと重複する部分があります。JAWS SONIC で セッションに参加されたかたには被る内容がありますがご了承ください。 m(_ _)m
fmfm... 作ってみよっかな おもろかったな Goal
本日持って帰ってほしいもの Alexa Audio Player(の仕様) 1インテント / 一殺 アーキテクチャ ノスタルジー
https://developer.amazon.com/en-US/docs/alexa/custom-skills/audioplayer-interface-reference.html読んでください。
Alexa AudioPlayer interface Echo で作る音楽再生機能つきの アレクサスキル を作るときに実装する インターフェース。 再生、停止、一時停止、プレイリストなど、 一般の音楽再生プレイヤーが持つ機能は ひととおり実装が必要。
モノとのやりとりを全部声でやっちゃおうぜ!という世界を実現するためのエコシステム。復習:Alexa て何よ? スキル モノ
Alexa Audio Player スキル スキル モノ Audio Player のスキルは、スキルとモノ(スマートスピーカー)の両方に作用します。
Alexa Audio Player のしくみ スキルAlexa Skill KitモノAlexa VoiceService(Amazon Echo など)EventDirective
Alexa Audio Player のしくみ スキルAlexa Skill KitモノAlexa VoiceService(Amazon Echo など)EventDirective何を再生中なのかは覚えておかないと。。Play:紅蓮華♫紅蓮華Started:紅蓮華紅蓮華を再生して再生中:「紅蓮華」
Keyword 何を再生中なのか スキルの中で 覚えておかないと!
曲を管理する上で覚えておく 必要があるもの - 状態 - 今どの曲を再生しているか - 曲の経過時間(いまどのあたりを再生しているか) - 再生中の曲があるか - 次に曲を自動でかけるか(プレイリスト) - 曲は再生中か一時停止中かシャッフル再生中か - ユーザー操作 - 再生して - 止めて - シャッフルして - 次の曲 - 前の曲 - 二つ先
Audio Player requests(=Event) https://developer.amazon.com/en-US/docs/alexa/custom-skills/audioplayer-interface-reference.html#requests「これらのイベントをスキルが受け取ったら、スキル内で曲の再生状態を更新する」という流れ。
状態管理にはDynamoDBがオススメ S3だと検索性が低いので、管理面で少々やりづらいです。例えば、Alexa Skill のリクエストには、UserIdが付いているので、それをキーにして、、上のような感じで管理してあげると、 query しやすくてよいです。
Request Request Reference Reference Architecture audio files. (s3 bucket: public)state management
まとめ - 再生中の状態はスキル側で覚える - 状態管理はDynamoDBがいいぞ - 管理しないといけない状態は、Audio Player Requests をトリガーに更新
別にDisりたいわけではないですが、、 https://github.com/alexa/skill-sample-nodejs-audio-playerhttps://github.com/alexa/skill-sample-nodejs-audio-player/blob/mainline/multiple-streams/lambda/src/index.jsAudio Player は、スキルの中で、インテントとイベントを両方管理しないといけないので、必須のコード量と実装しないといけないハンドラの量は多くなっちゃいます。一つのファイルにダーッと書いてあるとちょっとちょっと読みづらいです。(※ 個人の感想です)
Talkyjs
Talkyjs Alexa Champion で AWS Samurai な hide okamoto 謹製の Alexa Skill のためのフレームワーク。 railsライクな設計思想+CLIあり。 ハンドラのRouting、豊富なUtility、SSMLをJ(or T)SX で書けたり。 https://talkyjs.dev/
インテント、イベントハンドラーがフォルダごとに別れて、結合度が下がります。インテント、ハンドラー単位で着脱も楽です。ちなみに、テストのテンプレートもついてくる。
インテント、イベントハンドラーがフォルダごとに別れて、結合度が下がります。インテント、ハンドラー単位で着脱も楽です。ちなみに、テストのテンプレートもついてくる。ASK-SDK でやらないといけないcanHandle メソッドは talkyjs がよしなにやってくれる。必要なのは、handlerメソッド(インテントの実行ロジックのみ)※ カスタムの canHandle を実行する場合は別途必要です。
まとめ - 1インテント(ハンドラー)/ 一殺 形式。どうでしょう?
夏暑いのに、人混みにいけない。山だ、海だ、キャンプだ、BBQだ、お盆だ、祭りだ、花火大会だー、、、今年は軒並み中止。 ふと、目をつぶって町の音を聞くと妙に想像力が掻き立てられて、 ちょっと別の町に行った感覚になったのを思い出した。 そうだ。「音だけ」聞いて、他の感覚を遮断したら、ちょっとそこに(もっと)行った気分になれるんじゃないか? 夏の思い出(完全版)
Audio Player をこうやって使いたい!
敢えて言おう! (このスキルに関しては)画面なんて必要無いと!!!
10月30日(金) voicelunchjp ご都合よろしければ!https://voicelunchjp.connpass.com/event/191516/
CODE & DEMO https://github.com/jaws-ug-kobe/alexa-summer-memory
ありがとうございました!See you next meetup!