自分のサイトに入力フォームを設置し,ユーザーによって入力された値を使ってサーバーで何かしらの計算を行えるようにしたとき,ユーザーが使ったタイミングで通知が欲しい時があります.
今回は,WordPressで作られたサイトに入力された値を使ってPythonで計算したときにLINEに通知を入れる方法を書きます.
#環境
サイト:WordPress
サーバー:mixhost
サーバーから通知:Python,LINE Notifyを使用
#WordPressに入力フォームを設置して計算ツールを作る
WordPress上に入力フォームを設置
→サーバーでPython計算
→サイトに計算結果を表示
までの流れは,以下の記事を参考にしました.
ブログ(WordPress)のフォームの入力値を使用してPythonで計算しブログにグラフを表示
同じ環境なら,同じようにできると思います.
#計算が行われたら通知をLINEに送る
基本的には,LINE NotifyというサービスをPythonで使って通知を送るだけです.
#トークンを取得(LINE Notify)
「LINE Notify Python」などで検索すればたくさんやり方が出てきます.
例:https://qiita.com/ken_yoshi/items/7879b3117d298a143101
(というか,この例のリンク記事だけで完結できるかもしれません)
#通知を送るソースコードをPythonに書く
以下のコードをサーバーに用意すればOKです.
line_notify_bot.py (実行するPythonファイルと同じディレクトリに置く)
import requests
class LINENotifyBot:
API_URL = 'https://notify-api.line.me/api/notify'
def __init__(self, access_token):
self.__headers = {'Authorization': 'Bearer ' + access_token}
def send(
self, message,
image=None, sticker_package_id=None, sticker_id=None,
):
payload = {
'message': message,
'stickerPackageId': sticker_package_id,
'stickerId': sticker_id,
}
files = {}
if image != None:
files = {'imageFile': open(image, 'rb')}
r = requests.post(
LINENotifyBot.API_URL,
headers=self.__headers,
data=payload,
files=files,
)
※requestsはpipでインストールしておいてください.
実行するPythonファイル
#何かしらの計算がここに書かれている
#以下,LINE Notifyによる通知
from line_notify_bot import LINENotifyBot
bot = LINENotifyBot(access_token='取得したトークン')
bot.send(
message='サイト上でツールが使用されました',
#image='test.png', # png or jpg
sticker_package_id=11537,
sticker_id=52002759,
)
「取得したトークン」のところに先ほど取得したトークンをコピペしてください.
これで,サイト上で入力された値を使用してに計算が行われたとき,LINEに「サイト上でツールが使用されました」という通知がきます.
ちなみに,sticker_package_id,sticker_idのところは通知のときにスタンプを送ります.どのスタンプにするかは以下を参照.
https://developers.line.biz/en/docs/messaging-api/sticker-list/
messageに値を代入すればサイトに入力された値や計算結果をLINEに送ることができます.
また,画像を送ったりもできるようです.色々工夫すると面白いと思います.
#結果
自分のサイト上のフォームに値を入力すると,こんな感じで通知が来ました.
ちなみにですが,私が実行したサイト上のツールは以下です.米国株ポートフォリオを分析するために作りました.