商品等のご購入はAmazonがおすすめ

LINE Notify がもうすぐ終了! LINE Messaging API へ以降しよう!

LINE

ちょっとしたメッセージ通知に便利だった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で代替可能だとのことなので、試してみました。

移行の流れ

  1. LINE 公式アカウントを作る
  2. Messaging APIを有効にする
  3. 通知相手(今回は自分)のユーザーIDを取得する
  4. 公式アカウントのチャネルアクセストークンを取得する

こんな感じです。

公式アカウントを作る

以下の公式ドキュメントを参考にしながら作りましょう。

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を使用しています。

test

ちゃんと届きます!

まとめ

LINE Messaging APIは通知用ではなく、LINE公式アカウントの便利機能詰め合わせAPIです。

ChatGPTと連携したチャットボットなんかも簡単に作れるので、興味がある方は試してみてください。

コメント

タイトルとURLをコピーしました