PythonでLINE Notifyする
スマホにPush通知する手段として何が良いか考えたときにLINE Notifyを使うのが一番手軽な気がしている。
LINE NotifyはLINE NotifyのページからTokenを発行し、そのTokenを以下のpythonスクリプトに渡すだけで簡単にスマホに通知を送ることができる。
Tokenを発行する際にトークルームを指定するとそのトークルームに通知を飛ばすことができるため通知を送りたい人をそのトークルームに招待しておくとそのトークルームの参加者に一斉通知を行うことができる。
例えば、Raspberry Piでマグネットセンサを使い家のドアが開いたことをセンシングして通知するようなシステムを作った場合、家族が参加しているトークルームを作っておけば家族全員にその通知を届けることができる。
事前準備(mac, raspbianの場合)
1. LINE NotifyのページにログインしてTokenを発行する。
2. 環境変数 LINENOTIFYTOKEN に取得したTokenを指定する。
bashの場合は
export LINENOTIFYTOKEN="xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"
スクリプト
import requests
import os
def sendLineNotify(message):
token = os.environ.get("LINENOTIFYTOKEN")
url = "https://notify-api.line.me/api/notify"
headers = {"Authorization" : "Bearer " + token}
payload = {"message" : message}
r = requests.post(url, headers = headers, params = payload)
if __name__ == '__main__':
sendLineNotify("test test")
実行例
画像を送りたい場合のスクリプト
以下のように画像(test.jpg)を用意して指定することで画像もプッシュすることが出来る。
import requests
import os
def sendLineNotify(message):
token = os.environ.get("LINENOTIFYTOKEN")
url = "https://notify-api.line.me/api/notify"
headers = {"Authorization" : "Bearer " + token}
payload = {"message" : message}
files = {"imageFile" : open("test.jpg", "rb")}
r = requests.post(url, headers = headers, params = payload, files = files)
if __name__ == '__main__':
sendLineNotify("画像と一緒にプッシュ")
今回のエッセンス
LINE Notifyを使うといとも簡単にスマホにプッシュ通知を送ることが出来る。