docs: Update Slack interactive proxy - header lowercase issue
This commit is contained in:
parent
d73c3f9fc9
commit
6811277d10
48
troubleshooting/250908_slack_interactive_gateway_proxy.md
Normal file
48
troubleshooting/250908_slack_interactive_gateway_proxy.md
Normal file
@ -0,0 +1,48 @@
|
||||
# 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` 엔드포인트 존재
|
||||
|
||||
## 구현 필요사항
|
||||
|
||||
### 1. robeing-gateway/app/main.py 수정
|
||||
```python
|
||||
@app.post("/slack/interactive")
|
||||
async def slack_interactive_proxy(request: Request):
|
||||
# URL encoded payload 파싱
|
||||
form_data = parse_qs((await request.body()).decode())
|
||||
payload = json.loads(form_data.get('payload', [''])[0])
|
||||
team_id = payload.get("team", {}).get("id")
|
||||
|
||||
# DB에서 토큰 조회
|
||||
# 중요: FastAPI가 헤더를 소문자로 변환하므로 get("x-slack-signature") 사용
|
||||
# headers = {"X-Slack-Signature": get("x-slack-signature"), ...}
|
||||
```
|
||||
|
||||
### 2. Slack App 설정 변경
|
||||
- Interactivity & Shortcuts → Request URL
|
||||
- 현재: 미설정 또는 잘못 설정
|
||||
- 변경: `https://ro-being.com/gateway/slack/interactive`
|
||||
|
||||
## 예상 동작
|
||||
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)
|
||||
Loading…
x
Reference in New Issue
Block a user