Help us understand the problem. What is going on with this article?

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

More than 1 year has passed since last update.

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

現状

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

IMG_0388.JPG

完成動画

構成図

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

受付仕組み.001.png

Google Homeがキタ━━━━(゚∀゚)━━━━!!

楽天スーパーセールで超格安の¥3,240で売っていたので直ぐにポチりました。
2台目ですw

IMG_0384 2.JPG

手順

1. IFTTTにレシピを登録

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

スクリーンショット 2017-12-06 10.08.12.png

■ Complete trigger fieldsに入力

「受付」というキーワードに反応するようにしています。

スクリーンショット 2017-12-06 14.03.02.png

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

■ Update cell in spreadsheetへ入力

スクリーンショット 2017-12-06 14.03.40.png

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

スクリーンショット 2017-12-06 14.04.21.png

2. Google Homeに話しかけます

3. Google Driveにあるスプレッドシートを編集する

Drive folder pathを空白にしたので、IFTTTフォルダの直下に来訪シートが追加されました。

スクリーンショット 2017-12-06 14.09.01.png

■ スクリプトを追加する

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

スクリーンショット 2017-12-06 9.29.28.png

■ スクリプトを編集する

値を書き込んだら1行上に追加するようにしています。
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

■ スクリプト実行トリガーを登録

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

スクリーンショット 2017-12-06 14.07.16.png

スクリーンショット 2017-12-06 14.06.46.png

■ 記録例

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

スクリーンショット 2017-12-06 14.05.45.png

スクリーンショット 2017-12-06 14.06.00.png

まとめ

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

h-takauma
様々なIoT機器の研究開発を行っています。 AWSの研究開発がメインです。LINE API Expert('19〜) 最近はスマートスピーカーに夢中です! 著書「スマートスピーカーアプリ開発入門」https://amzn.to/2o0KGWs
i-enter
「効果」をつねに提供します。スマホアプリ開発No.1の実績。最新のIoTに対応した開発も行います。
https://www.i-enter.co.jp/
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
No comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
ユーザーは見つかりませんでした