서문
Slack은 기업 팀에서 가장 많이 사용하는 협업 도구 중 하나입니다. OpenClaw를 Slack에 연결하면 팀에 언제든지 활용할 수 있는 AI 어시스턴트를 제공하여 질문 응답, 콘텐츠 생성 및 일상 업무 처리를 도울 수 있습니다. 이 글에서는 Slack App 생성부터 연결 완료까지의 전체 과정을 상세히 설명합니다.
사전 조건
- OpenClaw가 설치되어 정상적으로 실행 중
- Slack 워크스페이스의 관리자 권한을 보유하고 있음
- 워크스페이스에서 사용자 정의 앱 설치가 허용됨
연결 방식 선택
OpenClaw는 두 가지 방식으로 Slack에 연결할 수 있습니다:
| 방식 | 설명 | 적용 시나리오 |
|---|---|---|
| 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 모드는 공인 주소가 있는 운영 환경에 적합합니다.