41 lines
1.6 KiB
Markdown
41 lines
1.6 KiB
Markdown
# Slack Interactive Gateway 프록시 구현
|
|
|
|
**작성일**: 2025-09-08
|
|
**작성자**: happybell80
|
|
**상태**: 구현 필요
|
|
|
|
## 문제 상황
|
|
- CompanyX 뉴스 "홈페이지 게시" 버튼 클릭 시 응답 없음
|
|
- Slack이 버튼 클릭을 `/api/slack/events`로 잘못 전송 (Interactive URL 미설정)
|
|
- robeing-gateway에 `/slack/interactive` 프록시 없음
|
|
|
|
## 현재 구조
|
|
- `/slack/events` → rb8001:8001/api/slack/events (구현됨)
|
|
- `/slack/interactive` → 404 (미구현)
|
|
- rb8001/app/router/slack_handler.py:275 handle_interactive() 존재
|
|
- rb8001/main.py:289 `/api/slack/interactive` 엔드포인트 존재
|
|
|
|
## 최종 해결 (2025-09-08)
|
|
|
|
### 1. robeing-gateway/app/main.py:552-587
|
|
- /slack/interactive 엔드포인트 추가
|
|
- request.headers.get("x-slack-signature") - 소문자 필수
|
|
- request.headers.get("x-slack-request-timestamp") - 소문자 필수
|
|
- content=body로 원본 전달
|
|
- X-Slack-Bot-Token 헤더로 토큰 전달
|
|
|
|
### 2. Slack App 설정
|
|
- Interactivity & Shortcuts → Request URL
|
|
- 설정값: `https://ro-being.com/gateway/slack/interactive`
|
|
- Signing Secret: 995cdf...92af22 (rb8001 .env와 일치)
|
|
|
|
## 예상 동작
|
|
1. 버튼 클릭 → Slack → Gateway `/slack/interactive`
|
|
2. Gateway가 team_id로 DB 토큰 조회
|
|
3. rb8001 `/api/slack/interactive`로 전달
|
|
4. rb8001이 skill-publish 호출해서 홈페이지 게시
|
|
|
|
## 관련 파일
|
|
- robeing-gateway/app/main.py:508 (slack_proxy 참고)
|
|
- rb8001/app/router/slack_handler.py:334 (publish_news_ 처리)
|
|
- rb8001/app/skills/news_posting_skill.py:268 (handle_publish_action) |