用 Google Apps Script 建立 LINE Notify 推播通知

用Google Apps Script 建立 LINE Notify 推播通知

用 Google Apps Script
建立 LINE Notify 推播通知

因為公司系統警示訊息以前都是用簡訊發送,但是簡訊要花錢,工程師在上班開發時,不會盯著手機看常常會漏掉簡訊通知,於是我想到能夠利用 LINE Notify 把 Azure 系統警示訊息用 Webhook 的方式自動推播到工程師的 LINE 群組內,這樣開著電腦也能夠收到訊息了!

LINE Notify 是一個 LINE 官方開發的機器人,可以利用呼叫這隻機器人發送 LINE 的訊息,本文就會利用Google Apps Script 簡單的免費工具呼叫 LINE Notify 機器人進行訊息推播,也會提供範例,就算不會程式碼也沒關係,貼上就可以用了。

開通 LINE Notify

在這個網站上登入 LINE 帳號:https://notify-bot.line.me/zh_TW/
並且進入個人頁面

登入LINE Notify 選擇個人頁面

在頁面最下方找到發行權杖

取得LINE Notify發行存取權杖

填寫權杖名稱,並選取要接收通知的聊天室,請注意權杖名稱之後會出現在推播訊息的內容中,所以請依需求命名。

設定LINE Notify發行權杖的聊天室及名稱

會得到發行的權杖,請好好保存,因為按關閉後就不會再顯示了喔

取得 LINE Notify 發行權杖

建立 Google Apps Script

進入網站 https://script.google.com/home/projects/create,建立一個新的Google Apps Script,並貼上下列程式碼。
此範例,接收一個name的參數作為警報名稱的參數送給LINE Notify API 顯示在推播內容中,這裡可以依需求增加參數或是修改格式。
詳細API文件及參數請參考官方文件

function doPost(event) {
    var param = event.parameter;

    // 抓取警報名稱參數
    var name = param.name;

    UrlFetchApp.fetch('https://notify-api.line.me/api/notify', {
        'headers': {
           'Authorization': 'Bearer ' + '<權杖>',
        },
        'method': 'post',
        'payload': {
            // 指定推播訊息內容
            'message': name
        }
    });

}

在執行項目裡,可以看到執行的紀錄

Googgle Apps Sciprt 執行紀錄

如果使用情境沒有這麼複雜,可以使用以下程式碼,填入你要傳送的訊息內容,並點選執行就可以立刻執行推播了:

function doPost(event) {
    var param = event.parameter;
    UrlFetchApp.fetch('https://notify-api.line.me/api/notify', {
        'headers': {
           'Authorization': 'Bearer ' + '<權杖>',
        },
        'method': 'post',
        'payload': {
            // 指定推播訊息內容
            'message':'<這裡放你要傳送的訊息內容>'
        }
    });

}

Azure Alerts Webhook (Optional)

到 Azure Portal 中的 監視 > 警示 功能中,點選 動作群組,並點選建立。

Azure 新增動作群組

建立動作群組中,”基本” 頁籤中的資料請依需求填寫即可,關鍵在於”動作”頁籤,動作頁籤中類型請選擇 “Webhook” , URI 請填寫 Google Apps Script 中的URL,記得如果有參數這裡要加入參數值 ( 例如 ?name=CPU異常 )

Azure 設定動作群組Wwbhook

建立完動作群組後,將動作群組加入警示規則中,驗收推播訊息內容。

LINE Notify 推播結果

參考資料

LINE Notify

LINE Notify API 文件

Google Apps Script | Google Workspace

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *