サイトのAPI図鑑B版
掲載情報が正確でない可能性があります。
SNS・コミュニケーションAPI

Slack APIでボットを作る方法【Bolt・Webhookによる業務自動化ガイド】

Slack APIとBolt for JavaScript/Pythonを使ったSlackボットの作り方を解説。Slash Commands・Block Kit・Incoming Webhookによる業務通知・自動化の実装方法を紹介します。

#Slack#ボット#業務自動化#Incoming Webhook

Slack APIの概要

Slack APIを使うことで、業務通知の自動化・コマンドによるシステム操作・チャンネルへの自動投稿・インタラクティブなボットの構築が可能になります。エンジニアチームのCI/CD通知、営業チームのKPI報告、カスタマーサポートのエスカレーション通知など、ビジネスのあらゆる場面でSlack APIは活躍します。

Slack Appの作成手順

  1. api.slack.comでSlack Appを作成
  2. 必要な権限(スコープ)を設定(chat:write・channels:read等)
  3. ボットトークン(xoxb-...)またはアプリレベルトークンを取得
  4. Webhookエンドポイントを設定(Bot Eventsの受信)
  5. ワークスペースにアプリをインストール

Incoming Webhookで簡単にメッセージ送信

最もシンプルな方法は Incoming Webhook を使ったメッセージ送信です。CI/CDパイプラインからのデプロイ通知・監視アラートなどに適しています。

const response = await fetch(process.env.SLACK_WEBHOOK_URL, {
  method: 'POST',
  headers: { 'Content-Type': 'application/json' },
  body: JSON.stringify({
    text: ':white_check_mark: デプロイが完了しました',
    blocks: [
      {
        type: 'section',
        text: {
          type: 'mrkdwn',
          text: '*デプロイ完了* :rocket:
本番環境への v2.1.0 のデプロイが正常に完了しました。'
        }
      }
    ]
  })
});

Bolt for JavaScriptでのボット開発

Boltは Slack が公式に提供するボット開発フレームワークです。イベントハンドラーをシンプルに書けて、Socket Mode(Webhookなしでイベントを受け取れる)にも対応しています。

import { App } from '@slack/bolt';

const app = new App({
  token: process.env.SLACK_BOT_TOKEN,
  signingSecret: process.env.SLACK_SIGNING_SECRET
});

// メンションに反応
app.event('app_mention', async ({ event, say }) => {
  await say(`<@${event.user}> こんにちは!何かお手伝いできますか?`);
});

// スラッシュコマンド
app.command('/status', async ({ command, ack, respond }) => {
  await ack();
  await respond('サーバーは正常稼働中です ✅');
});

await app.start(3000);

Block Kitでインタラクティブなメッセージ

Block Kitを使うとボタン・セレクトボックスなどのUI要素を含むメッセージを作れます。承認ワークフロー・投票・フォーム入力などのインタラクティブな機能を実装できます。

Slack Web API

Slack Web APIを使うと、チャンネル一覧取得・メッセージ送信・ファイルアップロード・ユーザー情報取得など、Slackのほぼすべての機能にアクセスできます。chat.postMessage APIは最もよく使われるAPIです。

活用例

  • CI/CD通知:GitHub ActionsからのビルドSSLパイプライン通知
  • エラーアラート:Sentryのエラーが発生したらチャンネルに通知
  • デイリーレポート:毎朝の売上・KPIサマリーを自動投稿
  • 承認ワークフロー:経費申請・デプロイ承認をSlack内で完結
  • オンコール通知:PagerDutyとSlackを連携したアラート管理

まとめ

Slack APIは業務効率化・チーム間の情報共有・自動化に大きく貢献します。Incoming WebhookとBolt フレームワークを組み合わせることで、シンプルな通知から複雑なインタラクティブボットまで幅広い用途に対応できます。Slack Appを作成してワークスペースに導入し、チームの生産性向上に役立ててください。

よくある質問

Q.Slack BotとSlack Appの違いは何ですか?

Slack AppはSlackのワークスペースに追加する拡張機能の総称です。Bot UserはSlack Appの一部で、メッセージを送受信できるユーザーのような存在です。多くの「Slackボット」はBot User機能を持つSlack Appとして実装されています。

Q.Incoming Webhookは認証なしで使えますか?

Incoming WebhookのURLはSlack Appの設定時に発行される秘密のURLです。このURLを持っている人は誰でもメッセージを送信できるため、URLが漏洩しないよう厳重に管理してください。漏洩した場合は即座にWebhookURLを無効化してください。

Q.Block Kitとはどのようなものですか?

Block KitはリッチなレイアウトのメッセージをJSONで定義するSlackのUI框架です。テキスト・画像・ボタン・ドロップダウンなどのUI要素を組み合わせてインタラクティブなメッセージを作れます。Block Kit Builderというビジュアルエディターで設計できます。

関連記事