ニフクラではNIFcLounge(ニフクラウンジ)という取り組みがあります。そこでは勉強会会場の無償提供を行っていますが、一つ大きな問題があります。それは会場に入る際にセキュリティゲートがあることです。
当たり前ですが、このゲートは社員証(または専用カード)がないと通過できません。開け放しにもできないので、勉強会がはじまる前は付きっきり、勉強会がはじまった後も適宜入場する人の対応が必要です。常に外にいるのも非効率ですし、勉強会側で後から来た人向けの案内が必要でした。
ゲートの前に呼び鈴を押しても良いのですが、勉強会をやっている時に大きな音が響くのも嫌ですし、逆に盛り上がっていて聞こえない可能性もあります。そこで簡単な受付システムを考えてみました。
アーキテクチャ
アーキテクチャは以下の通りです。
SORACOM LTE-M ButtonはSORACOMのネットワークを経由してAWS IoT 1-Clickを呼び出す仕組みです。AWS IoT 1-ClickではAWS Lambdaを呼び出しています。AWS LamdaではmBaaSから携帯電話のリストを取得し、それをTwilioでSMSへメッセージ送信する仕組みです。
SORACOM LTE-M Buttonのセットアップについては下記をご覧ください。
AWS Lamdaのコード
AWS Lamdaで実行するコードです。TwilioとNCMBのライブラリがあるのでWeb上でインライン編集はできません。圧縮してAmazon S3へアップロード後、デプロイしています。
まず両ライブラリを初期化します。
config = require('./config'); const client = require('twilio')(config.accountSid, config.authToken); const NCMB = require('ncmb'); const ncmb = new NCMB(config.applicationKey, config.clientKey);
次に電話番号の一覧を取得します。
exports.handler = async (event) => { const Tel = ncmb.DataStore('Tel'); const tells = await Tel.fetchAll(); for (const tel of tells) { // 各電話番号に対する処理 } }
後はTwilioでメッセージを送信します。
const message = await client.messages .create({ body: `${tel.name}さん、受付に到着した方がいます!`, from: '+17653003967', to: tel.number });
最後にレスポンスを返して終了です。
const response = { statusCode: 200, body: '完了', }; return response;
デモ
https://www.youtube.com/watch?v=prb7NSytUh8
ボタンを押してから実際に届くまで、早くて10秒くらいのタイムラグがあります。セキュリティゲート前で少し待つ形になってしまうのが残念ですが、ボタンだけのIoT受付システムを体験してもらう楽しさはありそうです。
※ボタンは常に設置されているとは限りません。入れないときには、お手数ですがイベントごとの問い合わせ先にご連絡ください!※