バッチ処理やシステム監視、フォーム受付などの結果をリアルタイムにSlackへ通知できれば、業務の効率が大きく向上します。Pythonを使えば、Slackにメッセージを送信する処理を簡単に自動化できます。
この記事では、WebhookとSlack APIの2つの方法を使って、PythonからSlack通知を行う基本的な実装方法を紹介します。
方法①:Incoming Webhookで通知する
1. Webhook URLの発行
- Slack APIアプリページにアクセス
- 「Create New App」からアプリを作成
- 「Incoming Webhooks」を有効にし、「Add New Webhook to Workspace」
- 通知を送るチャンネルを選択して許可すると、Webhook URLが発行される
2. PythonからWebhook通知を送る
import requests
webhook_url = "https://hooks.slack.com/services/XXX/YYY/ZZZ"
message = {
"text": "PythonからSlackに通知を送信しました!"
}
response = requests.post(webhook_url, json=message)
if response.status_code == 200:
print("通知送信に成功しました")
else:
print(f"通知失敗: {response.status_code}")
メリット: 設定が簡単で軽量、認証も不要。システム通知に最適。
方法②:Slack Web APIを使う
Slackのより高度な機能(DM送信、ファイルアップロード、ユーザー情報取得など)を使いたい場合は、Slack Web APIを利用します。
1. Botトークンの取得
- Slackアプリを作成し、「OAuth & Permissions」で権限(
chat:write
など)を追加 - 「Install App」してBot User OAuth Token(
xoxb-***
)を取得
2. PythonでSlack APIにPOST
import requests
slack_token = "xoxb-your-bot-token"
channel_id = "#通知チャンネル名" # 例: "#general" またはユーザーID
message = {
"channel": channel_id,
"text": "Slack API経由でメッセージを送信しました!"
}
headers = {
"Authorization": f"Bearer {slack_token}"
}
response = requests.post(
"https://slack.com/api/chat.postMessage",
headers=headers,
data=message
)
if response.status_code == 200:
print("送信成功")
else:
print(f"エラー発生: {response.status_code}")
注意: Botトークンは機密情報のため、.env
などで安全に管理してください。
通知の応用例
- 定期バッチの完了通知
- エラーログ検知時のアラート
- 問い合わせフォームの受付通知
- AIの自動生成結果の共有
まとめ
Slackへの通知は、Incoming Webhookを使えば簡単に実装でき、Slack APIを使えば柔軟な制御も可能です。Pythonと連携することで、定期処理やエラー検知など、さまざまな自動化シナリオに応用できます。
まずはWebhookでシンプルな通知から始め、必要に応じてSlack APIでの高度な連携にステップアップしていきましょう。