自分のサイトに入力された情報をLINEに通知する方法


自分のサイトに入力フォームを設置し,ユーザーによって入力された値を使ってサーバーで何かしらの計算を行えるようにしたとき,ユーザーが使ったタイミングで通知が欲しい時があります.

今回は,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に送ることができます.
また,画像を送ったりもできるようです.色々工夫すると面白いと思います.

結果

自分のサイト上のフォームに値を入力すると,こんな感じで通知が来ました.

ちなみにですが,私が実行したサイト上のツールは以下です.米国株ポートフォリオを分析するために作りました.