안녕하세요.
저번 시간에 이어서 오늘은 슬랙, 텔레그램 봇도 마저 만들어보려고 합니다.
슬랙 앱 생성
먼저 슬랙에서 앱 생성을 해보도록 하겠습니다.
슬랙 워크스페이스에서 Slack 찾아보기 > 앱 으로 이동합니다.
그리고 Incoming Webhooks 앱을 찾아서 추가해줍니다.
그리고 메세지를 보낼 채널을 선택해 줍니다.
그러면 디스코드 때와 마찬가지로 슬랙에 메세지를 보낼 수 있는 웹훅 URL을 받을 수 있습니다.
슬랙 메세지 생성하기
저는 디스코드 때 처럼 메세지 객체를 직접 구현해서 슬랙 메세지를 생성했는데요.
위와 같은 형식으로 메세지를 생성했습니다. 생성하고 보니 Slack에서 자체적으로 지원하는 라이브러리가 있는 것을 확인했는데요. 사용하실 분들은 뛰어난 검색을 해보시길 바랍니다.
저는 다 만들고 봐버려서...
슬랙은 디스코드와 마찬가지로 위와 같이 메세지 구성해서 보내면 정상적으로 잘 보내집니다.
위와 같이 슬랙에서 에러 내용을 확인할 수 있습니다 :)
텔레그램 봇 생성
이번에는 텔레그램 봇을 만들어보겠습니다.
텔레그램에서 BotFather를 검색해서 추가해줍니다.
그리고 /newbot 명령어를 통해 봇을 만들 수 있습니다. 이름을 정해달라고 하는데요.
봇의 이름을 정하면 위와같이 토큰을 받을 수 있습니다. 그리고 텔레그램에서 에러로그를 받을 채팅방을 만들어서 생성한 봇을 추가해주면 됩니다.
💡 참고 사항
저 같은 경우 PC 버전에서 채팅방을 만들었을 때는 제대로 진행되지 않았고, 모바일에서 진행했을 때 제대로 진행되었습니다. 혹시나 진행이 잘 되지 않으신다면 모바일로 진행하는 것을 권장드립니다.
텔레그램 봇 문서에서 확인해보면 봇에게 메세지를 보내게 하는 API는 위와 같은데 chat_id 즉, 채팅방의 고유번호가 필수 항목인 것을 확인할 수 있습니다.
https://api.telegram.org/bot{부여받은 봇의 토큰}/getUpdates을 통해 채팅방 id를 확인할 수 있습니다.
텔레그램 메세지 보내기
sendMessage API 문서를 확인해보면 디스코드, 슬랙 과 달리 파라미터로 모든 정보를 넘기는 것을 확인할 수 있습니다.
public static void generate(IThrowableProxy throwableProxy) {
String message = TelegramMessage.generateMessage(throwableProxy);
DefaultUriBuilderFactory defaultUriBuilderFactory = new DefaultUriBuilderFactory(URL);
defaultUriBuilderFactory.setEncodingMode(DefaultUriBuilderFactory.EncodingMode.VALUES_ONLY);
WebClient.builder()
.uriBuilderFactory(defaultUriBuilderFactory).build()
.get()
.uri(v -> v.queryParam(CHAT_ID, CHAT_ROOM_ID)
.queryParam(TEXT, "{message}")
.queryParam(PARSE_MODE, MARKDOWN)
.build(message))
.retrieve()
.toBodilessEntity()
.subscribe((e) -> {
}, (error) -> {
logger.error(error.getMessage());
});
}
그래서 위와 같이 get방식으로 파라미터들을 추가해서 보내주었습니다.
한 가지 주의할 점은
queryParam(TEXT, "{message}")
이 부분인데요
queryParam(TEXT, message)
저는 처음에 위와 같이 바로 message를 저 곳에 넣어주었는데 API가 제대로 동작하지 않아 한참 헤맸습니다. 아마 마크다운 형식으로 특수문자들을 잔뜩 넣어서 URL에 포함하다 보니 잘 작동하지 않은 것 같은데요. 꼭 마크다운이나 html 형식으로 text를 보내실 때 후자의 방식으로 보내시길 바랍니다.
그리고 위와 같이 정상적으로 전달이 된 것을 확인할 수 있습니다.
'개발 > 스프링부트' 카테고리의 다른 글
스프링 시큐리티로 회원가입 로그인 구현하기 (0) | 2023.06.28 |
---|---|
LogBack과 디스코드 봇 사용하기 with Springboot (0) | 2023.06.27 |