【意外と簡単】PythonでプログラムからSlackに通知を飛ばしてみる
スポンサーリンク
PythonでSlack通知を試したくなったので、いろいろググって試してみたら意外とあっさりできた。
その時のメモを備忘録として残しておく。
[前提]
- Python3がインストール済み
- Slackのワークスペース作成済み(管理者)
こんなもんかな。
Python3のインストール方法については、以前書いてみた。よかったら参考にどうぞ。
Macの場合
【切り替え可能】pyenvでPython3系とAnacondaの両方をインストール for Mac - ろきメモ【ROKI MEMO】- ろきsanの備忘録 -
Windowsの場合
【Pythonインストール for Windows10 64bit版】環境変数PATHや実行コマンドも解説してみる - ろきメモ【ROKI MEMO】- ろきsanの備忘録 -
目次は以下の通り
スポンサーリンク
1. Webhook URLを取得する
ここにアクセスする。
https://slack.com/services/new/incoming-webhook
ブラウザでサインインすれば、管理画面になるので、
ワークスペース、チャンネルを指定して、
「Incoming Webhook インテグレーションの追加」をクリック
これでプログラムで使うWebhook URL が取得できた。
ここには、Webhook URL以外にも、アイコンや名前などの設定あるが、今回は特に何もしない。
2. Pythonコードを書く
任意のディレクトリに、function.py というファイルを作成。
[function.py]
import urllib.request import json def handler(event, _): message = 'テストメッセージです' title = 'title' slack_message = { 'attachments': [ { 'text': message, } ] } url = '取得したWebhook URL' method = 'POST' headers = {'Content-Type': "application/json"} json_data = json.dumps(slack_message).encode("utf-8") try: request = urllib.request.Request(url, data=json_data, method=method, headers=headers) with urllib.request.urlopen(request) as response: response_body = response.read().decode('utf-8') return response_body except Exception as e: raise e if __name__ == '__main__': response_body = handler('test', '') print(response_body)
おそらくコピペでいけるはず。(URLのところ以外は)
4. ちょっとカスタマイズしてみる。
上記のメッセージはほんとデフォルトの感じ。
通知が無事できたらちょっと設定やプログラムコードを修正して、カスタマイズしてみる。
まず名前とアイコン。
webhookを取得した設定画面(ブラウザ)の下の方に、名前とアイコンを設定するところがあるので、修正して設定を保存する。
もう一度プログラムを実行してみる。
ばっちし!
次は、通知の色を指定してみる。
先程のコードのこの部分に「color」を追加する。
message = 'テストメッセージです' title = 'title' color = '#ff0000' # <- 追加 slack_message = { 'attachments': [ { 'text': message, 'color': color, # <- 追加 } ] }
再度実行してみると、
色がついてばっちし!
色を変えるとこんな感じ。
せっかくプログラムで書いているので、条件分岐なので、メッセージや色を変えると便利な通知プログラムになるかも。
という感じで、最低限の通知プログラムの備忘録でした。
参考にしたサイト
とりあえずこちらでweb hookの取得方法を。
qiita.com
Pythonでの通知はこちらを参考に。
qiita.com
他のサイトでは(slack通知に使う)HTTPの使用を、requestsというモジュールを使っているが、こちらはurllib.requestを使っている。
これだと、pipなどでのインストールもいらないし、AWSのLambdaで使用したくなったとしてもこのままでいけるのでよい。
slack通知のカスタマイズはこちらを参考にした。
qiita.com
いろいろあるので試してみるとおもしろいかと。
もちろん一番は公式ドキュメントを見るとよい。
slack.com
以上。