본문 바로가기
Spring

Spring boot Slack 채널 연동

by 행운의나무 2024. 4. 19.
728x90
반응형

목표

  • Spring boot와 Slack 연동

개발환경

Spring Boot : 3.2.5
java : 17
gradle: 8.7

실습

Slack Bot 키 발급

  • 앱 추가 > bots 검색 후 추가 > 이름 추가 후 API 키 생성 (spring boot에서 이용)
  • 슬랙에 alarm_bot이 추가 됨
  • 채널 추가 ex) alarm : 알림을 받을 채널 신규 생성

앱추가
bots 추가 및 사용자 이름 설정
채널 alarm 신규 추가

 

build.gralde

dependencies {  
    implementation 'org.springframework.boot:spring-boot-starter-web'  
    compileOnly 'org.projectlombok:lombok'  
    annotationProcessor 'org.projectlombok:lombok'  
    testImplementation 'org.springframework.boot:spring-boot-starter-test'  

    // slack  
    implementation 'com.slack.api:bolt:1.18.0'  
    implementation 'com.slack.api:bolt-servlet:1.18.0'  
    implementation 'com.slack.api:bolt-jetty:1.18.0'  
}

application.properties

  • slack bot api-key 설정
    slack.api-key=xoxb-1600679941553-7004046945345-u7ISjWk

controller

import com.slack.api.Slack;  
import com.slack.api.methods.MethodsClient;  
import com.slack.api.methods.request.chat.ChatPostMessageRequest;  
import org.springframework.beans.factory.annotation.Value;  
import org.springframework.web.bind.annotation.GetMapping;  
import org.springframework.web.bind.annotation.RequestParam;  
import org.springframework.web.bind.annotation.RestController;  

@RestController  
public class SlackController {  

    @Value("${slack.api-token}")  
    String slackApiToken;  

    @GetMapping("/send")  
    public void sendSlack(  
            @RequestParam String text  
    ){  
        String channel = "alarm"; // 채널명 alarm  
        this.sendSlackMsg(channel, text);  
    }  

    // Slack 메시지 전송  
    private void sendSlackMsg(String channel, String text){  
        try {  
            // com.slack.api.methods.MethodsClient 패키지의 methodsClient 객체 생성  
            MethodsClient methodsClient = Slack.getInstance().methods(slackApiToken);  

            /// 요청 생성  
            ChatPostMessageRequest request = ChatPostMessageRequest.builder()  
                    .channel(channel)  
                    .text(text)  
                    .build();  
            methodsClient.chatPostMessage(request);  

        } catch (Exception e){  
            System.out.println("sendSlackMsg Error");  
        }  
    }  
}

테스트

포스트맨을 이용해 query param으로 text를 보낸다.

포스트맨 테스트

 

결과

실행 결과

쿠팡으로 연결 클릭

 

탐사 고평량 종이컵 무인쇄 380ml, 100개입

COUPANG

www.coupang.com

파트너스 활동을 통해 일정액의 수수료를 제공받을 수 있음

반응형