1.6 KiB
1.6 KiB
Slack Interactive Gateway 프록시 구현
작성일: 2025-09-08 작성자: happybell80 상태: ✅ 해결 (2025-09-08)
문제 상황
- 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와 일치)
예상 동작
- 버튼 클릭 → Slack → Gateway
/slack/interactive - Gateway가 team_id로 DB 토큰 조회
- rb8001이 skill-news에서 GET /api/news/google/companyx/{article_id} 조회
- 전체 데이터로 skill-publish 호출, 성공 시 PATCH로 status 업데이트
관련 파일
- 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)