1
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

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

Last updated at Posted at 2020-03-28

経緯

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

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

手順

①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がキックされラインにメッセージが送られる!
Screenshot_20200328_153549.jpg

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

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

1
2
0

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
1
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?