Back-End/SpringBoot

[SpringBoot] 슬랙 메시지 전송

코딩콩 2022. 5. 21. 22:45

사용이유

서비스 운영자를 위한 목적으로 특정 결과를 슬랙 전송

슬랙에 Incoming WebHooks 앱 추가

추가하면 채널을 선택(또는 추가)하고 웹훅 url을 복사

슬랙 전송 서비스 코드 작성

@Service
public class SendMatchingFailSlack {

    private static final String WEB_HOOK_URL ="https://hooks.slack.com/services/~~~";

    private final WebClient webClient;

    public SendMatchingFailSlack(WebClient webClient) {
        this.webClient = webClient;
    }

    public void send(MessageDTO messageDTO) {
        Map<String, Object> request = new HashMap<>();
        request.put("username", "전송이름");
        request.put("text", "이렇게 직접 작성해서 보내거나");
        request.put("icon_emoji",":ghost:");
        webClient.post()
            .uri(WEB_HOOK_URL)
            .bodyValue(request)
            .retrieve()
            .bodyToMono(String.class)
            .block();
    }
}

저는 username, text, icon_emoji만 설정했지만 이미지 첨부도 가능하고 추가할 수 있는 속성은 더 다양합니다.
위 처럼 text에 그냥 넣어도 되고 동적으로 텍스트 치환을 사용하고 싶다면 아래와 같이 String.format을 이용

@Service
public class SendMatchingFailSlack {

	...
    
    public void send(MessageDTO messageDTO) {
        Map<String, Object> request = new HashMap<>();
        request.put("username", "운영알림봇");
        request.put("text", generateMessage(messageDTO));
        request.put("icon_emoji",":money_with_wings:");
        webClient.post()
            .uri(WEB_HOOK_URL)
            .bodyValue(request)
            .retrieve()
            .bodyToMono(String.class)
            .block();
    }

    private String generateMessage(MessageDTO messageDTO) {
        return String.format("입금자명 : %s, 입금금액 : %s \n"
            messageDTO.getName(),
            MoneyFormatter.format(messageDTO.getDepositAmount().longValue()));
    }
}

 

+ 이모지 short code 찾기

https://emojipedia.org/

 

📙 Emojipedia — 😃 Home of Emoji Meanings 💁👌🎍😍

emojipedia.org

이모지 선택해서 들어가면 하단에 shortcode 있습니다.

참고
https://leeborn.tistory.com/entry/Spring-Boot-%EC%8A%AC%EB%9E%99-webhook-%EB%A9%94%EC%8B%9C%EC%A7%80-%EB%B3%B4%EB%82%B4%EA%B8%B0

 

[Spring Boot] 슬랙 메시지 보내기(Incoming WebHooks)

슬랙의 "Incoming WebHooks"을 이용해서 메시지를 보내는 방법이다. 먼저 슬랙에서 앱의 설치 및 설정이 필요하다. 1. 슬랙을 설치하고, "Incoming WebHooks" 앱을 추가한다. 2. 앱의 설정으로 이동한다. 3. 보

leeborn.tistory.com