自建 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 訊息通知

登入後滑鼠移至上方個人帳號,選擇「個人頁面」。

自建 LINE Notify 訊息通知

在個人頁面可以發行「權杖」,權杖的作用在於讓「連動的服務」可以透過 LINE Notify 發送訊息通知,而發行後的權杖與其名稱,就會出現在上方的清單中,如果你之前有申請過像是 IFTTT 的連動通知,就會發現上方出現 IFTTT 的服務。

自建 LINE Notify 訊息通知

點選「發行權杖」,指定權杖名稱 ( 傳送通知訊息時所顯示的名稱 ),以及選擇是要一對一接收,或是讓群組也可以接收通知。

自建 LINE Notify 訊息通知

點選「發行」,會出現一段權杖代碼,這段代碼「只會出現一次」,複製這段代碼,先找個地方貼上並儲存這段代碼,就可以點選下方按鈕「關閉」。

自建 LINE Notify 訊息通知

完成後就會發現連動的服務裡,出現了我們自訂的服務。

自建 LINE Notify 訊息通知

同時,LINE 訊息裡也會收到 LINE Notify 發出「已發行個人存取權杖」的訊息,到這一步 LINE Notify 已經設定完成,再來看看如何發送訊息。

自建 LINE Notify 訊息通知

使用 Google Apps Script 傳送通知

由於 LINE Notify 無法直接透過「純」網頁前端的方式來發送訊息,所以必須在借重 Google Apps Script 簡易後端的能力來傳送通知,進入 Google 雲端硬碟,新增一個 Google Apps Script。

延伸閱讀:簡易後端實作 ( Google Apps Script )

自建 LINE Notify 訊息通知

重新命名 Apps Script 專案名稱,並將 myFunction 函式名稱改為 doPost 或 doGet ( 名稱一定要是 doPost 或 doGet,如此一來才能透過外部 POST 或 GET 的方法傳值給 Apps Script )。

自建 LINE Notify 訊息通知

將程式碼修改為下面這段,你的權杖的位置填入剛剛產生的權杖,在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 發出的訊息囉。

自建 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'
        }
    });
}

自建 LINE Notify 訊息通知

如果要傳送圖片也很簡單,寫入「圖片預覽縮圖網址」以及「圖片網址」就能發送圖片,但圖片大小有限制,預覽縮圖 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 訊息通知

做到這個步驟,應該都已經能夠輕鬆傳送訊息、貼圖和圖片了,接著要來看看如何透過「網頁」傳送訊息。

網頁傳送 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 部署為網路應用程式。

自建 LINE Notify 訊息通知

每次有修改的部署都選擇「新增」,將應用程式執行為「我」,具有應用程式存取權的使用者選擇「任何人」。

自建 LINE Notify 訊息通知

部署後就會得到這個應用程式的網址,這個網址待會會用到。

自建 LINE Notify 訊息通知

好了,到這一步終於要來寫網頁了,打開網頁編輯器,先載入 jQuery,就能使用.post來發訊息

$.post('你部署的應用程式網址',
    {msg:'網頁發訊息'},
    function(e){
        console.log(e);
});

完成後執行網頁,就能看到 LINE 收到網頁發過來的訊息囉!

自建 LINE Notify 訊息通知

小結

LINE Notify 其實是相當方便的一個服務,可以串接在很多前端或後端的應用裡,甚至也可以搭配物聯網的服務,做到類似陌生人開門就開通知、太亮了就發通知...等的應用,對於 LINE 的重度使用者來說應該不失為一個好管道,不過如果單純只是要通知,也滿推薦 Slack 的服務,畢竟 LINE 還是比較偏向個人用戶,Slack 則是針對公司團體。

延伸閱讀:Slack 自動訊息通知

相關參考:LINE Notify API Document

有興趣瞧瞧其他新文章嗎?