- 모든 .md, .html 파일 권한을 644로 정상화 - .gitignore 파일 권한도 644로 수정 - 문서 파일에 실행 권한은 불필요하고 보안상 바람직하지 않음 - deprecated 아이디어 폴더 생성 및 레벨별 UI 변경 아이디어 이동
57 lines
1.7 KiB
Markdown
57 lines
1.7 KiB
Markdown
# Slack 메시지 처리 문제 해결
|
|
|
|
## 문제 상황들
|
|
|
|
### 1. 일반 채널에서 멘션 없이도 응답하는 문제
|
|
- **증상**: 채널에서 멘션 없이 "안녕"이라고 해도 로빙이 응답
|
|
- **원인**: Slack 이벤트 핸들러가 모든 메시지에 반응하도록 설정됨
|
|
|
|
### 2. 멘션 포함 메시지 처리 시 422 에러
|
|
- **증상**: "@로빙 넌 누구니" 같은 메시지에서 LLM 서비스 422 에러 발생
|
|
- **원인**: 멘션(`<@U096JGL9011>`)이 포함된 채로 LLM 서비스로 전송됨
|
|
|
|
### 3. Slack 메시지 전송 실패 (404 Not Found)
|
|
- **증상**: 응답 생성 후 Slack으로 전송 시 404 에러
|
|
- **원인**: 잘못된 API 엔드포인트 사용
|
|
|
|
## 해결 방법
|
|
|
|
### 1. DM 전용 처리로 변경
|
|
```python
|
|
# /home/heejae/rb10408_test/app/router/slack_handler.py
|
|
@slack_app.event("message")
|
|
async def handle_message_events(event, say, ack):
|
|
await ack()
|
|
|
|
# DM이 아닌 경우 무시
|
|
if event.get("channel_type") != "im":
|
|
return
|
|
```
|
|
|
|
### 2. 멘션 제거 로직 추가
|
|
```python
|
|
# /home/heejae/rb10408_test/main.py
|
|
message = event.get("text", "")
|
|
# 멘션 제거 (예: <@U123ABC> 형식)
|
|
import re
|
|
message = re.sub(r'<@[A-Z0-9]+>', '', message).strip()
|
|
```
|
|
|
|
### 3. Slack API 엔드포인트 수정
|
|
```python
|
|
# 변경 전
|
|
"http://localhost:8502/send"
|
|
|
|
# 변경 후
|
|
"http://localhost:8502/api/v1/send"
|
|
```
|
|
|
|
## 추가 발견 사항
|
|
- Slack 스킬 서비스는 포트 8502 사용 (8503 아님)
|
|
- API는 `/api/v1` prefix 필요
|
|
- 서비스 위치: `/home/heejae/skill-slack/`
|
|
|
|
## 관련 파일
|
|
- `/home/heejae/rb10408_test/app/router/slack_handler.py`
|
|
- `/home/heejae/rb10408_test/main.py`
|
|
- `/home/heejae/rb10408_test/app/core/config.py` |