Slack은 팀 커뮤니케이션 도구일 뿐 아니라, 다양한 자동화와 알림 시스템을 연동할 수 있는 강력한 API를 제공합니다. 이 글에서는 Java(Spring) 기반 서버에서 Slack 봇을 활용해 사용자에게 DM(Direct Message)을 보내는 과정을 소개합니다.
Slack 앱을 생성하고, 적절한 권한과 Webhook을 설정한 뒤, 서버 코드에서 특정 사용자에게 메시지를 전송합니다.

슬랙 앱 -> 워크스페이스 -> 더보기 -> 앱 -> slack marketplace -> slack 페이지 접속

우측 상단 구축 -> slack api 접속
우측 상단 Your Apps 클릭

Create New App 클릭 → From scratch 선택


OAuth & Permissions로 이동
Bot Token Scopes에서 chat:write 추가
Incoming Webhooks 활성화Install App 클릭 → 워크스페이스에 설치Bot User OAuth Token을 복사합니다.이제 Spring 기반 Java 서버에서 Slack API를 호출해봅시다.
public void sendDirectMessage(String userId, String message) throws Exception {
RestTemplate restTemplate = new RestTemplate();
HttpHeaders headers = new HttpHeaders();
headers.setContentType(MediaType.APPLICATION_JSON);
headers.setBearerAuth(slackToken); // 발급받은 Bot 토큰 사용
Map<String, Object> requestBody = new HashMap<>();
requestBody.put("channel", userId); // Slack의 사용자 ID
requestBody.put("text", message); // 전송할 메시지
HttpEntity<Map<String, Object>> request = new HttpEntity<>(requestBody, headers);
String response = restTemplate.postForObject(slackUrl, request, String.class);
ObjectMapper mapper = new ObjectMapper();
JsonNode jsonNode = mapper.readTree(response);
if (!jsonNode.path("ok").asBoolean()) {
throw new BaseException(Code.SLACK_SEND_FAIL); // 커스텀 예외 처리
}
}
slackUrl: https://slack.com/api/chat.postMessageuserId: UXXXXXXXX 형식의 Slack 사용자 IDSlack 앱이 메시지를 보내려면 대상 채널 또는 사용자와 연결되어 있어야 합니다. 앱을 추가하려면 Slack의 앱 디렉토리 또는 사이드바의 앱 메뉴에서 직접 추가 가능합니다.
Slack API는 비교적 직관적이고, chat.postMessage 하나로 봇 메시지를 전송할 수 있습니다.