DOCS/troubleshooting/250903_slack_multi_workspace_token_issue.md

2.0 KiB

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

작성일: 2025-09-03

작성자: 51123 서버 관리자

상태: 🔴 해결 필요

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


1. 문제 상황

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

2. 토큰 현황 (2025-09-03 DB 확인)

  • 디지털비잉_로빙: xoxb-9073915808149-... (환경변수 SLACK_BOT_TOKEN)
  • Company-X: xoxb-9253435471507-... (slack_workspaces.bot_token)
  • GoodGang Labs: xoxb-3199535658754-... (slack_workspaces.bot_token)
  • 문제: 환경변수 토큰만 사용, DB 토큰 미조회

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