【Slack】Slack ~ Incoming Webhooks ~

■ はじめに

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://api.slack.com/apps

* 流れでできると思うが、以下の関連記事も参照。

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!!!」が表示されているはず。

https://slack.com/intl/ja-jp/

コマンド例(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
Github Actions ~ Slack連携 ~
https://dk521123.hatenablog.com/entry/2024/04/03/003053