11/10

졸용·2025년 11월 10일

TIL

목록 보기
111/144

🔹 Slack 메시지 전송 로직 구현

🔸 SlackMessageRequest

@Getter
@NoArgsConstructor
public class SlackMessageRequestV1 {

    // DM 받을 수신자 Slack 아이디
    @NotBlank
    private String channel;

    // 전송할 메시지 본문
    @NotBlank
    private String text;

    @Builder
    private SlackMessageRequestV1(String channel, String text) {

        this.channel = channel;
        this.text = text;
    }
}

🔸 SlackService

public void sendDmToUser(String receiverSlackId, String message) {

        // 1. DM 채널 생성 (또는 기존 DM 채널 가져오기)
        String channelId = openConversation(receiverSlackId);

        SlackMessageRequestV1 request = SlackMessageRequestV1.builder()
            .channel(channelId)
            .text(message)
            .build();

        // 2. DM 전송
        restClient.post()
            .uri(POST_MESSAGE_URL)
            .header("Authorization", "Bearer " + slackBotToken)
            .header("Content-Type", "application/json")
            .body(request)
            .retrieve()
            .toBodilessEntity();

        SlackLog slackLog = SlackLog.of(receiverSlackId, message);

        slackLogRepository.save(slackLog);
    }

🔸 SlackController

@PostMapping("/post-message")
    public BaseResponse<Void> postMessage(@RequestBody SlackMessageRequestV1 request) {

        slackService.sendDmToUser(request.getChannel(), request.getText());

        return BaseResponse.ok(BaseStatus.CREATED);
    }
profile
꾸준한 공부만이 답이다

0개의 댓글