docs: Company-X Slack 봇 channel_not_found 에러 상세 분석 추가

- 멀티 워크스페이스 토큰 불일치 문제 문서화
- 실제 에러 로그 및 상세 분석 추가
- 이벤트 수신 성공, 응답 전송 실패 원인 명시
This commit is contained in:
happybell80 2025-09-03 01:42:17 +09:00
parent 3967a41511
commit 313c903176

View File

@ -197,4 +197,87 @@ im:read, im:history, users:read, team:read, files:read, app_mentions:read
- companies 테이블: Company-X (8001 포트, active 상태)
- workspaces 테이블: Company-X (8명 멤버)
- slack_workspaces: T097FCTDVEX → Company-X 연결 완료
- 봇 설치 준비 완료
- 봇 설치 준비 완료
## 6. Company-X 봇 설치 완료 및 토큰 문제 (2025-09-02 23:00)
### 6.1 설치 완료 정보
**Company-X 봇 설치 성공:**
- Team ID: T097FCTDVEX
- Team Name: COMPANY X
- Bot User ID: U09DWLARFQQ
- App ID: A092HLQA1NW
- Bot Token: xoxb-9253435471507-9253533160819-2zZNbJaxdJcQjhJAG8t0TQFi
- 11개 권한 모두 부여됨
### 6.2 멀티 워크스페이스 토큰 관리 문제
**문제 발견:**
- rb8001 컨테이너가 단일 SLACK_BOT_TOKEN 환경변수 사용
- 디지털비잉_로빙 토큰: xoxb-9073915808149-...
- Company-X 토큰: xoxb-9253435471507-...
- 현재 rb8001에 디지털비잉_로빙 토큰만 설정되어 있음
**증상:**
- Company-X에서 메시지 수신은 정상
- 응답 시도 시 실패: `Failed to send final response: The request to the Slack API failed`
- 원인: 잘못된 토큰으로 응답 시도
**실제 에러 로그:**
```
ERROR:app.router.slack_handler:Failed to send final response: The request to the Slack API failed. (url: https://www.slack.com/api/chat.postMessage)
The server responded with: {'ok': False, 'error': 'channel_not_found'}
```
**상세 분석:**
1. 이벤트 수신 ✅
- U09BQSN72UT(김종태)가 봇 멘션: `<@U09DWLARFQQ> 하이`
- app_mention 이벤트 정상 수신
2. 처리 과정 ✅
- UUID 변환 성공 (U09BQSN72UT → 1a7ebe8c-1cfd-4acf-a821-2cc526313706)
- 응답 생성 성공: "김종태님, 안녕하세요! 로빙입니다. 무엇을 도와드릴까요?"
- ChromaDB/PostgreSQL 저장 성공
3. 응답 전송 실패 ❌
- `channel_not_found` 에러
- 디지털비잉_로빙 토큰으로 Company-X 채널 접근 불가
### 6.3 Event URL 라우팅 구조
**정상 작동 확인:**
1. Slack → `https://ro-being.com/rb8001/api/slack/events`
2. nginx 프록시 → `192.168.219.52:8001/api/slack/events`
3. rb8001 컨테이너가 이벤트 수신 및 처리
**문제점:**
- rb8001이 단일 토큰만 사용 가능한 구조
- 멀티 워크스페이스 지원을 위해서는 토큰 동적 선택 로직 필요
### 6.4 해결 방안
**단기 해결:**
- 워크스페이스별로 별도 컨테이너 운영
- 또는 team_id 기반으로 토큰 동적 선택 로직 구현
**장기 해결:**
- auth-server의 중앙 라우터 활용
- `/slack/events/router`가 team_id별로 적절한 컨테이너로 라우팅
- 각 컨테이너는 해당 워크스페이스 토큰만 보유
### 6.5 Slack App Manifest Event URL 설정
**올바른 Event URL (Slack App에 설정해야 함):**
```json
"event_subscriptions": {
"request_url": "https://ro-being.com/rb8001/api/slack/events"
}
```
- rb8001이 직접 이벤트 수신
- URL verification 정상 응답 확인됨
- nginx 프록시 → 51124:8001 정상 작동
**주의사항:**
- Slack App 설정에서 직접 Event URL 등록 필요
- 봇 설치와 Event URL 등록은 별개 프로세스
- team_id 기반 토큰 동적 선택 로직 구현 필요