【AWS IoT ボタンでメッセージ送信3】赤ちゃん記録でおしっこ・うんち・○っぱいをSlackへ送信
スポンサーリンク
赤ちゃんの記録を付けるためにAWS IoT ボタンを使い、おしっことうんちと○っぱいの度にボタンを押して、Slackに送信することで記録する。というのを作成した。
その備忘録をつける。
AWS IoT ボタンとLambda関数を連携してSlackに送信できた。これで記録もできるし、通知も来る。 pic.twitter.com/GtJv1Y8shM
— ろきsan@rokisan (@AhrkIzo) 2019年12月31日
これは以前のAWS IoT 1-ClickでSMS送信のやつと、PythonでSlack送信していたやつを組み合わせると割と簡単にできた。
ahrk-izo.hatenablog.com
ahrk-izo.hatenablog.com
[前提]
- 上記のリンクでAWS IoT 1-ClickでIoTボタンを押してSMS送信できていること
スポンサーリンク
1. Lambda関数作成
AWSコンソールでLambda関数をつくる。(デプロイツールとかめんどうなのでブラウザでやっちゃう)
Lambda > 関数 > 関数の作成
「一から作成」
基本情報として、
関数名 : slack_notification(すきな関数名でよい)
ランタイム : Python 3.7
「関数の作成」
そしてこの部分にコードを書く。
コードは以下の通り。
from datetime import datetime, timezone, timedelta import json import os import urllib.request def lambda_handler(event, context): click_type = event['deviceEvent']['buttonClicked']['clickType'] message = '' color = '#00bfff' if click_type == 'SINGLE': message = 'おしっこ!' elif click_type == 'DOUBLE': message = 'うんち!!' color = '#ffa500' elif click_type == 'LONG': message = 'おっぱい!' color = '#ffc0cb' dt_now_jst = datetime.now(timezone(timedelta(hours=9))) message += '({})'.format(dt_now_jst.strftime('%Y年%m月%d日 %H:%M:%S')) slack_message = { 'attachments': [ { 'text': message, 'color': color, } ] } url = os.environ['URL'] method = 'POST' headers = {'Content-Type': "application/json"} json_data = json.dumps(slack_message).encode("utf-8") try: request = urllib.request.Request(url, data=json_data, method=method, headers=headers) with urllib.request.urlopen(request) as response: response_body = response.read().decode('utf-8') return response_body except Exception as e: raise e
環境設定も作成(必須ではないがテストで切り替えるときとか便利)
残りはデフォルトのまま、右上の保存。
これでLambda関数は完成。あとはAWS IoT 1-Clickサービスで作成したプロジェクトにこのLambda関数を設定するだけ(冒頭のSMS送信したリンクで作ったやつ)