はかせのラボ

私の頭の中を書いていく雑記ブログです

Alexa 前回の注文を覚えて行きつけの店感を出してみたい ~永続アトリビュート~

あいさつ

どうも、はかせです。
みなさんは行きつけの店的なものってありますか?
私は残念ながらそういう店はないのですが、
アニメとかで見るといいなぁと思うことがあります。

なので今回はAlexaのコーヒーショップを行きつけの店っぽくしてみます。

永続アトリビュート

Alexaでのやりとりは所詮リクエストでしかありません。
なので普通のプログラムみたいに情報を変数等で
持ち続けることはできません。

Alexaでは永続アトリビュートという仕組みを使って
前回のセッション時の情報を保持しておけます。
詳しい理屈とかは公式のチュートリアルにまるっと書いてるので
そちらをどうぞ
developer.amazon.com

使い方はそんなむずかしくないです。
まず依存関係の追加をします。
C++とかやってると「依存関係・・・ウッ頭が・・・」ってなりそうですが、
jsはjsonファイルに直接書くだけみたいですね。楽でよかった
f:id:hakase0274:20190809232056p:plain

そしてまたまたこれを使うよーって登録します。
f:id:hakase0274:20190809232327p:plain

これで前準備は終わりました。
あとはそれっぽいタイミングでしれっと
下の三つの関数を良い感じに呼ぶだけです。

//データ取得
async handlerInput.attributesManager.getPersistentAttributes()
//データセット
handlerInput.attributesManager.setPersistentAttributes("保存したいもの")
//データ保存(永続化?)
async handlerInput.attributesManager.savePersistentAttributes()

初めてjsで非同期処理が出てきましたね。
まぁそこは本題ではないですし、
多分C#と同じノリでいけるでしょう(適当)

さてそれっぽい感じで呼んでみて
f:id:hakase0274:20190809231922p:plain
f:id:hakase0274:20190809231934p:plain
実行
f:id:hakase0274:20190809232502p:plain
店長僕のこと覚えててくれたんだね(´;ω;`)

という感じでうれしくなりましたまる

あとがき

今回はAlexaコーヒーショップの店長に注文を覚えてもらいました。
どういう形でも誰かの記憶(今回は記録か)に自分が残るってのはうれしいもんですね。

それでは今回はこの辺でノシ