FJCT_ニフクラ mobile backend(mBaaS)お役立ちブログ

スマホアプリ開発にニフクラ mobile backend(mBaaS)。アプリ開発に役立つ情報をおとどけ!

勉強会用にSORACOM LTE-M Buttonで受付機能を作りました

f:id:mbaasdevrel:20190123141206p:plain

ニフクラではNIFcLounge(ニフクラウンジ)という取り組みがあります。そこでは勉強会会場の無償提供を行っていますが、一つ大きな問題があります。それは会場に入る際にセキュリティゲートがあることです。

当たり前ですが、このゲートは社員証(または専用カード)がないと通過できません。開け放しにもできないので、勉強会がはじまる前は付きっきり、勉強会がはじまった後も適宜入場する人の対応が必要です。常に外にいるのも非効率ですし、勉強会側で後から来た人向けの案内が必要でした。

ゲートの前に呼び鈴を押しても良いのですが、勉強会をやっている時に大きな音が響くのも嫌ですし、逆に盛り上がっていて聞こえない可能性もあります。そこで簡単な受付システムを考えてみました。

アーキテクチャ

アーキテクチャは以下の通りです。

f:id:mbaasdevrel:20190123141206p:plain

SORACOM LTE-M ButtonはSORACOMのネットワークを経由してAWS IoT 1-Clickを呼び出す仕組みです。AWS IoT 1-ClickではAWS Lambdaを呼び出しています。AWS LamdaではmBaaSから携帯電話のリストを取得し、それをTwilioでSMSへメッセージ送信する仕組みです。

SORACOM LTE-M Buttonのセットアップについては下記をご覧ください。

SORACOM LTE-M Button powered by AWS をクリックしてSlackに通知する | Getting Started with SORACOM LTE-M Button | SORACOM Developers

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受付システムを体験してもらう楽しさはありそうです。

※ボタンは常に設置されているとは限りません。入れないときには、お手数ですがイベントごとの問い合わせ先にご連絡ください!※

中津川 篤司

中津川 篤司

NCMBエヴァンジェリスト。プログラマ、エンジニアとしていくつかの企業で働き、28歳のときに独立。 2004年、まだ情報が少なかったオープンソースソフトの技術ブログ「MOONGIFT」を開設し、毎日情報を発信している。2013年に法人化、ビジネスとエンジニアを結ぶDXエージェンシー「DevRel」活動をスタート。