今開発しているプログラムでエラーが出た時に、Slackの特定のチャンネルにエラー通知を送る必要が出たので、メモとして記録してみる。Pythonのrequestsのモジュールを使えば特に難しいことはなかったが、Slackのドキュメント?が英語だったため、個人的にはそこに苦労した。
前提
Slackのアカウントを持っていることと、SlackのWorkspaceを持っていること。でないと次へは進めない。
Slack側の準備
まずはslack apiのページから"Create an app"に入る。目的は、Webhookを利用すること。
多分、こんな画面が出てくる。
ここでは"From scratch"を選択する。すると、次の画面が登場。
"App Name"は適当に。このNameでメッセージが書き込まれるので、そのつもりで。次に"Pick a workspace develop your app in:"でメッセージを送りたいワークスペースを選択する。この2つを実行することで、"Create App"に進める。次はこんな画面になる。
英語です、、。一気に面倒臭さが増す。でもあとちょっとでSlack側の設定は終わるから頑張ろう。で、下のほうに進んでいくと、こんな画面がある。
ここを選択する。で、この画面になる。
"Activate Incoming Webhooks"をOnにしよう。すると下にこんなのが出てくる。
"Add New Webhook to Workspace"のボタンを押す。するとこんな画面。
来たぜ!日本語!で、メッセージを送りたいチャンネルを選択して、"許可する"のボタンを押す。すると、下の画面にようにURLが発行される。
このURLは使うので、コピーするなり画面をそのままにしておくなりしておいて欲しい。ここでコピーしたURLを"Webhool_URL"をする。これでSlack側の設定は終了。
実際のコーディング
実際のコーディングをやってみる。シンプルに書いてみた。
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 の開発に従事している方との事なので、この記事に勝るものはないはず。私も後日勉強させて頂こう。