自建 LINE Notify 訊息通知
之前我們有用過 IFTTT 來實現讓 LINE 發送通知的功能,這篇將要透過 Google Apps Script 搭配 LINE Notify,實作出一個類似 IFTTT 的訊息通知服務,最後甚至還可以透過 LINE Notify 發送圖片或貼圖表情。
延伸閱讀:IFTTT 發送 LINE 訊息通知
申請 LINE Notify 權杖
打開 LINE Notify 的網站 ( https://notify-bot.line.me/zh_TW/ ),使用自己的 LINE 帳號登入。
![]()
登入後滑鼠移至上方個人帳號,選擇「個人頁面」。
![]()
在個人頁面可以發行「權杖」,權杖的作用在於讓「連動的服務」可以透過 LINE Notify 發送訊息通知,而發行後的權杖與其名稱,就會出現在上方的清單中,如果你之前有申請過像是 IFTTT 的連動通知,就會發現上方出現 IFTTT 的服務。
![]()
點選「發行權杖」,指定權杖名稱 ( 傳送通知訊息時所顯示的名稱 ),以及選擇是要一對一接收,或是讓群組也可以接收通知。
![]()
點選「發行」,會出現一段權杖代碼,這段代碼「只會出現一次」,複製這段代碼,先找個地方貼上並儲存這段代碼,就可以點選下方按鈕「關閉」。
![]()
完成後就會發現連動的服務裡,出現了我們自訂的服務。
![]()
同時,LINE 訊息裡也會收到 LINE Notify 發出「已發行個人存取權杖」的訊息,到這一步 LINE Notify 已經設定完成,再來看看如何發送訊息。
![]()
使用 Google Apps Script 傳送通知
由於 LINE Notify 無法直接透過「純」網頁前端的方式來發送訊息,所以必須在借重 Google Apps Script 簡易後端的能力來傳送通知,進入 Google 雲端硬碟,新增一個 Google Apps Script。
![]()
重新命名 Apps Script 專案名稱,並將 myFunction 函式名稱改為 doPost 或 doGet ( 名稱一定要是 doPost 或 doGet,如此一來才能透過外部 POST 或 GET 的方法傳值給 Apps Script )。
![]()
將程式碼修改為下面這段,你的權杖的位置填入剛剛產生的權杖,在payload裡放入一個物件,message的屬性就是我們要發出的訊息。( 注意,Bearer 後方帶有一個空格別刪除 )
function doPost() {
UrlFetchApp.fetch('https://notify-api.line.me/api/notify', {
'headers': {
'Authorization': 'Bearer ' + '你的權杖',
},
'method': 'post',
'payload': {
'message':'測試一下!'
}
});
}
點選上方三角形的執行鈕,因為我們的 Apps Script 會連到外部服務,所以一開始會跳出存取權限的視窗,換句話說也就是同意外部服務使用你 Google 的帳號執行這個 Apps Script,這裡點選允許就行了。
![]()
允許後,再點選一次上方三角形的執行鈕,應該就會收到 LINE Notify 發出的訊息囉。
![]()
LINE Notify 也可以發送表情貼圖,語法只要將payload內容稍做修改,寫入「貼圖包類別號碼 stickerPackageId」和「貼圖號碼 stickerId」就能發送貼圖,不過有別於 LINE Bot 可以單獨發送貼圖,LINE Notify 必須具備 message,所以不能把 message 拿掉。
貼圖類別參考:LINE Notify 預設貼圖清單
function doPost() {
UrlFetchApp.fetch('https://notify-api.line.me/api/notify', {
'headers': {
'Authorization': 'Bearer ' + '你的權杖',
},
'method': 'post',
'payload': {
'message':'測試一下!',
'stickerPackageId':'1',
'stickerId':'2'
}
});
}
![]()
如果要傳送圖片也很簡單,寫入「圖片預覽縮圖網址」以及「圖片網址」就能發送圖片,但圖片大小有限制,預覽縮圖 240x240,圖片則是 1024x1024,格式須為 jpg。
function doPost() {
UrlFetchApp.fetch('https://notify-api.line.me/api/notify', {
'headers': {
'Authorization': 'Bearer ' + '你的權杖',
},
'method': 'post',
'payload': {
'message':'測試一下!',
'imageThumbnail':'預覽縮圖網址',
'imageFullsize':'圖片網址'
}
});
}
![]()
做到這個步驟,應該都已經能夠輕鬆傳送訊息、貼圖和圖片了,接著要來看看如何透過「網頁」傳送訊息。
網頁傳送 LINE Notify 訊息
如果要透過網頁傳送訊息,基本原理其實是網頁發送 http request 給 Google Apps Script,然後再由 Apps Script 執行發送 LINE Notify 訊息的指令,因此我們要稍微改寫 Apps Script,一開始增加一個 e 的參數,裡頭包含要傳送出去的 msg 訊息。
function doPost(e) {
var param = e.parameter;
var msg = param.msg;
UrlFetchApp.fetch('https://notify-api.line.me/api/notify', {
'headers': {
'Authorization': 'Bearer ' + '你的權杖',
},
'method': 'post',
'payload': {
'message':msg
}
});
}
修改程式之後,點選上方選單「發佈」,將 Apps Script 部署為網路應用程式。
![]()
每次有修改的部署都選擇「新增」,將應用程式執行為「我」,具有應用程式存取權的使用者選擇「任何人」。
![]()
部署後就會得到這個應用程式的網址,這個網址待會會用到。
![]()
好了,到這一步終於要來寫網頁了,打開網頁編輯器,先載入 jQuery,就能使用.post來發訊息
$.post('你部署的應用程式網址',
{msg:'網頁發訊息'},
function(e){
console.log(e);
});
完成後執行網頁,就能看到 LINE 收到網頁發過來的訊息囉!
![]()
小結
LINE Notify 其實是相當方便的一個服務,可以串接在很多前端或後端的應用裡,甚至也可以搭配物聯網的服務,做到類似陌生人開門就開通知、太亮了就發通知...等的應用,對於 LINE 的重度使用者來說應該不失為一個好管道,不過如果單純只是要通知,也滿推薦 Slack 的服務,畢竟 LINE 還是比較偏向個人用戶,Slack 則是針對公司團體。
延伸閱讀:Slack 自動訊息通知