LoginSignup
51
36

More than 1 year has passed since last update.

学校に帰宅したらSlackに通知するシステム作ってみた

Last updated at Posted at 2021-06-06
1 / 7

学校に帰宅したらSlackに通知するシステム作ってみた


はじめに

こんにちは、会津大学学部一年のしんぶんぶんです。
学校にあるUBICという施設に最近よく住んでいるのですが、UBICに帰宅したらSlackへ通知が飛ぶシステム欲しいなーと思い一時間半くらいでさくっと作ってみました。


システム概要

今回はLINE Simple Beaconとmicro:bitを使い、自分のiPhoneがBLEの電波圏内に入ったらSlackへ通知がシステムにしました。
API Gateway + Lambdaのサーバレスアーキテクチャで構成しています。
※図は一部割愛しています(とくにSlackのあたり)

ubic-bot-アーキテクチャ.png


ソースコード

こちらのリポジトリにアップロードしています。
serverless frameworkでデプロイできます。

めんどくさいBLEもLINE Messaging APIを使えば11行で書くことができます。マジ便利。
※このコードは署名検証とかエラーハンドリングとかを省いているのでその辺はご注意を。

const line = require('@line/bot-sdk');
const axios = require('axios');
const client = new line.Client({ channelAccessToken: process.env.ACCESSTOKEN });
module.exports.bot = (event, context) => {
  const events = JSON.parse(event.body).events;
  events.forEach(async function (event) {
    console.log(JSON.stringify(event));
    if (event.type === 'beacon') await axios.post(process.env.SLACKURL, { text: 'ぶんぶんがUBICに帰宅しました' })
    context.succeed({ statusCode: 200, headers: { 'X-Line-Status': 'OK' }, body: '{"result":"completed"}' })
  });
};

作り方

  1. LINE DevelopersでMessaging APIのチャネルを作成
  2. ソースコードに記載されているリポジトリからコードをcloneして、AWSへデプロイする
  3. LINE DevelopersのコンソールからWebhookを有効化してWebhookURLにAPI Gatewayのエンドポイントを入力する
  4. Beacon登録ページでLINE Simple BeaconのハードウェアIDを発行
  5. micro:bitのMakeCodeにアクセスしてスケッチを作る
    1. BluetoothとLINE Beaconの拡張機能を追加する
    2. 以下の様なスケッチを書く(HWIDにさっき発行したハードウェアIDをいれる) スクリーンショット 2021-06-06 17.53.05.png
    3. micro:bitをPCに接続してスケッチを書き込む
  6. Botを友達追加してしばらく待つ
  7. Slackに通知が来る

スクリーンショット 2021-06-06 16.56.33.png


おわりに

自前でBLEを実装するとめちゃめちゃめんどくさいですが、LINE Simple Beaconを使えばこんな簡単に作ることができます。
興味ある方はぜひやってみてください!

51
36
2

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
51
36