Spring/Kotlin

[Springboot + Kotlin] Slack 채널 메세지 전송 연동.

For_HW 2021. 8. 6. 04:40

동기

새로운 게시글이 작성될 때, 알림을 받고 싶어서 slack 을 이용하기로 정하였고 가벼운 실습을 진행하기로 하였다.


1. Slack -> 앱 -> " Incoming WebHooks"를 추가해준다!

 

추가를 하고나서, 원하는 채널을 생성 또는 선택 하면 생성되는 WebHook URL 을 복사해줍니다.

 예시 : https://hooks.slack.com/services/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

 

!! 다음과 같은 설정을 할 수 있습니다! !!

 

2. 프로젝트의 applicatiion.yml 파일에 아래 내용을 추가합니다!

(저는 게시글을 생성하면 Slack 에 메세지를 전송해주기 위한 목적으로 생성하겠습니다.)

 

slack:
  webhook-url:
    info: https://hooks.slack.com/services/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

 

3. .gradle에 관련 디펜던시 추가합니다!

 

	//slack
    implementation("com.slack.api:slack-api-client:1.9.0")
    implementation("com.squareup.okhttp3:okhttp:4.9.1")

 

4. SlackService 를 생성해주었습니다.

@Service
@Async("taskExecutor")
class SlackService {

    @Value("\${slack.webhook-url.info}")
    private lateinit var SLACK_WEBHOOK_URL_INFO: String

    fun sendMessage(message: String): Future<Boolean> {

        val slack: Slack = Slack.getInstance()
        val webHookUrl = SLACK_WEBHOOK_URL_INFO
        val text = message
        val payload = Payload.builder().text(text).build()
        val response = slack.send(webHookUrl, payload)

        return AsyncResult(response.code == 200)
    }

 

5. 기존에 사용하던 글 생성 service 에 추가 후 동작을 확인 하였다.

(기존 사용했던 게시글 CRUD 만들기 -> https://brotherone.tistory.com/8)

@Service
class PostService(
    private var postRepository: PostRepository,
    private var slackService: SlackService) {


   @Transactional
    fun createPost(postReqDto: PostReqDto): PostResDto {
        val post: Post = postRepository.save(postReqDto.dtoToEntity())
        slackService.sendMessage("${post.title} 라는 제목의 글이 작성되었습니다.")
        return PostResDto.entityToDto_v2(post)
    }
    
    ...
    
 }

 

6. 동작 확인.

잘 동작하는 모습을 볼 수 있다!!.

이를 잘 활용하면, 다양한 프로젝트에서 다양한 방법으로 사용할 수 있을 것 같다 ㅎㅎ

 

실행 소스코드는 아래 깃허브에서 확인할 수 있습니다.!!

https://github.com/Hyeongwon-up/Kotlin-Server-Side-Lab

'Spring/Kotlin'의 다른글

  • 현재글 [Springboot + Kotlin] Slack 채널 메세지 전송 연동.

관련글