Slack을 워크스페이스에 브리지
만들게 될 것
섹션 제목: “만들게 될 것”이 튜토리얼을 마치면 다음을 갖추게 됩니다:
- 워크스페이스용으로 만들어진 Slack 앱. 필요한 권한과 이벤트가 이미 설정되어 있습니다
- Slack과 Control Center 사이의 살아 있는 연결
- 본인의 Slack 계정과 연결된 Control Center 사용자
- Slack 스레드에서 답하는 에이전트, 그리고 슬래시 명령으로 접수된 티켓
사전 요구 사항:
- 첫 워크스페이스와 첫 에이전트 디스패치를 완료한 상태 — 에이전트가 없는 워크스페이스는 Slack 메시지를 받을 수는 있지만 답해 줄 사람이 없습니다
- 워크스페이스의 CEO 에이전트에 설정 → 워크스페이스 → 에이전트에서 어댑터와 모델이 설정되어 있어야 합니다. 브리지가 깨우는 것은 이전 튜토리얼에서 구성한 에이전트가 아니라 CEO이며, 어댑터가 없는 에이전트는 Anthropic의 기본 모델로 내장 루프에서 실행됩니다.
- Control Center 워크스페이스의
owner또는admin역할(채팅 앱 연결은 워크스페이스 전체를 대표하는 행위입니다) - Slack 워크스페이스에서 앱을 만들고 설치할 권한
여기에는 공개 주소도, 터널도, 인바운드 포트도 필요하지 않습니다. Control Center는 Socket Mode로 Slack에 아웃바운드 연결을 걸기 때문에 NAT 뒤의 노트북에서도 동작합니다.
1단계: Slack 앱 구성 토큰 가져오기
섹션 제목: “1단계: Slack 앱 구성 토큰 가져오기”이것은 직접 손으로 가져와야 하는 유일한 비밀 값입니다. 이 토큰이 있어야 Control Center가 앱을 만들고 나중에 편집할 수 있습니다.
- api.slack.com/apps를 엽니다
- 페이지 맨 아래의 앱 구성 토큰 섹션까지 스크롤합니다
- Slack 워크스페이스용 토큰 쌍을 생성합니다
- 리프레시 토큰을 복사합니다 —
xoxe-로 시작합니다
2단계: Control Center가 앱을 만들게 하기
섹션 제목: “2단계: Control Center가 앱을 만들게 하기”- Control Center에서 설정 → 워크스페이스 → 일반으로 이동해 채팅 브리지 카드를 찾습니다
- Slack 블록에서 대신 앱 만들기를 클릭합니다
- 앱 구성 토큰을 붙여 넣습니다
- 봇의 모습을 확인합니다:
- 앱 이름: Slack이 앱을 표시하는 방식입니다(예:
Control Center · Acme) - 봇 이름: 사람들이
@뒤에 입력하는 이름입니다(예:control-center) - 짧은 설명 및 봇이 할 수 있다고 말하는 내용
- 슬래시 명령: 기본값은
cc이므로 명령은/cc입니다 - 다이렉트 메시지: 멤버가 봇에게 DM을 보낼 수 있도록 켜 둡니다
- 앱 이름: Slack이 앱을 표시하는 방식입니다(예:
- 앱 만들기를 클릭합니다
Control Center는 앱 정의 전체를 구성합니다 — Socket Mode 활성화, 봇에 필요한 스코프와 이벤트 구독, 슬래시 명령, Messages 탭 — 그리고 그것을 Slack에 만듭니다.
3단계: Slack만 할 수 있는 두 단계 마무리하기
섹션 제목: “3단계: Slack만 할 수 있는 두 단계 마무리하기”Slack에는 앱 수준 토큰을 생성하거나 앱을 설치하는 API가 없으므로, 대화상자가 두 단계를 모두 링크로 넘겨줍니다:
- 앱 수준 토큰 생성 — Basic Information → App-Level Tokens를 엽니다.
connections:write스코프로 토큰을 만들고 복사합니다.xapp-로 시작합니다 - 앱 설치 — Install App을 엽니다. 워크스페이스에 설치한 뒤 Bot User OAuth Token을 복사합니다.
xoxb-로 시작합니다
두 값 모두 다음 단계를 위해 남겨 둡니다.
4단계: 연결
섹션 제목: “4단계: 연결”- 대화상자로 돌아와 자격 증명 붙여넣기를 클릭합니다
- 봇 토큰(
xoxb-…)과 앱 수준 토큰(xapp-…)을 입력합니다 - 앱 구성 토큰은 비워 둡니다 — 1단계의 토큰이 이미 저장되었기 때문입니다(Slack이 토큰을 회전했고 Control Center가 새 값을 저장했습니다)
- 연결을 클릭합니다
Control Center는 무엇이든 저장하기 전에 Slack으로 봇 토큰을 검증한 다음 소켓을 엽니다. 이제 그 행에는 봇 이름과 Slack 워크스페이스 이름이 실시간 태그와 함께 표시됩니다.
5단계: 본인의 Slack 계정 연결
섹션 제목: “5단계: 본인의 Slack 계정 연결”연결은 봇에 도달할 수 있게 만들 뿐이고, 계정 연결은 여러분을 알아볼 수 있게 만듭니다. Slack 신원이 연결되기 전까지 봇은 여러분의 메시지에 아무것도 하지 않습니다 — 봇은 메시지를 앱을 설치한 사람에게 귀속시키지 않습니다.
계정 연결은 개인적인 작업이므로, 워크스페이스 전체에 걸린 연결과는 다른 페이지에 있습니다.
- 설정 → 워크스페이스 → 프로필 및 신원으로 이동해 연결된 채팅 계정 카드를 찾습니다
- 내 Slack 계정 연결을 클릭합니다
- 표시되는 명령을 복사합니다. 예를 들어
/cc link K7M2QP입니다 - Slack에서 봇에게 DM으로 그 명령을 보냅니다
- 봇이 “연결되었습니다 — 귀하는 …“라고 답합니다
코드는 한 번만 사용할 수 있으며 15분 후에 만료됩니다. Slack 이메일이 이 워크스페이스에 이미 속해 있는 Control Center 사용자와 일치하면, 브리지가 처음 대화를 걸 때 자동으로 연결해 주므로 이 단계를 건너뛸 수 있습니다.
이 작업을 마치기 전에 봇을 멘션하면 봇이 거부하며 그 이유를 말해 줍니다. 세 가지 거부는 서로 다르므로 어느 것을 받았는지 확인합니다:
- 연결되지 않은 발신자: 봇이 연결 방법을 알려 줍니다. 이 단계로 돌아오세요.
- 연결되었지만 이 워크스페이스의 멤버가 아닌 경우: 관리자에게 초대를 요청하세요.
- 역할이 읽기 전용인 멤버(뷰어 또는 게스트): 봇은 여러분을 대신해 작업을 시작하지 않습니다.
6단계: 에이전트에게 작업 맡기기
섹션 제목: “6단계: 에이전트에게 작업 맡기기”-
Slack에서 봇을 채널로 초대합니다:
/invite @control-center -
실제 요청과 함께 봇을 멘션합니다:
@control-center api 리포에서 열려 있는 PR을 요약해 줘
브리지는 다음과 같이 동작합니다:
- 그 Slack 스레드에 대응하는 Control Center 스페이스를 만들고, 이름은 Slack 채널과 여러분의 요청에서 따옵니다
- 워크스페이스의 대표 에이전트(CEO 에이전트가 있으면 CEO 에이전트, 없으면 첫 번째 에이전트)를 깨웁니다
- 에이전트의 답변을 작성되는 대로 Slack 스레드로 다시 스트리밍합니다
계속하려면 같은 Slack 스레드에서 답장합니다 — 이제 그 Slack 스레드는 브리지되었으므로 더 멘션할 필요가 없습니다. 채널 대신 봇에게 DM을 보내도 됩니다. 각 DM 대화는 자체 Control Center 스페이스를 만들며, 에이전트가 작업하는 동안 제목과 “생각 중…” 상태 줄이 표시됩니다.
스트리밍에는 Slack의 스트리밍 API가 필요하며, 모든 요금제에 있는 것은 아닙니다. 앱이 이 API를 거부당하면 브리지는 그 연결이 살아 있는 동안 재시도를 멈추고 대신 각 답변을 메시지 하나로 게시하며, 채팅 브리지 카드에는 “이 Slack 앱은 실시간 스트리밍이 꺼져 있어 답변이 한 메시지로 도착합니다.“라고 표시됩니다. 나머지는 모두 동일하게 동작합니다.
7단계: Slack을 벗어나지 않고 티켓 접수하기
섹션 제목: “7단계: Slack을 벗어나지 않고 티켓 접수하기”/cc ticket Fix the flaky login test | It fails on CI about once a day.봇이 접수한 티켓 키와 함께 답합니다. 그 티켓은 여러분이 보고한 평범한 로컬 Control Center 티켓이며, 에이전트에 할당할 준비가 되어 있습니다. /cc help는 이 명령으로 할 수 있는 모든 일을 나열합니다.
마무리
섹션 제목: “마무리”Control Center에서 Slack 앱을 만들고, 아웃바운드 소켓으로 연결하고, Slack 신원을 Control Center 사용자에 연결한 뒤 Slack 스레드에서 에이전트를 움직였습니다. Slack에서 일어난 모든 일은 Control Center에도 존재합니다: Slack 스레드는 스페이스이고, 답변은 트랜스크립트이며, 티켓은 티켓입니다.
다음: Slack 통합 설정에서는 직접 만드는 경로와 토큰 회전, 문제 해결을 다룹니다. 그 바탕이 되는 모델은 채팅 브리지를 참고하세요.