建立 Slack Bot

註冊與建立 Slack App

Building Slack apps 裡,點選 Create a Slack app 按鈕,輸入 App Name 和選擇在哪一個 Team ,如下圖。

Create an App

接著點選 Bots ,進入加入 Bot User 頁面。

Bots

點選 Add Bot User 按鈕,輸入要給 Bot 的名稱。

Add Bot User

回到 Basic Information 頁面來,下拉 Install your app to your team ,點選 Install App to Team 來產生 token 。點進去會進入確認頁面,點選 Authorize

Install App to Team

安裝 App 完畢後回到 Basic Information ,在 Add features and functionalityPermission 選項,點進去可以拿到 OAuth Access TokenBot User OAuth Access Token。或者可以從左邊選項列表中的 Features 選擇 OAuth & Permission 進去。

OAuth & Permission

在 Slack 提供的 Api 裡,有些 method 只有擁有特定的權限才能使用,因此視開發的用途需要在 OAuth & Permission 底下的 Permission Scopes 設定需要的權限。這些權限如果 App 需要公開給第三方使用時就會經過 Slack 審查是否合適,私人使用沒有限制。

Permission Scopes

以要建立聊天機器人來說,需要開通 chat:write:bot 權限才能送訊息到 slack channel。

設定好 Permission Scopes 後,需要在底下按下 Revoke Tokens 按鈕。然後重新 install app ,產生新的 token ,設定的權限才會生效。

Revoke Tokens

使用 python lib

使用 slackclient 這套 lib 可以快速讓 bot 可以在頻道上發話。

安裝

1
pip install slackclient

使用範例

送訊息到 #general 頻道上。

1
2
3
4
5
6
7
8
9
10
11
from slackclient import SlackClient
slack_token = "OAuth Access Token"
sc = SlackClient(slack_token)
sc.api_call(
"chat.postMessage",
channel="#general",
text="Hello from Python! :tada:"
)

簡單的幾段 code 就完成了一個可以發話的機器人。

使用官方 API 送訊息

這邊是使用官方提供的 api 來送訊息,參閱網頁為:API Methods,並使用 requests 這套 http lib 來送出訊息。範例 code 如下:

1
2
3
4
5
6
7
import requests
import json
slack_token = "OAuth Access Token"
param = {"token": slack_token, "channel" : "#general", "text": "Hello from Python! :tada:"}
r = requests.get("https://slack.com/api/chat.postMessage", params=param)

結論

如要做個發話機器人,slack 提供的資源可以簡單地讓開發者快速有個雛形。要繼續深入使用各種 API 來做功能的話,就需要開始注意各個 API 所需要的權限,以及了解 API 回應的資料格式,這部分就需要細心研究了。