OpenClaw Slack 연동 완벽 가이드 - Socket Mode 설정부터 실전까지

English (N/A)

OpenClaw를 Slack에 연동하면 Slack DM이나 채널에서 AI 에이전트와 대화할 수 있다. 이메일 요약, 일정 확인, 파일 검색 등을 Slack에서 바로 할 수 있어서 업무 효율이 올라간다.

이 가이드에서는 Slack App 생성부터 OpenClaw 설정까지 전 과정을 단계별로 정리했다.

전제 조건

  • OpenClaw 설치 완료 (OpenClaw 완벽 가이드 참고)
  • Slack 워크스페이스 관리자 권한 (앱 설치 권한 필요)

전체 과정 요약

  1. Slack App 생성
  2. Socket Mode 활성화
  3. App-Level Token 생성
  4. Bot Token Scopes 설정
  5. Event Subscriptions 설정
  6. App Home 활성화
  7. OpenClaw 설정
  8. 테스트

소요 시간: 약 10~15분

1. Slack App 생성

1-1. Slack API 페이지 접속

Slack API에 접속한다.

1-2. 앱 생성

Create New App 클릭 → From scratch 선택

1-3. 정보 입력

  • App Name: OpenClaw (원하는 이름)
  • Pick a workspace: 설치할 워크스페이스 선택

Create App 클릭

2. Socket Mode 활성화

Socket Mode를 사용하면 별도 서버 없이 WebSocket으로 이벤트를 수신 할 수 있다. 공개 URL이나 ngrok 같은 터널링 서비스가 필요 없다.

2-1. Socket Mode 설정

좌측 메뉴에서 SettingsSocket Mode 클릭

2-2. 토글 켜기

Enable Socket Mode 토글을 On 으로 변경

3. App-Level Token 생성

Socket Mode를 사용하려면 App-Level Token이 필요하다.

3-1. Token 생성 시작

Basic InformationApp-Level TokensGenerate Token and Scopes 클릭

3-2. 토큰 정보 입력

  • Token Name: openclaw-socket (원하는 이름)
  • Add Scope: connections:write 선택

Generate 클릭

3-3. 토큰 복사

생성된 App Token (xapp-로 시작)을 복사해서 안전한 곳에 저장한다.

⚠️ 주의: 이 토큰은 다시 볼 수 없으니 반드시 지금 복사해야 한다.

4. Bot Token Scopes 설정

봇이 메시지를 읽고 쓰려면 적절한 권한이 필요하다.

4-1. OAuth & Permissions 이동

좌측 메뉴에서 FeaturesOAuth & Permissions 클릭

4-2. Bot Token Scopes 추가

ScopesBot Token Scopes 섹션에서 Add an OAuth Scope 클릭

다음 권한들을 추가한다:

Scope설명
chat:write메시지 보내기
channels:history공개 채널 메시지 읽기
groups:history비공개 채널 메시지 읽기
im:historyDM 메시지 읽기
mpim:history그룹 DM 메시지 읽기
app_mentions:read멘션 읽기 (선택사항)
files:read파일 읽기 (선택사항)

4-3. 앱 설치

Install to Workspace 클릭

권한 확인 화면이 나오면 Allow 클릭

4-4. Bot Token 복사

설치 후 나타나는 Bot User OAuth Token (xoxb-로 시작)을 복사해서 저장한다.

5. Event Subscriptions 설정

봇이 메시지를 수신하려면 이벤트 구독을 설정해야 한다.

5-1. Event Subscriptions 이동

좌측 메뉴에서 FeaturesEvent Subscriptions 클릭

5-2. 토글 켜기

Enable Events 토글을 On 으로 변경

5-3. Subscribe to bot events

Subscribe to bot events 섹션에서 Add Bot User Event 클릭

다음 이벤트들을 추가한다:

Event설명
message.imDM 메시지 수신 (필수)
message.channels공개 채널 메시지 (채널 사용 시)
message.groups비공개 채널 메시지 (비공개 채널 사용 시)
message.mpim그룹 DM 메시지 (그룹 DM 사용 시)
app_mention봇 멘션 (선택사항)

Save Changes 클릭

⚠️ 중요: Socket Mode를 사용하므로 Request URL은 입력하지 않아도 된다.

6. App Home 설정

사용자가 봇에게 DM을 보낼 수 있게 하려면 App Home을 활성화해야 한다.

6-1. App Home 이동

좌측 메뉴에서 FeaturesApp Home 클릭

6-2. Messages Tab 활성화

Show Tabs 섹션에서:

  • Messages Tab 체크
  • Allow users to send Slash commands and messages from the messages tab 체크

Save 클릭

7. OpenClaw 설정

이제 OpenClaw에 Slack 토큰을 설정한다.

방법 1: 설정 파일 수정 (권장)

~/.openclaw/config.json 파일을 열어서 다음과 같이 추가한다:

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

방법 2: 환경 변수 사용

환경 변수로도 설정할 수 있다:

export SLACK_APP_TOKEN=xapp-1-...
export SLACK_BOT_TOKEN=xoxb-...

환경 변수는 설정 파일보다 우선순위가 낮다. 설정 파일에 값이 있으면 환경 변수는 무시된다.

Gateway 재시작

설정 후 Gateway를 재시작한다:

openclaw gateway restart

8. 테스트

8-1. 봇 찾기

Slack에서 Apps 섹션에 OpenClaw (또는 설정한 이름)가 나타나는지 확인한다.

8-2. DM 보내기

봇을 클릭해서 DM 창을 열고 메시지를 보낸다:

안녕?

봇이 응답하면 성공이다! 🎉

8-3. 채널에서 사용 (선택사항)

채널에서 사용하려면:

  1. 채널에 봇 초대: /invite @OpenClaw
  2. 봇 멘션해서 대화: @OpenClaw 오늘 일정 알려줘

User Token (선택사항)

User Token(xoxp-)을 추가하면 채널 히스토리, 핀, 리액션 등 더 많은 정보를 읽을 수 있다.

User Token 발급

OAuth & PermissionsUser Token Scopes 에서 다음 스코프 추가:

  • channels:history
  • groups:history
  • im:history
  • mpim:history
  • search:read (메시지 검색, 선택사항)

Reinstall to Workspace 클릭

발급된 User OAuth Token (xoxp-로 시작)을 복사한다.

OpenClaw 설정 업데이트

{
  "channels": {
    "slack": {
      "enabled": true,
      "appToken": "xapp-1-...",
      "botToken": "xoxb-...",
      "userToken": "xoxp-..."
    }
  }
}

기본적으로 User Token은 읽기 전용으로만 사용된다.

고급 설정

DM만 허용하고 채널은 차단

{
  "channels": {
    "slack": {
      "enabled": true,
      "appToken": "xapp-1-...",
      "botToken": "xoxb-...",
      "dm": { "enabled": true },
      "groupPolicy": "disabled"
    }
  }
}

특정 채널만 허용

{
  "channels": {
    "slack": {
      "enabled": true,
      "appToken": "xapp-1-...",
      "botToken": "xoxb-...",
      "groupPolicy": "allowlist",
      "channels": {
        "C01234567": { "allow": true }  // 채널 ID
      }
    }
  }
}

채널 ID는 채널에서 우클릭 → View channel details → 하단에 표시됨

특정 사용자만 허용

{
  "channels": {
    "slack": {
      "enabled": true,
      "appToken": "xapp-1-...",
      "botToken": "xoxb-...",
      "dm": {
        "enabled": true,
        "policy": "allowlist",
        "allowFrom": ["U01234567", "U98765432"]  // 사용자 ID
      }
    }
  }
}

사용자 ID는 프로필 클릭 → MoreCopy member ID

트러블슈팅

봇이 응답하지 않음

증상: DM을 보내도 아무 반응이 없다.

해결 방법:

  1. Gateway 상태 확인

    openclaw gateway status
    

    slack: connected 가 보여야 함

  2. 토큰 확인

    • App Token이 xapp-로 시작하는지
    • Bot Token이 xoxb-로 시작하는지
    • 오타가 없는지
  3. Event Subscriptions 확인

    • message.im 이벤트가 추가되어 있는지
    • Enable Events 토글이 켜져 있는지
  4. Gateway 로그 확인

    openclaw gateway logs
    

"This app is not installed on this workspace"

증상: 설정 화면에서 이 에러가 나타남

해결 방법:

OAuth & PermissionsInstall to Workspace 클릭

권한을 추가했으면 반드시 Reinstall 해야 한다.

Socket Mode 연결 실패

증상: Gateway 로그에 WebSocket 연결 에러

해결 방법:

  1. Socket Mode 확인

    • SettingsSocket Mode
    • 토글이 On 인지 확인
  2. App-Level Token 확인

    • connections:write 스코프가 있는지
    • 토큰이 만료되지 않았는지
  3. 방화벽/프록시 확인

    • WebSocket 연결(wss://)이 차단되지 않았는지

채널에서 멘션해도 반응 없음

증상: @OpenClaw 멘션을 해도 응답 없음

해결 방법:

  1. 봇이 채널에 있는지 확인

    /invite @OpenClaw
    
  2. Event Subscriptions 확인

    • message.channels (공개 채널) 또는
    • message.groups (비공개 채널) 추가되어 있는지
  3. groupPolicy 확인

    • disabled로 설정되어 있으면 채널 메시지 무시됨
    • allowlist로 설정했으면 해당 채널 ID가 allowlist에 있는지 확인

메시지는 받지만 응답이 느림

증상: 메시지를 보내고 응답까지 10초 이상 걸림

해결 방법:

  1. API 응답 속도 확인

    • Claude API가 느릴 수 있음
    • 모델을 claude-3-haiku로 바꿔보기 (더 빠름)
  2. 네트워크 확인

    • VPS 사용 시 지역 확인 (미국/유럽이 빠름)
    • 핑 테스트
  3. 로그 확인

    openclaw gateway logs --tail 50
    

보안 권장사항

1. 토큰 관리

  • 설정 파일 권한 설정

    chmod 600 ~/.openclaw/config.json
    
  • 토큰을 GitHub에 올리지 말 것

    • .gitignoreconfig.json 추가

2. DM 정책

기본 정책이 pairing이므로, 처음 연락하는 사람은 승인이 필요하다. 안전하게 유지하려면:

{
  "channels": {
    "slack": {
      "dm": {
        "policy": "allowlist",
        "allowFrom": ["U01234567"]  // 본인만
      }
    }
  }
}

3. 채널 접근 제한

업무용 Slack이라면 특정 채널만 허용:

{
  "channels": {
    "slack": {
      "groupPolicy": "allowlist",
      "channels": {
        "C_HELP": { "allow": true },
        "C_BOT_TEST": { "allow": true }
      }
    }
  }
}

4. 샌드박스 모드

그룹 채널에서는 샌드박스 모드 사용:

{
  "agents": {
    "defaults": {
      "sandbox": {
        "mode": "non-main"
      }
    }
  }
}

DM은 풀 액세스, 채널은 샌드박스에서만 실행된다.

실전 사용 팁

1. 아침 이메일 요약

Slack DM으로 "매일 아침 8시에 중요한 이메일 요약해줘"라고 하면 cron job 생성해준다.

2. PR 알림

GitHub webhook을 설정하면 PR이 생성/머지될 때 Slack 채널로 알림을 보낼 수 있다.

3. 서버 모니터링

"CPU 사용률 90% 넘으면 #alerts 채널에 알려줘" 같은 조건 설정 가능

4. 파일 검색

"작년 12월에 올라온 계약서 파일 찾아줘" 같은 요청도 가능 (User Token + search:read 필요)

관련 가이드

참고