GoogleHomeでサーバ動作をコントロールしてみる
【課題】
前回、投稿したスマホからの位置情報でLineを送るBOTサーバー。運用していく中で一定の動作させるには非常に便利で重宝していて、日常生活においても活用の場を増やしたいと考えていました。
しかし課題があらかじめ設定した動作以外に動作を変化させるには、ターミナルなどから一度サーバにログインして定期的な情報メンテナンスや操作が必要になってしまう。
【解決策】
GoogleHomeから操作出来るようにすればGoogleHomeおよびスマホのアシスタントから操作が可能になる。
【結果】
GoogleHomeを使うことで動作オプションをつけるような使い方が可能。
あとはセキュリティーとの兼ね合いでどこまでの操作を出来るようにするかの定義は必要かと思います。
アプリケーションなどのアップデートなどそのものをGoogleHomeでするとかはあまり精神的にもセキュリティー的にもよろしくないかなと思います。
○今回、具体的に何を操作したいのか
前回投稿していたスマホの位置情報から到着時間を送信してくれるBotの動作をコントロール
・特定の場所までの所要時間を計算するだけでなく変更したい
→目的地の変更オプションが欲しい
・勤務パターンに合わせて常にLineを送る
→時々送らないというオプション選択も欲しい
・Lineの送り先などの変更
→Lineのいろんなグループやルームに送れると便利だよね
イメージ

動作手順
主なポイントはDialogflowによるIntentとEntityと呼ばれる部分の設定になるかと思います。
まだ自分自身いまいち理解が深まってなくこの辺の解説は他の方々のqiitaをご覧ください。
ここでは僕はEntityを動作定義として使っています。
まずactionsという名前のEntityを作成してreference valueに「chan_dist」、synonymに「目的地」「もくてきち」「目的地を変更」などといったリストを作成しています。
これによってユーザの発した言葉に「目的地」といった言葉が含まれているとactionsというパラメータに「chan_dist」が追加されるというイメージです。
そこからIntent側で「Training Phrases」に「〇〇を▲▲にして」「〇〇に××って送って」といった設定をしてEntitityで登録されていないものはsys.anyというEntityを使ってパラメータ作成をしています。あとはwebhookでjson形式でパラメーターが送信されるのでそれを受け取って処理するAPIのようなものをサーバ側に構築する。
【サーバ側動作】
json形式でパラメータがDialogflowから飛んでくるので、解析。
上記で作成したDialogflowでは「actions」というキーに「chan_dist」という値が設定されていたらsqlite内の目的地設定の値を変更する。という動作をさせるようにしています。
【編集後記】
まだまだ特にDialogflow部分など理解が深まってなくうまく解説できていないですね。今後さらに触ってみて理解が深まり解説出来るようになったら再編集ですね。