Slack
Slack 워크스페이스를 ElevenLabs Agents에 연결하여 채널과 스레드에서 에이전트와 대화하세요
개요
Slack 통합을 사용하면 ElevenLabs 에이전트가 Slack에서 메시지를 보내고 받을 수 있습니다. 연결하면 채널에서 멘션될 때 에이전트가 스레드로 답장하며, 스레드별로 별도의 대화 컨텍스트를 유지합니다.
기능
설정
통합은 두 가지 연결 방식을 제공합니다.
- OAuth — 공유 ElevenLabs Slack 앱을 워크스페이스에 설치합니다. 하나의 Slack 워크스페이스는 하나의 ElevenLabs 연결에 매핑됩니다. Slack 앱 관리가 필요 없어 가장 빠르게 설정할 수 있습니다.
- 자체 앱 사용 — 직접 만들고 소유한 Slack 앱으로 연결합니다. 봇을 자체 브랜드로 표시해야 하거나 워크스페이스 정책상 관리자가 앱을 설치해야 하는 경우 사용하세요.
옵션 A — OAuth
앱을 설치하는 사용자는 대상 Slack 워크스페이스에 앱을 추가할 권한이 있어야 합니다.
옵션 B — 자체 Slack 앱 사용
봇을 자체 앱 이름과 아이콘으로 표시하거나 워크스페이스에서 관리자의 검토 및 앱 설치를 요구하는 경우 이 옵션을 사용하세요.
Slack 앱 만들기
Slack API: Your Apps로 이동하여 Create New App > From scratch를 클릭합니다. 앱 이름을 지정하고 설치할 Slack 워크스페이스를 선택합니다.
봇 범위 추가
OAuth & Permissions를 열고 다음 Bot Token Scopes를 추가합니다.
app_mentions:read, channels:history, channels:join, channels:manage, chat:write, files:read, groups:history, groups:write, im:history, reactions:write.
그런 다음 Install to Workspace를 클릭하고 승인합니다. Bot User OAuth Token(xoxb-로 시작)을 복사합니다.
ElevenLabs에서 연결 만들기
ElevenLabs 대시보드에서 Integrations로 이동하고 Add integration 버튼을 클릭한 다음 Slack을 선택합니다. Bring your own app 자격 증명을 선택합니다. 봇 토큰과 서명 시크릿을 붙여넣고 저장합니다. ElevenLabs가 Slack에서 토큰을 확인하고 워크스페이스 ID를 기록합니다.
연결이 생성되면 연결 페이지에 Slack 앱의 ID를 기반으로 생성된 두 개의 웹훅 URL이 표시됩니다. 동일한 ElevenLabs 워크스페이스에서 동일한 Slack 앱을 다시 연결하면 항상 같은 URL이 생성되므로 Slack 앱 구성을 다시 업데이트하지 않고도 연결을 삭제하고 다시 만들 수 있습니다. 다음 단계를 위해 이 페이지를 열어 두세요.
이벤트 구독 구성
Slack 앱에서 Event Subscriptions를 열고 이벤트를 활성화한 뒤, ElevenLabs 연결 페이지의 Events URL을 Request URL에 붙여넣습니다. Slack은 제공한 서명 시크릿을 사용해 URL을 확인합니다.
채널에서 에이전트가 어떻게 동작하도록 할지에 따라 봇 이벤트를 구독합니다.
- 멘션 전용 —
app_mention을 구독합니다. 사용자가 봇을@멘션할 때만 에이전트가 응답합니다. - 모든 메시지 —
message.channels및message.groups를 구독합니다. 멘션 없이도 봇이 있는 채널의 모든 메시지에 에이전트가 응답합니다.
SlackDirectMessage 트리거를 사용하는 경우 message.im도 구독하세요.
중복 전달을 처리하려는 경우가 아니라면 app_mention과 message.* 채널 이벤트를 모두 구독하지 마세요. 사용자가 봇을 @ 멘션하면 Slack은 같은 메시지에 대해 app_mention 이벤트와 message 이벤트를 모두 보낼 수 있으며, 이 경우 에이전트가 두 번 응답합니다.
Slack 워크스페이스는 공유 ElevenLabs OAuth 앱을 통해 한 번만 연결할 수 있습니다. 다른 ElevenLabs 워크스페이스에서 다시 설치하면
duplicate Slack workspace 오류가 반환됩니다. 먼저 기존 연결을 제거하세요. 자체 앱 사용 연결은 독립적이며 충돌하지 않습니다.
OAuth 범위
ElevenLabs Slack 앱은 다음 범위를 요청합니다.
에이전트 도구
에이전트에 Slack 도구를 추가하면 다음 내장 도구를 사용할 수 있습니다.
연결 제거
Integrations 페이지에서 연결을 제거하면 Slack 워크스페이스에서 ElevenLabs Slack 앱이 제거됩니다. 제거 후 봇은 어느 채널에도 존재하지 않습니다.
자체 앱 사용 연결의 경우 ElevenLabs는 소유하지 않은 앱을 제거할 수 없습니다. 연결을 제거하면 로컬 매핑만 삭제됩니다. Slack 워크스페이스에서 봇을 완전히 제거하려면 Slack 관리자 설정에서 앱을 제거하세요.
트리거 구성
이 통합은 단일 트리거인 SlackMessage를 제공합니다. 구성된 채널에서 봇이 새 사용자 메시지를 확인하면 실행됩니다.
Slack은 앱의 비공개 채널 자동 참여를 허용하지 않습니다. 비공개 채널에서는 트리거를 저장한 후 해당 채널에서 /invite @Eleven을 실행하여 봇이 메시지를 볼 수 있도록 하세요.
(Slack workspace, channel) 쌍마다 하나의 트리거만 허용됩니다. 중복 생성하지 말고 기존 트리거를 수정하세요.
DM 트리거 구성
SlackDirectMessage 트리거를 사용하면 모든 Slack 사용자가 봇에 다이렉트 메시지를 보내 에이전트와 대화할 수 있습니다. 채널 트리거와 달리 @ 멘션이 필요하지 않으며, 사용자가 봇과의 DM에서 보내는 모든 메시지가 처리됩니다.
자체 앱의 경우 message.im 봇 이벤트를 구독하고 im:history 봇 범위를 추가했는지 확인하세요. 추가 후 메시지가 표시되면 앱을 재설치합니다.
Slack 연결마다 하나의 DM 트리거만 허용됩니다. 에이전트를 변경하려면 기존 트리거를 수정하세요.
Slack에서 봇과 대화하기
트리거가 활성화되고 봇이 채널에 들어가면 채널 스레드에서 대화를 시작하세요. 스레드를 계속하는 방식은 Slack 앱의 이벤트 구독에 따라 달라집니다(OAuth는 멘션 전용 동작을 사용함).
멘션 전용(app_mention)
모든 메시지(message.channels, message.groups)
봇이 응답을 생성하는 동안 사용자의 트리거 메시지에 :eyes: 반응을 추가하고, 답변이 게시되면 제거합니다.
Channel Message 트리거의 Respond to messages from 설정은 에이전트를 트리거할 수 있는 대상을 제어합니다.
- Only humans(기본값): 다른 봇 및 Slack 워크플로의 메시지는 무시됩니다. 이는 안전한 기본값이며 기존 트리거의 동작을 유지합니다.
- Humans and bots: 다른 봇의 메시지와 워크플로가 게시한 메시지(레거시
bot_message이벤트 포함)도 에이전트를 트리거합니다.
두 설정 모두에서 봇은 Slack의 서명된 웹훅에 있는 봇 사용자 및 앱 ID를 사용해 항상 자신의 메시지를 무시하므로, 자신을 멘션해도 절대 자신에게 답장하지 않습니다. 또한 수정된 메시지(message_changed)와 삭제된 메시지(message_deleted)도 계속 무시합니다. message 및 app_mention 이벤트를 처리하며 공개 및 비공개 채널 모두에서 작동합니다.
bot_id만 포함하는 레거시 봇 이벤트는 발신자는 식별하지만 수신 앱은 식별하지 않습니다. 이러한 이벤트는 다른 봇의 메시지로 처리됩니다. 이 Slack 앱의 자체 루프 감지는 최신 Slack 이벤트 페이로드에 포함된 봇 사용자 또는 앱 ID를 사용합니다.
Slack 앱이 app_mention과 message.channels / message.groups를 모두 구독하면 단일 @ 멘션이 두 개의 에이전트 응답을 트리거할 수 있습니다. 두 모드 중 하나만 구독하세요.
대화 모델
대화 ID는 (agent_id, channel_id, thread_ts)별로 결정됩니다.
- 새 Slack 스레드는 새 ElevenLabs 대화에 매핑됩니다.
- 같은 스레드를 계속하면 트랜스크립트 기록과 동적 변수를 포함해 같은 대화가 이어집니다.
채팅 기록을 구성할 때 봇은 Slack 스레드를 직접 읽습니다. Slack 멤버와 다른 봇의 메시지는 사용자 턴으로 처리되고, 봇 자신의 메시지는 에이전트 턴으로 처리됩니다. 봇 사용자에 대한 멘션(<@BOT_USER_ID>)은 에이전트가 처리하기 전에 @<agent_name>으로 바뀝니다.
동적 변수
Slack에서 에이전트가 실행될 때 프롬프트와 도구에서 다음 동적 변수를 사용할 수 있습니다.
프롬프트와 도구 호출에서 이러한 변수를 참조하는 방법은 동적 변수를 참조하세요.
문제 해결
파일 첨부가 작동하지 않음
사용자가 Slack에서 이미지나 PDF를 첨부했지만 에이전트가 이를 처리하지 않거나 파일이 전송되지 않은 것처럼 동작하는 경우 아래 항목을 확인하세요.
Slack 앱에 files:read가 있는지 확인
봇이 Slack에서 첨부 파일을 다운로드하려면 files:read 봇 범위가 필요합니다.
- 자체 앱 사용 — Slack API: Your Apps에서 앱을 열고 OAuth & Permissions로 이동한 뒤 Bot Token Scopes 아래에
files:read가 있는지 확인합니다. 최근에 추가했다면 토큰에 새 범위가 적용되도록 앱을 워크스페이스에 다시 설치하세요.