komeの備忘録

東大院卒外資ITエンジニアの技術ブログ

OpenClaw を Slack と連携する方法|Bot設定とSocket構築手順

はじめに

これまでの記事では、OpenClaw を

  • Mac mini 上で構築
  • VPN 経由で安全にアクセス
  • LINE との連携

まで実施してきた。

今回はさらに応用として、OpenClaw を Slack と連携してみる。

Slack はエンジニアやビジネス用途で広く使われており、OpenClaw のエージェントを組み込むことで、

  • チームでの利用
  • 業務自動化
  • Botとの自然な会話

など、より実用的な使い方ができるようになる。


今回のゴール

Slack から OpenClaw のエージェントとチャットできる状態を構築する。


全体構成

今回構築する構成は以下の通り。

Slack
  ↓
Socket Mode
  ↓
OpenClaw (Mac mini / localhost)

Slack との接続に Webhook の公開は使わず、Socket Mode で OpenClaw と接続する。


用意するもの

1. セットアップ済みの OpenClaw 環境

まだの方は以下の記事を参照。

www.komee.org


2. Slack ワークスペース

Slack のワークスペースが必要。 まだ作成していない方は以下から適当なワークスペースを作成しよう。

slack.com


3. Slack App(Bot)

Slack 上で OpenClaw と連携するための Bot を作成する。


Slack App の作成

まず Slack API のページにアクセスする。

https://api.slack.com/apps


アプリ作成

「Create an App」をクリック。

  • From scratch を選択
  • アプリ名を入力
  • ワークスペースを選択
  • "Create App" をクリック


権限設定(最重要)

左メニュー「OAuth & Permissions」を開く。

「Scopes」に以下を追加。

ボットトークンのスコープ

  • chat:write
  • app_mentions:read
  • channels:history
  • channels:read

必要に応じて、今後 DM を使いたい場合は追加で関連権限を付けてもよいが、今回はまずチャンネル上でのメンション利用を前提に、この4つで進める。


Socket Mode の有効化

左メニューの Socket Mode を開き、Enable Socket Mode をオンにする。

適当な接続名を入力して有効化すればよい。

作成すると、xapp- で始まるトークンが表示される。
これは後で OpenClaw 側の設定に使うので保存しておく。

もし上記で取得し忘れた場合は、左メニューの「Basic Information」より "App-Level Tokens" のフィールドで再度確認することができる。


Event Subscriptions の設定

左メニューの Event Subscriptions を開き、Enable Events をオンにする。

次に Subscribe to bot events で、以下のイベントを追加する。

  • app_mention

変更後、下部の "Save Changes" をクリックする。 これで、Slack 上で Bot へのメンションを OpenClaw 側で受け取れるようになる。


App Home の設定

左メニューの App Home を開く。

Edit をクリックし、以下を入力する。

  • App Display Name
  • Display Name (Bot Name)

Slack App のインストール

左メニューの Install App を開き、Install to Workspace をクリックする。

インストールが完了すると、Bot User OAuth Token が発行される。
これは xoxb- で始まるトークンで、後ほど OpenClaw 側の設定に使用する。


OpenClaw 側の設定

Slack プラグインを有効化

Mac mini で以下を実行する。

$ openclaw plugins enable slack

openclaw.json を編集

次に設定ファイルを開く。

$ vi ~/.openclaw/openclaw.json

channels の中に slack を追加する。
すでに Discord など他のチャネルを使っている場合は、それに並べて書けばよい。

...
  "channels": {
    "discord": {
      "enabled": true,
      "token": "xxxxxxxxxxxxxxxxxxxx",
      "groupPolicy": "open",
      "streaming": "off"
    },
    "slack": {
      "enabled": true,
      "mode": "socket",
      "botToken": "取得した Bot User OAuth Token",
      "appToken": "取得した App-Level Token",
      "groupPolicy": "open",
      "dmPolicy": "pairing",
      "webhookPath": "/slack/events",
      "userTokenReadOnly": true,
      "nativeStreaming": true,
      "streaming": "partial"
    }
  },
...

今回使う値は次の2つ。

  • botToken
    Slack の Bot User OAuth Token (xoxb-...)
  • appToken
    Slack の App-Level Token (xapp-...)

設定の反映

設定を書いたら、Gateway を再起動する。

$ openclaw gateway restart

プラグインの状態を確認する。

$ openclaw plugins list

Slack が有効になっていれば OK。


Slack で Bot を使ってみる

チャンネルに Bot を追加

Slack の任意のチャンネルで、Bot を招待する。

/invite @Bot名

これでそのチャンネルで Bot が利用できるようになる。


メッセージ送信

@Bot名 hello

チャンネル上ではそのまま応答が返ってくる。

もし使用可能なチャンネルを制限したい場合は、~/.openclaw/openclaw.json を編集し、slack について追加した設定の groupPolicy を allowlist に変更することで対応しよう。


まとめ

これで OpenClaw を Slack と連携できた。

この構成では、

  • チャンネルではすぐに利用可能
  • groupPolicy を allowlist に設定することで使用可能なチャンネルを制限可能

となっており、利便性と安全性のバランスが取れた構成となっている。

Slack 連携は業務利用との相性が非常に良く、 AI エージェントの実用的な活用に繋がる。


注意点

  • 設定変更後は openclaw gateway restart が必要
  • トークンの取り扱いには注意
(C) komee.org