はじめに
Slack は企業チームで最も広く使われているコラボレーションツールの一つです。OpenClaw を Slack に接続することで、チームにいつでも利用可能な AI アシスタントを提供し、質問への回答、コンテンツの生成、日常タスクの処理を支援できます。本記事では、Slack App の作成から接続完了までの全工程を詳しくご説明します。
前提条件
- OpenClaw がインストール済みで正常に稼働していること
- Slack ワークスペースの管理者権限を持っていること
- ワークスペースがカスタムアプリのインストールを許可していること
接続方式の選択
OpenClaw は Slack への接続に2つの方式をサポートしています。
| 方式 | 説明 | 適用シーン |
|---|---|---|
| Socket Mode | WebSocket 経由の接続、パブリック IP 不要 | ローカルデプロイ、イントラネット環境 |
| Event Subscriptions | HTTP Webhook 経由でイベントを受信 | パブリックサーバー、本番環境 |
初めての方には Socket Mode をお勧めします。設定が簡単で、パブリック IP やドメイン名が不要です。
ステップ1:Slack App の作成
1.1 Slack API プラットフォームにアクセス
Slack API を開き、Create New App をクリックします。
1.2 作成方法の選択
From scratch(ゼロから作成)を選択します。
- アプリ名を入力(例:「OpenClaw Assistant」)
- インストールするワークスペースを選択
- Create App をクリック
1.3 基本情報の設定
Basic Information ページで:
- アプリアイコンをアップロード
- アプリの説明を入力
- Signing Secret をメモしてください(後の設定で必要です)
ステップ2:権限とイベントの設定
2.1 Bot Token Scopes の設定
左側メニューで OAuth & Permissions をクリックし、Bot Token Scopes までスクロールして以下の権限を追加します。
必要な Bot Token Scopes:
├── app_mentions:read - @メンションメッセージの読み取り
├── channels:history - パブリックチャンネルのメッセージ履歴読み取り
├── channels:read - パブリックチャンネル情報の表示
├── chat:write - メッセージの送信
├── groups:history - プライベートチャンネルのメッセージ履歴読み取り
├── groups:read - プライベートチャンネル情報の表示
├── im:history - DM 履歴の読み取り
├── im:read - DM 情報の表示
├── im:write - DM の送信
├── mpim:history - グループ DM 履歴の読み取り
├── reactions:write - リアクションの追加
├── users:read - ユーザー情報の表示
└── files:read - ファイルの読み取り(任意、アップロードファイル処理用)
2.2 Event Subscriptions の設定
左側メニューで Event Subscriptions をクリックし、Enable Events を有効にします。
Socket Mode の使用(推奨)
Socket Mode を選択する場合、Request URL の入力は不要です。左側メニューで Socket Mode をクリックし、有効にします。
- Enable Socket Mode をクリック
- App-Level Token に名前を付ける(例:「openclaw-socket」)
- scope を追加:
connections:write - Generate をクリックし、生成された Token を保存(
xapp-で始まるもの)
Event Subscriptions HTTP 方式の使用
HTTP 方式を選択する場合、まず OpenClaw を起動してパブリックアクセスが可能であることを確認し、Request URL に以下を入力します。
https://your-domain.com/webhook/slack/events
2.3 Bot Events のサブスクリプション
Event Subscriptions ページの Subscribe to bot events セクションで、以下のイベントを追加します。
| イベント | 説明 |
|---|---|
app_mention |
誰かが @Bot した時にトリガー |
message.channels |
パブリックチャンネルに新しいメッセージ |
message.groups |
プライベートチャンネルに新しいメッセージ |
message.im |
DM に新しいメッセージ |
message.mpim |
グループ DM に新しいメッセージ |
Save Changes をクリックして保存します。
ステップ3:アプリをワークスペースにインストール
- OAuth & Permissions ページに戻る
- Install to Workspace をクリック
- 権限を確認し、Allow をクリック
- インストール完了後、Bot User OAuth Token をコピー(
xoxb-で始まるもの)
ステップ4:OpenClaw の設定
4.1 Socket Mode 設定
~/.config/openclaw/openclaw.json5 を編集します。
{
channels: {
slack: {
enabled: true,
// Bot User OAuth Token(xoxb- で始まるもの)
botToken: "xoxb-1234567890-1234567890123-AbCdEfGhIjKlMnOpQrStUv",
// App-Level Token(xapp- で始まるもの、Socket Mode で必須)
appToken: "xapp-1-A1234567890-1234567890123-abcdef1234567890abcdef",
// Signing Secret(Basic Information ページから取得)
signingSecret: "abc123def456ghi789",
// 接続モード
mode: "socket", // "socket" または "http"
// トリガー設定
trigger: {
// @Bot が必要かどうか
mentionRequired: true,
// DM に応答するか(@ 不要)
dmEnabled: true,
// カスタムトリガーキーワード(任意)
keywords: ["ask", "問"]
}
}
}
}
4.2 HTTP モード設定
HTTP モードを使用する場合:
{
channels: {
slack: {
enabled: true,
botToken: "xoxb-xxxx",
signingSecret: "your-signing-secret",
mode: "http",
// HTTP モードでの Webhook パス
webhookPath: "/webhook/slack/events"
}
}
}
4.3 環境変数で設定
export SLACK_BOT_TOKEN="xoxb-1234567890-xxxxx"
export SLACK_APP_TOKEN="xapp-1-A1234567890-xxxxx"
export SLACK_SIGNING_SECRET="abc123def456"
4.4 再起動と検証
openclaw restart
# Slack チャンネルの接続ログを確認
openclaw logs -f --component channel:slack
接続成功時のログ:
[INFO] [channel:slack] Socket Mode 连接已建立
[INFO] [channel:slack] Bot 已登录为 @OpenClaw Assistant
[INFO] [channel:slack] 监听工作区: Your Workspace
ステップ5:Slack での使用
Bot をチャンネルに招待
Bot はインストール後、デフォルトではどのチャンネルにも参加していません。手動で招待する必要があります。
- 対象のチャンネルに移動
/invite @OpenClaw Assistantと入力- または、チャンネル設定 → インテグレーション → アプリの追加
インタラクション方法
# チャンネルで @Bot して質問
@OpenClaw Assistant Pythonのソートアルゴリズムを書いてください
# DM で直接対話(@ 不要)
こんにちは、この英文を翻訳してください
# スレッドで会話を継続
(Bot の返信のスレッドにメッセージを送信するだけでコンテキスト付きの会話を続けられます)
スレッド返信設定
Slack のスレッド(Thread)は会話を管理するのに適した方法です。Bot の返信動作を設定できます。
{
channels: {
slack: {
reply: {
// スレッドで返信するかどうか(チャンネルの荒れ防止)
threadReply: true,
// スレッド返信時にチャンネルにも表示するかどうか
broadcastReply: false,
// 処理中に「入力中」ステータスを表示
showTyping: true,
// 送信前に「考え中」の絵文字を追加
thinkingEmoji: "thinking_face",
// 返信完了後に確認の絵文字を追加
doneEmoji: "white_check_mark"
}
}
}
}
チャンネルと権限制御
Bot が動作するチャンネルの制限
{
channels: {
slack: {
// 指定したチャンネルでのみ応答
allowedChannels: ["C01234ABCDE", "C05678FGHIJ"],
// またはチャンネル名で指定
allowedChannelNames: ["ai-assistant", "bot-testing"],
// 無視するチャンネル
ignoredChannels: ["C09999XXXXX"]
}
}
}
Bot を使用できるユーザーの制限
{
channels: {
slack: {
// 許可するユーザー ID リスト(空配列は全員許可)
allowedUsers: [],
// 管理者ユーザー(管理コマンドを実行可能)
adminUsers: ["U01234ADMIN"]
}
}
}
ワークスペースの権限承認
エンタープライズレベルの Slack ワークスペースでは、アプリのインストールに管理者の承認が必要な場合があります。
- ワークスペース管理者がアプリ管理ページにアクセス
- 承認待ちリストから OpenClaw Assistant を見つける
- 権限範囲を確認後、承認をクリック
- 承認後にアプリが正常に機能します
トラブルシューティング
Bot がメッセージに応答しない
# 接続状態を確認
openclaw logs --level error --component channel:slack
# よくある原因:
# 1. Bot がチャンネルに招待されていない
# 2. Message Content イベントが未サブスクリプション
# 3. Token が不正または期限切れ
Socket Mode 接続失敗
# App-Level Token が正しいか確認
# Slack API プラットフォームで Socket Mode が有効か確認
# ネットワーク接続を確認(Socket Mode は wss://wss-primary.slack.com へのアクセスが必要)
HTTP モードの検証失敗
# Signing Secret が正しいか確認
# Request URL がパブリックアクセス可能か確認
# OpenClaw が稼働中でポートが開放されているか確認
まとめ
OpenClaw を Slack に接続する主要な手順:
- Slack API プラットフォームでアプリを作成し権限を設定
- Socket Mode または HTTP モードを選択
- Bot Token、App Token、Signing Secret を取得
- OpenClaw 設定ファイルに認証情報を入力
- サービスを再起動し、Bot を対象チャンネルに招待
Socket Mode はすばやく始めたい場合やイントラネットデプロイに適しており、HTTP モードはパブリックアドレスを持つ本番環境に適しています。