使用LINE Notify API與Python寄送手機推播通知

開發個人AI助理App時,為節省Apple開發者帳號費用,改用LINE Notify發送通知。本文詳述從申請服務、獲取授權碼到發送通知的完整步驟,並提供Python程式碼範例。

前陣子,我開啟了一個新的Side Project,嘗試使用Flutter和大型語言模型開發我的個人AI助理的手機App,其中一項功能是監控系統。當某個程式出現錯誤時,我希望可以透過Firebase發出Alert,並在iPhone上接收推播通知。不幸的是,我發現我必須先付99美元的年費取得Apple開發者帳號,才能使用Apple推播通知服務(APNs, Apple Push Notification service)。我不是很想付這筆錢,所以試著尋找其他替代方案。後來轉念一想,既然我每天都會看LINE,那就透過LINE Notify來發通知吧!

第一步:前往LINE Notify官網

往下滾動,找到不是很顯眼的Add Service。

第二步:填寫表單

有兩點需要注意。首先,service name會顯示在訊息前面,挑一個你喜歡的好名字。其次,Callback URL 稍後會用到,但你不必在你的伺服器上建立頁面或做任何設定。

第三步:收驗證信

第四步:進入Service頁面

現在你成功拿到client id和client secret了,這兩個資訊後面會用到。

第五步:點擊連結並連接對話群組

修改以下的網址。這個步驟對應到文件中authorize的部份,如擷圖所示。順帶一提,根據文件,state 參數是用來應對 CSRF 攻擊的。它不會顯示在通知中。

https://notify-bot.line.me/oauth/authorize?response_type=code&client_id={client_id}&redirect_uri={your_callback_url}&scope=notify&state={your_custom_state}

第六步:選擇你要發送通知的群組

第七步:複製網址中的Code

在一些舊版的教學中,當點擊「Agree and connect」後會彈出一個視窗,顯示 access_token ,但現在流程改變了。點擊後會被轉址到以下的網址,複製其中的code。

{your_callback_url}?code={generated_code}&state={your_state}

第八步:取得 Access_Token

def get_token(redirect_uri, client_id, secret, code):
    url = 'https://notify-bot.line.me/oauth/token'
    payload = {
        'grant_type': 'authorization_code',
        'code': code,
        'redirect_uri': redirect_uri,
        'client_id': client_id,
        'client_secret': secret
    }
    r = requests.post(url, params=payload)
    return r.text

如果成功,你會收到類似這樣的回應:

{\n  "status" : 200,\n  "message" : "access_token is issued",\n  "access_token" : {your_access_token}\n}

第九步:邀請 LINE Notify 加入群組

要發送通知到群組前,必須先邀請 LINE Notify加入群組。你可以直接搜尋LINE Notify,或是點擊連結。

第十步:開始發送通知!

現在你可以使用這個function來發送通知了。順帶一提,LINE Notify API 也可以發送網址,方法和發送文字一模模一樣樣。

def send_line_notify(message, access_token):
    url = 'https://notify-api.line.me/api/notify'
    headers = {
        'Authorization': f'Bearer {access_token}'
    }
    payload = {'message': message}
    response = requests.post(url, headers=headers, params=payload)
    return response

這份Python code同步發佈在 GitHub上。

🚀 以每年 5 美元解鎖無廣告體驗

✓ 14 天免費試用 ✓ 隨時取消

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *