--- type: workflow tags: [workflow, skill-slack, slack, send-message, slack-sdk] last_updated: 2026-04-06 --- # skill_slack_send_message_bridge 워크플로우 ## 목적 내부 서비스가 Slack 메시지를 보내야 할 때의 경로. 현행에서는 `slack_sdk.WebClient`로 직접 Slack API를 호출하거나, skill-slack 서비스를 HTTP로 호출한다. ## 현행 아키텍처 n8n Slack 노드 경유는 사용하지 않는다. 두 가지 경로가 존재한다: ### 경로 1: slack_sdk.WebClient 직접 호출 (Slack ���벤트 응답) `app/services/slack/message_service.py`에서 `WebClient(token=bot_token)`으로 Slack API를 직접 호출한다. ``` slack_endpoint.py (events 수신) -> slack_handler.py (이벤트 처리) -> slack/message_service.py:process_slack_message() -- WebClient(token=bot_token) -- local_client.chat_postMessage(channel, text, thread_ts, blocks) ``` 봇 토큰은 Slack 이벤트 컨텍스트에서 전달받는다. ### 경로 2: skill-slack HTTP 호출 (스케줄러/워크플로우) 스케줄러 잡이나 LangGraph 워크플로우에서 Slack 메시지를 보낼 때��� skill-slack 서비스를 HTTP로 호출한다. ``` coldmail_workflow.py / headlines_workflow.py -> POST {SKILL_SLACK_URL}/api/v1/send headers: X-API-Key body: { channel, text, blocks, thread_ts } ``` ## 주요 코드 경로 | 용도 | 코드 | Slack 호출 ���식 | |------|------|----------------| | Slack 이벤트 응답 | `app/services/slack/message_service.py` | `slack_sdk.WebClient` 직접 | | 콜드메일 알림 | `app/services/workflows/coldmail_workflow.py:send_node()` | skill-slack HTTP | | 헤드라인 게시 | `app/services/workflows/headlines_workflow.py` | skill-slack HTTP | | 뉴스 게시 | `app/services/skills/news_posting_skill.py` | `slack_sdk.WebClient` 직접 | | DM 발송 | `app/services/skills/dm_skill.py` | `slack_sdk.WebClient` 직접 | | 명확화 UI | `app/services/slack/clarify_service.py` | `slack_sdk.WebClient` 직접 | ## 환경변수 | 변수 | 용도 | |------|------| | `SKILL_SLACK_URL` | skill-slack 서비스 베이스 URL (HTTP 경로) | | `SKILL_SLACK_API_KEY` / `SERVICE_API_KEY` | skill-slack 인증 키 | | `SLACK_BOT_TOKEN` | 기본 워크스페이스 봇 토큰 (직접 호출 시) | ## 관련 문서 - [slack_direct_api_send.md](./slack_direct_api_send.md) -- DB 봇토큰 직접 전송 경로 - [skill-slack SKILL.md](/home/admin/robeing/DOCS/skills/skill-slack/SKILL.md) -- 스킬 계약 - [message_flow_v2.md](../01_conversation/message_flow_v2.md) -- v2 메시지 흐름