PythonでSlackのAPIの使い方を教えて〜
Poetryを使っている方向けに、APIを使ってSlackを連携する方法と、
さらにはSlack投稿までの手順をご紹介していきます。
- Poetry環境で、Slack モジュールをインストールする方法
- PythonでSlackの投稿をする方法
- Slack APIの設定方法
環境
OS | Mac 10.15.4 |
Python | python 3.9 |
仮想環境 | Poetry |
Homebrew | 8.0.19 Homebrew |
PoetryにSlackのモジュールを追加する方法
PoetryでslackのAPIを使うためには、
slackclientを追加します。
poetry add slackclient
Using version ^2.7.3 for slackclient
Updating dependencies
Resolving dependencies... (2.9s)
Writing lock file
Package operations: 17 installs, 0 updates, 0 removals
- Installing idna (2.10)
- Installing multidict (4.7.6)
- Installing async-timeout (3.0.1)
- Installing attrs (19.3.0)
- Installing chardet (3.0.4)
- Installing pyparsing (2.4.7)
- Installing six (1.15.0)
- Installing yarl (1.5.1)
- Installing aiohttp (3.6.2)
- Installing atomicwrites (1.4.0)
- Installing more-itertools (5.0.0)
- Installing packaging (20.4)
- Installing pluggy (0.13.1)
- Installing py (1.9.0)
- Installing wcwidth (0.2.5)
- Installing pytest (4.6.11)
- Installing slackclient (2.7.3)
上記の表示が出てきまたら、追加できたサインです。
さらに、websocket-clientをインストールします。
poetry run pip install websocket-client
Collecting websocket-client
Downloading https://files.pythonhosted.org/packages/4c/5f/f61b420143ed1c8dc69f9eaec5ff1ac36109d52c80de49d66e0c36c3dfdf/websocket_client-0.57.0-py2.py3-none-any.whl (200kB)
|████████████████████████████████| 204kB 1.9MB/s
Requirement already satisfied: six in ./.venv/lib/python3.8/site-packages (from websocket-client) (1.15.0)
Installing collected packages: websocket-client
Successfully installed websocket-client-0.57.0
WARNING: You are using pip version 19.2.3, however version 20.2 is available.
You should consider upgrading via the 'pip install --upgrade pip' command.
問題なくインストールができました。
Slack API のtokenを発行の方法
続いて、Slack APIを実装するために、tokenを発行していきます。
まずは、画面右側のYor Appsに移動します。
Ceate New app に進みます。
今回は、slackのチャネルへ投稿を実装したいため、以下の3つのscopeを発行しました。
- channels:read
- chat:write
- chat:write.public
これで以下のように、xoxb-から始まるOAuth Tokenが発行されれば完了です。
Pythonスクリプトの作成
最後に、Pythonのスクリプトを作成します。
今回は、#randomのチャネルに、Hello world と投稿できるように設定しました。
import slack
import requests
url = "https://slack.com/api/chat.postMessage"
data = {
"token": "<your token>",
"channel": "#random",
"text": "Hello world"
}
requests.post(url, data=data)
これで準備完了です。
実際にpoetryを実行してみます。
poetry run python slackapi.py(※ここはファイル名)
すると#randomに、以下のようにslackで表示されました。
やった!Slackに投稿できた!
まとめ
Slack APIのscopeの設定にかなり時間がかかってしまいました。
慣れるまでは、設定に戸惑うことが多いかもしれません。
ただ分かってしまえば、Pythonとの連携だけであれば非常に簡単です。
さまざまな業務効率化に活用してみましょう。
コメント