Slack通知を始めよう
Slack Appの作成とBot Token取得ガイド
サーバーの攻撃検知やエラー通知をSlackで受け取りたい。
その第一歩は Slack App を作成して Bot Token を取得することです。
この記事では、Slack APIの設定からチャンネルへのBot招待まで、順を追って解説します。
こんな人向けの記事です
- サーバーのログやアラートをSlackに飛ばしたい
- Slack Appの作り方がわからない
- Bot TokenとWebhook URLの違いを知りたい
- chat:write スコープの設定方法を知りたい
Bot Token vs Incoming Webhook
Slackに外部からメッセージを送る方法は主に2つあります。
| 方式 | 特徴 | 用途 |
|---|---|---|
| Bot Token | 1つのトークンで複数チャンネルに投稿可能 | 複数チャンネルへの通知(推奨) |
| Incoming Webhook | 1つのURLが1つのチャンネルに固定 | 単一チャンネルへの通知 |
今回はログの種類ごとにチャンネルを分けるため、Bot Token方式を使います。1つのトークンで全チャンネルに投稿できるため管理が楽です。
Slack Appを作成する
Step 1
https://api.slack.com/apps にアクセスし、「Create New App」をクリックします。
Step 2
「From scratch」を選択します。
Step 3
アプリ名とワークスペースを入力します。
| 項目 | 入力例 |
|---|---|
| App Name | Server Monitor(任意の名前) |
| Pick a workspace | 通知を受け取りたいワークスペース |
「Create App」をクリックして完了です。
権限(Scopes)を設定する
Step 1
左メニューの「OAuth & Permissions」をクリックします。
Step 2
「Bot Token Scopes」セクションまでスクロールし、「Add an OAuth Scope」をクリックします。
Step 3
chat:write を追加します。
chat:write だけで十分です。不要な権限を追加しないようにしましょう。
ワークスペースにインストールする
Step 1
同じ「OAuth & Permissions」ページの上部にある「Install to Workspace」をクリックします。
Step 2
権限の確認画面で「許可する」をクリックします。
Step 3
インストール完了後、Bot User OAuth Tokenが表示されます。
xoxb-xxxxxxxxxxxx-xxxxxxxxxxxx-xxxxxxxxxxxxxxxxxxxxxxxxこのトークンはパスワードと同等です。Gitにコミットしたり、ソースコードにハードコーディングしないでください。
環境変数や.envファイルで管理しましょう。
チャンネルにBotを招待する
Bot Tokenで投稿するには、Botをチャンネルに招待する必要があります。
Step 1
Slackで通知先チャンネルを作成します(例: #server-alerts)。
Step 2
チャンネル内で以下のコマンドを実行してBotを招待します。
/invite @Server MonitorBotを招待せずにメッセージを送るとnot_in_channelエラーが返ります。チャンネルごとに招待が必要です。
動作確認(curlでテスト送信)
curlでSlack APIを直接叩いて、メッセージが送信されるか確認します。
curl -s -X POST "https://slack.com/api/chat.postMessage" \
-H "Content-Type: application/json; charset=utf-8" \
-H "Authorization: Bearer xoxb-YOUR-TOKEN-HERE" \
-d '{
"channel": "#server-alerts",
"text": "テスト通知: Slack連携が正常に動作しています"
}'成功すると以下のようなレスポンスが返ります。
{"ok":true,"channel":"C0XXXXXXX","ts":"1234567890.123456",...}| エラー | 原因 | 対処法 |
|---|---|---|
not_in_channel | Botがチャンネルに未招待 | /invite @Bot名で招待 |
channel_not_found | チャンネル名が間違い | チャンネル名を確認 |
invalid_auth | トークンが無効 | トークンを再取得 |
Bot Tokenのセキュリティ
Bot Tokenを安全に管理するためのベストプラクティスです。
SLACK_BOT_TOKEN=xoxb-xxxxxxxxxxxx-xxxxxxxxxxxx-xxxxxxxxxxxxxxxxxxxxxxxx.envimport os
token = os.environ.get('SLACK_BOT_TOKEN', '')Slack Appの設定ページから「Revoke Token」でトークンを無効化し、再発行してください。
まとめ
- Slack Appを作成し、
chat:writeスコープを付与 - Bot Token(
xoxb-...)を取得し、環境変数で管理 - 通知先チャンネルにBotを
/inviteで招待 - curlでテスト送信して
"ok": trueを確認 - トークンはGitにコミットせず、
.envで管理
Slack Appの準備ができたら、次はDjangoやサーバーからログを送信する仕組みを構築しましょう。