ガジェット
DialogflowでGoogle Home miniに空気を読ませる
amito
最近Google Home miniを購入しました。
Google Home miniで家電を操作する
私の自宅の家電は赤外線学習リモコンの「IRKit」でプチホームオートメーション化しています。テレビや暖房をスマホで操作することができるので重宝しています。
Homekit × Dash Button × IRKitでややスマートホーム↓
http://www.nowhere.co.jp/blog/archives/20170126-234601.html
せっかくスマートスピーカーを買ったのだから、家電を声でも操作できるようにしたい。スマホが近くになくても、こたつに入ったまま家電を操作したい。ベッドの中から電気も消したい。
Dialogflowで家電操作botを作る
Googleの自然言語処理サービスであるDialogflowで、Google Assistantのアプリを作ってみましょう。
まずはEntityを登録します。Entityは文章の中の重要な要素のことで、家電を操作するアプリの場合は「エアコン」や「テレビ」がそれにあたります。エアコンは「空調」「冷房」「クーラー」など色々呼び方があるので、家電の種類ごとにグループ分けして言い換えた単語も登録していきます。
次にIntentというものを作ります。Intentは「文章の意図」で、例えば「家電をオンにする」という意図で一つのIntentになります。User Saysという項目に、家電をオンにする命令の言い方を登録していきます。
思いつくままにUser Saysを登録していくと、Dialogflowがそれを学習して、登録していない命令文でも空気を読んで認識してくれるようになります。
これで、家電をオンにする命令を受けるとIntentが発動するようになったのですが、その先の処理はActions on Googleなどで自分で実装しなくてはなりません。命令に含まれるEntityの組み合わせによって条件分岐することで、複雑な会話ができるようになります。今回は、扇風機の風量を切り替えるIntentを作ってみました。風の強さを表すEntityの他に、sys.numberというあらかじめ用意された数字のEntityを使用しています。
実際に動かしてみました。Actions on Googleのテスト画面ですが、アプリ化するとGoogle Home miniでも動きます。
https://youtu.be/Bye4a6WbbpA
最後に
Dialogflowには上記の機能以外にも会話の文脈を読んで処理を制御するContextという機能があり、スマートスピーカーに限らずBot開発に役立ちそうです。簡単な応答ならプログラムを書かなくても実現できますので是非試してみてください。