๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
๐ŸŒพBackEnd/๐ŸŒฑ Spring

[SpringBoot] Slack์œผ๋กœ ์•Œ๋ฆผ ๋ณด๋‚ด๊ธฐ

by MuGeon Kim 2023. 2. 15.
๋ฐ˜์‘ํ˜•

์†Œ๊ฐœ

 

์š”์ฆ˜ Slack์„ ์ž์ฃผ ์‚ฌ์šฉํ•˜๊ฒŒ ๋˜์–ด์„œ Spring boot๋ฅผ ํ†ตํ•ด์„œ Slack์— ์•Œ๋ฆผ์„ ๋ณด๋‚ด๊ธฐ๋ฅผ ์‹œ๋„ํ–ˆ๋‹ค.

 

 

1. ์›Œํฌ์ŠคํŽ˜์ด์Šค ๋ฐ ์ฑ„๋„

- ์ผ๋‹จ ๊ธฐ์กด์— ์žˆ๋Š” ์ฑ„๋„์„ ์‚ฌ์šฉ์„ ํ–ˆ๋Š”๋ฐ ๋งŒ์•ฝ์— ํ”„๋กœ์ ํŠธ๋ฅผ ํ•œ๋‹ค๋ฉด ์ƒˆ๋กœ์šด ์ฑ„๋„์„ ๋งŒ๋“œ๋Š” ๋ฐฉ๋ฒ•์„ ์ถ”์ฒœํ•œ๋‹ค.

 

 

 

2. ์„œ๋ธŒ ์ฑ„๋„ -> ์„ธ๋ถ€์ •๋ณด ๋ณด๊ธฐ

- ์„œ๋ธŒ ์ฑ„๋„์„ ํ•˜๋‚˜ ์„ ํƒ์„ ํ•˜๊ณ  ์šฑํด๋ฆญ์„ ํ•˜์—ฌ ์ฑ„๋„ ์„ธ๋ถ€์ •๋ณด ๋ณด๊ธฐ๋ฅผ ์„ ํƒํ•œ๋‹ค.

 

 

 

3. ํ†ตํ•ฉ -> ์•ฑ -> ์•ฑ์ถ”๊ฐ€

 

 

 

4. ๊ฒ€์ƒ‰ -> webhook ๊ฒ€์ƒ‰

๊ฒ€์ƒ‰์„ ํ•  ๋•Œ webhook์„ ๊ฒ€์ƒ‰ํ•˜์—ฌ Imcoming-webook์„ ์„ค์น˜ํ•œ๋‹ค.

 

 

 

5. URL ํ™•์ธ

Slack api ์‚ฌ์ดํŠธ์— ๋“ค์–ด๊ฐ€์„œ Add Incoming WebHooks Integration์„ ๋ˆ„๋ฅด๋ฉด ๋ฐ‘์— ํ™”๋ฉด์ด ๋‚˜์˜ค๋Š”๋ฐ ์—ฌ๊ธฐ์„œ URL์„ ๋ณต์‚ฌํ•œ๋‹ค.

 

 

5-2. webhook ํ…Œ์ŠคํŠธ

- ํ™”๋ฉด ๋ฐ‘์— ๋‚ด๋ ค๊ฐ€๋ฉด ์˜ˆ) curl -X post๊ฐ€ ์žˆ๋‹ค. cmd๋กœ ์ง€๊ธˆ slack์— ํ…Œ์ŠคํŠธ๊ฐ€ ๊ฐ€๋Šฅํ•˜๋‹ค.

httppie๊ฐ€ ์—†๋‹ค๋ฉด ์ „์ฒด ์ฝ”๋“œ๋ฅผ ๋ณต์‚ฌํ•ด์„œ cmd์— ์ž‘์„ฑํ•˜๋ฉด ๋œ๋‹ค.

 

 

6. ์˜์กด์„ฑ ์ถ”๊ฐ€

implementation("net.gpedro.integrations.slack:slack-webhook:1.4.0")

Spring - boot์— ์˜์กด์„ฑ์„ ์ถ”๊ฐ€ ํ•œ๋‹ค.

 

 

 

7. ์ฝ”๋“œ ์ž‘์„ฑ

- ์ง€๊ธˆ์€ ๊ฐ„๋‹จํ•œ๊ฒŒ message์„ ๋ฐ›์•„์„œ ๋„˜๊ฒจ์ฃผ๋Š” ์ฝ”๋“œ๋งŒ ์ž‘์„ฑ์„ ํ–ˆ๋‹ค. 

@Controller
public class test {

    @PostMapping("/publish/slack")
    public void send(@RequestBody String message) {
        RestTemplate restTemplate = new RestTemplate();
        Map<String, Object> request = new HashMap<>();
        request.put("username", "ํ•˜ํ•˜"); //slack bot name
        request.put("text", message); //์ „์†กํ•  ๋ฉ”์„ธ์ง€
        request.put("icon_emoji", ":slack_emoji:"); //slack bot image

        HttpEntity<Map<String, Object>> entity = new HttpEntity<Map<String, Object>>(request);

        String url = "https://hooks.slack.com/services/????"; //๋ณต์‚ฌํ•œ Webhook URL ์ž…๋ ฅ

        restTemplate.exchange(url, HttpMethod.POST, entity, String.class);
    }
}

 

 

 

7. PostApi - Message ์ „์†ก

์ง€๊ธˆ๊นŒ์ง€ Spring boot๋ฅผ ์ด์šฉํ•ด์„œ ๊ฐ„๋‹จํ•˜๊ฒŒ ๋ฉ”์„ธ์ง€๋ฅผ ๋ณด๋‚ด๋Š” ๋ฐฉ๋ฒ•์— ๋Œ€ํ•ด์„œ ์ž‘์„ฑ์„ ํ–ˆ๋‹ค.

๋ฌผ๋ก  ์•„์ฃผ ๊ฐ„๋‹จํ•˜์ง€๋งŒ ์ด๊ฒƒ์„ ๊ธฐ๋ฐ˜์œผ๋กœ ๋‹ค์–‘ํ•œ ํ™œ๋™์„ ํ•  ์ˆ˜ ์žˆ๋‹ค.

https://github.com/gpedro/slack-webhook

 

GitHub - gpedro/slack-webhook: Slack WebHook Integration for Java

Slack WebHook Integration for Java. Contribute to gpedro/slack-webhook development by creating an account on GitHub.

github.com

 

๋ฐ˜์‘ํ˜•