Slack

Slack 워크스페이스를 ElevenLabs Agents에 연결하여 채널과 스레드에서 에이전트와 대화하세요

개요

Slack 통합을 사용하면 ElevenLabs 에이전트가 Slack에서 메시지를 보내고 받을 수 있습니다. 연결하면 채널에서 멘션될 때 에이전트가 스레드로 답장하며, 스레드별로 별도의 대화 컨텍스트를 유지합니다.

기능

기능지원
제로 보존 모드(ZRM)지원되지 않음
트리거의 첨부 파일에이전트 설정에서 파일 첨부 허용이 활성화되어 있고 에이전트의 LLM이 이미지 또는 문서 입력을 지원하는 경우, 수신 메시지의 이미지(PNG, JPEG, GIF, WebP) 및 PDF 파일
도구의 첨부 파일지원되지 않음 — 도구는 텍스트만 처리

설정

통합은 두 가지 연결 방식을 제공합니다.

  • OAuth — 공유 ElevenLabs Slack 앱을 워크스페이스에 설치합니다. 하나의 Slack 워크스페이스는 하나의 ElevenLabs 연결에 매핑됩니다. Slack 앱 관리가 필요 없어 가장 빠르게 설정할 수 있습니다.
  • 자체 앱 사용 — 직접 만들고 소유한 Slack 앱으로 연결합니다. 봇을 자체 브랜드로 표시해야 하거나 워크스페이스 정책상 관리자가 앱을 설치해야 하는 경우 사용하세요.

옵션 A — OAuth

앱을 설치하는 사용자는 대상 Slack 워크스페이스에 앱을 추가할 권한이 있어야 합니다.

1

통합 페이지 열기

ElevenLabs 대시보드에서 Agents > Integrations로 이동한 다음 Slack을 선택합니다.

2

Connect 클릭

OAuth 자격 증명을 선택하고 Connect를 클릭합니다. Slack으로 이동하여 ElevenLabs 앱을 설치할 워크스페이스를 선택하고 요청된 범위를 승인합니다.

3

리디렉션 완료

승인 후 Slack이 ElevenLabs로 다시 리디렉션하고 연결이 생성됩니다. Slack 워크스페이스 ID는 자동으로 기록되며 트리거 구성 시 사용됩니다.

옵션 B — 자체 Slack 앱 사용

봇을 자체 앱 이름과 아이콘으로 표시하거나 워크스페이스에서 관리자의 검토 및 앱 설치를 요구하는 경우 이 옵션을 사용하세요.

1

Slack 앱 만들기

Slack API: Your Apps로 이동하여 Create New App > From scratch를 클릭합니다. 앱 이름을 지정하고 설치할 Slack 워크스페이스를 선택합니다.

2

봇 범위 추가

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-로 시작)을 복사합니다.

3

서명 시크릿 복사

Basic Information > App Credentials를 열고 Signing Secret을 복사합니다.

4

ElevenLabs에서 연결 만들기

ElevenLabs 대시보드에서 Integrations로 이동하고 Add integration 버튼을 클릭한 다음 Slack을 선택합니다. Bring your own app 자격 증명을 선택합니다. 봇 토큰과 서명 시크릿을 붙여넣고 저장합니다. ElevenLabs가 Slack에서 토큰을 확인하고 워크스페이스 ID를 기록합니다.

연결이 생성되면 연결 페이지에 Slack 앱의 ID를 기반으로 생성된 두 개의 웹훅 URL이 표시됩니다. 동일한 ElevenLabs 워크스페이스에서 동일한 Slack 앱을 다시 연결하면 항상 같은 URL이 생성되므로 Slack 앱 구성을 다시 업데이트하지 않고도 연결을 삭제하고 다시 만들 수 있습니다. 다음 단계를 위해 이 페이지를 열어 두세요.

5

이벤트 구독 구성

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 이벤트를 모두 보낼 수 있으며, 이 경우 에이전트가 두 번 응답합니다.

6

상호작용 구성

Interactivity & Shortcuts를 열고 상호작용을 활성화한 뒤, ElevenLabs 연결 페이지의 Interactivity URL을 Request URL에 붙여넣습니다.

7

메시지가 표시되면 재설치

범위나 이벤트 변경 후 Slack에서 앱을 재설치하라는 메시지가 표시되면 변경 사항을 적용하기 위해 재설치합니다.

Slack 워크스페이스는 공유 ElevenLabs OAuth 앱을 통해 한 번만 연결할 수 있습니다. 다른 ElevenLabs 워크스페이스에서 다시 설치하면 duplicate Slack workspace 오류가 반환됩니다. 먼저 기존 연결을 제거하세요. 자체 앱 사용 연결은 독립적이며 충돌하지 않습니다.

OAuth 범위

ElevenLabs Slack 앱은 다음 범위를 요청합니다.

범위용도
app_mentions:read봇이 @ 멘션된 메시지를 수신합니다.
channels:history봇이 있는 공개 채널의 메시지를 읽습니다.
channels:join트리거 생성 시 봇이 공개 채널에 자동 참여하도록 허용합니다.
channels:manage채널 관리 작업을 수행합니다.
chat:write채널과 스레드에 메시지를 게시합니다.
files:read에이전트가 이미지와 PDF를 읽을 수 있도록 메시지에 첨부된 파일을 다운로드합니다.
groups:history봇이 있는 비공개 채널의 메시지를 읽습니다.
groups:write비공개 채널에서 작업합니다.
im:history봇과의 다이렉트 메시지 채널에 있는 메시지를 읽습니다.
reactions:write메시지 및 에이전트 도구의 처리 중 표시기에 사용되는 반응을 추가하고 제거합니다.

에이전트 도구

에이전트에 Slack 도구를 추가하면 다음 내장 도구를 사용할 수 있습니다.

도구설명
slack_add_reaction이모지 반응을 추가합니다. 기본적으로 채널 및 메시지 ts는 integration__slack_channel_id 및 integration__slack_trigger_message_ts에서 채워집니다. 모델은 예를 들어 thumbsup처럼 콜론 없이 이모지 쇼트코드만 선택합니다. Slack에서 트리거된 대화 외에는 해당 변수가 설정하지 않는 한 존재하지 않습니다. 모델이 채널과 ts를 명시적으로 전달해야 한다면 도구 스키마를 조정하세요.
slack_remove_reaction이모지 반응을 제거합니다(추가와 동일한 기본값). Slack 정책상 호출한 봇은 자신이 원래 추가한 반응만 제거할 수 있습니다. reactions.remove를 참조하세요.

연결 제거

Integrations 페이지에서 연결을 제거하면 Slack 워크스페이스에서 ElevenLabs Slack 앱이 제거됩니다. 제거 후 봇은 어느 채널에도 존재하지 않습니다.

자체 앱 사용 연결의 경우 ElevenLabs는 소유하지 않은 앱을 제거할 수 없습니다. 연결을 제거하면 로컬 매핑만 삭제됩니다. Slack 워크스페이스에서 봇을 완전히 제거하려면 Slack 관리자 설정에서 앱을 제거하세요.

트리거 구성

이 통합은 단일 트리거인 SlackMessage를 제공합니다. 구성된 채널에서 봇이 새 사용자 메시지를 확인하면 실행됩니다.

1

SlackMessage 트리거 추가

에이전트 구성 페이지에서 새 트리거를 추가하고 SlackMessage를 선택합니다.

2

에이전트와 채널 선택

트리거 필드를 구성합니다.

  • Agent: 대화를 처리할 에이전트입니다.
  • Channel ID: 예를 들어 C0123456789와 같은 Slack 채널 ID입니다. UI에서 Slack의 채널을 여는 딥 링크를 제공합니다.
3

트리거 저장

트리거를 저장합니다. ElevenLabs는 봇을 공개 채널에 자동으로 초대합니다. 나중에 트리거를 제거하면 봇이 해당 채널에서 나갑니다.

Slack은 앱의 비공개 채널 자동 참여를 허용하지 않습니다. 비공개 채널에서는 트리거를 저장한 후 해당 채널에서 /invite @Eleven을 실행하여 봇이 메시지를 볼 수 있도록 하세요.

(Slack workspace, channel) 쌍마다 하나의 트리거만 허용됩니다. 중복 생성하지 말고 기존 트리거를 수정하세요.

DM 트리거 구성

SlackDirectMessage 트리거를 사용하면 모든 Slack 사용자가 봇에 다이렉트 메시지를 보내 에이전트와 대화할 수 있습니다. 채널 트리거와 달리 @ 멘션이 필요하지 않으며, 사용자가 봇과의 DM에서 보내는 모든 메시지가 처리됩니다.

1

SlackDirectMessage 트리거 추가

에이전트 구성 페이지에서 새 트리거를 추가하고 SlackDirectMessage를 선택합니다.

2

에이전트 선택

DM 대화를 처리할 Agent를 선택합니다.
3

트리거 저장

트리거를 저장합니다. 이제 워크스페이스의 모든 Slack 사용자가 봇과 DM을 열고 대화를 시작할 수 있습니다.

자체 앱의 경우 message.im 봇 이벤트를 구독하고 im:history 봇 범위를 추가했는지 확인하세요. 추가 후 메시지가 표시되면 앱을 재설치합니다.

Slack 연결마다 하나의 DM 트리거만 허용됩니다. 에이전트를 변경하려면 기존 트리거를 수정하세요.

Slack에서 봇과 대화하기

트리거가 활성화되고 봇이 채널에 들어가면 채널 스레드에서 대화를 시작하세요. 스레드를 계속하는 방식은 Slack 앱의 이벤트 구독에 따라 달라집니다(OAuth는 멘션 전용 동작을 사용함).

멘션 전용(app_mention)

1

멘션으로 스레드 시작

채널에서 봇을 멘션하여 새 스레드를 시작합니다. 예: @Eleven what's the status of order 1234?. 봇은 해당 메시지 아래 스레드에 답장합니다.

2

스레드 계속하기

같은 스레드 내의 후속 메시지를 포함하여, 응답받고 싶은 모든 메시지에서 봇을 다시 멘션합니다. 멘션 없는 메시지는 무시됩니다.

모든 메시지(message.channels, message.groups)

1

스레드 시작

봇이 있는 채널에 아무 메시지나 보냅니다. 봇은 해당 메시지 아래 스레드에 답장합니다. 봇을 @ 멘션할 필요가 없습니다.

2

스레드 계속하기

봇을 멘션하지 않고 같은 스레드에 답장합니다. 스레드의 모든 새 메시지가 처리됩니다.

봇이 응답을 생성하는 동안 사용자의 트리거 메시지에 :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에서 에이전트가 실행될 때 프롬프트와 도구에서 다음 동적 변수를 사용할 수 있습니다.

변수설명
integration__slack_channel_idSlack 채널 ID입니다.
integration__slack_thread_tsSlack 스레드 타임스탬프입니다.
integration__slack_user_idSlack 발신자 ID입니다. 사용자 ID이며, 사용자가 없는 레거시 봇 이벤트의 경우 봇 ID입니다.
integration__slack_team_idSlack 워크스페이스(팀) ID입니다.
integration__slack_connection_idElevenLabs 통합 연결 ID입니다.
integration__slack_trigger_message_ts이 에이전트 턴을 트리거한 메시지의 Slack ts입니다(채널 내 고유 메시지 ID).

프롬프트와 도구 호출에서 이러한 변수를 참조하는 방법은 동적 변수를 참조하세요.

문제 해결

파일 첨부가 작동하지 않음

사용자가 Slack에서 이미지나 PDF를 첨부했지만 에이전트가 이를 처리하지 않거나 파일이 전송되지 않은 것처럼 동작하는 경우 아래 항목을 확인하세요.

1

Slack 앱에 files:read가 있는지 확인

봇이 Slack에서 첨부 파일을 다운로드하려면 files:read 봇 범위가 필요합니다.

  • 자체 앱 사용 — Slack API: Your Apps에서 앱을 열고 OAuth & Permissions로 이동한 뒤 Bot Token Scopes 아래에 files:read가 있는지 확인합니다. 최근에 추가했다면 토큰에 새 범위가 적용되도록 앱을 워크스페이스에 다시 설치하세요.
2

에이전트 모델이 파일 입력을 지원하는지 확인

파일 첨부는 에이전트의 LLM이 멀티모달 입력, 즉 파일 유형에 따라 이미지 입력 및/또는 문서(PDF) 입력을 지원하는 경우에만 전달됩니다. 에이전트 구성에서 Agent 탭을 열고 선택한 모델을 확인하세요. 모델이 첨부 유형을 지원하지 않으면 지원하는 모델로 변경하세요.

3

에이전트 설정에서 파일 첨부 허용 활성화

에이전트 구성 페이지에서 Settings > Advanced를 엽니다. Multimodal input 아래에서 Allow file attachments를 켭니다. 에이전트를 저장합니다. 이 설정이 없으면 Slack 앱과 모델이 파일을 지원하더라도 Slack 첨부 파일은 무시됩니다.

유용한 링크