일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
- BOJ
- 다대일
- SQL프로그래밍
- 스프링 폼
- 데코레이터
- 연관관계
- 지연로딩
- 즉시로딩
- fetch
- 동적sql
- 낙관적락
- exclusive lock
- eager
- 비관적락
- 유니크제약조건
- FetchType
- 스토어드 프로시저
- JPQL
- 다대다
- PS
- 힙
- dfs
- 일대다
- 연결리스트
- 이진탐색
- execute
- querydsl
- 백트래킹
- CHECK OPTION
- shared lock
- Today
- Total
흰 스타렉스에서 내가 내리지
프로젝트에 슬랙 봇 투입! 본문
# 1. 슬랙에서 할 것
- [Your apps] 버튼 클릭!
- [Create New App] 누르고 [From scratch]
- [App Name] 에는 Bot의 이름
- 그 아래에는 봇이 생성될 우리 워크스페이스를 골라주면 된다
- [Bots] 눌러
- 페이지가 이동되었을 것입니다. 좌측 메뉴에서 [OAuth & Permissions] 눌러줘요
- 페이지를 내리다 보면, [Scopes] 가 있다.
- [Add an OAuth Scope] 를 누르고 슬랙 봇이 가질 권한을 선택해주자.
- 우선 아래아래 사진처럼 두가지를 추가했다.
- 이제 토큰을 발급받아 봅시다. 다시 페이지 위로 올라가서 [Install to Workspace] 클릭
- 아니 근데 이게 뭐지?
-> 좌측 메뉴의 [App Home]에서 [App Display Name] → [Edit] 하고 [Display Name], [Default username] 설정해주고 오면 됨.
- 다시 돌아와서 [Install to Workspace]
- 그럼 이렇게 토큰을 발급해 줍니다!
- 슬랙으로 돌아가 워크스페이스에 채널을 하나 만들고, 설정에 들어가!
- 앱 섹션의 [앱 추가]를 눌러준다.
- 근데 나는 여기서 안떠서, 그 직접 찾아가서 추가해줬다. 아래 사진처럼
이제 슬랙에서 설정할 건 끝났고, 스프링부트 프로젝트로 가봅시다!
# 2. 코드에서 할 것
* build.gradle 추가
implementation 'com.slack.api:bolt:1.36.1'
implementation 'com.slack.api:bolt-servlet:1.36.1'
implementation 'com.slack.api:bolt-jetty:1.36.1'
implementation 'org.slf4j:slf4j-simple:1.7.36'
- 최신 버전은 아래 링크에서 확인!
https://slack.dev/java-slack-sdk/guides/getting-started-with-bolt#gradle
* application.yml
- 토큰을 환경변수로 빼서 설정합시다
* 채널 명 저장 - SlackChannels.java
- 꼭 이렇게 안해도 돼요!
public class SlackChannels {
public static final String COMMAND_CHANNEL_EMERGENCY = "#0-사령관이전파한다-긴급";
public static final String COMMAND_CHANNEL_INFO = "#0-사령관이전파한다-정보";
// 다른 채널 추가
}
* SlackService.java
@Service
@Slf4j
public class SlackService {
@Value("${slack.token}")
private String SLACK_TOKEN;
public void sendSlackMessage(String message, String channel){
String channelName;
if(channel.equals("emergency")){
channelName = SlackChannels.COMMAND_CHANNEL_EMERGENCY;
}else{
channelName = SlackChannels.COMMAND_CHANNEL_INFO;
}
try{
MethodsClient methods = Slack.getInstance().methods(SLACK_TOKEN);
ChatPostMessageRequest request = ChatPostMessageRequest.builder()
.channel(channelName)
.text(message)
.build();
methods.chatPostMessage(request);
log.info("Slack Message Send Succeed");
}catch (SlackApiException | IOException e) {
log.error(e.getMessage());
}
}
}
* SlackController.java
@RestController
@RequiredArgsConstructor
@Slf4j
public class SlackController {
private final SlackService slackService;
@GetMapping("/slack/{channel}")
public String sendSlackMessage(@RequestParam("message") String message, @PathVariable String channel){
slackService.sendSlackMessage(message, "");
return channel + "채널에 " + "메시지 전송 성공 : " + message;
}
}
# 완성!
'모니터링' 카테고리의 다른 글
Apache JMeter 를 이용한 성능 테스트 (0) | 2024.03.11 |
---|---|
모니터링 도입기 (2) | 2023.12.21 |
모니터링 환경 구성 (1) | 2023.12.21 |
모니터링 메트릭 활용 - 스프링부트에서의 예제 (1) | 2023.12.21 |
그라파나 - 메트릭을 통한 문제 확인 예제 (1) | 2023.12.18 |