DOCS/troubleshooting/250903_slack_multi_workspace_token_issue.md
happybell80 961baedfe8 Slack 문서 분리 - 봇 설치와 토큰 문제 구분
- 250902: Company-X 봇 설치 성공으로 마무리
- 250903: 멀티 워크스페이스 토큰 관리 문제로 분리
- 봇 토큰 노출 제거
2025-09-03 14:58:41 +09:00

1.9 KiB

Slack 멀티 워크스페이스 토큰 관리 문제

작성일: 2025-09-03

작성자: 51123 서버 관리자

상태: 🔴 해결 필요

영향: Company-X 워크스페이스 응답 실패


1. 문제 상황

  • 현상: Company-X에서 메시지 수신은 정상, 응답 전송 실패
  • 원인: rb8001이 단일 SLACK_BOT_TOKEN 환경변수만 사용
  • 에러: channel_not_found - 잘못된 토큰으로 채널 접근

2. 토큰 현황

  • 디지털비잉_로빙: xoxb-9073915808149-... (현재 rb8001에 설정)
  • Company-X: xoxb-9253435471507-... (DB에 저장됨)
  • 문제: 디지털비잉 토큰으로 Company-X 채널 접근 시도

3. 상세 분석

3.1 이벤트 수신 ( 정상)

  • U09BQSN72UT(김종태) 봇 멘션: <@U09DWLARFQQ> 하이
  • app_mention 이벤트 정상 수신

3.2 처리 과정 ( 정상)

  • UUID 변환 성공
  • 응답 생성 성공: "김종태님, 안녕하세요! 로빙입니다."
  • ChromaDB/PostgreSQL 저장 성공

3.3 응답 전송 ( 실패)

ERROR: Failed to send final response: The request to the Slack API failed.
The server responded with: {'ok': False, 'error': 'channel_not_found'}

4. 해결 방안

4.1 단기 해결

  • team_id 기반 토큰 동적 선택 로직 구현
  • slack_workspaces 테이블에서 bot_token 조회

4.2 장기 해결

  • auth-server의 중앙 라우터 활용
  • /slack/events/router가 team_id별 컨테이너 라우팅
  • 각 컨테이너는 해당 워크스페이스 토큰만 보유

5. 구현 필요 코드 (로컬 개발자)

# rb8001에서 team_id로 토큰 조회
async def get_bot_token(team_id: str):
    # slack_workspaces 테이블에서 토큰 조회
    result = await db.fetch_one(
        "SELECT bot_token FROM slack_workspaces WHERE team_id = :team_id",
        {"team_id": team_id}
    )
    return result["bot_token"] if result else None