OpenClaw

OpenClaw Slack 채널

엔터프라이즈
보통

소켓 모드(기본값) 또는 HTTP 이벤트 API를 사용하여 OpenClaw를 Slack에 연결하세요. 이 엔터프라이즈급 통합을 통해 AI 어시스턴트가 Slack 워크스페이스에서 작동하며 — 다이렉트 메시지(DM), 채널 대화, 리액션, 스레드, 슬래시 명령어를 처리할 수 있습니다. 소켓 모드는 공개 URL 없이 WebSocket을 통해 연결되며, HTTP 모드는 공개적으로 접근 가능한 배포를 위해 Slack의 이벤트 API를 사용합니다.

기본 정보
난이도보통
카테고리엔터프라이즈
지원 기능 수5 / 6

Slack 지원 기능

텍스트 메시지

지원

미디어 및 파일

지원

리액션

지원

스레드

지원

음성 메시지

미지원

그룹 채팅

지원

Slack 사전 요구사항

  • 관리자 권한이 있는 Slack 워크스페이스 (커스텀 앱 설치를 위해)
  • api.slack.com/apps에서 생성한 Slack 앱
  • connections:write 스코프가 포함된 앱 토큰 (xapp-...) (소켓 모드용)
  • 워크스페이스에 앱 설치 후 얻은 봇 토큰 (xoxb-...)
  • OpenClaw 게이트웨이가 실행 중이고 설정 완료된 상태

Slack 빠른 설정

1

Slack 앱 생성 및 소켓 모드 활성화

api.slack.com/apps로 이동하여 '새 앱 만들기' → '처음부터 만들기'를 클릭합니다. 앱 이름을 지정하고 워크스페이스를 선택합니다. 사이드바에서 '소켓 모드'로 이동하여 활성화합니다. 'connections:write' 스코프가 포함된 앱 수준 토큰을 생성합니다 — 이것이 xapp-... 토큰입니다.

2

OAuth 스코프 설정 및 워크스페이스에 설치

'OAuth 및 권한'으로 이동하여 필요한 봇 토큰 스코프를 추가합니다 (chat:write, channels:history, channels:read, im:write, im:history, im:read, users:read, reactions:read, reactions:write, files:write 등). '워크스페이스에 설치'를 클릭하고 승인합니다. 봇 사용자 OAuth 토큰 (xoxb-...)을 복사합니다. 그런 다음 '이벤트 구독'으로 이동하여 이벤트를 활성화하고 다음을 구독합니다: message.channels, message.groups, message.im, message.mpim, app_mention, reaction_added, reaction_removed.

3

설정 추가, 게이트웨이 시작 및 봇 초대

~/.openclaw/openclaw.json에 appToken과 botToken을 포함한 Slack 채널 설정을 추가합니다. 게이트웨이를 시작하면 소켓 모드를 통해 Slack에 연결됩니다. Slack에서 '/invite @봇이름'을 입력하여 대상 채널에 봇을 초대합니다. 메시지를 보내 테스트합니다.

Slack 구성 예시

config.json
{
  "channels": {
    "slack": {
      "enabled": true,
      "appToken": "xapp-1-YOUR_APP_TOKEN",
      "botToken": "xoxb-YOUR_BOT_TOKEN"
    }
  }
}

Slack 상세 문서

아키텍처 개요

OpenClaw는 두 가지 지원 모드를 통해 Slack에 연결됩니다: • 소켓 모드 (기본값) — 서버에서 Slack으로 시작되는 WebSocket 연결을 사용합니다. 공개 URL이나 방화벽 설정이 필요 없습니다. 개발, 내부 배포, NAT 뒤의 환경에 이상적입니다. • HTTP 모드 (이벤트 API) — Slack이 서버의 HTTPS 엔드포인트로 이벤트를 푸시합니다. 공개적으로 접근 가능한 URL이 필요합니다. 로드 밸런서가 있는 고가용성 프로덕션 배포에 적합합니다. 두 모드 모두에서 봇은 실시간 이벤트(메시지, 리액션, 멘션)를 수신하고 Slack API를 통해 응답합니다. 세션 라우팅은 컨텍스트에 따라 달라집니다: 다이렉트 메시지(DM)는 에이전트의 메인 세션을 사용하고, 채널 대화는 채널별로 격리된 세션을 생성하며(agent:<agentId>:slack:channel:<channelId>), 슬래시 명령어는 사용자별 세션을 받습니다.
소켓 모드는 대부분의 셀프 호스팅 환경에 권장됩니다 — 네트워킹 설정 없이 방화벽과 NAT 뒤에서 작동합니다.
환경 변수를 통해 토큰을 설정할 수 있습니다: SLACK_APP_TOKEN 및 SLACK_BOT_TOKEN, 또는 설정 파일에서 지정할 수 있습니다.

Slack 앱 생성하기

Slack 앱 설정에는 Slack API 포털에서 여러 구성 요소를 설정해야 합니다: 1. api.slack.com/apps로 이동하여 '새 앱 만들기' → '처음부터 만들기'를 클릭합니다 2. 앱 이름을 지정하고 대상 워크스페이스를 선택합니다 3. 소켓 모드를 활성화합니다 (설정 → 소켓 모드 → 활성화). connections:write 스코프가 포함된 앱 수준 토큰을 생성합니다 4. OAuth 및 권한에서 봇 토큰 스코프를 추가합니다: • chat:write, im:write — 메시지 전송 및 관리 • channels:history, groups:history, im:history, mpim:history — 메시지 기록 읽기 • channels:read, groups:read, im:read, mpim:read — 대화 정보 읽기 • users:read — 사용자 프로필 조회 • reactions:read, reactions:write — 메시지에 리액션 • pins:read, pins:write — 고정된 메시지 관리 • emoji:read — 커스텀 이모지 목록 • files:write — 파일 업로드 5. 워크스페이스에 앱을 설치하고 봇 토큰 (xoxb-...)을 복사합니다 6. 이벤트 구독을 활성화하고 봇 이벤트를 구독합니다: • message.channels, message.groups, message.im, message.mpim • app_mention • reaction_added, reaction_removed • member_joined_channel, member_left_channel • channel_rename, pin_added, pin_removed 7. 선택적으로 슬래시 명령어에서 /openclaw 슬래시 명령어를 생성합니다 8. 앱 홈에서 메시지 탭을 활성화하여 다이렉트 메시지(DM) 지원을 켭니다 팁: 제공된 앱 매니페스트를 사용하면 앱 생성 시 모든 스코프와 이벤트를 한 번에 자동 설정할 수 있습니다.
토큰을 안전하게 보관하세요. 앱 토큰 (xapp-...)과 봇 토큰 (xoxb-...)은 앱에 대한 전체 제어권을 부여합니다. 유출된 경우 Slack API 포털에서 즉시 재생성하세요.
앱 생성 시 매니페스트 옵션을 사용하면 필요한 모든 스코프, 이벤트 및 기능을 한 단계에서 설정할 수 있습니다.
이벤트 구독을 활성화하고 필요한 봇 이벤트를 구독했는지 확인하세요. 이 설정이 없으면 봇이 연결되지만 메시지를 수신하지 못합니다.

다이렉트 메시지(DM) 보안 (페어링)

Slack 다이렉트 메시지(DM) 정책은 누가 다이렉트 메시지로 AI 어시스턴트와 상호작용할 수 있는지를 제어합니다. OpenClaw는 두 가지 모드를 지원합니다: • 페어링 (기본값) — 알 수 없는 DM 발신자에게 시간 제한이 있는 페어링 코드가 전송됩니다 (1시간 후 만료). 터미널에서 'openclaw pairing approve slack <코드>'로 승인합니다. 승인 후 자유롭게 대화할 수 있습니다. 채널당 최대 3개의 대기 중인 페어링 요청이 허용됩니다. • 오픈 — 봇에게 다이렉트 메시지를 보내는 모든 사용자가 응답을 받습니다. 작동하려면 dm.allowFrom=["*"]이 필요합니다. 대규모 워크스페이스에서는 주의하여 사용하세요. 허용 목록 항목은 여러 형식을 지원합니다: • Slack 사용자 ID (예: "U01ABCDEF") • @사용자이름 참조 • 이메일 주소 'openclaw pairing list slack'으로 대기 중인 페어링을 확인할 수도 있습니다.
openclaw.json
{
  "channels": {
    "slack": {
      "enabled": true,
      "appToken": "xapp-...",
      "botToken": "xoxb-...",
      "dm": {
        "policy": "pairing",
        "allowFrom": ["U01ABCDEF", "user@company.com"]
      }
    }
  }
}
많은 사용자가 있는 워크스페이스에서는 페어링 정책을 사용하여 무단 AI 사용을 방지하세요. 각 페어링 코드는 1시간 후에 만료됩니다.
오픈 모드에서는 allowFrom을 ["*"]로 설정하여 모든 사용자를 허용하거나, 개별 사용자 ID/이메일을 지정하여 접근을 제한할 수 있습니다.

채널 설정 (그룹 정책)

채널 정책은 봇이 어떤 Slack 채널에서 작동하고 어떻게 동작하는지를 제어합니다: 최상위 groupPolicy: • open — 봇이 초대된 모든 채널에서 응답합니다 • disabled — 봇이 모든 채널 메시지를 무시합니다 • allowlist — 봇이 명시적으로 설정된 채널에서만 응답합니다 채널별 설정으로 개별 채널의 동작을 세밀하게 조정할 수 있습니다: • allow — 허용 목록 모드에서 채널 활성화/비활성화 • requireMention — 봇이 응답하려면 @멘션이 필요한지 여부 • users — 이 특정 채널의 사용자 허용 목록 • skills — 이 채널에서 사용 가능한 스킬/도구 제한 • systemPrompt — 이 채널의 커스텀 AI 지시사항 • allowBots — 다른 봇의 메시지를 처리할지 여부 (기본값: false) • enabled — 채널 전체 활성화/비활성화
openclaw.json
{
  "channels": {
    "slack": {
      "groupPolicy": "allowlist",
      "channels": {
        "C01ABCDEF": {
          "allow": true,
          "requireMention": true,
          "users": ["U01ABCDEF"],
          "skills": ["search", "docs"],
          "systemPrompt": "답변을 짧고 기술적으로 유지하세요."
        },
        "#general": {
          "allow": true,
          "requireMention": true
        }
      }
    }
  }
}
채널 키는 채널 ID (C01ABCDEF) 또는 채널 이름 (#general)을 사용할 수 있습니다. 채널 이름 변경 시에도 유지되므로 ID가 더 안정적입니다.
채널별 systemPrompt를 사용하여 다른 채널에서 AI에게 다른 성격이나 지시를 줄 수 있습니다 — 예: #engineering에서는 기술적으로, #watercooler에서는 캐주얼하게.

답장 스레딩

OpenClaw는 Slack에서 유연한 답장 스레딩을 지원하며, 봇이 메인 채널에 응답할지 스레드를 생성할지를 제어합니다. 전역 replyToMode: • off (기본값) — 메인 채널에 답장합니다. 트리거 메시지가 이미 스레드에 있는 경우에만 스레드에 답장합니다. • first — 첫 번째 답장은 스레드로, 이후 답장은 메인 채널로 갑니다. • all — 모든 답장이 스레드 응답으로 전송됩니다. replyToModeByChatType을 통한 채팅 유형별 재정의: • direct — 1:1 다이렉트 메시지(DM) 대화 • group — 그룹 DM / MPIM 대화 • channel — 일반 Slack 채널 답장 태그를 통한 수동 스레드 제어: • [[reply_to_current]] — 봇을 트리거한 메시지에 답장 • [[reply_to:<message_id>]] — 특정 메시지 ID에 답장
openclaw.json
{
  "channels": {
    "slack": {
      "replyToMode": "off",
      "replyToModeByChatType": {
        "direct": "all",
        "group": "first",
        "channel": "off"
      }
    }
  }
}
활발한 채널에서는 replyToMode: 'all'을 사용하여 대화를 스레드로 정리하고 메인 채널이 복잡해지는 것을 방지하세요.
채팅 유형별 재정의를 통해 다이렉트 메시지(DM)는 스레드로 처리하고 채널 답장은 인라인으로 유지하거나, 그 반대로 설정할 수 있습니다.

사용자 토큰 (선택 사항)

봇 토큰 외에도 향상된 읽기 접근을 위해 사용자 토큰 (xoxp-...)을 선택적으로 설정할 수 있습니다. 사용자 토큰은 기록, 고정, 리액션, 커스텀 이모지, 멤버 정보에 대한 더 풍부한 데이터를 제공합니다. 토큰 사용 우선순위: • 읽기 작업 — 사용자 토큰이 우선이며, 사용할 수 없는 경우 봇 토큰으로 대체됩니다 • 쓰기 작업 — 기본적으로 항상 봇 토큰이 사용됩니다 userTokenReadOnly 플래그 (기본값: true)는 사용자 토큰이 쓰기 작업에 사용되지 않도록 보장합니다. AI가 사용자로서 행동하도록 하려면 false로 설정하세요 (사용자 토큰에 추가 쓰기 스코프가 필요합니다). 사용자 토큰을 추가하려면 OAuth 및 권한의 '사용자 토큰 스코프'에서 사용자 토큰 스코프를 설정합니다 — 일반적으로 channels:history, channels:read, users:read, reactions:read, pins:read, emoji:read, search:read 등의 읽기 전용 스코프입니다.
openclaw.json
{
  "channels": {
    "slack": {
      "enabled": true,
      "appToken": "xapp-...",
      "botToken": "xoxb-...",
      "userToken": "xoxp-...",
      "userTokenReadOnly": true
    }
  }
}
userTokenReadOnly를 false로 설정하면 AI가 봇이 아닌 설치 사용자로서 쓰기 작업(메시지 전송, 리액션 추가, 메시지 고정)을 수행할 수 있습니다. 보안 영향을 이해한 경우에만 활성화하세요.

슬래시 명령어 및 앱 홈

OpenClaw는 Slack 슬래시 명령어와 앱 홈 설정을 지원합니다: 슬래시 명령어: Slack API 포털의 '슬래시 명령어'에서 /openclaw 명령어를 생성합니다. 소켓 모드에서는 요청 URL이 필요 없습니다 — Slack이 WebSocket 연결을 통해 명령어를 라우팅합니다. 네이티브 명령어를 사용하는 경우 필요에 따라 추가 슬래시 명령어를 생성합니다. 앱 홈: 앱 홈에서 '메시지 탭'을 활성화하여 사용자가 앱 페이지에서 직접 봇에게 다이렉트 메시지(DM)를 보낼 수 있도록 합니다. 이는 1:1 대화를 위한 깔끔하고 전용 인터페이스를 제공합니다. 세션 라우팅: • 다이렉트 메시지(DM) → 메인 세션 (agent:main:main) • 채널 메시지 → agent:<agentId>:slack:channel:<channelId> • 슬래시 명령어 → agent:<agentId>:slack:slash:<userId> cron/CLI용 전달 대상: • user:<userId> — 특정 사용자에게 DM 전송 • channel:<channelId> — 특정 채널에 게시
openclaw.json
{
  "channels": {
    "slack": {
      "slashCommand": {
        "enabled": true,
        "name": "openclaw",
        "sessionPrefix": "slack:slash",
        "ephemeral": true
      }
    }
  }
}
임시(ephemeral) 슬래시 명령어 응답은 명령어를 호출한 사용자에게만 표시됩니다. ephemeral: false로 설정하면 채널의 모든 사람에게 응답이 표시됩니다.
앱 홈의 메시지 탭이 활성화되어야 DM 기능이 작동합니다 — 이것이 없으면 사용자가 봇과 대화를 시작할 수 없습니다.

권한 및 스코프

Slack은 OAuth 스코프를 사용하여 앱이 수행할 수 있는 작업을 제어합니다. 필수 및 선택 스코프는 다음과 같습니다: 봇 토큰 필수 스코프: • chat:write — 메시지 전송, 수정 및 삭제 • im:write — DM 대화 열기 • channels:history, groups:history, im:history, mpim:history — 메시지 기록 읽기 • channels:read, groups:read, im:read, mpim:read — 대화 정보 읽기 • users:read — 사용자 프로필 조회 • reactions:read, reactions:write — 리액션 읽기 및 추가 • pins:read, pins:write — 고정된 메시지 관리 • emoji:read — 워크스페이스 커스텀 이모지 목록 • files:write — 파일 및 미디어 업로드 사용자 토큰 선택 스코프 (읽기 전용): • channels:history, groups:history, im:history, mpim:history — 향상된 기록 접근 • channels:read, groups:read, im:read, mpim:read — 향상된 대화 정보 • users:read — 사용자 프로필 조회 • reactions:read, pins:read, emoji:read — 리액션, 고정, 이모지 읽기 • search:read — 메시지 및 파일 검색
봇 토큰 스코프만으로 시작하세요. 향상된 읽기 기능(예: search:read)이 필요한 경우에만 사용자 토큰과 해당 스코프를 추가하세요.
제공된 앱 매니페스트에는 모든 권장 스코프가 포함되어 있습니다 — 가장 빠른 설정을 위해 앱 생성 시 사용하세요.

HTTP 모드 (이벤트 API)

게이트웨이가 HTTPS를 통해 공개적으로 접근 가능한 경우, 소켓 모드 대신 HTTP 모드를 사용할 수 있습니다. HTTP 모드에서는 Slack이 서버 엔드포인트로 이벤트를 직접 푸시합니다. 설정 단계: 1. Slack 앱을 생성하되 소켓 모드를 활성화하지 마세요 2. '기본 정보' → '앱 자격 증명'에서 서명 비밀(Signing Secret)을 받습니다 3. 앱을 설치하여 봇 토큰을 받습니다 4. '이벤트 구독'에서 요청 URL을 다음으로 설정합니다: https://your-gateway-host/slack/events 5. '상호작용 및 바로가기'에서 동일한 요청 URL을 설정합니다 6. '슬래시 명령어'에서 동일한 엔드포인트로 요청 URL을 설정합니다 HTTP 모드는 앱 토큰이 필요하지 않습니다 — 들어오는 요청이 실제로 Slack에서 온 것인지 확인하기 위해 서명 비밀을 사용합니다.
openclaw.json
{
  "channels": {
    "slack": {
      "enabled": true,
      "mode": "http",
      "botToken": "xoxb-...",
      "signingSecret": "your-signing-secret",
      "webhookPath": "/slack/events"
    }
  }
}
HTTP 모드에서는 세 개의 엔드포인트(이벤트, 상호작용, 슬래시 명령어) 모두 동일한 URL을 가리켜야 합니다: https://your-host/slack/events.
HTTP 모드에서는 앱 토큰이 아닌 서명 비밀(Signing Secret)을 사용하세요. 서명 비밀은 HMAC-SHA256 서명을 통해 요청의 진위를 확인합니다.
HTTP 모드는 유효한 SSL 인증서와 공개적으로 접근 가능한 엔드포인트가 필요합니다. 서버가 Slack의 IP 범위에서 접근 가능한지 확인하세요.

고급 설정

OpenClaw는 Slack 동작을 세밀하게 조정하기 위한 여러 고급 설정을 제공합니다: 기록 및 컨텍스트: • historyLimit (기본값: 50) — AI 컨텍스트에 포함되는 최근 메시지 수. 기록 주입을 비활성화하려면 0으로 설정합니다. 텍스트 및 미디어: • textChunkLimit (기본값: 4000) — 긴 응답에 대한 메시지 청크당 최대 문자 수 • chunkMode: "newline" — 고정 문자 제한 대신 단락 경계에서 분할 • mediaMaxMb (기본값: 20) — 최대 미디어 파일 크기(메가바이트) 도구 동작 게이트: 에이전트가 수행할 수 있는 Slack 작업을 제어합니다: • reactions: true — 리액션 추가 및 목록 조회 • messages: true — 메시지 읽기, 전송, 수정 및 삭제 • pins: true — 메시지 고정, 고정 해제 및 고정 목록 조회 • memberInfo: true — 워크스페이스 멤버 정보 조회 • emojiList: true — 워크스페이스 커스텀 이모지 목록 조회 보안 참고 사항: • 쓰기 작업은 기본적으로 봇 토큰을 사용하여 애플리케이션 수준의 권한 격리를 유지합니다 • userTokenReadOnly가 false이고 사용자 토큰이 설정된 경우, 쓰기 작업이 사용자 토큰을 사용할 수 있습니다 (설치 사용자로서 행동) • 채널에서 allowBots를 활성화할 때는 봇 간 응답 루프를 방지하기 위해 requireMention 및 사용자 허용 목록과 결합하세요
openclaw.json
{
  "channels": {
    "slack": {
      "historyLimit": 50,
      "textChunkLimit": 4000,
      "chunkMode": "newline",
      "mediaMaxMb": 20,
      "actions": {
        "reactions": true,
        "messages": true,
        "pins": true,
        "memberInfo": true,
        "emojiList": true
      }
    }
  }
}

Slack 구성 참조

enabled
Type: booleanDefault: true

Slack 채널 활성화 또는 비활성화

mode
Type: stringDefault: "socket"

연결 모드. 옵션: socket (소켓 모드, 기본값), http (이벤트 API)

appToken
Type: stringDefault: ""

소켓 모드용 Slack 앱 수준 토큰 (xapp-...). SLACK_APP_TOKEN 환경 변수도 사용 가능

botToken
Type: stringDefault: ""

Slack 봇 사용자 OAuth 토큰 (xoxb-...). SLACK_BOT_TOKEN 환경 변수도 사용 가능

userToken
Type: stringDefault: ""

향상된 읽기 접근을 위한 선택적 Slack 사용자 토큰 (xoxp-...)

userTokenReadOnly
Type: booleanDefault: true

사용자 토큰을 읽기 전용 작업으로 제한. 설치 사용자로서 쓰기를 허용하려면 false로 설정

signingSecret
Type: stringDefault: ""

HTTP 모드 요청 확인을 위한 서명 비밀 (기본 정보 → 앱 자격 증명에서 확인)

webhookPath
Type: stringDefault: "/slack/events"

HTTP 모드용 웹훅 엔드포인트 경로

dm.policy
Type: stringDefault: "pairing"

다이렉트 메시지(DM) 접근 제어 정책. 옵션: pairing (코드 기반 승인), open (누구나 DM 가능)

dm.allowFrom
Type: string[]Default: []

봇에게 DM을 보낼 수 있는 사용자. 사용자 ID, @사용자이름, 이메일, 와일드카드(*) 지원

dm.enabled
Type: booleanDefault: true

다이렉트 메시지 수락 여부

dm.groupEnabled
Type: booleanDefault: false

그룹 DM (MPIM) 처리 활성화

dm.groupChannels
Type: string[]Default: []

허용된 그룹 DM 채널 ID

groupPolicy
Type: stringDefault: "open"

채널 처리 정책. 옵션: open (모든 채널), disabled (채널 없음), allowlist (설정된 채널만)

channels.<id>.allow
Type: booleanDefault: true

허용 목록 모드에서 이 채널 허용 또는 거부

channels.<id>.requireMention
Type: booleanDefault: false

이 채널에서 봇이 응답하려면 @멘션이 필요한지 여부

channels.<id>.users
Type: string[]Default: []

이 채널의 사용자 허용 목록 (ID, @사용자이름 또는 이메일)

channels.<id>.skills
Type: string[]Default: []

이 채널에서 사용 가능한 스킬 제한 (비어 있으면 = 모든 스킬)

channels.<id>.systemPrompt
Type: stringDefault: ""

이 채널의 커스텀 AI 시스템 프롬프트

channels.<id>.allowBots
Type: booleanDefault: false

이 채널에서 다른 봇의 메시지 처리

replyToMode
Type: stringDefault: "off"

답장 스레딩 모드. 옵션: off (메인 채널), first (첫 답장 스레드), all (모든 답장 스레드)

replyToModeByChatType
Type: objectDefault: {}

채팅 유형별 스레딩 재정의. 키: direct, group, channel. 값: off, first, all

reactionNotifications
Type: stringDefault: "off"

에이전트 알림을 트리거하는 리액션. 옵션: off, own, all

historyLimit
Type: numberDefault: 50

AI 컨텍스트로 포함할 최근 메시지 수. 비활성화하려면 0으로 설정

textChunkLimit
Type: numberDefault: 4000

긴 AI 응답에 대한 메시지 청크당 최대 문자 수

chunkMode
Type: stringDefault: "split"

긴 응답 분할 방법. 옵션: split (고정 제한), newline (단락 경계)

mediaMaxMb
Type: numberDefault: 20

최대 미디어 파일 크기(메가바이트)

slashCommand.enabled
Type: booleanDefault: true

슬래시 명령어 처리 활성화

slashCommand.name
Type: stringDefault: "openclaw"

슬래시 명령어 이름 (/ 제외)

slashCommand.ephemeral
Type: booleanDefault: true

슬래시 명령어 응답이 호출자에게만 표시되는지 여부

Slack 자주 묻는 질문

Slack 문제 해결

봇이 채널에서 응답하지 않음

채널이 groupPolicy에 의해 차단되었거나, 봇이 허용 목록에 없거나, 봇이 채널에 초대되지 않았습니다.

groupPolicy 설정을 확인하세요. 'allowlist'를 사용하는 경우 채널 ID 또는 이름이 'allow: true'로 설정되어 있는지 확인하세요. 봇이 채널에 초대되었는지 확인합니다 (/invite @봇이름). 게이트웨이 로그에서 '그룹 정책에 의해 차단됨' 메시지를 확인하세요.
봇으로의 다이렉트 메시지(DM)가 무시됨

DM 정책이 'pairing'으로 설정되어 있고 발신자가 승인되지 않았거나, 앱 홈에서 메시지 탭이 활성화되지 않았습니다.

페어링 모드를 사용하는 경우 'openclaw pairing list slack'으로 대기 중인 페어링을 확인하고 'openclaw pairing approve slack <코드>'로 승인하세요. 앱 홈에서 메시지 탭을 활성화합니다 (Slack API 포털 → 앱 홈 → 탭 표시). dm.policy가 'disabled'로 설정되지 않았는지 확인하세요.
소켓 모드 연결 실패 또는 계속 연결 끊김

앱 토큰 (xapp-...)이 유효하지 않거나 만료되었거나, 서버와 Slack 간에 네트워크 문제가 있습니다.

앱 토큰이 올바르고 connections:write 스코프가 있는지 확인하세요. 필요한 경우 Slack API 포털에서 앱 토큰을 재생성합니다. 게이트웨이 로그에서 WebSocket 연결 오류를 확인하세요. 서버가 wss://wss-primary.slack.com에 안정적으로 인터넷 접근이 가능한지 확인하세요.
API 오류 (missing_scope 또는 invalid_auth)

봇 토큰에 필수 OAuth 스코프가 누락되었거나, 토큰이 취소/재생성되었습니다.

Slack API 포털의 OAuth 및 권한으로 이동하여 모든 필수 스코프가 추가되었는지 확인하세요. 최근에 스코프가 추가된 경우 새 권한을 적용하기 위해 워크스페이스에 앱을 다시 설치하세요. 설정의 토큰이 포털의 현재 토큰과 일치하는지 확인하세요.
슬래시 명령어에 'dispatch_failed'가 표시되거나 나타나지 않음

Slack API 포털에서 슬래시 명령어가 생성되지 않았거나, 요청 URL이 잘못 설정되었습니다 (HTTP 모드).

API 포털의 슬래시 명령어에서 /openclaw 명령어를 생성하세요. 소켓 모드에서는 URL이 필요하지 않습니다. HTTP 모드에서는 요청 URL을 https://your-host/slack/events로 설정합니다. 명령어를 추가한 후 워크스페이스에 앱을 다시 설치해야 할 수 있습니다.
메시지가 잘리거나 여러 청크로 전송됨

긴 AI 응답이 OpenClaw의 textChunkLimit(기본값: 4,000자)을 초과하면 자동으로 여러 메시지로 분할됩니다. 참고: Slack 자체 제한은 section 블록당 3,000자, 메시지 text 필드당 40,000자입니다.

이것은 예상된 동작입니다. textChunkLimit를 조정하여 청크 크기를 제어하세요 (기본값: 4000). 더 자연스러운 분할을 위해 chunkMode를 'newline'으로 설정하여 단락 경계에서 분할합니다. systemPrompt를 통해 AI에게 응답을 간결하게 유지하도록 지시하는 것을 고려하세요.