嘗試利用slack api 發送訊息到teams內

taihua
1 min readJan 25, 2017

--

slack api 網址
https://api.slack.com/

稍微看了一下,目前看到三種發的方式

1.使用api中的method去發
相關網址: https://api.slack.com/methods/chat.postMessage
說明:就是一般的API,填好參數與token即可使用。

流程:
i: 先取得想要發送者的token

(如果想要使用者的話,就應該要走OAuth授權,讓使用者授權後取得token來使用
想要走bot的話,就到 APP&Custom Integrations -> Build -> Make a Custom Integration 裡面新增一個bot ,會直接產生一組bot的token,之前有新增過的話,則在 Manage -> Custom Integrations 找的到 )
ii: 接下來就照api裡面寫的參數帶一帶就能發送出去了,此外channel用 @user_name 加上as_user=1則可發給個人 ,想發到channel則不加@

(例:https://slack.com/api/chat.postMessage?token=xoxb-132179898820-nGKvpHkggmIUSO04Ghden91&channel=%40taihua&text=abcdddd&as_user=true&pretty=1

2.使用Incoming WebHooks來發送
相關網址:https://pushtesttaihua.slack.com/apps
說明:這邊比較像是請slack開一個接口,讓我們可以直接將訊息傳入slack中一開始選的channel中。

i:點進APP&Custom Integrations ->Build->Make a Custom Integration 新增 Incoming WebHooks
ii:新增想要送的channels
iii:申請完可以取得Webhook URL
iiii:將URL貼到網頁 post內參數名稱使用:payload
value使用json字串即可發送 {”text”: “This is a line of text in a channel.\nAnd this is another line of text.”}

3.使用Real Time Messaging API
相關網址:https://api.slack.com/rtm
說明:就像是使用者上線般,當連上socket的時候,使用者的狀態燈也會改成上線中,未斷線之前可以收到該token所收到的訊息,此外也能發送訊息出去。

i:呼叫method 的rtm.start (https://api.slack.com/methods/rtm.start) 回傳資料為json格式 裡面會有個url
ii:url為socket的url 。利用socket去開啟即可操作,send則是利用跟WebHooks差不多的json格式直接傳即可
(附上別人的github:https://github.com/ghedipunk/PHP-Websockets
只要將裡面client.html的host換成第一步取得的url即可試著發送與取得訊息

假設是要做bot的話,基本上應該需要用到第三個Real Time Message API。因為感覺這樣可以實時取得訊息去做回應,當然1可是能做到,但就要不斷的去問有沒有新訊息等等,相對麻煩。

2只能傳入訊息到teams裡面,另外是有看到outgoing Webhooks,但沒去看怎麼用,所以就沒去了解了。

--

--