Slack 有提供一種叫slash command的工作小幫手,它的用法簡單,就只要在你的slack 訊息框上先打上一個 ‘/’ 斜線,然後在斜線後隨即加上指令名稱,然後空一格給予指令參數(就是一行可含空白的文字,在slack上叫作指令的text),就可以執行一些該指令預定義好的工作了。
如上圖即是一個用/app 指令搜尋關於’notion’這個關鍵字的slack app,當你送出訊息後slack bot隨即把搜尋結果顯示給你。
在這邊要講的是,slash command背後都有關聯的bot,也就是幫你執行指令的slack app,官方的slash bot 自然提供slack 內建的預設指令,當然如果我們自己設計一個slack app/bot 也可以自定義slash command 來使用,只是背後需要透過slack api來調用相關動作而已,而如果是自定義的slash command,自然回應的也是自己的slack app。
工作需要,我也為我們部門的slack bot 作了一個slash command,後面寫程式的部份不難,但一開始設定slash command 可是讓我吃足了骨頭,花了很多血淚才找到正確設定方式,所以這邊我要note 一下怎麼快速新增一個slash command。
首些,要在slack app setting頁面幫你的slack 加上互動式的url location,也就是你slack app 對外開放的 interactive component URL,這支URL會接收你的slash command 訊息並執行相應工作,也就是你要為slash command 寫程式的地方。
Step 1. 進入your apps : 在網頁登入slack 之後,到https://api.slack.com/apps 這個位置點選 “Your Apps” 點選你要設定的app( 假設你已經新增),進入app 設定頁面。
Step 2. 點選左邊頁籤中 Interactive Components開啟互動設定頁, turn on Interactivity ,然後在底下 Request URL 輸入你的Interactivity URL 以回應任何來自slack 的互動式事件,包括 slash command 。設定完成後記得按底下的Save Changes。
在設定完Interactive Components之後,就可以到下一個頁籤 Slash Commands 中加入你要新增的slash command,在這邊我以我製作的/rfc command為例。
Step 3. 在slash commands 管理頁點選 Create New Command Button,打開新增command 頁面。
Step 4. 在Create New Command 頁面中依序填入四個資訊:(1) Slash Command Name. (2) Request URL: 需要跟在Interactive Components 中設定的Interactivity Request URL 一樣,否則slack不會送出完整的slack command request. (3) Short Description: 關於command 的說明。(4) Usage Hint: 設定command的參數(text)。
然後按Save。
如此Slash Command 就新增好了,但其中最重要的是Request URL,就是這個設定使我吃足苦頭的,記住它一定要跟在Interactive Components 中設定的Interactivity Request URL 一樣,否則slack不會送出完整的slack command request。
最後小小補充要在程式中補捉來自slack 的event的message payload中是否載有如下格式的body,其中我是用command這個作為key來判斷我接收的指令為何,而trigger_id很重要,因為當你Request URL 設定並未跟Interactive Components中的一致時,即使你設定的URL可以收到slack slash command message,也不會有trigger_id,這樣就無法拿trigger_id去呼叫slack API並回應Slack了。
2019年2月1日星期五
留言列表