■ はじめに
https://dk521123.hatenablog.com/entry/2021/10/13/092235
の続き。 どうも Slackに対して、Tokenを使ってメッセージを表示させるより Incoming Webhooks 経由で主流のようなので調べてみた。 調査してみて感じたのは、結構、古い内容が多々あるので 自分で動作確認しながら色々と試すのがいいと思う。
目次
【1】Slack Incoming Webhook 【2】Incoming Webhook の設定 1)Slack Appを作成する 2)Incoming Webhooksを有効にする 3)動作確認 【3】その他設定 1)特定のチャンネルにメッセージを表示させたい 2)公式SDKを使用する 【4】サンプル 例1:PythonからSlackへメッセージを送る(公式 SDKを使用しなかった場合) 例2:PythonからSlackへメッセージを送る(公式 SDKを使用する場合)
【1】Slack Incoming Webhook
* 外部サービス/アプリ から Slack に対して、メッセージを送信するための機能 * 以下のサイトの説明が分かりやすいかも。
https://www.yukibnb.com/entry/slack_incoming_webhook_url#Incoming-Webhook-URL%E3%81%A8%E3%81%AF
【2】Incoming Webhook の設定
1)Slack Appを作成する 2)Incoming Webhooksを有効にする => 以下のサイトなどが参考になると思う。
https://christina04.hatenablog.com/entry/sending-messages-with-slack-app
https://slack.com/intl/ja-jp/help/articles/115005265063-Slack-%E3%81%A7%E3%81%AE-Incoming-Webhook-%E3%81%AE%E5%88%A9%E7%94%A8
https://www.yukibnb.com/entry/slack_incoming_webhook_url#%E7%B0%A1%E5%8D%98Slack%E3%81%AEIncoming-Webhook-URL%E3%82%92%E5%8F%96%E5%BE%97%E3%81%99%E3%82%8B%E6%96%B9%E6%B3%95
1)Slack Appを作成する
* 以下のサイトから、Slack Appを作成する
* 流れでできると思うが、以下の関連記事も参照。
https://dk521123.hatenablog.com/entry/2021/10/13/092235
2)Incoming Webhooksを有効にする
作成したSlack Appに対して、Incoming Webhooksを有効にする [1] Slackのアプリ設定ページのサイドバー「Settings」の「Incoming Webhooks」を押下 [2] 「Activate Incoming Webhooks」をONにする
3)動作確認
* 有効にすると「Sample curl request to post to a channel:」に 以下のコマンド例ような例が載っているので、実行し、動作確認してみる => 以下の例の場合、Slack上で「Hello World!!!」が表示されているはず。
コマンド例(curlコマンドが使える場合)
curl -X POST -H 'Content-type: application/json' --data '{"text":"Hello World!!!"}' https://hooks.slack.com/services/XXXXXXXXXXXXXXXX
【3】その他設定
1)特定のチャンネルにメッセージを表示させたい
[1] Slackのアプリ設定ページのサイドバー「Settings」の「Incoming Webhooks」を押下 [2] ページ下の方にある「Webhook URL」の「Add New Webhook to Workspace」を押下 [3] 「<アプリ名> の投稿先はどちらにしますか?」で指定のチャンネルを選択 [4] 「許可する」ボタン押下
2)公式SDKを使用する
* 公式SDKについては、以下のサイトを参照
公式サイト
https://slack.dev/python-slack-sdk/
https://slack.dev/python-slack-sdk/webhook/index.html
一般サイト
https://qiita.com/seratch/items/8f93fd0bf815b0b1d557
公式 SDKをインストールする
# 以下を実行し、公式 SDKをインストール
pip install slack_sdk
【4】サンプル
例1:PythonからSlackへメッセージを送る(公式 SDKを使用しなかった場合)
requestsをインストールしていない場合
# 以下を実行し、requestsモジュールをインストール
pip install requests
Pythonコード
import json import requests WEBHOOK_URL = "https://hooks.slack.com/services/XXXXXXXXXXXXXXXXXXXXXXXXXXXXXX" print("Start") print("***************") response = requests.post( WEBHOOK_URL, headers={'Content-Type': 'application/json'}, data=json.dumps({ 'text': 'こんにちは世界', }) ) # "ok"って返ってきた print(response.text) print("***************") print("Done")
例2:PythonからSlackへメッセージを送る(公式 SDKを使用する場合)
Pythonコード
from slack_sdk.webhook import WebhookClient WEBHOOK_URL = "https://hooks.slack.com/services/XXXXXXXXXXXXXXXXXXXXXXXXXXXXXX" print("Start") print("***************") client = WebhookClient(WEBHOOK_URL) response = client.send(text="こんにちは世界です!!") # 「200」が表示 print(response.status_code) # 「ok」が表示 print(response.body) print("***************") print("Done")
参考文献
https://ponsuke-tarou.hatenablog.com/entry/2019/01/05/171355
https://www.k-hitorigoto.online/entry/2017/07/18/070000
関連記事
Slack ~ Access Token ~
https://dk521123.hatenablog.com/entry/2021/10/13/092235
Apache Airflow ~ 通知あれこれ編 ~
https://dk521123.hatenablog.com/entry/2021/10/06/141323