Slack Bot 연동
Multica 에이전트를 자체 Slack 앱에 연결하세요 — 매니페스트로 앱을 만들고, 설치한 다음, bot + app-level 토큰을 붙여넣고, Slack 안에서 @로 멘션하거나 DM하거나 /issue를 입력하세요.
아무 에이전트나 Slack 봇에 연결하면, 팀이 Slack 안에서 바로 그 에이전트와 함께 일할 수 있습니다 — 봇에게 DM을 보내거나, 채널에서 @로 멘션하거나, /issue를 입력해 앱을 열지 않고도 Multica 이슈를 생성하세요.
Slack은 자체 앱 사용(BYO) 모델을 따릅니다: 워크스페이스 admin이 Slack 앱을 만들고, 자신의 Slack 워크스페이스에 설치한 다음, 토큰을 Multica에 붙여넣습니다. 각 에이전트가 자체 Slack 앱을 갖습니다 — 그래서 하나의 Slack 워크스페이스 안에서 여러 에이전트가 각각 별개로 @로 멘션할 수 있는 봇을 가질 수 있습니다. (바인딩이 스캔하여 설치하는 방식인 Lark와는 다릅니다.)
전체 설정은 아래에 있으며 약 5분이 걸립니다. 마지막에는 Multica에 붙여넣을 두 개의 토큰을 얻게 됩니다:
- Bot token —
xoxb-로 시작 - App-level token —
xapp-로 시작
Slack 앱 설정하기
1. 매니페스트로 앱 만들기
- https://api.slack.com/apps로 이동해 Create New App을 클릭합니다.
- From a manifest를 선택합니다.
- 앱을 설치할 Slack 워크스페이스를 고릅니다.
- YAML 탭으로 전환해 아래 매니페스트를 붙여넣고, 검토한 뒤 앱을 생성합니다.
display_information:
name: Multica
features:
app_home:
home_tab_enabled: false
messages_tab_enabled: true
messages_tab_read_only_enabled: false
bot_user:
display_name: Multica
always_online: true
oauth_config:
scopes:
bot:
- app_mentions:read
- channels:history
- groups:history
- im:history
- mpim:history
- chat:write
- users:read
settings:
event_subscriptions:
bot_events:
- app_mention
- message.im
- message.channels
- message.groups
- message.mpim
interactivity:
is_enabled: false
org_deploy_enabled: false
socket_mode_enabled: true
token_rotation_enabled: false이 매니페스트는 Multica에 필요한 모든 것을 구성하므로, 직접 손으로 설정할 것이 없습니다:
| 섹션 | 이유 |
|---|---|
app_home.messages_tab_enabled: true | 멤버가 봇을 열어 DM할 수 있게 합니다. 이것이 없으면 봇에게 직접 메시지를 보낼 수 없습니다. |
bot_user | @로 멘션되고 답변을 게시하는 봇 신원을 생성합니다. |
chat:write | 에이전트의 답변을 Slack으로 다시 게시합니다. |
app_mentions:read + app_mention 이벤트 | 채널에서 @-멘션을 받습니다. |
im:history + message.im | 봇에게 보내는 DM을 받습니다(모든 DM 메시지를 읽습니다). |
channels:history / groups:history / mpim:history + 대응하는 message.* 이벤트 | 공개 채널, 비공개 채널, 그룹 DM의 메시지를 받습니다. 이런 곳에서 봇은 자신을 @로 멘션한 메시지에만 반응합니다. |
users:read | Multica가 두 토큰이 같은 앱에 속하는지 (bots.info를 통해) 확인하는 데 필요합니다. |
socket_mode_enabled: true | 봇이 Socket Mode로 밖으로 연결합니다 — 공개 URL / request URL이 필요 없습니다. |
interactivity.is_enabled: false | Multica의 안내는 버튼이 아니라 일반 링크라서, interactivity가 필요 없습니다. |
OAuth redirect URL은 없습니다. BYO는 OAuth를 사용하지 않기 때문입니다.
Slack에서 특정 이름을 쓰고 싶나요? 생성하기 전에 display_information.name과 features.bot_user.display_name을 (예: 에이전트 이름으로) 변경하거나, 나중에 App Home에서 편집하세요. Slack은 봇을 bot display name으로 표시하며, 이는 앱 이름과 다를 수 있습니다.
2. 앱 설치하고 Bot token 복사하기
- 앱의 왼쪽 내비게이션에서 Install App(또는 OAuth & Permissions)을 엽니다.
- Install to Workspace를 클릭하고 승인합니다.
- Bot User OAuth Token을 복사합니다 —
xoxb-로 시작합니다. 이것이 당신의 Bot token입니다.
3. App-level token 생성하기
app-level token은 Socket Mode 연결을 인가합니다. 콘솔에서만 생성할 수 있습니다(OAuth의 일부가 아닙니다).
- Basic Information → App-Level Tokens를 열고 Generate Token and Scopes를 클릭합니다.
- 아무 이름이나 지정합니다.
- Add Scope를 클릭하고 목록에서 **
connections:write**를 고릅니다(선택기이므로 — 입력하지 말고 선택하세요). - Generate를 클릭한 다음 토큰을 복사합니다 —
xapp-로 시작합니다. 이것이 당신의 App-level token입니다.
4. Multica에서 연결하기
- Agents → 당신의 에이전트 → Integrations 탭(또는 왼쪽 사이드바의 Integrations 섹션)에서 에이전트를 엽니다.
- Connect Slack을 클릭합니다.
- Bot token(
xoxb-)과 App-level token(xapp-)을 붙여넣은 다음 Connect를 클릭합니다. - 에이전트에 Connected to Slack이 표시됩니다. 봇은 이제 자체 Socket Mode 연결로 수신 대기합니다.
두 토큰은 같은 Slack 앱에서 와야 하며, 그 앱은 정확히 하나의 에이전트에 매핑됩니다. 이미 다른 에이전트나 워크스페이스에 연결된 앱을 연결하는 것은 거부됩니다. 앱을 다른 에이전트로 옮기려면 먼저 연결을 해제하세요. 새 앱으로 에이전트를 다시 연결하면 그 에이전트의 봇이 그 자리에서 갱신됩니다.
여러 에이전트에 설정하나요? 에이전트당 전체 과정을 한 번씩 반복하세요 — 각 에이전트가 자체 Slack 앱과 자체 토큰 한 쌍을 가지며, Slack 워크스페이스에 별개의 봇으로 나타납니다.
연동이 하는 일
| 위치 | 동작 |
|---|---|
| Agent → Integrations | owner와 admin에게는 Connect Slack이 보이며, 연결되면 Connected to Slack 배지와 Disconnect 컨트롤로 바뀝니다. |
| 봇에게 DM | 워크스페이스 멤버가 봇에게 직접 메시지를 보냅니다. 그 대화는 에이전트와의 Multica chat 세션이 되며, 모든 DM 메시지를 읽습니다. |
채널에서 @-멘션 | 봇을 초대(/invite @your-bot)하고 @로 멘션하세요. 멘션한 메시지만 읽으며, 봇이 채널 전체를 듣지는 않습니다. 각 @bot 스레드가 자체 세션입니다. |
/issue 명령 | /issue <제목>(다음 줄에 본문 추가 가능)으로 메시지를 시작하면 워크스페이스에 새 Multica 이슈가 생성되고, 당신 이름으로 귀속됩니다. |
| 답변 | 에이전트의 답변은 같은 DM 또는 스레드로 다시 게시됩니다. |
봇 사용하기 (멤버)
첫 메시지: 계정 연결하기
봇을 처음 @로 멘션하거나 DM하면, 계정을 연결하라는 안내로 답합니다. 링크를 탭하고 Multica에 로그인하면, 당신의 Slack 신원이 Multica 멤버십에 바인딩됩니다 — 바로 이 단계가 에이전트로 하여금 당신을 대신해 행동하게 합니다(예: /issue는 당신 이름으로 이슈를 생성합니다). 이 링크는 일회용이며 약 15분 후에 만료됩니다. 새 링크가 필요하면 봇에게 다시 메시지를 보내세요.
워크스페이스 멤버만 봇을 사용할 수 있습니다. 멤버가 아니거나 신원 연결을 건너뛰면 봇은 실행되지 않으며, 메시지는 폐기됩니다(감사 목적으로 기록되며, 내용은 저장하지 않습니다).
대화와 /issue
- 채널에서 — 봇은 자동으로 참여하지 않습니다.
/invite @your-bot을 한 번 실행한 다음@your-bot <당신의 메시지>로 보내세요. 후속 메시지마다 다시 멘션하세요(봇은 자신을 멘션한 메시지만 읽습니다). - DM에서 — Slack 사이드바의 Apps 섹션에서 봇을 열고 직접 메시지를 보내세요. 멘션이 필요 없습니다.
- 이슈 생성 —
/issue Fix the login redirect를 보내세요. 제목 뒤에 줄을 더 추가하면 설명이 됩니다.
관리 및 연결 해제
워크스페이스 전체 관리는 Settings → Integrations에 있습니다:
- Connected bots는 워크스페이스 내 모든 봇과 각 봇이 바인딩된 에이전트를 나열합니다(모든 멤버에게 보입니다).
- Disconnect는 owner / admin 전용입니다. 봇이 Slack 메시지 수신을 멈추고 연결이 해체됩니다. 설치 기록은 감사용으로 유지되며, 이후 다시 연결할 수 있습니다.
권한
- 연결 / 연결 해제에는 워크스페이스 owner 또는 admin이 필요합니다.
- 봇과 대화하기에는 Slack 신원이 연결된 워크스페이스 멤버여야 합니다. 그 외의 사람은 모두 폐기됩니다.
- 폐기된 메시지의 본문은 절대 저장되지 않으며 — 감사용 폐기 사유만 기록됩니다.
자체 호스팅 설정
Multica Cloud에서는 연동이 이미 사용 가능합니다 — 이 섹션은 건너뛰세요.
자체 호스팅의 경우, Slack은 at-rest 암호화 키를 설정하기 전까지 꺼져 있습니다. 이 키는 각 앱의 bot + app-level 토큰이 데이터베이스에 닿기 전에 암호화합니다. BYO에는 OAuth client id/secret이 필요 없고, 배포 수준의 app token도 필요 없습니다 — 각 installation은 admin이 붙여넣은 토큰을 사용합니다.
-
32바이트 키를 생성해 API 서버에 설정합니다:
MULTICA_SLACK_SECRET_KEY=<base64-encoded 32-byte key>예를 들면:
openssl rand -base64 32. -
API를 재시작하세요. 키가 설정되기 전까지 Settings → Integrations에는 "Slack integration not enabled" 안내가 표시되고, Connect Slack 진입점은 숨겨진 채로 유지됩니다.
키는 정확히 32바이트로 디코딩되어야 하며 — openssl rand -base64 32가 이를 충족합니다. 오래 유지되는 시크릿으로 다루세요: 키를 회전하거나 잃으면 이미 저장된 토큰을 복호화할 수 없게 되어, 모든 봇이 다시 연결해야 합니다. "계정을 연결하세요" 링크는 웹 앱 URL(MULTICA_APP_URL, 없으면 FRONTEND_ORIGIN으로 폴백)에서 만들어집니다. 일반적인 배포에서는 이미 설정되어 있으므로 추가로 구성할 것은 없습니다.