2024-09-06|閱讀時間 ‧ 約 9 分鐘

使用LINE Notify API與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 idclient 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上。


    分享至
    成為作者繼續創作的動力吧!
    © 2024 vocus All rights reserved.