Raspberry PiとAlexaでオリジナルスキルを作る
Raspberry PiとAlexaでオリジナルスキルを作ります。
今日のご飯は?
Alexaに「今日のご飯は?」と聞くと、メニューをランダムに提案してくれるスキルを作ってみます。
構成図としてはこんな感じです。
Raspberry Piでご飯を提案するシェルスクリプトを作る
ご飯のメニューを提案してくれるシェルスクリプト書きます。
ついでに50%くらいの確率で外食も提案してくれるようにしてみます。
meal.listにメニュー一覧を記述します。
同様にout_meal.listに外食一覧を記述します。
仕組みとしては、meal.listの中からランダムに3つ選んできて出力するといった感じです。
引数でLINEに通知、Alexaから出力、Bluetoothスピーカーから出力できるようにしています。
環境に合わせて修正してください。
引数を入れない場合は標準出力に出力されるようになっています。
以下のように出力されればOKです。
pi@raspberrypi3:/opt/test $ ./meal.sh
今日のご飯は、餃子、ハンバーグ、餃子、なんてどうですか?
Alexaの設定
これでご飯を提案してくれるシェルスクリプトができました。
次に、Alexaにオリジナルスキルを追加してみます。
今回はNode-RED Alexa Home Skill Bridgeでデバイスとして登録します。
「ラズパイ」という名前にしてみました。
こんな感じでAlexa Home Skill Bridgeに登録します。
ポイントは%を選択しておくことです。
次に、Alexaからデバイスを検索して「ラズパイ」というデバイスを見つけておきます。
デバイスが追加されたら、定形アクションを作成します。
このような感じで定形アクションを作ります。
そうです。パーセントの指定でオリジナルスキルを振り分けます。
通常の方法でやると、オリジナルスキルを増やせば増やすごとにデバイスを追加していく必要がありますが、今回の方法だと1つのデバイスで0~100までの値を変数として与えることで機能を分岐させます。
今回の場合だと、4%のデータをRaspberry Piに送ることで「今日のご飯は?」スキルとして起動させます。
わかりやすいように定形アクション名に番号を振っています。
これでAlexa側の準備ができました。
Raspberry PiのNodeREDを準備する
次にRaspberry PiのNodeREDを準備します。
NodeREDを開いてこのように登録します。
今回はalexapi.shというシェルスクリプトを準備して、その中で機能を分岐させます。
今回の場合は引数として「4」が来るので、それをif文で分岐させます。
その中に先程作成したmeal.shを呼び出すようにします。
1~3は別の機能を作成しましたが今回は省略です。
実行権付与も忘れずに。
今回作成したmeal.shは引数で出力先を設定しています。
「alexa」と引数を入れるとAlexaがしゃべるようにしています。
実際に使ってみる
実際に作成した「今日のご飯は?」スキルを使ってみます。
恥ずかしいのでSiriに起動を頼みます。
完成です!こんな感じでオリジナルのアレクサスキルを作ることができました!
問題としてはこの方法だと、呼びかけが定形になってしまうことです。
例えば、今日の天気は?今日のご飯は?歴史の問題を出して?といったトリガーが固定のスキルを作成することはできますが、「マクドナルドを外食リストに追加して」といったような変数を与えることはできません。
簡単な変数なら直接定形アクションを作れば対応できますが、毎回変わる変数を与えることはできません。
私は他にもBME280の結果をもとにした「寝室の気温は?」スキルなども作っています。
作り方の基本は全く同じです。
みなさんもオリジナルアレクサスキルをRaspberry Piで作成してみてはどうでしょうか。
コメント