Google Homeで受付システム作ってみた

Google Homeで受付システムを作ってみました。
東京の本社にはiPadを使った[受付システム](https://www.system-i-enter.com/i-face/)があるのですが、大阪支店は諸事情により導入が遅れています。。。
今回は、スプレッドシートに来訪者情報を記録し、その情報を検知するとSlackに通知が行くようにしました。

#現状
大阪支店は紙とペンと呼び鈴の超アナログ仕様ですｗ
これに会社名と名前を記入して呼び鈴を鳴らすと奥から社員がやってきて対応しています。

![IMG_0388.JPG](https://qiita-image-store.s3.amazonaws.com/0/154355/607e59aa-dca8-b37f-019f-f591e4f3dcc1.jpeg)

#完成動画
<blockquote class="twitter-tweet" data-lang="ja"><p lang="ja" dir="ltr">Google Homeで受付システムを作ってみた。 <a href="https://twitter.com/hashtag/GoogleHome?src=hash&amp;ref_src=twsrc%5Etfw">#GoogleHome</a> <a href="https://twitter.com/hashtag/Slack?src=hash&amp;ref_src=twsrc%5Etfw">#Slack</a> <a href="https://twitter.com/hashtag/Google%E3%82%A2%E3%82%B7%E3%82%B9%E3%82%BF%E3%83%B3%E3%83%88?src=hash&amp;ref_src=twsrc%5Etfw">#Googleアシスタント</a> <a href="https://t.co/O0bFoIuBCx">pic.twitter.com/O0bFoIuBCx</a></p>&mdash; がおまる@HoloLens研究者 (@gaomar) <a href="https://twitter.com/gaomar/status/938296234699296768?ref_src=twsrc%5Etfw">2017年12月6日</a></blockquote>
<script async src="https://platform.twitter.com/widgets.js" charset="utf-8"></script>

#構成図
構成はIFTTTでスプレッドシートに来訪者を記録し、値が変更されたことをトリガーにして
Slackに通知を投げています。

![受付仕組み.001.png](https://qiita-image-store.s3.amazonaws.com/0/154355/fe025c72-c550-7fd0-96f8-3791d2de81fe.png)


#Google Homeがｷﾀ━━━━(ﾟ∀ﾟ)━━━━!!
楽天スーパーセールで超格安の¥3,240で売っていたので直ぐにポチりました。
2台目ですｗ

![IMG_0384 2.JPG](https://qiita-image-store.s3.amazonaws.com/0/154355/a32600aa-5f72-4ec5-9e84-b4dd588c70e1.jpeg)

#手順

##1. IFTTTにレシピを登録
まずはIFTTTでGoogle Homeから反応出来るようにレシピを登録します。
Google Assistantを選択します。

![スクリーンショット 2017-12-06 10.08.12.png](https://qiita-image-store.s3.amazonaws.com/0/154355/1b9db379-0295-78bf-ffe8-a5f3d3db387e.png)

###■ Complete trigger fieldsに入力
「受付」というキーワードに反応するようにしています。

![スクリーンショット 2017-12-06 14.03.02.png](https://qiita-image-store.s3.amazonaws.com/0/154355/6ae4ad3d-d34f-8484-ebcd-1f402c0929f4.png)

これで、「OK! Google 受付 株式会社◯◯の名前」と言えば来訪者が記録されます。

###■ Update cell in spreadsheetへ入力
![スクリーンショット 2017-12-06 14.03.40.png](https://qiita-image-store.s3.amazonaws.com/0/154355/0ec0c5ba-029f-4797-5e98-27085cfb1690.png)

Which cell?は2行目に書きたいのB2としました。

![スクリーンショット 2017-12-06 14.04.21.png](https://qiita-image-store.s3.amazonaws.com/0/154355/9ffebb72-305b-5ed1-bbaa-61dea6e4219e.png)

##2. Google Homeに話しかけます

##3. Google Driveにあるスプレッドシートを編集する
Drive folder pathを空白にしたので、IFTTTフォルダの直下に来訪シートが追加されました。

![スクリーンショット 2017-12-06 14.09.01.png](https://qiita-image-store.s3.amazonaws.com/0/154355/18761ece-780c-1a5c-80a9-5b7fd4ac50be.png)

###■ スクリプトを追加する
ツールのスクリプトエディタをクリックしてスクリプトを追加します。

![スクリーンショット 2017-12-06 9.29.28.png](https://qiita-image-store.s3.amazonaws.com/0/154355/d6beea01-efff-0a91-e4e5-6aeebd915d83.png)

###■ スクリプトを編集する
値を書き込んだら１行上に追加するようにしています。
Google Homeからは常にB2を更新するようにしている為です。

```
function showStatus() {
  var mySheet = SpreadsheetApp.getActiveSheet();      // シートを取得
  var currentRow = mySheet.getActiveCell().getRow();  // 更新行を取得
  var myCell = mySheet.getActiveCell();               // アクティブなセルの取得

  if(myCell.getColumn() == 2) { //数字の部分には列番号（この場合B列）
    // 更新日時をA1に記録する
    var updateRange = mySheet.getRange('A' + currentRow);
    updateRange.setValue(Utilities.formatDate(new Date(), 'Asia/Tokyo', 'yyyy/M/d H:m:s'));

    var text = myCell.getValue() + '様が来訪されました';
    slackPost();    

    // 更新行を記述するため1行追加
    mySheet.insertRowBefore(2);

  }
  
  function slackPost() {
  var url        = 'https://slack.com/api/chat.postMessage';
  var token      = 'xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx';
  var channel    = '#チャンネル名';
  var username   = '来訪通知';
  var parse      = 'full';
  var icon_emoji = '';
  var method     = 'post'; 
  var payload = {
    'token'      : token,
    'channel'    : channel,
    'text'       : text,
    'username'   : username,
    'parse'      : parse,
    'icon_emoji' : icon_emoji
  };
  var params = {
    'method' : method,
    'payload' : payload
  };
  var response = UrlFetchApp.fetch(url, params);
  }
}
```

###■ Slackのtokenを取得する
スクリプトの途中にある、Slackのtokenを取得します。
https://api.slack.com/custom-integrations/legacy-tokens

![スクリーンショット 2017-12-06 14.13.32.png](https://qiita-image-store.s3.amazonaws.com/0/154355/c7e74922-f2bb-033a-3671-cd489577854e.png)

###■ スクリプト実行トリガーを登録
スプレッドシートの値が更新されたら、このスクリプトを実行するようにしましょう。

![スクリーンショット 2017-12-06 14.07.16.png](https://qiita-image-store.s3.amazonaws.com/0/154355/b5f7b553-1ee1-be01-ff3d-a389a5f748b6.png)

![スクリーンショット 2017-12-06 14.06.46.png](https://qiita-image-store.s3.amazonaws.com/0/154355/e5445050-ff12-01df-fae5-70617e53da75.png)

###■ 記録例
実際にこのように記録と通知がされます。

![スクリーンショット 2017-12-06 14.05.45.png](https://qiita-image-store.s3.amazonaws.com/0/154355/ae4c9dc8-4666-1944-77bd-cbe3281cd0ab.png)

![スクリーンショット 2017-12-06 14.06.00.png](https://qiita-image-store.s3.amazonaws.com/0/154355/fca990b5-4da1-92f7-88d1-1b08e1a5c6c6.png)


#まとめ
簡単に来訪者を記録することが出来ましたが、日本語の認識が少し辛い部分があります。
「ほんまち」と呼んで欲しい漢字を「ほんちょう」と言ったりこのあたりは改善してほしいですね。