Slack是現在很多辦公的人在使用的溝通工具,除了可以在上面能互相交流以外,也可以建立public或是private的頻道將做相關專案的人放置同一個群組,也能夠設定允許通知的時間,可以設定上班的時間才會通知,這樣子在下班時間即使有人密語,手機APP也不會跳通知出來,另外對工程師最有趣的部分是可以接機器人,依據收到的訊息解析後用機器人自動回訊息,也能透過外部自動直接把訊息傳至頻道或特定人士,可以讓watchdog這樣的程式再有警急的時候用slack通知,本篇教學如何透過外部將訊息送至slack。
使用Webhook將訊息送至特定人士或channel
要到slack網頁上https://my.slack.com/services/new/incoming-webhook/ 申請一個webhook的url
先選擇自己想要通知訊息的channel或是 user
接著便可以取得webhook的 url 將其記下
另外這個頁面可以設定webhook的icon與機器人名稱
如果webhook有加成功channel會顯示有加成功的訊息
接下來就可以寫程式來送通知訊息了
這邊以最簡單的訊息當作範例 (其他更進階的格式可以參考官方document: https://api.slack.com/incoming-webhooks)
首先我們要送的訊息為
Hello Slack Webhook
將其包成JSON格式
{ "text" : "Hello Slack Webhook" }
接著只要這個JSON資料POST到剛剛取得的webhook的url就可以了
這邊以PHP程式碼當作範例:
<?php $webhook_url = "取得的webhook url"; $json_data = [ "text" => "Hello Slack Webhook" ]; // POST 資料 $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, $webhook_url); curl_setopt($ch, CURLOPT_HTTPHEADER, ['Content-Type:application/json']); curl_setopt($ch, CURLOPT_POST, true); curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode($json_data)); curl_exec($ch); curl_close($ch);
傳送成功後就會看到channel中顯示送出的訊息