LoginSignup
6

More than 3 years have passed since last update.

posted at

updated at

Organization

忘れ去られてたGoogleHome君に使い道ができたかもしれない話

はじめに

以前、僕が一人暮らしを始めた際にGoogle Home miniを購入しました。特に下調べもせずにいて、わーい!これ!これあれでしょ?!なんかいろいろできるんでしょ?!ぐらいの気持ちで購入しました。

ですが、自分でもびっっっくりするくらい使ってません。。。買ったことすら忘れてました。

せっかくの機会なので色々いじって使い道を探っていきます。

やってみたいこと

1. 任意のテキストをしゃべらせたい
2. 独自のコマンドを作成して機能拡張したい

実現方法

1. 任意のテキストをしゃべらせたい

ググってみた結果、google-home-notifierというNode.jsのライブラリが沢山でてきました。
これで簡単に実現できそうです。

2. 独自のコマンドを作成して機能拡張したい

IFTTTというあるサービスと別のサービスを連携させるサービスを利用すれば簡単に実現できそうです。
あとはGoogle Apps Scriptで色々させる

環境

  • Windows 10
  • Node.js (v10.14.1)

手順

1. 任意のテキストをしゃべらせたい

  1. windows-build-toolsを入れます
npm install --global windows-build-tools
  1. Bonjour SDKのインストール

インストール後、システム環境変数に下記が設定されていることを確認しましょう。
[変数]
BONJOUR_SDK_HOME
[値]
C:\Program Files\Bonjour SDK

僕はSDKをインストールする際にCドライブではなく、別のドライブにインストールしたのですが、dns_sd.hのファイル自体は入っていなかったためエラーが消えませんでした。
dns_sd.h自体はC:\Program Files\Bonjour SDK内に格納されていたため環境変数を設定しなおすとエラーが消えました。

ちなみにSDKをインストール&環境変数の設定が正しくないと下記のようなエラーがでます。
無題.png

  1. google-home-notifierのインストール 適当に作業ディレクトリを作成
mkdir googlehome
cd googlehome

npm準備

npm init

google-home-notifierのインストール

npm install google-home-notifier

GitHubにあるgoogle-home-notifierのサンプルコードを書き換えます。

const googlehome = require('google-home-notifier')
var language = 'ja'; // if not set 'us' language will be used

googlehome.device('デバイス名', language); // Change to your Google Home name
// or if you know your Google Home IP
// googlehome.ip('192.168.1.20', language);

googlehome.notify('みるく、はな、ちまき、ふたば、りぼん、さくら、みい、ごまお', function(res) {
  console.log(res);
});

実行すると。。。。

下記のエラーが。。。。

Error: get key failed from google

解決策
書き換える値を0.0.4
https://qiita.com/ktetsuo/items/21f4f85a98145772be3d

再度実行

node test.js

しゃべったああああ!!!!!

2. 独自のコマンドを作成して機能拡張したい

初めなので
コマンドを認識させると設定された相手にメールを送信する
という簡単な機能を実装してみます。

  1. IFTTTのトリガー設定

IFTTTにサインインしてトリガーにGoogle AssistantのSay a simple phraseを設定します。
What do you want sayの箇所に認識させるコマンドを入力します。
What do you want the Assistant to say in response ?の箇所にコマンドを認識させたあとにGoogle Assistantが発声する言葉を入力します。

1.PNG

  1. Google Apps Scriptでメールを送信する処理を実装する

Google Apps Script

GetのHTTPリクエストを利用するのでdoGet関数を使用します

function doGet(){
var to = '送信先メールアドレス';
MailApp.sendEmail(to, '件名', '本文');
}

作成できたら[公開]→[Webアプリケーションとして導入]
以下のウィンドウが表示されると思います

プロジェクトバージョンに任意の内容を入力し、アプリケーションにアクセスできるユーザーを全員(匿名ユーザーを含む)に設定して導入します

導入するとURLがもらえるのでこのURLを控えておきます

3.PNG

  1. IFTTTのアクションの設定

IFTTTのアクションにMake a web requestを設定します
URLの箇所にGoogle Apps ScriptでもらったURLを入力します
MethodはGET
Content Typeはtext/plainを設定します

2.PNG

この状態でGoogle AssistantにIFTTTで設定したトリガーを発生させる(ここでは「自分にメール」とコマンドを入力する)とGoogle Assistantが反応してくれてメールが送信されます!!!!

もし、Google Assistantでトリガーを発生させても、メールが飛ばない場合は、Google Apps Scriptで公開したファイルで[公開]→[Webアプリケーションとして導入]で表示されるウィンドウでプロジェクトバージョンを新しくして更新してみてください。僕はこの手順で動作しました!

まとめ

今回は

  • google-home-notifierでGoogle Assistantにしゃべらせる
  • Google Home の機能拡張

を簡単な例で実現してみました。
思った以上に手軽に実装できたので今後色々いじってみたいと思います
Google Apps Scriptはスクレイピングとか楽そうなので試したい。。。。

IFTTTを初めて利用しましたが、おそろしく便利ですね。。。コード書かなくて良いのがすばらしい。。。(笑)

参考

https://qiita.com/ktetsuo/items/21f4f85a98145772be3d
https://qiita.com/SatoTakumi/items/c9de7ff27e5b70508066#%E6%89%8B%E8%BB%BD%E3%81%AB%E9%96%8B%E7%99%BA%E3%82%92%E5%A7%8B%E3%82%81%E3%82%8B
https://qiita.com/kazunori279/items/fdadbfde58ed133bb9d5

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
What you can do with signing up
6