Python日記

【Python】PoetryでslackのAPIを連携する方法と、slack投稿までの実装手順

2020年8月15日

Poetry SlackAPIの連携とSlack投稿の巻
お悩みさん

PythonでSlackのAPIの使い方を教えて〜

Poetryを使っている方向けに、APIを使ってSlackを連携する方法と、

さらにはSlack投稿までの手順をご紹介していきます。

この記事で学べること

  1. Poetry環境で、Slack モジュールをインストールする方法
  2. PythonでSlackの投稿をする方法
  3. Slack APIの設定方法

環境

OSMac 10.15.4
Pythonpython 3.9
仮想環境Poetry
Homebrew8.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に移動します。

Slack API YourAPPS トップページ

Ceate New app に進みます。

Slack API YourAPPS Create New App

今回は、slackのチャネルへ投稿を実装したいため、

以下の3つのscopeを発行しました。

  • channels:read
  • chat:write
  • chat:write.public
Slack API YourApps Scopes

これで以下のように、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 API YourApps Print Hello
解決さん

やった!Slackに投稿できた!

まとめ

この記事で学んだこと

  1. Poetry環境で、Slack モジュールをインストールする方法
  2. PythonでSlackの投稿をする方法
  3. Slack APIの設定方法

Slack APIのscopeの設定にかなり時間がかかってしまいました。

慣れるまでは、設定に戸惑うことが多いかもしれません。

ただ分かってしまえば、Pythonとの連携だけであれば非常に簡単です。

さまざまな業務効率化に活用してみましょう。

-Python日記
-,