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

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

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

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

#やってみたいこと

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

#実現方法
###1. 任意のテキストをしゃべらせたい
ググってみた結果、google-home-notifierというNode.jsのライブラリが沢山でてきました。
これで簡単に実現できそうです。
###2. 独自のコマンドを作成して機能拡張したい
[IFTTT](https://ifttt.com/discover)というあるサービスと別のサービスを連携させるサービスを利用すれば簡単に実現できそうです。
あとはGoogle Apps Scriptで色々させる

#環境
+ Windows 10
+ Node.js (v10.14.1)

#手順
###1. 任意のテキストをしゃべらせたい
1. windows-build-toolsを入れます

```
npm install --global windows-build-tools
```
2. Bonjour SDKのインストール

https://developer.apple.com/download/more/

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

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

ちなみにSDKをインストール＆環境変数の設定が正しくないと下記のようなエラーがでます。
![無題.png](https://qiita-image-store.s3.amazonaws.com/0/320035/d2b3ba2c-4dc7-1648-f644-1a62d99c204e.png)

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

```
mkdir googlehome
cd googlehome
```
npm準備

```
npm init
```

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

```
npm install google-home-notifier
```

GitHubにある[google-home-notifier](https://github.com/noelportugal/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](https://qiita-image-store.s3.amazonaws.com/0/320035/9de2f5fb-bd84-7fef-9d11-85bfc984dec4.png)

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

[Google Apps Script](https://script.google.com/home)

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

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

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

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

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

![3.PNG](https://qiita-image-store.s3.amazonaws.com/0/320035/c873fd20-1620-918c-70be-058a812f43be.png)

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

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

![2.PNG](https://qiita-image-store.s3.amazonaws.com/0/320035/1a27616e-135c-e3f0-0e15-b92d4b9cfdaf.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