LINE Notify (@linenotify) 試用紀錄

LINE Notify (@linenotify) 試用紀錄。單獨使用 LINE Notify 推播重要訊息給特定群組。

引言

工作上客戶需求。預先準備整理相關軟體計術、開發流程。

LINE Notify vs LINE Messaging API

其實 Notify 與 Messaging API 兩者好像相似其實用途/應用情境完全不一樣。

LINE Notify
LINE Messaging API

費用

免費

依用量收費

功能

只能單向通知

可以雙向訊息;就是聊天

對向

可以送給個人(要先註冊) 也可以送聊天群組(由管理員事先註冊好)

個人;聊天機器人

程式開發

只需寫一些程式

要寫比較多程式

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: 註冊

  1. 某早餐店在 LINE 平台申請 LINE 官方

  2. 事先開發一支 LIFF app,功能為引導客戶註冊 LINE Notify。

  3. 客戶把 LINE 官方加入好友,並自動轉址 LIFF app 引導客戶註冊 LINE Notify。

  4. 與 LINE Notify 連動成功。

phase 2: 點餐

  1. 客戶在 LINE 官方開啟另一支 LIFF app,功能為引導客戶下單/點餐/消費。

  2. 客戶成功下單/點餐/消費後用,後台就能用 LINE Notify 送訊息給客戶。

  3. 後台也通知早餐店有客戶透過 LINE 點餐了,趕快準備餐點。

  4. 客戶到早餐店領取並繳費。


推論理想搭配

LINE 官方 + LIFF app + LINE Notify

LINE Notify 其實也可以單獨運作當作免費的推播平台,當然用戶同意(註冊)這一步是少不了的。

我們客戶的應用案例是單獨使用LINE Notify推播重要訊息給特定群組。


整體流程

LINE Notify API Document 文件流程描述 Overall flow and possible implementations of the API

再參考相關上下文與相關資料繪製成流程圖。

Overall flow and possible implementations of the API


參考文件

LINE Notify
LINE Notify API Document

實作紀錄-登錄服務

實作過程中的登錄服務的『眉角』最多。基本上都可以亂填。

其中, 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