AWSIotボタン→LINEにメッセージを送る


経緯

コロナの影響でおばあちゃんが家を出れずに退屈しているらしいのだが、
高齢のためライン(スマホ)が使えない。
孫15人のラインに一斉送信して、おばあちゃんの相手をしてくれる人を探す!という公算。
たまたまAWSIotエンタープライズ(2500円)という面白いデバイスを発見したので、さっそく実装してみた。

アーチテクチャーはこんな感じです。

手順

①IOTボタンの設定

AWS IoT 1-Click アプリをアップルストア又は、GooglePlayから自分のスマホにインストールし、デバイスの登録設定、Wifi設定を行ってください。

②LINE Notify のトークンを発行する

トークンは、マイページの「アクセストークンの発行(開発者向け)」以下の「トークンを発行する」ボタンから発行できます。
[https://notify-bot.line.me]
トークン発行後、設定したルームに LINE notify を招待します。

③コマンドラインからトークンをPOSTする

リナックスからはカールコマンドでPOSTします。
Windowsの場合 curl コマンドをダウンロードしてインストールしてください。[https://notify-bot.line.me]

curl -X POST -H "Authorization: Bearer <取得したトークン>" -F "message=test from curl" https://notify-api.line.me/api/notify

カールコマンドからLINE Notifyにポストして自分のラインに"hello"とメッセージを送るテストをしてみてください。
curl https://notify-api.linuthorization: Bearer <取得したトーケン>' -F 'message=hello'

④AWSLambdaを作成

今回はPython3.8で実装してみました。

import os
import urllib.parse
import urllib.request
import json

def lambda_handler(event, context):

    LINE_TOKEN      = os.environ.get("LINE_TOKEN")
    LINE_NOTIFY_URL = "https://notify-api.line.me/api/notify"

    //クリックタイプをイベント情報として取得する
    clicktype = event['deviceEvent']['buttonClicked']['clickType']

    //クリックタイプに応じた処理の分岐
    if (clicktype == "SINGLE"):
        msg = "暇だから誰か電話して I am bored. Please call me😗"
    elif (clicktype == "DOUBLE"):
        msg = "野菜がとれたよ/ I harvested some veggies🥕"
    elif (clicktype == "LONG"):
        msg = "緊急事態。助けて!/Help me🚓 🚑 🚒"
    else:
        msg = "clickTypeを正常に取得できませんでした"

    method  = "POST"
    headers = {"Authorization": "Bearer <トークンをいれる>"}
    payload = {"message": msg}


    payload = urllib.parse.urlencode(payload).encode("utf-8")
    req = urllib.request.Request(
        url=LINE_NOTIFY_URL, data=payload, method=method, headers=headers)
    urllib.request.urlopen(req)

④IotボタンとAWSLambdaを紐付ける

AWSのAWS IoT 1-Clickのページに行き、
管理 > プロジェクト>作成ボタン
アクションから”Lambda関数を選択”を選ぶ。
Lambda関数のところを自分の作ったLambdaファイルを選択し、プロジェクトの作成をクリック。

④ボタンを押して見る ポチッ

ボタンを押せばAWSLambdaがキックされラインにメッセージが送られる!

AWSLambdaを使えばサーバーレスで出来ちゃうんです。ラインだけではなくスマート家電、他のSNS等へのプッシュなどボタンの使い道は多様です。結構簡単に作れちゃうので是非試してみてください。

最後までお読み頂きありがとうございました。