本篇大綱
原來Slack通知還蠻多人用的
之前跟別的公司開會時,突然對方說了一句:「現在很流行主機發生問題,就發送slack訊息來通知。」
Augustus聽到後才想到,啊對,也有身邊朋友的公司就是用Slack來通知主機或哪裡有問題的,就想說來研究一下,寫個一篇。
純靜態?
那為什麼標題上要加個「純靜態」呢?是因為這篇寫的自動通知,就是單純發送個訊息的,無法跟訊息有互動。
Slack的通知除了發送純文字外,還可以加上按鈕、選單,那就得要建一個APP,當使用者點了按鈕或是選單,APP就可以判斷選了哪個選項,給下一步的動作,對,就是機器人。
這種可互動的寫在下一篇:Slack通知功能 可互動
本篇主要寫純通知的功能。
註冊Slack,跳過
基本上會看這篇,就代表用了Slack一段時間了,知道Slack要怎麼用。
像Augustus這種公司沒在用的,自己東摸摸西摸摸一下,也不小心就註冊了一個workspace,建了一個channel來玩自動通知。
所以聰明如你,關於怎麼安裝跟建一個workspace、channel的部份,這篇就不寫了,咱們繼續看下去。
1 開通自動通知功能
自動通知不是預設就有的功能,要另外裝App來使用。
登入進slack後,右側會有一排選單,點選「Apps」展開子選單,接著點「Add App」:
這是廣告,點擊一下可以幫本站多個一點點的廣告收入,謝謝

會出現一個搜尋框,輸入「incoming」,就會看見第一個結果是「Incoming WebHooks」:

Incoming WebHooks 就是要安裝的App,點了以後會跳出Incoming WebHooks的頁面:

接著點「Add to Slack」,會出現一個詢問要裝在哪個channel的選單,選擇好後就,按下「Incoming WebHooks integration」。

安裝完後,會進到incoming webhooks的設定頁面:

頁面裡第一行「Webhook URL」最重要,我們只要post到這個url,就可以發出自動通知的訊息。
webhook url的格式會是這樣:
https://hooks.slack.com/services/T00000000/B00000000/XXXXXXXXXXXXXXXXXXXXXXXX
我們先存起來,之後發自動通知的部份會用到。
除了提供url,這個頁面也有一些基本使用範例,也可以設定自動通知的頭像。都確認完後就可以按下最下面的「Save Settings」。
1-2 忘記了webhook url?
這邊補一段,如果沒存到webhook url該怎麼辦?
這是廣告,點擊一下可以幫本站多個一點點的廣告收入,謝謝
一樣進登入slack,接著看向左側的選單,上面會有一個「Apps」的按鈕:

接著會出現安裝了什麼App,會看見我們之前裝的App:

顯示的頭像跟名稱會是我們在設定頁那邊設定的,所以不會是這邊的Demo圖。
點選App後,會出現這個App是哪一個功能的,因為我們是安裝incoming webhook,所以會出現的是incoming webhook的資料:

接著點「View in App Directory」,就會開啟網頁,會看到我們的App:

最後App旁邊的鉛筆按鈕,就會回到設定頁面,頁面裡就有webhook url了。
2 發送訊息
有了webhook url後,就可以post到這個url來發送訊息。
Augustus這邊寫了三段,分別是用fetch API、jQuery的post,以及在google apps script上的post方式:
var webhook_url
要替換成你取得的webhook url。
如果訊息上想要折行,就用 \n
。
試發一下後,會看見收到訊息了:

因為自動發送訊息是由App發送的,所以名稱右側會出現「APP」字樣。顯示的名稱跟頭像就是我們在設定頁上設定的。
3 設定自動發送
自動發送的部份,如果是主機掛了要自動通知,那就是主機的專業領域了,Augustus不懂主機那塊這邊就不亂寫。
這邊會寫的是定時發送的。
如果主機是用Google Cloud Platform的話,可以建一個cron.yaml檔案來觸發post,請參考這篇:
簡單來說就是新增一個corn.yaml檔,然後布署到GCP上就行。
如果是用Google Apps Script的排程,請參考這篇:
簡單來說就是可以直接用GAS的介面來新增,但最小單位是小時,無法控到幾分鐘的部份。
4 除了純文字的訊息,還有多種格式
Slack自動發送的訊息格式,除了純文字外,也有提供多種格式,更厲害的是,不像line推播得自己手寫程式碼,slack有提供生成器:
https://api.slack.com/tools/block-kit-builder
一整個好棒棒,但要注意的是,本篇筆記的是純靜態的訊息,所以如果在生成器用了按鈕或選單,收到訊息的人點擊後是不會有任何效果及回應的。
但還是可以用他的生成器建立一些不同於純文字的訊息,像這樣:

或是這樣:

可以用生成器玩一下不同的訊息樣式。

