LINE Notify (@linenotify) 試用紀錄
LINE Notify (@linenotify) 試用紀錄。單獨使用 LINE Notify 推播重要訊息給特定群組。
引言
工作上客戶需求。預先準備整理相關軟體計術、開發流程。
LINE Notify
vs LINE Messaging API
LINE Notify
vs LINE Messaging API
其實 Notify 與 Messaging API 兩者好像相似其實用途/應用情境完全不一樣。
費用
免費
依用量收費
功能
只能單向通知
可以雙向訊息;就是聊天
對向
可以送給個人(要先註冊) 也可以送聊天群組(由管理員事先註冊好)
個人;聊天機器人
程式開發
只需寫一些程式
要寫比較多程式
LINE Notify
vs Firebase 推播(FCM)
LINE Notify
vs Firebase 推播(FCM)LINE Notify 的比較對象應該是 Firebase 推播。
Firebase 推播到 PC 是免費的但推播到 mobile/iOS/Android 要收費,且整合性不佳算是只能單獨作戰。
LINE Notify 是全面免費的唯一的限制就是只能在 LINE 平台運作。而 LINE 在 PC、mobile 都有支援。在台灣基本上人人都有 LINE 帳號,等同是免費的推播平台。整合性也比較容易應該當初在設計時就有考慮到這一層。
案例:附近早餐店點餐
LINE 官方
+ LIFF app
+ LINE Notify
某早餐店在 LINE 平台申請 LINE 官方
。這時還無法使用 LINE Notify
。
LINE Notify 需要個人同意(註冊)才能生效,這時需要開發一支 LIFF app 引導客戶註冊。
重新整理程序:
phase 1: 註冊
某早餐店在 LINE 平台申請
LINE 官方
。事先開發一支 LIFF app,功能為引導客戶註冊 LINE Notify。
客戶把
LINE 官方
加入好友,並自動轉址 LIFF app 引導客戶註冊 LINE Notify。與 LINE Notify 連動成功。
phase 2: 點餐
客戶在
LINE 官方
開啟另一支 LIFF app,功能為引導客戶下單/點餐/消費。客戶成功下單/點餐/消費後用,後台就能用 LINE Notify 送訊息給客戶。
後台也通知早餐店有客戶透過 LINE 點餐了,趕快準備餐點。
客戶到早餐店領取並繳費。
推論理想搭配
LINE 官方
+ LIFF app
+ LINE Notify
LINE Notify
其實也可以單獨運作當作免費的推播平台,當然用戶同意(註冊)這一步是少不了的。
我們客戶的應用案例是單獨使用LINE Notify
推播重要訊息給特定群組。
整體流程
依 LINE Notify API Document 文件流程描述 Overall flow and possible implementations of the API。
再參考相關上下文與相關資料繪製成流程圖。

參考文件
實作紀錄-登錄服務
實作過程中的登錄服務的『眉角』最多。基本上都可以亂填。
其中, Callback URL
必需正確它也就是 redirect_uri
。
其中,服務網址
也可以亂填。不過理想的網址應該是 LIFF app,用來引導客戶的 LINE ID/profile 註冊 LINE Notify 的 LIFF app。

開發環境
平台:.NET6 IDE: Visual Studio 2022 框架: Blazor Server App
實作紀錄
(想到再寫...)
# 用 ngrok 進行映照內網成外網
> ngrok http https://localhost:7269/
https://edd3-xxx-xxx-xxx-xxx.ngrok-free.app/ -> https://localhost:7269/
# ngrok 本機管理員
http://127.0.0.1:4040/
===> 在 line 註冊 Notify
Client ID: wpO642hWhtyWEixxxxxxxx
Client Secret: eX6DoCyvESUmFFKJvIPrS0oDAvvqXIRnBEyxxxxxxxx
§§ GET /oauth/authorize:form_post取到 code,state
GET https://notify-bot.line.me/oauth/authorize?response_type=code&scope=notify&response_mode=form_post&client_id=wpO642hWhtyWEixxxxxxxx&redirect_uri=https://d237-xxx-xxx-xxx-xxx.ngrok-free.app&state=12345678-1234-1234-1234-123456789012
===>
code: YoSirrQtggzWMgVL3qqwGs
state: 12345678-1234-1234-1234-123456789012
§§ 取 access_token with code, code 只能用一次的樣子
> curl -d "grant_type=authorization_code&redirect_uri=https://d237-xxx-xxx-xxx-xxx.ngrok-free.app&client_id=wpO642hWhtyWEixxxxxxxx&client_secret=eX6DoCyvESUmFFKJvIPrS0oDAvvqXIRnBEyxxxxxxxx&code=YoSirrQtggzWMgVL3qqwGs" https://notify-bot.line.me/oauth/token
{
"status" : 200,
"message" : "access_token is issued",
"access_token" : "eRjIZEBz4pWi3ZGTcM6A8aLs9JxTfPub3beWekqNL0W"
}
§§ 發送 LINE Notify 通知訊息
> curl -H "Authorization: Bearer eRjIZEBz4pWi3ZGTcM6A8aLs9JxTfPub3beWekqNL0W" -d "message=用郡組二的token送訊息" https://notify-api.line.me/api/notify
{"status":200,"message":"ok"}
§§ 取得目前 Access Token 狀態
> curl -H "Authorization: Bearer eRjIZEBz4pWi3ZGTcM6A8aLs9JxTfPub3beWekqNL0W" https://notify-api.line.me/api/status
{"status":200,"message":"ok","targetType":"GROUP","target":"測試Notify群組"}
§§ 撤銷目前 Access Token
> curl -X POST -H "Authorization: Bearer eRjIZEBz4pWi3ZGTcM6A8aLs9JxTfPub3beWekqNL0W" https://notify-api.line.me/api/revoke
{"status":200,"message":"ok"}
完整程式碼
(先這樣)
Last updated