line notify,是一種LINE提供的免費推播訊息的服務,每一個節點可以每分鐘1000次的推播
非常方便推播服務,有許多服務皆有使用
優點:
- 次數多,使用限制不多
- 發送時可加上圖片
- 建立的節點沒有數量上限
缺點:
- 傳單張圖,還是一定要加上文字,文字是必需的,圖是選用
- 建立節點的流程較麻煩
簡易開發用token
為方便開發者測試,使用此方式能快速使用推播功能,缺點就是只能開一個token,一個節點
但可以綁定在群組上,在此群組上的人皆能收到推播。
到 line notify,登入>個人頁面>發行權杖
接下來,填寫名稱(指推播時的名稱),推播時會用 [ ] 包起來
然後選接收的聊天室(或一對一與自己對接)
需要注意!!如果是要群組聊天室收到通知,需要手動把 Line Notify <<這個line 官方機器人放入群組才能成功通知
都填寫完成,點發行,就會收到一組token,請一定記好此token,這就是發出訊息最重要的資料
有了以上這些資料,就能開始發訊息了
var url="https://notify-api.line.me/api/notify" //line notify主機
var header={
'Authorization': 'Bearer ' + token, //在header加入token
}
var payload={
'message' : message //加入純文字訊息 /n 可以換行
}
var t={
'headers': header, //加入header
'method' : 'post', //使用post
'payload':payload, //加入傳送的資料
'muteHttpExceptions':true //如果送不成功指記錄,不報錯停止程式
}
UrlFetchApp.fetch(url, t) //開始連網發送到line notify
如果發送成功,你發送的目標就會出現發送的訊息
正式開發環境
在使用時,不太可能要所有人自己去拿TOKEN,要發訊息的受眾可能很多,這就需要正式環境了
到 line notify,登入>管理登入服務>登錄服務
要填寫的資料很多,請一一填寫
- 服務圖片=用戶登入服時的大頭貼
- 服務概要=說明此服務要做什麼,基本上寫點文字就行
- 服務網址=可先隨易填,之後再來修改
- 經營者名稱=公司名或自己本名
- 地區=選自己的國家就行
- 負責人姓名=可以寫自己就行
- 電子郵件帳號=可收信即可
- Callback URL=這是重點,但目前先隨易填,之後再來修改
填寫完送出來,會收到認證信,使此服務開通,目前notify沒有任何審核,申請就會過
再進入管理登入服務,就會發現剛剛申請的服務,進入檢查資料,並記下 Client ID 與 Client Secret
有了這兩個,才能接來來跑認證
回到GAS,開一個自定函數 注意!!名稱需要一模一樣,才能正常執行
function doGet(e)
{
e.parameter.code //line notify回傳的用戶 資訊
}
然後在發布>>部署為網頁應用程式
who has access to the app:
選 Anyone,even anonymous(所有人皆能使用)
發佈後,就會得到一個網址,能連入GAS網址
得到網址後,回到 管理登入服務 進入剛剛建立的服務,服務網址與Callback URL填入剛得到的GAS網址
再更新
目前終於剩最後30%左右了
接下來準備其他用戶申請收到推播的連結了
https://notify-bot.line.me/oauth/authorize?response_type=code&client_id=2WWBUsywF1RQVoZ6FaFm08&redirect_uri=https://script.google.com/macros/s/AKfycbwt8JAFvpMDUSOjgubaUXE0MUoSF1RkiAYFtIW2Gmhj06_Sl6JU/exec&scope=notify&state=123
全列出來看不太懂,分開列就很清楚了
- https: //notify-bot.line.me/oauth/authorize <<這就是notify指定網址,然後用?開始接參數
- response_type=code <<官方指定用法,照用就對了
- client_id=xxxx <<Client ID
- redirect_uri << Callback URL
- scope=notify <<官方指定用法,照用就對了
- state=123 <<可以由Callback URL接收的參數,可以用來分辦申請人訊息用
有了這個網址,就可以拿給其他人使用了,從這網址進入就會到以下圖片
當用戶選完接收的聊天室,點擊 同意並連動,line notify就會傳資料到剛所開的GAS 的doGet函數
當doGet函數中使用 e.parameter.code 就能得到用戶code
但是還沒完,目前只得到用戶的code,但發訊息要使用的是用戶的token
目前還是不能發送訊息出去的還有最後轉換的動作
var url="https://notify-bot.line.me/oauth/token"; //請求把用戶code換成token的網址
var header={
'Content-Type':'application/x-www-form-urlencoded'
}
var payload={
'grant_type':"authorization_code",
'code':code,
"redirect_uri":redirect_uri, //Callback URL
"client_id":client_id, //Client ID 與 Client Secret
"client_secret":client_secret
}
var options = {
'headers': header,
'method': 'post',
'payload': payload,
'muteHttpExceptions':true
}
var data=JSON.parse(UrlFetchApp.fetch(url,options))//連線後取得資料,再轉成JSON格式
var user_token = data.access_token //此為最重要的用戶token
這下終於結束了,取得用戶的token,以後就能使用此token來發通知了
建議把code轉換成token一起寫在doGet函數裡面,一收到就馬上換成token並存下來,以後就能隨時使用了