はかせのラボ

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

Alexa コーヒーショップの品数を楽に増やす方法 ~カスタムスロット~

あいさつ

どうも、はかせです。
今回は前回作ったコーヒーショップの品数を増やしてみます。

品を増やしてみる

御多分に漏れず公式チュートリアルに従います。
developer.amazon.com

今まで私のAlexaコーヒーショップはコーヒーしかありませんでした。
いくらコーヒーショップとはいえコーヒーしか扱っていない店というのは
現代では絶滅危惧種だと思います。

店が絶滅危惧種なのは辛いので品種類を増やしてみます。
品の増やし方は簡単で
インテントに直接増やしたいメニューとオーダーを入れるだけです。
f:id:hakase0274:20190808215411p:plain

ただこの方法だとメニュー×オーダーの数だけ直打ちする必要が発生してしまいます。
そうなると例えば

メニュー
・コーヒー
・カフェオレ
エスプレッソ

オーダー
・ください
・ちょうだい
・お願いします

これだと3×3で9通りのパターンを直打ちすることになります。
これは大変めんどくさいです。
しかも今後新メニューがでたり、
オーダーが増えたりしたらそれに比例して打ち込む量が増えてしまい、
拡張性も低いです。

なんでメニューとオーダーを変数的なものに格納し、
Alexaの入力でうまいこと当てはめてもらいます。

その仕組みはスロットという機能で実現できます。
スロットは値を登録しておけるものです。
(enumが一番イメージ近いかな)
メニューとオーダーをそれぞれスロットに登録してみます。
f:id:hakase0274:20190808221209p:plain
f:id:hakase0274:20190808221219p:plain

そしてスロットを使ったインテントを設定します。
まずはインテントにこのスロットを使うという登録をします。
f:id:hakase0274:20190808221525p:plain
amountは元から用意されているスロットを設定しています。

登録したらあとはそれに従いインテントを設定します。
f:id:hakase0274:20190808221422p:plain

インテントを設定したらちゃんと受け取れてるか確認のため
メニューと個数をオウム返しさせます。
f:id:hakase0274:20190808221808p:plain

さて結果です。
f:id:hakase0274:20190808221957p:plain

これで品数が増えようと注文方法が増えようと
スロットを少し弄るだけで追加できるようになりました。

あとがき

今回はスロットを使って品数を楽に増やせるようにしてみました。

手打ちとかでちまちまやってたことが自動化されると
なんというか達成感を感じますね。
プログラマー冥利に尽きるというかなんというか。

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