콘텐츠로 이동

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가 앱을 만들고 나중에 편집할 수 있습니다.

  1. api.slack.com/apps를 엽니다
  2. 페이지 맨 아래의 앱 구성 토큰 섹션까지 스크롤합니다
  3. Slack 워크스페이스용 토큰 쌍을 생성합니다
  4. 리프레시 토큰을 복사합니다 — xoxe-로 시작합니다

2단계: Control Center가 앱을 만들게 하기

섹션 제목: “2단계: Control Center가 앱을 만들게 하기”
  1. Control Center에서 설정 → 워크스페이스 → 일반으로 이동해 채팅 브리지 카드를 찾습니다
  2. Slack 블록에서 대신 앱 만들기를 클릭합니다
  3. 앱 구성 토큰을 붙여 넣습니다
  4. 봇의 모습을 확인합니다:
    • 앱 이름: Slack이 앱을 표시하는 방식입니다(예: Control Center · Acme)
    • 봇 이름: 사람들이 @ 뒤에 입력하는 이름입니다(예: control-center)
    • 짧은 설명 및 봇이 할 수 있다고 말하는 내용
    • 슬래시 명령: 기본값은 cc이므로 명령은 /cc입니다
    • 다이렉트 메시지: 멤버가 봇에게 DM을 보낼 수 있도록 켜 둡니다
  5. 앱 만들기를 클릭합니다

Control Center는 앱 정의 전체를 구성합니다 — Socket Mode 활성화, 봇에 필요한 스코프와 이벤트 구독, 슬래시 명령, Messages 탭 — 그리고 그것을 Slack에 만듭니다.

3단계: Slack만 할 수 있는 두 단계 마무리하기

섹션 제목: “3단계: Slack만 할 수 있는 두 단계 마무리하기”

Slack에는 앱 수준 토큰을 생성하거나 앱을 설치하는 API가 없으므로, 대화상자가 두 단계를 모두 링크로 넘겨줍니다:

  1. 앱 수준 토큰 생성 — Basic Information → App-Level Tokens를 엽니다. connections:write 스코프로 토큰을 만들고 복사합니다. xapp-로 시작합니다
  2. 앱 설치 — Install App을 엽니다. 워크스페이스에 설치한 뒤 Bot User OAuth Token을 복사합니다. xoxb-로 시작합니다

두 값 모두 다음 단계를 위해 남겨 둡니다.

  1. 대화상자로 돌아와 자격 증명 붙여넣기를 클릭합니다
  2. 봇 토큰(xoxb-…)과 앱 수준 토큰(xapp-…)을 입력합니다
  3. 앱 구성 토큰은 비워 둡니다 — 1단계의 토큰이 이미 저장되었기 때문입니다(Slack이 토큰을 회전했고 Control Center가 새 값을 저장했습니다)
  4. 연결을 클릭합니다

Control Center는 무엇이든 저장하기 전에 Slack으로 봇 토큰을 검증한 다음 소켓을 엽니다. 이제 그 행에는 봇 이름과 Slack 워크스페이스 이름이 실시간 태그와 함께 표시됩니다.

연결은 봇에 도달할 수 있게 만들 뿐이고, 계정 연결은 여러분을 알아볼 수 있게 만듭니다. Slack 신원이 연결되기 전까지 봇은 여러분의 메시지에 아무것도 하지 않습니다 — 봇은 메시지를 앱을 설치한 사람에게 귀속시키지 않습니다.

계정 연결은 개인적인 작업이므로, 워크스페이스 전체에 걸린 연결과는 다른 페이지에 있습니다.

  1. 설정 → 워크스페이스 → 프로필 및 신원으로 이동해 연결된 채팅 계정 카드를 찾습니다
  2. 내 Slack 계정 연결을 클릭합니다
  3. 표시되는 명령을 복사합니다. 예를 들어 /cc link K7M2QP입니다
  4. Slack에서 봇에게 DM으로 그 명령을 보냅니다
  5. 봇이 “연결되었습니다 — 귀하는 …“라고 답합니다

코드는 한 번만 사용할 수 있으며 15분 후에 만료됩니다. Slack 이메일이 이 워크스페이스에 이미 속해 있는 Control Center 사용자와 일치하면, 브리지가 처음 대화를 걸 때 자동으로 연결해 주므로 이 단계를 건너뛸 수 있습니다.

이 작업을 마치기 전에 봇을 멘션하면 봇이 거부하며 그 이유를 말해 줍니다. 세 가지 거부는 서로 다르므로 어느 것을 받았는지 확인합니다:

  • 연결되지 않은 발신자: 봇이 연결 방법을 알려 줍니다. 이 단계로 돌아오세요.
  • 연결되었지만 이 워크스페이스의 멤버가 아닌 경우: 관리자에게 초대를 요청하세요.
  • 역할이 읽기 전용인 멤버(뷰어 또는 게스트): 봇은 여러분을 대신해 작업을 시작하지 않습니다.

6단계: 에이전트에게 작업 맡기기

섹션 제목: “6단계: 에이전트에게 작업 맡기기”
  1. Slack에서 봇을 채널로 초대합니다: /invite @control-center

  2. 실제 요청과 함께 봇을 멘션합니다:

    @control-center api 리포에서 열려 있는 PR을 요약해 줘

브리지는 다음과 같이 동작합니다:

  1. 그 Slack 스레드에 대응하는 Control Center 스페이스를 만들고, 이름은 Slack 채널과 여러분의 요청에서 따옵니다
  2. 워크스페이스의 대표 에이전트(CEO 에이전트가 있으면 CEO 에이전트, 없으면 첫 번째 에이전트)를 깨웁니다
  3. 에이전트의 답변을 작성되는 대로 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 통합 설정에서는 직접 만드는 경로와 토큰 회전, 문제 해결을 다룹니다. 그 바탕이 되는 모델은 채팅 브리지를 참고하세요.