Springboot를 활용하여 Telegram에 Log Event보내기

2023. 3. 19. 16:08BackEnd/Spring&Spring Boot

작성자알 수 없는 사용자

728x90
반응형

 

안녕하세요. 기깔나는 사람들에서 백앤드를 맡고있는 Hardy입니다.

 

 

저번글에 이어서 마지막으로 Telegram에 데이터를 보내보도록 하겠습니다.

 

이전 discord, slack에 기재된 코드들을 그대로 유지해 주시면 감사하겠습니다.(Appender는 제외입니당)

 



Telegram 봇 생성하기

- 텔레그램 앱에 접속합니다.

 

- 왼쪽 상단에 search에 BotFather을 검색합하여 클릭하면 메시지 창이뜹니다.

 

 

- /newbot이라는 메시지를 보내고 위에 이미지와 같이 실행을 하게 되면 Api키를 받을 수 있습니다. 

- 해당 키값은 반드시 기억해주세요

 

- newGroup을 생성합니다.

- 이때 사용자를 추가 할 수 있는데 이때 우리가 생성한 봇을 반드시 넣어 주셔야 합니다.

- 그럼 이제 그룹이 생성된걸 확인 하실 수 있습니다.

이제 생성된 그룹의 아이디를 획득하셔야 결과적으로 메시지를 보낼 수 있습니다.

 https://api.telegram.org/bot{accessToken}/getUpdates

여기서 accessToken은 아까 발급받은 키를 의미합니다. 해당 형태로 요청을 날려봅시다.

{"ok":true,"result":[{"update_id":489258956,
"my_chat_member":{"chat":{"id":-888546846,"title":"sdfsdfsdfsdfsddfs","type":"group","all_members_are_administrators":true},"from":{"id":516250487,"is_bot":false,"first_name":"toss","username":"seungki1993","language_code":"ko"},"date":1679209150,"old_chat_member":{"user":{"id":6277915209,"is_bot":true,"first_name":"TESTSEEEEEungBOT","username":"TESTSEEEEEungBOT"},"status":"left"},"new_chat_member":{"user":{"id":6277915209,"is_bot":true,"first_name":"TESTSEEEEEungBOT","username":"TESTSEEEEEungBOT"},"status":"member"}}},{"update_id":489258957,
"message":{"message_id":98,"from":{"id":516250487,"is_bot":false,"first_name":"toss","username":"seungki1993","language_code":"ko"},"chat":{"id":-888546846,"title":"sdfsdfsdfsdfsddfs","type":"group","all_members_are_administrators":true},"date":1679209150,"group_chat_created":true}}]}

- 요청을 보내게 되면 수 많은 json값을 확인 할 수 있는데 여기서 chat 키값에서 방금 추가된 채널의 id값을 가지고 옵니다.

- chatId도 필수입니다.

- chatId와 토큰을 모두 발급 받았다면 springboot application.yml에 파일에 해당 내용을 추가해 줍니다.

  telegram:
    chat-id: -861331243
    token: 6277915209:AAEe56ieRpNM0oF253olQlXCTYLILZjX5DQ

 

 

여기까지 완료되었다면 보낼 준비는 끝이 났습니다.


TelegramAppender

- 기존 디스코드 , slack처럼 appender를 추가해줍니다.

- 해당 클래스는 로그 이벤트를 받아서 처리하는 역할 입니다.

 

TelegramWebhook

- telegram은 discord, slack처럼 body로 보내는게 아니라 리퀘스트 파람으로 데이터를 보내게 되어있습니다.

- reqeust para으로 보내기 때문에 로그에 특수문자 , 공백문자 등등이 있을 수 있기때문에 url 인코딩을 해줍니다.

 

TelegramMessageGenerator

- 텔레그램은 보낼수 있는 요청 메시지의 길이 제한이 있기 때문에 그 제한에 맞게 짤라줍니다.

- 만약 모든 데이터를 보내고 싶다면 여러번 요청을 보내도록 구현을 하면 됩니다.

 

여기까지 코드가 추가 되었다면 테스트를 진행해 보겠습니다.

 

Telegram에 메시지 보내기

 

- 서버 구동 후 해당 url로 요청을 보내겠습니다.

 

- 요청을 보내게 되면 , 내가 만든 봇으로 에러로그가 발송된것을 확인 할 수 있습니다.

 

 

여기까지 discord , telegram , slack메시지 보내기 였습니다 감사합니다.

 


 

 

 

 

 

 

728x90
반응형