OpenClaw Slack チャンネル
Socket Mode(デフォルト)または HTTP Events API を使用して OpenClaw を Slack に接続します。このエンタープライズグレードの統合により、AI アシスタントが Slack ワークスペースで動作し、ダイレクトメッセージ、チャンネル会話、リアクション、スレッド、スラッシュコマンドを処理できます。Socket Mode はパブリック URL 不要で WebSocket 経由で接続します。HTTP モードは Slack の Events API を使用し、公開アクセス可能なデプロイに適しています。
Slack 対応機能
テキストメッセージ
対応
メディア・ファイル
対応
リアクション
対応
スレッド
対応
音声メッセージ
非対応
グループチャット
対応
Slack 前提条件
- 管理者権限を持つ Slack ワークスペース(カスタムアプリのインストール用)
- api.slack.com/apps で作成された Slack アプリ
- connections:write スコープ付きの App Token(xapp-...)(Socket Mode 用)
- ワークスペースへのアプリインストール後に取得した Bot Token(xoxb-...)
- OpenClaw ゲートウェイが起動・設定済みであること
Slack クイックセットアップ
Slack アプリの作成と Socket Mode の有効化
api.slack.com/apps にアクセスし、「Create New App」→「From scratch」をクリックします。アプリ名を入力してワークスペースを選択します。サイドバーの「Socket Mode」に移動して有効化します。「connections:write」スコープで App-Level Token を生成します — これにより xapp-... トークンが取得できます。
OAuth スコープの設定とワークスペースへのインストール
「OAuth & Permissions」に移動し、必要な Bot Token Scopes(chat:write、channels:history、channels:read、im:write、im:history、im:read、users:read、reactions:read、reactions:write、files:write など)を追加します。「Install to Workspace」をクリックして認可します。Bot User OAuth Token(xoxb-...)をコピーします。次に「Event Subscriptions」に移動し、イベントを有効化して以下をサブスクライブします: message.channels、message.groups、message.im、message.mpim、app_mention、reaction_added、reaction_removed。
設定の追加、ゲートウェイの起動、ボットの招待
appToken と botToken を含む Slack チャンネル設定を ~/.openclaw/openclaw.json に追加します。ゲートウェイを起動すると、Socket Mode で Slack に接続されます。Slack で「/invite @YourBotName」と入力して、対象チャンネルにボットを招待します。メッセージを送信してテストしてください。
Slack 設定例
{
"channels": {
"slack": {
"enabled": true,
"appToken": "xapp-1-YOUR_APP_TOKEN",
"botToken": "xoxb-YOUR_BOT_TOKEN"
}
}
}Slack 詳細ドキュメント
アーキテクチャ概要
Slack アプリの作成
ダイレクトメッセージのセキュリティ(ペアリング)
{
"channels": {
"slack": {
"enabled": true,
"appToken": "xapp-...",
"botToken": "xoxb-...",
"dm": {
"policy": "pairing",
"allowFrom": ["U01ABCDEF", "user@company.com"]
}
}
}
}チャンネル設定(グループポリシー)
{
"channels": {
"slack": {
"groupPolicy": "allowlist",
"channels": {
"C01ABCDEF": {
"allow": true,
"requireMention": true,
"users": ["U01ABCDEF"],
"skills": ["search", "docs"],
"systemPrompt": "回答は短く技術的に。"
},
"#general": {
"allow": true,
"requireMention": true
}
}
}
}
}返信スレッディング
{
"channels": {
"slack": {
"replyToMode": "off",
"replyToModeByChatType": {
"direct": "all",
"group": "first",
"channel": "off"
}
}
}
}User Token(オプション)
{
"channels": {
"slack": {
"enabled": true,
"appToken": "xapp-...",
"botToken": "xoxb-...",
"userToken": "xoxp-...",
"userTokenReadOnly": true
}
}
}スラッシュコマンドと App Home
{
"channels": {
"slack": {
"slashCommand": {
"enabled": true,
"name": "openclaw",
"sessionPrefix": "slack:slash",
"ephemeral": true
}
}
}
}権限とスコープ
HTTP モード(Events API)
{
"channels": {
"slack": {
"enabled": true,
"mode": "http",
"botToken": "xoxb-...",
"signingSecret": "your-signing-secret",
"webhookPath": "/slack/events"
}
}
}高度な設定
{
"channels": {
"slack": {
"historyLimit": 50,
"textChunkLimit": 4000,
"chunkMode": "newline",
"mediaMaxMb": 20,
"actions": {
"reactions": true,
"messages": true,
"pins": true,
"memberInfo": true,
"emojiList": true
}
}
}
}Slack 設定リファレンス
| Key | Type | Default | Description |
|---|---|---|---|
| enabled | boolean | true | Slack チャンネルの有効化/無効化 |
| mode | string | "socket" | 接続モード。オプション: socket(Socket Mode、デフォルト)、http(Events API) |
| appToken | string | "" | Socket Mode 用の Slack App-Level Token(xapp-...)。環境変数 SLACK_APP_TOKEN も使用可能 |
| botToken | string | "" | Slack Bot User OAuth Token(xoxb-...)。環境変数 SLACK_BOT_TOKEN も使用可能 |
| userToken | string | "" | 拡張読み取りアクセス用のオプション Slack User Token(xoxp-...) |
| userTokenReadOnly | boolean | true | User Token を読み取り専用操作に制限。false に設定するとインストールしたユーザーとしての書き込みを許可 |
| signingSecret | string | "" | HTTP モードのリクエスト検証用 Signing Secret(Basic Information → App Credentials から取得) |
| webhookPath | string | "/slack/events" | HTTP モード用の Webhook エンドポイントパス |
| dm.policy | string | "pairing" | ダイレクトメッセージアクセス制御ポリシー。オプション: pairing(コードベースの承認)、open(誰でもダイレクトメッセージ可能) |
| dm.allowFrom | string[] | [] | ボットへのダイレクトメッセージを許可するユーザー。ユーザー ID、@ユーザー名、メールアドレス、ワイルドカード(*)をサポート |
| dm.enabled | boolean | true | ダイレクトメッセージを受け入れるかどうか |
| dm.groupEnabled | boolean | false | グループダイレクトメッセージ(MPIM)処理の有効化 |
| dm.groupChannels | string[] | [] | 許可するグループダイレクトメッセージのチャンネル ID |
| groupPolicy | string | "open" | チャンネル処理ポリシー。オプション: open(すべてのチャンネル)、disabled(チャンネルなし)、allowlist(設定済みのみ) |
| channels.<id>.allow | boolean | true | 許可リストモードでこのチャンネルを許可または拒否 |
| channels.<id>.requireMention | boolean | false | このチャンネルでボットが応答するために @メンションが必要かどうか |
| channels.<id>.users | string[] | [] | このチャンネルのユーザー許可リスト(ID、@ユーザー名、またはメールアドレス) |
| channels.<id>.skills | string[] | [] | このチャンネルで利用可能なスキルの制限(空 = すべてのスキル) |
| channels.<id>.systemPrompt | string | "" | このチャンネル用のカスタム AI システムプロンプト |
| channels.<id>.allowBots | boolean | false | このチャンネルで他のボットからのメッセージを処理 |
| replyToMode | string | "off" | 返信スレッディングモード。オプション: off(メインチャンネル)、first(最初の返信をスレッド化)、all(すべての返信をスレッド化) |
| replyToModeByChatType | object | {} | チャットタイプ別のスレッディングオーバーライド。キー: direct、group、channel。値: off、first、all |
| reactionNotifications | string | "off" | エージェント通知をトリガーするリアクション。オプション: off、own、all |
| historyLimit | number | 50 | AI コンテキストに含める最近のメッセージ数。0に設定すると無効化 |
| textChunkLimit | number | 4000 | 長い AI 応答のメッセージチャンクあたりの最大文字数 |
| chunkMode | string | "split" | 長い応答の分割方法。オプション: split(ハードリミット)、newline(段落境界) |
| mediaMaxMb | number | 20 | メディアファイルの最大サイズ(メガバイト) |
| slashCommand.enabled | boolean | true | スラッシュコマンド処理の有効化 |
| slashCommand.name | string | "openclaw" | スラッシュコマンド名(/ なし) |
| slashCommand.ephemeral | boolean | true | スラッシュコマンドの応答が実行者にのみ表示されるかどうか |
Slack チャンネルの有効化/無効化
接続モード。オプション: socket(Socket Mode、デフォルト)、http(Events API)
Socket Mode 用の Slack App-Level Token(xapp-...)。環境変数 SLACK_APP_TOKEN も使用可能
Slack Bot User OAuth Token(xoxb-...)。環境変数 SLACK_BOT_TOKEN も使用可能
拡張読み取りアクセス用のオプション Slack User Token(xoxp-...)
User Token を読み取り専用操作に制限。false に設定するとインストールしたユーザーとしての書き込みを許可
HTTP モードのリクエスト検証用 Signing Secret(Basic Information → App Credentials から取得)
HTTP モード用の Webhook エンドポイントパス
ダイレクトメッセージアクセス制御ポリシー。オプション: pairing(コードベースの承認)、open(誰でもダイレクトメッセージ可能)
ボットへのダイレクトメッセージを許可するユーザー。ユーザー ID、@ユーザー名、メールアドレス、ワイルドカード(*)をサポート
ダイレクトメッセージを受け入れるかどうか
グループダイレクトメッセージ(MPIM)処理の有効化
許可するグループダイレクトメッセージのチャンネル ID
チャンネル処理ポリシー。オプション: open(すべてのチャンネル)、disabled(チャンネルなし)、allowlist(設定済みのみ)
許可リストモードでこのチャンネルを許可または拒否
このチャンネルでボットが応答するために @メンションが必要かどうか
このチャンネルのユーザー許可リスト(ID、@ユーザー名、またはメールアドレス)
このチャンネルで利用可能なスキルの制限(空 = すべてのスキル)
このチャンネル用のカスタム AI システムプロンプト
このチャンネルで他のボットからのメッセージを処理
返信スレッディングモード。オプション: off(メインチャンネル)、first(最初の返信をスレッド化)、all(すべての返信をスレッド化)
チャットタイプ別のスレッディングオーバーライド。キー: direct、group、channel。値: off、first、all
エージェント通知をトリガーするリアクション。オプション: off、own、all
AI コンテキストに含める最近のメッセージ数。0に設定すると無効化
長い AI 応答のメッセージチャンクあたりの最大文字数
長い応答の分割方法。オプション: split(ハードリミット)、newline(段落境界)
メディアファイルの最大サイズ(メガバイト)
スラッシュコマンド処理の有効化
スラッシュコマンド名(/ なし)
スラッシュコマンドの応答が実行者にのみ表示されるかどうか
Slack よくある質問
Slack トラブルシューティング
チャンネルが groupPolicy によってブロックされているか、ボットが許可リストにないか、ボットがチャンネルに招待されていません。
ダイレクトメッセージポリシーが「pairing」に設定されており送信者が承認されていないか、App Home で Messages Tab が有効化されていません。
App Token(xapp-...)が無効または期限切れであるか、サーバーと Slack 間にネットワークの問題があります。
Bot Token に必要な OAuth スコープが不足しているか、トークンが取り消し/再生成されています。
Slack API ポータルでスラッシュコマンドが作成されていないか、リクエスト URL が正しく設定されていません(HTTP モード)。
長い AI の応答が OpenClaw の textChunkLimit(デフォルト: 4,000文字)を超えると、自動的に複数のメッセージに分割されます。注: Slack 自体の制限は section ブロックあたり3,000文字、メッセージの text フィールドあたり40,000文字です。