じゅころぐAR

ARのブログ

Google Homeと連携するサービスを自作するには

半額だったのでGoogle Home Mini買ったけど、何ができるかちゃんと調べてなかったので自分用メモ。

Google HomeからSNSに投稿する

IFTTT(イフト)を使うと、プログラミングなしでできるようだ。
ちなみに、アイエフティーティーティーだと思ってました。

yuki-no-yabo.com

Node.jsでGoogle Homeに通知を送る

google-home-notifierを使って、Google Homeにpush通知する使い方。

github.com

### 適当なディレクトリを作成して移動
$ mkdir googole-home
$ cd googole-home

### npmでインストール
$ npm init
$ npm install google-home-notifier

### vimでテスト用のスクリプト作成
$ vim index.js

index.jsはこんな感じです。メッセージと言語を変えた以外は、ほぼサンプルそのまま。

const googlehome = require('google-home-notifier')
const language = 'ja';

googlehome.device('Google-Home', language);

googlehome.notify('テストだよ', function(res) {
  console.log(res);
});

nodeコマンドで実行してみた。

$ node index.js
Device "Google-Home-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" at 192.168.0.5:8009
Device notified

実行して数秒後、Google Homeで通知音が鳴って、"テストだよ"と発話されました。
同一ネットワーク上のデバイスが自動で検出されて、名前に"Google-Home"を含む場合にpush通知が行われるようです。数秒のタイムラグはデバイスの検出にかかる時間も大きいと思われる。

利用シーンとしては、README.mdのListenerに書いてある手順でMacかラズパイにローカルサーバ立てといて、屋内のセンサデバイスからサーバにメッセージをPOST、Google Homeに発話させる形がよさそう。

Actions on Googleでチャットbotを作る

Dialogflowとやらを使うと、Google Homeが認識したメッセージに任意の応答を返せるようです。

つい最近までapi.aiという名称だったようで、以下の記事の手順で設定できました。 https://qiita.com/syarihu/items/53ea1a65f481f8121109qiita.com

定型文に定型文を返すだけのbotは簡単にできます。

Fulfillmentを使えば、DialogflowからのWebhookで結果を返すこともできるらしい。
Fulfillment  |  Dialogflow ES  |  Google Cloud

Dialogflowだけでもメッセージを複数パターン用意できるけど、WebhookすればDBやAIを使えるのでより柔軟な応答ができるはず。

Webサービスはpublicに公開されていてHTTPSで応答できないとダメなので、クラウドで立てるのが楽そうです。GoogleのドキュメントにはFirebaseやHerokuにデプロイする方法が書いてあります。たぶんAWSでやるけど。