この時期に起こる問題ってありますよね。
それは飲み会が多いこの時期によくある 「今日は夕食いらない」連絡問題 です。
LINEを送っても気づかないので前回はLINEを送ると矢文を送る実装をしましたが、非常に邪魔というデメリットがありました。
以前の→
そこでおうちハックの人なら日に日に増えるスマートスピーカーを使います。
やりたいことはLINE を送信したら、google homeに何かしら喋らせます。
以下、実装です。
IFTTTを使ってgoogle homeからLINEは直感的にできるのですが、その逆となるgoogle home に何かしら話してもらうようにするにはIFTTTだけではダメなのでそれぞれ手順です。
作業手順
1.Beebotteにアクションを登録
Beebotteにアクションを登録します。BeebotteとはIoT向けのクラウドサービスで50,000 Messages/dayまでは無料で使えます。
アカウントを登録し、ログインをしたら 「Channels」 「Create New」から新規でチャンネルを作成します。
登録が完了したら次にこのアクションを起動させるためのwebhookをIFTTTに登録します。
また、トークンとアクション名はIFTTTで使います。
一旦ここで確認をしておく
curl -i -H "Content-Type: application/json" -X POST -d '{"data":"Hello World"}' https://api.beebotte.com/v1/data/write/googleHome/action?token=token_<TOKEN>
2.IFTTTアプレットの登録
IFTTTにログインをしたらnew appletから
triggerとaction両方を「webhooks」にしてAppletを作成します。
Method: POST Content Type: application/json boddy: {"data" : "帰る"}
URLには先ほど作ったアクションとトークンを追加します。
https://api.beebotte.com/v1/data/write/googleHome/action?token=<TOKEN>
3.LINE DevelopersにMessanger APIを追加する
次にトリガーとなるラインを追加します
LINE DevelopersでMessanger APIを作成します。
作成しましたら、チャンネル基本設定にあるメッセージ送受信設定から ・webhook送信を利用する。 ・Webhook URL の2点を設定します。
https://maker.ifttt.com/trigger/<EVENT>/with/key/<SECRET_KEY>
でIFTTTのWebhooks Documentatsから作れます。(また、curlコマンドも表示されるので、うまく行かなかったときなどにテストもできます
4.mac(or ラズパイ)にgoogle-home-notifierをインストール
mac
最後にmacにgoogle-home-notifierとコードを記述して完了です。 ただ、こちらですがgoogleの仕様変更に伴いちょくちょく変わるので注意が必要です。
google-home-notifierのインストール
$ mkdir googleHome; cd $_ $ npm update -g npm $ npm init $ npm install --save google-home-notifier
エラーが出る場合はPythonのバージョンが2.xか確認。
次に google-home-notifier/google-home-notifier.jsのenをjaに変更します
$ vim google-home-notifier/google-home-notifier.js
また、そのままだとエラーが出るのでパッケージのバージョンを変更 (12/22現在)
node_modules/google-home-notifier/package.jsonの
"google-tts-api": "0.0.3",
を "google-tts-api": "0.0.4",
に変更
アップーデート
cd node_modules/google-home-notifier npm update google-tts-api
次にAlexaに喋らせるためのindex.jsを記述します。
MQTTをインストール
npm install mqtt --save
実行するindex.js
const googlehome = require('google-home-notifier'); const language = 'ja'; var mqtt = require('mqtt'); var client = mqtt.connect('mqtt://mqtt.beebotte.com', {username: 'token:token_<ACCESSTOKEN>', password: ''}); googlehome.device("Google-Home", language); googlehome.ip("<IPADDRESS>"); client.on('connect', function() { console.log('connect'); client.subscribe('googleHome/action'); }); client.on('message', function(topic, message) { console.log(message.toString()); googlehome.notify('帰る', function(res) { console.log(res); }); });
google homeのIPアドレスはアプリからわかります。
ラズパイ
(すみません。ラズパイは記事を書くときにまさかの使用不能状態+届かない状態だったため後日追記します・・) ここら辺が参考になるかと思います。https://qiita.com/ktetsuo/items/5cd3cc72f18fa885affd
逆にgoogle homeからlineに送るには
こっちはすごく簡単でIFTTTからgoogle assistantから「Say a simple phrase」からのLINEの「Send message」で送信できます。これだけ!
終わりに
少し、長くなってしまいましたがnodejsの箇所以外はIFTTTやBeebotteを使えばそこまで記述が多い訳ではないのでスマホでは気付かない場合などにやってみてはいかがでしょうか。 運用して変更した箇所やまたアップデートの必要がある場所などが出てきましたら更新いたします!