ちょっとしたメッセージ通知に便利だったLINE Notifyが2025年3月31日をもってサービス終了すると発表されました。
LINE Notify
LINE Notify allows you to send web notifications from GitHub, IFTTT, Mackerel, and more directly to your LINE chats.
LINE Messaging APIで代替可能だとのことなので、試してみました。
移行の流れ
- LINE 公式アカウントを作る
- Messaging APIを有効にする
- 通知相手(今回は自分)のユーザーIDを取得する
- 公式アカウントのチャネルアクセストークンを取得する
こんな感じです。
公式アカウントを作る
以下の公式ドキュメントを参考にしながら作りましょう。
Messaging APIを始めよう
LINE Developersサイトは開発者向けのポータルサイトです。LINEプラットフォームのさまざまな開発者向けプロダクトを利用するための、管理ツールやドキュメントを利用できます。LINEログインやMessaging APIを活用して、...
Messaging APIを有効にする
以下の公式ドキュメントを参考にしながら作りましょう。
Messaging APIを始めよう
LINE Developersサイトは開発者向けのポータルサイトです。LINEプラットフォームのさまざまな開発者向けプロダクトを利用するための、管理ツールやドキュメントを利用できます。LINEログインやMessaging APIを活用して、...
ユーザーIDを取得する
ユーザーIDは自身で設定するLINE IDとは異なり、Uから始まる33桁の文字列のことです。
LINE Developersコンソールから自身のチャネルを選択し、「チャネル基本設定」タブの「あなたのユーザーID」から確認&コピーが可能です。
チャネルアクセストークンを取得する
ユーザーIDと同じくLINE Developersコンソールから自身のチャネルを選択し、「Messaging API設定」タブの「チャネルアクセストークン」から確認&コピーが可能です。
LINE Notifyの代替となるMassaging API
おそらくMassaging APIの機能の中の「プッシュメッセージを送る」が一番近いと思います。
「https://api.line.me/v2/bot/message/push」に対して以下のような形式でPOSTリクエストを送信すればメッセージが送信されます。
curl -v -X POST https://api.line.me/v2/bot/message/push \
-H 'Content-Type: application/json' \
-H 'Authorization: Bearer {channel access token}' \
-d '{
"to": "U4af4980629...",
"messages":[
{
"type":"text",
"text":"Hello, world1"
},
{
"type":"text",
"text":"Hello, world2"
}
]
}'
Pythonでの実装
私は記事執筆現在は以下のように実装しています。
import json
from urllib import request
def send_line_message(message: str, user_id: str, channel_access_token: str) -> int:
if not user_id:
raise Exception(f"user_id Error:'{user_id}'")
if not channel_access_token:
raise Exception(f"channel_access_token Error:'{channel_access_token}'")
line_messaging_api = "https://api.line.me/v2/bot/message/push"
data = {
'to': user_id,
'messages' : [
{
'type': 'text',
'text': message
}
]
}
encode_data = json.dumps(data).encode('utf-8')
# method = "POST" if self.data is not None else "GET"
req = request.Request(line_messaging_api, data=encode_data)
req.add_header('Content-Type', 'application/json')
req.add_header('Authorization', f'Bearer {channel_access_token}')
with request.urlopen(req) as res:
status_code = res.getcode()
return status_code
サードパーティライブラリのRequestsを使用すればもう少し簡潔に書けるのですが、仮想環境を作るたびにインストールするのが面倒なので標準パッケージのurllibを使用しています。
ちゃんと届きます!
まとめ
LINE Messaging APIは通知用ではなく、LINE公式アカウントの便利機能詰め合わせAPIです。
ChatGPTと連携したチャットボットなんかも簡単に作れるので、興味がある方は試してみてください。
コメント