你知道 LINE 其實有免費的 bot 推播功能嗎?如果你的需求只是推送訊息,而不需要與使用者互動,那完全可以使用免費的 LINE Notify 來實作,就讓我們用一行程式都不寫的方式來試試吧!
目錄
LINE Notify 和 LINE@ Message api 的差異
通常大家第一時間對於 LINE chatbot 會想到 LINE@ 的 Message api,到底兩個有什麼差別的?我幫各位整理懶人包比對表如下:
項目 | LINE Notify | LINE@ Message api |
---|---|---|
費用 | 免費!! | 1. 付費 2. 其中有免費試用版,發送訊息數和人數有上限 |
訊息 | 只能推播訊息(單向) | 1. 可推播訊息,使用者回覆訊息(雙向) 2. 有多種卡片或快速回覆可以使用 |
聊天室 | 1 by 1 的話,共用 LINE Notify 官方的聊天室 | 有自己的聊天室,品牌形象佳 |
大頭照 | 因為共用 LINE Notify 所以不能自訂大頭照 | 可以自訂,品牌形象佳 |
群聊 | 可以邀請加入已有群組 | 可以邀請加入已有群組 |
應用 | 訊息推播 | chatbot 與使用者互動 |
LINE Notify 登錄與註冊服務流程概觀
申請流程原意是要工程師寫成 code 讓他自動化執行,由於我們是手動申請,一行程式都不寫,所以步驟做起來會有些繁瑣,於是用以下這張圖讓大家能夠快速有一個概念,再繼續實作下去。其中圓圈表示是真人要介入處理的角色。
使用 ngrok 建立暫時性伺服器
ngrok 是一個很方便的中介服務,讓你在區網內的服務外網也可以使用,同時有臨時性 domain,並且可以選擇 https 連線。而且他還有一個 inspect 的 web 介面,可以看到透過 ngrok 轉送的 api request 所有資料,debug 時非常好用。
這次我們使用 ngrok,主要是透過他來接使用者在註冊 LINE Notify 服務時轉送過來的資料,所以 localhost 並不用另外起 http server,只要讓 ngrok 接到 request 即可!
可能有點霧煞煞,沒關係,我們先繼續做下去!
還沒有安裝過 ngrok 的朋友可以使用以下指令安裝 (macOS 適用)
brew install ngrok
安裝完畢,立刻啟動
ngrok http 8080
看到如下畫面即是成功!先把 Forwarding 後面有 https 的網址複製起來,等等會用到。同時開啟 Web interface 後面的 http://127.0.0.1:4040/ 備用。
在 LINE Notify 平台登錄新的服務提供者
我們開始流程圖第一步:開發者填寫資料登錄服務
首先前往 Line Notify 後台,右上角登陸後,再點選右上角,選擇「管理登錄服務」
在此頁面下方點選「登錄服務」
將表單中的資料一一輸入。LINE Notify 不會審核資料,測試方便的話可以簡單填寫即可,但是信箱要寫收的到信的,等一下需要收驗證信。
重點!!其中 Callback URL 請填入剛剛啟動 ngrok 時複製的網址!
送出後,會出現提示頁面要你去信箱做認證
點選信中的認證網址後出現此頁面就認證完成!
回到管理服務頁面,點剛剛新增的服務進去,可以取得 Client ID 和 Client Secret,先複製到一邊備用。到此已經完成流程中第二步:從 web 介面取得 Client ID 和 Client Secret
使用者註冊服務提供者
緊接著要來做流程第三步:告訴使用者專屬服務網址。其實這邊的使用者就是你自己XD,使用以下模板來得到網址,其中
- Client ID 請替換成剛剛在 LINE Notify 服務後台複製的字串
- redirect uri 請替換成 ngrok 網址,也就是剛剛在 LINE Notify 填入的 Callback URL,務必確認兩者要完全一樣,包含「/」,否則會有錯誤
https://notify-bot.line.me/oauth/authorize?response_type=code&scope=notify&response_mode=form_post&state=f094a459&client_id=<你的 client id>&redirect_uri=<你的 ngrok 網址>
接著流程第四步,將此網址使用瀏覽器打開,會看到此頁面
接下來流程第五步,會有兩種可能,一種是選擇第一個「一對一聊天接收 LINE Notify 通知」,以及透過群組接收通知。兩者略有不同,我們先從「一對一」開始做起。
透過 1 對 1 聊天接收 LINE Notify 通知
選擇一對一後送出做流程第六步,此時很快的第七步會瞬間做完,然後看到一個錯誤畫面
不用擔心!這是正常的,表示 ngrok 找不到對應 port 的 localhost http server(我們跟本沒起)。
此時流程第八步,到 ngrok web 介面,可以看到第七步回傳的資料已經躺在裡面了,立馬把右邊 code 後面的字串複製起來!
同時檢查你的 line,會發現多一個 LINE Notify 的對話,裡面會告訴你已經連動完成
透過群組接收通知
如果剛剛是選擇群組的情況,基本上前面所說的事情會一模一樣,但 LINE Notify 會告訴你說,連動完成,可是要自己將 LINE Notify 這個帳號邀入群組。
到 Line 裡,找到剛剛選擇的群組,點「邀請」,找到「LINE Notify」邀請進來就可以了!
用 Postman 向 LINE Notify 平台換 token
回到我們的流程第九步,接下來要以剛剛取得的 code 來換 token,以後才能用 token 來推播訊息。
開啟 Postman 後,選擇「POST」,url 處輸入
https://notify-bot.line.me/oauth/token
並且在 Params 裡依序填入以下 key, value
- grant_type: authorization_code
- redirect_uri: <你的 ngrok 網址>
- client_id: <你的 LINE Notify 後台複製的>
- client_secret: <你的 LINE Notify 後台複製的>
- code: <剛剛從 ngrok web 介面取得的
送出後,把 response 中 access_token 後面的字串複製起來即可,隨即完成流程第十步!總算把整個註冊流程走完!
用 Postman 測試訊息推播
在 Postman 開一個新的分頁,一樣選擇「POST」,url 處輸入
https://notify-bot.line.me/oauth/token
此時就要掏出你剛剛取得的 token 啦!切換到下方的「Headers」,在 key、value 處分別輸入
key: Authorization
value: Bearer <你的 token>
然後再切換回「Params」分頁,在 key、value 處分別輸入
key: message
value: hello world
送出後,就會在 Line 裡看到剛剛丟的字串啦!
此時可以拿另一把用群組註冊時的 token 來試試,會發現訊息準確地送到對應的群組之中
之後就可以把送訊息這一段寫入自己的專案裡做推播使用囉!我會在 用 LINE Notify 做 MotionEye 的動態偵測推播 一文分享實際應用哦!如果覺得我文章內容對你有幫助的話,請在文章後面幫我按 5 個讚!讓我知道大家都喜歡什麼內容哦!
延伸閱讀:
用 MotionEye + Raspberry pi 做一個網路監控系統吧!
用 LINE Notify 做 MotionEye 的動態偵測推播