Boot - Slack Bot 연동하기

기능 정의

  • 그룹이 슬랙과 연동할 경우, 그룹 원들의 상태가 Slack Bot을 통해 표시된다!

1. Slack App 만들기

https://api.slack.com/ 에서 Slack Bot 만들기

  • App Name과 workspace 선택
    - AppName의 경우 추후 변경 가능
    - workspace가 없으면 app 생성 불가!
    → 여러 workspace에서 사용하는 bot개발 시, 생성 후 distribution 설정 해야 함

    생성 후 Bots 선택!

Scope 적용


Review Scopes to Add 후, 원하는 Scope들을 선택!

  • 해당 앱의 경우, 단순히 채널에 메세지만 보내는 기능이므로
    Bot Token Scopeschat:write 만 설정
  • https://api.slack.com/scopes ← scope에 대한 설명

Workspace에 설치


  • Scope설정 완료되면 Install to Workspace가 활성화된다.
  • 설치를 마치면 토큰이 적혀있는 페이지를 볼 수 있다.

2. Spring Boot 설정

https://slack.dev/java-slack-sdk/guides/getting-started-with-bolt#gradle 를 참고하여
Gradle 환경 세팅

build.gradle

dependencies {
	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.yml

slack:
	token: 'xoxb-발급받은 토큰'
	channel: '#채널명'

NotificationService

import org.springframework.beans.factory.annotation.Value;

@Value(value = "${slack.token}")
String token;
@Value(value = "${slack.channel}")
String channel;
private void sendSlackMessage(String username, Boolean activate) {
        String message = (activate)? "> :writing_hand: *["+username+"]* 님이 업무 집중을 시작했어요!"
                                    : "> :raised_hands: *["+username+"]* 님이 쉬고 있어요!";
        try{

            MethodsClient methods = Slack.getInstance().methods(token);
            ChatPostMessageRequest request = ChatPostMessageRequest.builder()
                    .channel(channel)
                    .text(message)
                    .build();

            methods.chatPostMessage(request);

        }catch (Exception e){
            throw new CustomException(ErrorCode.FAIL_SEND_SLACK);
        }
    }
  • Slack Message는 마크다운 문법을 지원하므로, 텍스트에 적용이 가능하다!
    ( 마크다운 문법이 조금 다르므로 공식 페이지에서 꼭 확인..! )
  • https://api.slack.com/methods/chat.postMessage/test
    실제 메세지 형식을 확인해볼 수 있는 페이지

결과

좋은 웹페이지 즐겨찾기