본문으로 바로가기
반응형

요즘 Slack을 이용하는 사람들이 점점 늘어나고 있습니다. 이는 Slack이 팀 커뮤니케이션 및 협업을 위한 강력한 도구를 제공하기 때문입니다. Slack은 실시간 메시징, 파일 공유, 통합 API를 통한 다양한 기능 제공 등으로 많은 장점을 가지고 있습니다. 그러나 설정 및 API 사용에 익숙하지 않은 사용자에게는 초기 설정이 어려울 수 있습니다. 이 블로그 글에서는 Java Spring Boot를 사용하여 Slack으로 메시지를 보내는 방법을 단계별로 설명하겠습니다.

Slack의 장단점

장점:

  • 실시간 커뮤니케이션: 팀원 간 실시간 메시지 전송 및 확인이 가능합니다.
  • 파일 공유: 간편한 파일 공유 기능을 제공합니다.
  • 다양한 통합: 수많은 서드파티 애플리케이션과 쉽게 통합할 수 있습니다.
  • 검색 기능: 과거 대화 및 파일을 쉽게 검색할 수 있습니다.

단점:

  • 비용: 무료 플랜은 제한적이며, 모든 기능을 사용하려면 유료 플랜이 필요합니다.
  • 복잡성: 다양한 기능이 있어 초보자가 익히기 어렵습니다.

예제 코드: Spring Boot로 Slack 메시지 보내기

프로젝트 설정

  1. Spring Boot 프로젝트 생성: Spring Initializr를 사용하여 새로운 Spring Boot 프로젝트를 생성합니다. 필요한 종속성은 Spring Web과 Lombok입니다.
  2. Gradle 설정: build.gradle 파일에 필요한 종속성을 추가합니다.
    dependencies {
        implementation 'org.springframework.boot:spring-boot-starter-web'
        implementation 'com.slack.api:slack-api-client:1.7.0'
        implementation 'org.projectlombok:lombok'
        annotationProcessor 'org.projectlombok:lombok'
    }
  3. application.properties 파일 설정: Slack Bot Token과 채널 ID를 설정 파일에 추가합니다.
slack.token=xoxb-your-slack-bot-token
slack.channel=CXXXXX  # 채널 ID

★ slack.token 은 아래 bot 의 Oauth&Permissions 에서 확인가능

Slack API 설정

  1. Slack 앱 생성 및 권한 설정:
    • Slack API Apps 페이지로 이동하여 새로운 앱을 생성합니다.
    • OAuth & Permissions 섹션에서 Scopes 설정을 추가합니다. chat:write, channels:read, groups:read, im:read, mpim:read 권한을 추가합니다.
    • 권한을 추가한 후, Install App 또는 Reinstall App 버튼을 클릭하여 변경된 권한을 적용합니다.
  2. 봇을 채널에 초대:
    • 슬랙 웹 클라이언트에 로그인합니다.
    • 봇을 초대하려는 채널로 이동합니다.
    • 채널 메시지 입력 창에 /invite @your-bot-name 명령을 입력하여 봇을 채널에 초대합니다.

Spring Boot 코드 작성

  1. SlackService 클래스 작성:
    package com.example.slackdemo.service;
    
    import com.slack.api.Slack;
    import com.slack.api.methods.SlackApiException;
    import com.slack.api.methods.request.chat.ChatPostMessageRequest;
    import com.slack.api.methods.response.chat.ChatPostMessageResponse;
    import org.springframework.beans.factory.annotation.Value;
    import org.springframework.stereotype.Service;
    
    import java.io.IOException;
    
    @Service
    public class SlackService {
    
        @Value("${slack.token}")
        private String slackToken;
    
        @Value("${slack.channel}")
        private String slackChannel;
    
        public void sendMessage(String message) throws IOException, SlackApiException {
            Slack slack = Slack.getInstance();
            ChatPostMessageRequest request = ChatPostMessageRequest.builder()
                    .channel(slackChannel)
                    .text(message)
                    .build();
    
            ChatPostMessageResponse response = slack.methods(slackToken).chatPostMessage(request);
    
            if (!response.isOk()) {
                throw new RuntimeException("Error sending message to Slack: " + response.getError());
            }
        }
    }

  2. SlackController 클래스 작성:
package com.example.slackdemo.controller;

import com.example.slackdemo.service.SlackService;
import com.slack.api.methods.SlackApiException;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;

import java.io.IOException;

@RestController
public class SlackController {

    @Autowired
    private SlackService slackService;

    @GetMapping("/send-message")
    public String sendMessage(@RequestParam String message) {
        try {
            slackService.sendMessage(message);
            return "Message sent successfully!";
        } catch (IOException | SlackApiException e) {
            return "Error sending message: " + e.getMessage();
        }
    }
}

 

Java Spring Boot를 사용하여 Slack으로 메시지를 보내는 방법을 알아보았습니다. Slack API 설정 및 권한 추가, 봇을 채널에 초대하는 과정 등을 통해 메시지를 성공적으로 전송할 수 있습니다. 이를 통해 팀의 커뮤니케이션을 자동화하고 효율성을 높일 수 있습니다. 슬랙 API를 활용하여 더 많은 기능을 구현해 보세요!

 

아래는, 실제로 메시지를 전송 한 결과입니다.

 

 

 

 

 

반응형