目的
LINEでbotを作り、Pythonからbotを通して通知する
※月額0円のコミュニケーションプランだと、月に200通までの制限がある
https://www.lycbiz.com/jp/news/line-official-account/20230601/
背景
時間のかかる処理をさせる際に、終わったらスマホに知らせてほしいと思うことが多々あったので、AIさんに聞いて作ってみた。
環境
- Windows11 バージョン24H2(OSビルド26100.2454)
- Python3.12.4
- line-bot-sdk 3.9.0
作り方
- (無ければ)LINE Developersアカウントを作る
- ログインする
- (無ければ)プロバイダーを作る
- (無ければ)チャネルを作る
- チャンネルシークレットを取得する
- アクセストークンを取得する
- LINE通知するユーザーIDを調べる
- PythonのLINE通知クラスを作成する
- line-bot-sdkをインストールする
(無ければ)LINE Developersアカウントを作る
LINEデベロッパーコンソールで、アカウントが無なければ作る
ログインする
LINEデベロッパーコンソールにログインする
(無ければ)プロバイダーを作る
(無ければ)チャネルを作る
チャンネルシークレットを取得する
チャネルのチャネル基本設定を開く
チャネルシークレットの発行ボタンをクリックする
表示されたチャネルシークレットを控えてく
アクセストークンを取得する
チャネルのMessaging API設定を開く
チャンネルアクセストークン(長期)の発行ボタンをクリックする
表示されたチャネルアクセストークンを控えておく
LINE通知するユーザーIDを調べる
チャネルのチャネル基本設定を開く
あなたのユーザーIDを控えておく
PythonのLINE通知クラスを作成する
例えば、AIさんに以下を質問して
python言語で、LINEメッセージAPIを使ってLINEに通知を送るクラスを作ってください。
そのクラスはvalueobjectパターンで作ります。
アクセストークンとチャンネルシークレットは引数で与えてインスタンスを作ります。
アクセストークンとチャンネルシークレットはファイルに保存します。
引数が与えられずファイルに保存されている時はファイルから読み込んでインスタンスを作ります。
回答のコードを、自分好みに直して使います。
line-bot-sdkをインストールする
コマンドラインで以下を入力する
pip install line-bot-sdk
使い方
LineMessageAPIクラスのdocstringを見てもらえばわかりますが、引数access_tokeにアクセストークンを、channel_secretにチャンネルシークレットを指定して、LineMessageAPIクラスのインスタンスを作り、引数user_idで送るユーザーのIDと、messageで送るメッセージを指定して、send_messageメソッドを呼び出せば通知できます。
初回は、以下のコマンドで通知を送ります。line_message_api_config.jsonファイルにアクセストークンやチャンネルシークレットが保存されます。
python line_message_api.py -a <アクセストークン> -c <チャンネルシークレット> -u <通知を送るユーザーID> -m <メッセージ>
次回からは、アクセストークンとチャンネルシークレットをline_message_api_config.jsonから読み込むので、以下の通り省略できます。
python line_message_api.py -u <通知を送るユーザーID> -m <メッセージ>
おわりに
無料だと200通までなので、何を通知するかよく考えて利用したい。
slackなら無料で何通でも通知できると思うので、次回はそちらを試したい。