- 250902: Company-X 봇 설치 성공으로 마무리 - 250903: 멀티 워크스페이스 토큰 관리 문제로 분리 - 봇 토큰 노출 제거
1.9 KiB
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