Alexa Audio Player @Deep Diving

Alexa Audio Player @Deep Diving

5af8e5bd2f24e4ea0cee732c6cc259b3?s=128

haruharuharuby

October 21, 2020
Tweet

Transcript

  1. None
  2. 神戸
 宮古島
 オランダ


  3. Alexa Audio Player @Deep Diving

  4. はじめに
 本日のプレゼンテーションは、JAWS SONIC 2020 で行った JAWS-UG KOBE のセッショ ンと重複する部分があります。JAWS SONIC

    で セッションに参加されたかたには被る内 容がありますがご了承ください。
 
 m(_ _)m

  5. fmfm...
 作ってみよっかな
 おもろかったな
 Goal


  6. 本日持って帰ってほしいもの
 Alexa Audio Player(の仕様) 
 1インテント / 一殺 アーキテクチャ
 ノスタルジー


  7. 本日持って帰ってほしいもの
 Alexa Audio Player(の仕様) 
 1インテント / 一殺 アーキテクチャ
 ノスタルジー


  8. https://developer.amazon.com/en-US/d ocs/alexa/custom-skills/audioplayer-inte rface-reference.html 読んでください。


  9. Alexa AudioPlayer interface
 Echo で作る音楽再生機能つきの 
 アレクサスキル を作るときに実装する 
 インターフェース。


    
 再生、停止、一時停止、プレイリストなど、 
 一般の音楽再生プレイヤーが持つ機能は 
 ひととおり実装が必要。 

  10. モノとのやりとりを全部声 でやっちゃおうぜ! という世界を実現するための エコシステム。 復習:Alexa て何よ?
 スキル
 モノ


  11. Alexa Audio Player スキル
 スキル
 モノ
 Audio Player のスキルは、 スキルとモノ(スマートスピー

    カー)の両方に 作用します。
  12. Alexa Audio Player のしくみ
 スキル Alexa Skill Kit モノ Alexa

    Voice Service (Amazon Echo な ど) Event Directive
  13. Alexa Audio Player のしくみ
 スキル Alexa Skill Kit モノ Alexa

    Voice Service (Amazon Echo な ど) Event Directive 何を再生中なのかは覚えておかないと。。 Play: 紅蓮華 ♫ 紅蓮華 Started: 紅蓮華 紅蓮華を 再生して 再生中: 「紅蓮華」
  14. Keyword
 何を再生中なのか
 スキルの中で
 覚えておかないと!


  15. 曲を管理する上で覚えておく
 必要があるもの
 - 状態
 - 今どの曲を再生しているか 
 - 曲の経過時間(いまどのあたりを再生しているか) 


    - 再生中の曲があるか 
 - 次に曲を自動でかけるか(プレイリスト) 
 - 曲は再生中か一時停止中かシャッフル再生中か 
 
 - ユーザー操作
 - 再生して
 - 止めて
 - シャッフルして
 - 次の曲
 - 前の曲
 - 二つ先
 

  16. Audio Player requests(=Event)
 https://developer.amazon.com/e n-US/docs/alexa/custom-skills/a udioplayer-interface-reference.ht ml#requests 「これらのイベントをスキルが受け取ったら、 スキル内で曲の再生状態を更新する」 という流れ。

  17. 状態管理にはDynamoDBがオススメ
 S3だと検索性が低いので、管理面で少々やりづらいです。 例えば、Alexa Skill のリクエストには、UserIdが付いているの で、それをキーにして、、 上のような感じで管理してあげると、 query しやすくてよいです。

  18. Request 
 Request 
 Reference
 Reference
 Architecture 
 audio files.

    (s3 bucket: public) state management
  19. まとめ
 - 再生中の状態はスキル側で覚える 
 
 - 状態管理はDynamoDBがいいぞ 
 
 -

    管理しないといけない状態は、Audio Player Requests をトリガーに更新 

  20. 本日持って帰ってほしいもの
 Alexa Audio Player(の仕様) 
 1インテント / 一殺 アーキテクチャ
 ノスタルジー


  21. 別にDisりたいわけではないですが、、
 https://github.com/alexa/skill-samp le-nodejs-audio-player https://github.com/alexa/skill-samp le-nodejs-audio-player/blob/mainli ne/multiple-streams/lambda/src/in dex.js Audio Player は、スキルの中で、インテント

    とイベントを両方管理しないといけないの で、必須のコード量と実装しないといけない ハンドラの量は多くなっちゃいます。 一つのファイルにダーッと書いてあると ちょっと ちょっと読みづらいです。 (※ 個人の感想です)
  22. Talkyjs


  23. Talkyjs
 Alexa Champion で AWS Samurai な 
 hide okamoto

    謹製の Alexa Skill のためのフレームワーク。 
 
 railsライクな設計思想+CLIあり。 
 ハンドラのRouting、豊富なUtility、SSMLをJ(or T)SX で書けたり。 
 
 https://talkyjs.dev/ 

  24. インテント、イベントハンドラーがフォルダごとに別れ て、結合度が下がります。 インテント、ハンドラー単位で着脱も楽です。 ちなみに、テストのテンプレートもついてくる。

  25. インテント、イベントハンドラーがフォルダごとに別れ て、結合度が下がります。 インテント、ハンドラー単位で着脱も楽です。 ちなみに、テストのテンプレートもついてくる。 ASK-SDK でやらないといけない canHandle メソッドは talkyjs がよしなにやってくれ

    る。 必要なのは、handlerメソッド(インテントの実行ロジッ クのみ) ※ カスタムの canHandle を実行する場合は別途必 要です。
  26. まとめ
 - 1インテント(ハンドラー)/ 一殺 形式。どうでしょう? 


  27. 本日持って帰ってほしいもの
 Alexa Audio Player(の仕様) 
 1インテント / 一殺 アーキテクチャ
 ノスタルジー


  28. 夏暑いのに、人混みにいけない。山だ、海だ、キャンプだ、BBQだ、お盆 だ、祭りだ、花火大会だー、、、今年は軒並み中止。
 
 ふと、目をつぶって町の音を聞くと妙に想像力が掻き立てられて、
 ちょっと別の町に行った感覚になったのを思い出した。
 
 そうだ。「音だけ」聞いて、他の感覚を遮断したら、ちょっとそこに(もっと) 行った気分になれるんじゃないか?
 夏の思い出(完全版)


  29. Audio Player をこうやって使いたい!


  30. 敢えて言おう!
 
 (このスキルに関しては) 画面なんて必要無いと!!!


  31. 10月30日(金) voicelunchjp ご都合よろしければ! https://voicelunchjp.connpass.com/event/191516/

  32. CODE & DEMO
 https://github.com/jaws-ug-kobe/alexa-summer-memory

  33. ありがとうございました! See you next meetup!