728x90

1️⃣ Slack에서 Webhook URL 만들기
- Slack 워크스페이스 접속
- 브라우저에서 아래 주소 열기
- Create New App 클릭
- From scratch 선택 후
- App Name: 예) log-alert-bot
- Workspace: 본인 워크스페이스 선택
- 왼쪽 메뉴에서 Incoming Webhooks 선택
- 상태를 On 으로 변경
- Add New Webhook to Workspace 클릭
- 알림 보낼 채널 선택 (예: #dev-alert)
- 허용하면, Webhook URL 하나가 생성됨
- 이 URL은 비밀이니까
- application.yml에 직접 노출하지 말고
- .env or OS 환경변수 or 로컬 전용 application-local.yml에만 넣는 걸 추천
2️⃣ Spring Boot 설정에 Webhook URL 넣기
예: application-local.yml에 이런 식으로
slack:
webhook-url: "https://hooks.slack.com/services/XXX/YYY/ZZZ"
프로필 분리해서 쓴다면 spring.profiles.active=local 에서만 쓰게.
3️⃣ Slack 알림용 Config / Service 만들기
3-1. WebClient Bean (공통으로 써도 되고, 없으면 아래처럼 하나 만들기)
@Configuration
class WebClientConfig {
@Bean
fun webClient(): WebClient {
return WebClient.builder()
.build()
}
}
이미 WebClient 쓰고 있으면 이건 생략하고 기존 거 주입받아도 됨.
3-2. Slack 알림 서비스
@Service
class SlackNotifier(
private val webClient: WebClient,
@Value("\${slack.webhook-url}") private val webhookUrl: String
) {
fun send(message: String) {
val payload = mapOf("text" to message)
webClient.post()
.uri(webhookUrl)
.contentType(MediaType.APPLICATION_JSON)
.bodyValue(payload)
.retrieve()
.toBodilessEntity()
.block() // 스케줄러에서 단발성 호출이니까 block 써도 무방
}
}
- payload 형식
- Slack Incoming Webhook은 기본적으로 { "text": "내용" } 형태의 JSON을 받음
- 여기서는 간단히 block() 해서 동기 호출로 끝냄
- 비동기로 하고 싶으면 .subscribe() 써도 됨


728x90
반응형
