GAS串接LINE NOTIFY

      在〈GAS串接LINE NOTIFY〉中尚無留言

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並存下來,以後就能隨時使用了

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。