LoginSignup
0
2

More than 1 year has passed since last update.

PythonでSlackにメッセージを送る

Posted at

今開発しているプログラムでエラーが出た時に、Slackの特定のチャンネルにエラー通知を送る必要が出たので、メモとして記録してみる。Pythonのrequestsのモジュールを使えば特に難しいことはなかったが、Slackのドキュメント?が英語だったため、個人的にはそこに苦労した。

前提

Slackのアカウントを持っていることと、SlackのWorkspaceを持っていること。でないと次へは進めない。

Slack側の準備

まずはslack apiのページから"Create an app"に入る。目的は、Webhookを利用すること。
多分、こんな画面が出てくる。

スクリーンショット 2022-04-26 10.25.19.png

ここでは"From scratch"を選択する。すると、次の画面が登場。

スクリーンショット 2022-04-26 10.27.14.png

"App Name"は適当に。このNameでメッセージが書き込まれるので、そのつもりで。次に"Pick a workspace develop your app in:"でメッセージを送りたいワークスペースを選択する。この2つを実行することで、"Create App"に進める。次はこんな画面になる。

スクリーンショット 2022-04-26 10.33.30.png

英語です、、。一気に面倒臭さが増す。でもあとちょっとでSlack側の設定は終わるから頑張ろう。で、下のほうに進んでいくと、こんな画面がある。

スクリーンショット 2022-04-26 10.35.19.png

ここを選択する。で、この画面になる。

スクリーンショット 2022-04-26 10.36.47.png

"Activate Incoming Webhooks"をOnにしよう。すると下にこんなのが出てくる。

スクリーンショット 2022-04-26 10.38.14.png

"Add New Webhook to Workspace"のボタンを押す。するとこんな画面。

スクリーンショット 2022-04-26 10.39.50.png

来たぜ!日本語!で、メッセージを送りたいチャンネルを選択して、"許可する"のボタンを押す。すると、下の画面にようにURLが発行される。

スクリーンショット 2022-04-26 10.55.19.png

このURLは使うので、コピーするなり画面をそのままにしておくなりしておいて欲しい。ここでコピーしたURLを"Webhool_URL"をする。これでSlack側の設定は終了。

実際のコーディング

実際のコーディングをやってみる。シンプルに書いてみた。

send_msg_slack.py
import requests
import json

def send_msg():
    slack_url = "Webhool_URL"
    content = {'content-type': 'application/json', 'text': "これはTESTです。"}
    requests.post(slack_url, data=json.dumps(content))

これだけでメッセージが送れるようになります。上でも説明した通り、"Webhool_URL"はSlackで設定したときに取得できたURLの事。私が実際に書いたコードはプログラムの途中にあるので、一部改変してます。

まとめ

以外に簡単に出来た感じがする。Python初めて学習する人には難しく感じるかもしれないが、requestsのモジュールの使い方が分かれば、他の似たようなサービスでも同じような手順でできるかもと思っている。
ちなみに@seratch(Slack)さんの記事Python で Slack API や Webhook を扱うなら公式 SDK(slack-sdk/slack-bolt)を使おうでSDKの使い方について紹介されている。Slack で公式 SDK の開発に従事している方との事なので、この記事に勝るものはないはず。私も後日勉強させて頂こう。

0
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
2