Google Home 2台にオフィスの受付をさせてみた

　オフィスにお客様がいらっしゃったとき、Google Homeに受付をさせてきちんと応対してくれればハッピーですよね。さらにオフィス内に置いた別のGoogle Homeからもその旨を社内に伝えてくれればスーパーハッピーですよね。今回はそんなシステムを実装してみたので、みんなでウルトラハッピーになりましょう。
<div align="center"><img src="https://qiita-image-store.s3.amazonaws.com/0/230715/27232198-66b3-7a12-9f3e-52eb9bd6e130.png" alt="flow image"></div>


# 参考動画
<blockquote class="twitter-tweet" data-lang="ja"><p lang="ja" dir="ltr">弊社インターンの岡野さんが、Google Home2台を使って会社の受付システムをつくりました〜！受付のデモ動画はこちら♪<a href="https://t.co/qSt2rbLiBO">https://t.co/qSt2rbLiBO</a> <a href="https://t.co/XGwNUpNKh9">pic.twitter.com/XGwNUpNKh9</a></p>&mdash; SmartHacks(スマートハックス)＠スマートスピーカー2年目 (@SmartHacks_jp) <a href="https://twitter.com/SmartHacks_jp/status/961187102741311489?ref_src=twsrc%5Etfw">2018年2月7日</a></blockquote>


# 大まかな流れ
1. 来客が受付のGoogle Homeに話しかける
2. IFTTTで設定したトリガーが発動し、以下の2つのことを同時に行う
    - 来客に対して、しばらくすると担当者が向かうことを伝える
    - GHKitを通してオフィス内のGoogle Homeに客が来た旨を喋らせる
3. 担当者が受付へ向かう


# やったこと
1. [GHKit](http://ghkit.jp/ "GHKit")で、オフィス内のGoogle Homeに好きな文章を喋らせられるようにする
2. [IFTTT](https://ifttt.com/ "IFTTT")で、受付のGoogle Homeが来客からのメッセージを受け取ったことをトリガーにしてGHKitにアクションを投げられるようにする


# 参考ページ
- [Google Homeで受付システム作ってみた](https://qiita.com/h-takauma/items/4ecc3421f2995b207284)
- [GHKitとIFTTTの連携手順](https://qiita.com/tetotetote/items/a7ba4d464e8574d452fd)


# 必要なもの
- セットアップ済みGoogle Home 2台(miniでも可)
- GHKit
- 有線LAN環境とLANケーブル
- Androidスマートフォン


# 手順
## 1. GHKitの準備
　まずはGHKitを入手してください。がんばればRaspberry Piだけで同じことができそうですが、とりあえずGHKitで進めていきます。このGHKitを使うと、Google Homeがユーザーからの呼び出しなしに喋らせることができるようになります。以下の手順は[GHKit](http://ghkit.jp/ "GHKit")のページにも記載されていますが、一部変更しています。

###  1-1. Androidスマートフォンのセットアップ
　[GHKit専用アプリ](https://play.google.com/store/apps/details?id=tech.teto.ghkitalpha "GHKit専用アプリ")をインストールし、GHKit購入時にメールで送られてきたGHKit IDを入力します。このIDは後ほどIFTTTの連携でも使用します。
<img src="https://qiita-image-store.s3.amazonaws.com/0/230715/581df885-cdca-838f-c7aa-a1aa6ec13901.jpeg" alt="GHKit ID setup" width="50%">

### 1-2. Raspberry Piを起動
　GHKit本体であるRaspberry PiにLANケーブルを接続し、電源を入れます。しばらくしてGoogle Homeが「GHKitです」と話せば下の1-3.は飛ばしても可です。
<div align="center"><img src="https://qiita-image-store.s3.amazonaws.com/0/230715/2ca10a1a-a8c5-9612-3fcf-f3a3d5bd8adb.jpeg" alt="GHKit image" width=50%></div>

### 1-3. Raspberry PiのWifiセットアップ
　Google Homeが何も話さなければ、Raspberry PiとGoogle Homeが同じホームネットワーク内にないらしいので、先程インストールしたAndroidアプリでRaspberry PiのWifi設定をします。GHKitの説明ページには以下のように書かれているのですが、今回はなぜかWifiとつながってくれず有線で運用することにしました。
>Wifiルーターがルーターモードの場合など、有線LANとWifiが別ネットワークの場合、Raspberry PIのWifi設定を行う必要があります。
Androidアプリの右上メニューより「Raspberry PIのWifi設定」を選択し、指示に従って設定してください。
Raspberry PIを再起動して1分ほど待ち、Google Homeが「GHKitです」と喋ると設定完了です。
設定完了後、LANケーブルを取り外すことができます（要再起動）

<div align="center"><img src="https://qiita-image-store.s3.amazonaws.com/0/230715/9bff6a79-877a-d0e3-eb0b-c36d3bc91813.jpeg" alt="GHKit Wi-fi setup" width=50%></div>

### 1-4. Google Homeの指定
　今回はGoogle Homeを2台使用します。GHKitはホームネットワーク上を探して最初に見つかったGoogle Homeに発話させますが、それがいつも同じGoogle Homeとは限りません。そこでオフィス内に置くGoogle HomeのIPアドレスを指定して、いつもオフィス内の方に発話させるようにします。
　Google HomeのIPアドレスの確認方法は、スマホのGoogle Homeアプリでデバイス一覧を表示↓
<div align="center"><img src="https://qiita-image-store.s3.amazonaws.com/0/230715/f98028a4-9a1d-c57c-ac27-14bdc81aae92.jpeg" alt="Google Home 1" width=50%></div>

　確認したいGoogle Homeの設定ページを表示↓
<div align="center"><img src="https://qiita-image-store.s3.amazonaws.com/0/230715/498ebff4-fa00-8346-08c5-8c9ec9002bb3.jpeg" alt="Google Home 2" width=50%></div>

　ページ最下部の`192.168.?.?`のような値がIPアドレス↓
<div align="center"><img src="https://qiita-image-store.s3.amazonaws.com/0/230715/a857c7a7-b7b8-bc06-6a87-74ea6b9119c7.jpeg" alt="Google Home 3" width=50%></div>

このIPアドレスをアプリで入力すると、指定したGoogle Homeから常に発話できるようになります。
<div align="center"><img src="https://qiita-image-store.s3.amazonaws.com/0/230715/52ad30c8-a65f-aedc-4b9a-b82af7338119.jpeg" alt="GHKit IP setup" width=50%></div>


Google Homeを再起動したりするとIPアドレスが変わることがあるので、意図しないGoogle Homeが喋ったらこの手順で設定し直してください。

### 1-5. アプリからメッセージ送信
　Androidアプリから任意のメッセージを送信してGoogle Homeに喋らせることができたらOK。
<div align="center"><img src="https://qiita-image-store.s3.amazonaws.com/0/230715/d170127c-e1db-17fa-0812-378b200898f1.jpeg" alt="GHKit message" width=50%></div>


## 2. IFTTTの連携
　IFTTTでは、ある**トリガー**が起きたらある**アクション**を実行するという流れが設定できます。このトリガーとアクションを組み替えることで、提携している様々なサービスを利用して、新しいサービスを作ることができます。今回はIFTTTに「Google Homeが『OKグーグル、受付 ○○』と話しかけられる」というトリガーをセットし、「GHKitを通してGoogle Homeに『お客様がいらっしゃいました』と喋らせる」というアクションをセットしました。

### 2-1. IFTTTアカウントの作成
　[IFTTT](https://ifttt.com/ "IFTTT")のページに行って、アカウントを持っていない人は新規アカウントを作成するかGoogleアカウントでサインインしてください。
<div align="center"><img src="https://qiita-image-store.s3.amazonaws.com/0/230715/db7866d5-dbeb-d3df-31a8-29a3e06c3fc1.png" alt="IFTTT 1" width=50%></div>

### 2-2. 新しいアプレットの作成
　上部のメニューからMy Applets→New Appletを選択する。
<div align="center"><img src="https://qiita-image-store.s3.amazonaws.com/0/230715/8360dfd6-816a-c186-a8bd-8841079b2988.png" alt="IFTTT 2" width=50%></div>

### 2-3. トリガーの設定
　+this のところをクリックすると、トリガーが選択できます。検索窓にgoogleと入力して、Google Assistantを選択してください。
<div align="center"><img src="https://qiita-image-store.s3.amazonaws.com/0/230715/3ef525c1-84df-760c-4829-507f36a0ff90.png" alt="IFTTT 3" width=50%></div>

　connectをクリック、その後受付に置くGoogle Homeに設定しているアカウントで認証をしてください。
<div align="center"><img src="https://qiita-image-store.s3.amazonaws.com/0/230715/7b2858f0-335a-2671-2316-6e5b1ceb3302.png" alt="IFTTT 4" width=50%></div>

　トリガーの選択画面では、上の画像で左から3つ目のSay a phrase with a text ingredientを選択します。これはお客様の名前をGoogle Homeに繰り返させるためです。トリガーの各ボックスには以下のように入力してください。
>What do you want to say? :
　　受付 $
>What do you want the Assistant to say in response? :
　　$ 様。お待ちしておりました。担当の者が参りますので、少々お待ちください。
>Language :
　　Japanese
 
<div align="center"><img src="https://qiita-image-store.s3.amazonaws.com/0/230715/6156e62f-2734-0e22-ea39-30e2a15fffa7.png" alt="IFTTT 5"></div>

これでCreate triggerをクリックすれば、トリガーは設定完了です。

### 2-4. アクションの設定
続いて +that のところをクリックし、アクションを選択します。検索窓にwebhooksと入力し、Webhooksのサービスを選択してください。
<div align="center"><img src="https://qiita-image-store.s3.amazonaws.com/0/230715/1680e511-d11f-9d7f-3bdf-8bf75495f294.png" alt="IFTTT 6" width=50%></div>

ConnectしてMake a web requestを選択します。
<div align="center"><img src="https://qiita-image-store.s3.amazonaws.com/0/230715/13f2aee5-72bb-0a81-0332-0579cd02e39a.png" alt="IFTTT 7" width=50%></div>

設定のボックスには以下のように入力してください。ここで先程のGHKit IDが必要になります。ここではIDを仮にabcd1234とします。
>URL :
　　http://ifttt.ghkit.jp/
>Method :
　　POST
>Content Type :
　　application/json
>Body :
　　{"message": "abcd1234 お客様がいらっしゃいました。"}

Body中の記号`{`,`}`,`"`,`:`,`(半角スペース)`を間違えないようにしてください
<div align="center"><img src="https://qiita-image-store.s3.amazonaws.com/0/230715/f5c28657-4353-2743-7e08-08edf0cd2a0f.png" alt="IFTTT 8"></div>

Create actionボタンをクリックし、Finishをクリックすれば完成です！
<div align="center"><img src="https://qiita-image-store.s3.amazonaws.com/0/230715/78389d5c-a368-f41a-df01-358c4341d925.png" alt="IFTTT 9"></div>


# まとめ
　オフィスの受付システムを2台のGoogle Homeにさせてみました。GHKitを使用した部分はRaspberry piがあれば自作できそうですが、単純に実装すると誰でも任意のメッセージを喋らせられてしまうので認証などを考えるのがめんどくさそうです。IFTTTはthisとthatを組み替えればアイデア次第で誰でも新しいものが作れそうですね！

# 補足
　今回は[株式会社SmartHacks](https://smarthacks.jp/)での就業形インターンとして、このサービスならびに本記事を作成しました。