OpenClaw Slack 채널
소켓 모드(기본값) 또는 HTTP 이벤트 API를 사용하여 OpenClaw를 Slack에 연결하세요. 이 엔터프라이즈급 통합을 통해 AI 어시스턴트가 Slack 워크스페이스에서 작동하며 — 다이렉트 메시지(DM), 채널 대화, 리액션, 스레드, 슬래시 명령어를 처리할 수 있습니다. 소켓 모드는 공개 URL 없이 WebSocket을 통해 연결되며, HTTP 모드는 공개적으로 접근 가능한 배포를 위해 Slack의 이벤트 API를 사용합니다.
Slack 지원 기능
텍스트 메시지
지원
미디어 및 파일
지원
리액션
지원
스레드
지원
음성 메시지
미지원
그룹 채팅
지원
Slack 사전 요구사항
- 관리자 권한이 있는 Slack 워크스페이스 (커스텀 앱 설치를 위해)
- api.slack.com/apps에서 생성한 Slack 앱
- connections:write 스코프가 포함된 앱 토큰 (xapp-...) (소켓 모드용)
- 워크스페이스에 앱 설치 후 얻은 봇 토큰 (xoxb-...)
- OpenClaw 게이트웨이가 실행 중이고 설정 완료된 상태
Slack 빠른 설정
Slack 앱 생성 및 소켓 모드 활성화
api.slack.com/apps로 이동하여 '새 앱 만들기' → '처음부터 만들기'를 클릭합니다. 앱 이름을 지정하고 워크스페이스를 선택합니다. 사이드바에서 '소켓 모드'로 이동하여 활성화합니다. 'connections:write' 스코프가 포함된 앱 수준 토큰을 생성합니다 — 이것이 xapp-... 토큰입니다.
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.
설정 추가, 게이트웨이 시작 및 봇 초대
~/.openclaw/openclaw.json에 appToken과 botToken을 포함한 Slack 채널 설정을 추가합니다. 게이트웨이를 시작하면 소켓 모드를 통해 Slack에 연결됩니다. Slack에서 '/invite @봇이름'을 입력하여 대상 채널에 봇을 초대합니다. 메시지를 보내 테스트합니다.
Slack 구성 예시
{
"channels": {
"slack": {
"enabled": true,
"appToken": "xapp-1-YOUR_APP_TOKEN",
"botToken": "xoxb-YOUR_BOT_TOKEN"
}
}
}Slack 상세 문서
아키텍처 개요
Slack 앱 생성하기
다이렉트 메시지(DM) 보안 (페어링)
{
"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"
}
}
}
}사용자 토큰 (선택 사항)
{
"channels": {
"slack": {
"enabled": true,
"appToken": "xapp-...",
"botToken": "xoxb-...",
"userToken": "xoxp-...",
"userTokenReadOnly": true
}
}
}슬래시 명령어 및 앱 홈
{
"channels": {
"slack": {
"slashCommand": {
"enabled": true,
"name": "openclaw",
"sessionPrefix": "slack:slash",
"ephemeral": true
}
}
}
}권한 및 스코프
HTTP 모드 (이벤트 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 (소켓 모드, 기본값), http (이벤트 API) |
| appToken | string | "" | 소켓 모드용 Slack 앱 수준 토큰 (xapp-...). SLACK_APP_TOKEN 환경 변수도 사용 가능 |
| botToken | string | "" | Slack 봇 사용자 OAuth 토큰 (xoxb-...). SLACK_BOT_TOKEN 환경 변수도 사용 가능 |
| userToken | string | "" | 향상된 읽기 접근을 위한 선택적 Slack 사용자 토큰 (xoxp-...) |
| userTokenReadOnly | boolean | true | 사용자 토큰을 읽기 전용 작업으로 제한. 설치 사용자로서 쓰기를 허용하려면 false로 설정 |
| signingSecret | string | "" | HTTP 모드 요청 확인을 위한 서명 비밀 (기본 정보 → 앱 자격 증명에서 확인) |
| webhookPath | string | "/slack/events" | HTTP 모드용 웹훅 엔드포인트 경로 |
| dm.policy | string | "pairing" | 다이렉트 메시지(DM) 접근 제어 정책. 옵션: pairing (코드 기반 승인), open (누구나 DM 가능) |
| dm.allowFrom | string[] | [] | 봇에게 DM을 보낼 수 있는 사용자. 사용자 ID, @사용자이름, 이메일, 와일드카드(*) 지원 |
| dm.enabled | boolean | true | 다이렉트 메시지 수락 여부 |
| dm.groupEnabled | boolean | false | 그룹 DM (MPIM) 처리 활성화 |
| dm.groupChannels | string[] | [] | 허용된 그룹 DM 채널 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 (소켓 모드, 기본값), http (이벤트 API)
소켓 모드용 Slack 앱 수준 토큰 (xapp-...). SLACK_APP_TOKEN 환경 변수도 사용 가능
Slack 봇 사용자 OAuth 토큰 (xoxb-...). SLACK_BOT_TOKEN 환경 변수도 사용 가능
향상된 읽기 접근을 위한 선택적 Slack 사용자 토큰 (xoxp-...)
사용자 토큰을 읽기 전용 작업으로 제한. 설치 사용자로서 쓰기를 허용하려면 false로 설정
HTTP 모드 요청 확인을 위한 서명 비밀 (기본 정보 → 앱 자격 증명에서 확인)
HTTP 모드용 웹훅 엔드포인트 경로
다이렉트 메시지(DM) 접근 제어 정책. 옵션: pairing (코드 기반 승인), open (누구나 DM 가능)
봇에게 DM을 보낼 수 있는 사용자. 사용자 ID, @사용자이름, 이메일, 와일드카드(*) 지원
다이렉트 메시지 수락 여부
그룹 DM (MPIM) 처리 활성화
허용된 그룹 DM 채널 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에 의해 차단되었거나, 봇이 허용 목록에 없거나, 봇이 채널에 초대되지 않았습니다.
DM 정책이 'pairing'으로 설정되어 있고 발신자가 승인되지 않았거나, 앱 홈에서 메시지 탭이 활성화되지 않았습니다.
앱 토큰 (xapp-...)이 유효하지 않거나 만료되었거나, 서버와 Slack 간에 네트워크 문제가 있습니다.
봇 토큰에 필수 OAuth 스코프가 누락되었거나, 토큰이 취소/재생성되었습니다.
Slack API 포털에서 슬래시 명령어가 생성되지 않았거나, 요청 URL이 잘못 설정되었습니다 (HTTP 모드).
긴 AI 응답이 OpenClaw의 textChunkLimit(기본값: 4,000자)을 초과하면 자동으로 여러 메시지로 분할됩니다. 참고: Slack 자체 제한은 section 블록당 3,000자, 메시지 text 필드당 40,000자입니다.