docs: Update with final solution - header lowercase and signing secret
This commit is contained in:
parent
6811277d10
commit
18cb4e733c
@ -15,26 +15,19 @@
|
|||||||
- rb8001/app/router/slack_handler.py:275 handle_interactive() 존재
|
- rb8001/app/router/slack_handler.py:275 handle_interactive() 존재
|
||||||
- rb8001/main.py:289 `/api/slack/interactive` 엔드포인트 존재
|
- rb8001/main.py:289 `/api/slack/interactive` 엔드포인트 존재
|
||||||
|
|
||||||
## 구현 필요사항
|
## 최종 해결 (2025-09-08)
|
||||||
|
|
||||||
### 1. robeing-gateway/app/main.py 수정
|
### 1. robeing-gateway/app/main.py:552-587
|
||||||
```python
|
- /slack/interactive 엔드포인트 추가
|
||||||
@app.post("/slack/interactive")
|
- request.headers.get("x-slack-signature") - 소문자 필수
|
||||||
async def slack_interactive_proxy(request: Request):
|
- request.headers.get("x-slack-request-timestamp") - 소문자 필수
|
||||||
# URL encoded payload 파싱
|
- content=body로 원본 전달
|
||||||
form_data = parse_qs((await request.body()).decode())
|
- X-Slack-Bot-Token 헤더로 토큰 전달
|
||||||
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 설정 변경
|
### 2. Slack App 설정
|
||||||
- Interactivity & Shortcuts → Request URL
|
- Interactivity & Shortcuts → Request URL
|
||||||
- 현재: 미설정 또는 잘못 설정
|
- 설정값: `https://ro-being.com/gateway/slack/interactive`
|
||||||
- 변경: `https://ro-being.com/gateway/slack/interactive`
|
- Signing Secret: 995cdf...92af22 (rb8001 .env와 일치)
|
||||||
|
|
||||||
## 예상 동작
|
## 예상 동작
|
||||||
1. 버튼 클릭 → Slack → Gateway `/slack/interactive`
|
1. 버튼 클릭 → Slack → Gateway `/slack/interactive`
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user