Telegram 알림 발송

S_H_H·2023년 2월 23일
0
업무 처리 중 문제가 발생 시 알림을 받고 싶다
워낙 자동으로 처리되는 일이 많다 보니, 문제가 생겼는지 파악하기가 힘들어졌다

중요한 시점에 알림 기능을 넣어야겠다

Bot 등록

대화방이 있어야 알림을 발송할 수 있으니, 방을 만들어 보자

검색에서 BotFather 을 검색
대화방에서 /newbot 이라고 채팅을 치면은 등록 시작

그러면 대화방 명을 어떤걸로 할지 물어본다
원하는 이름을 입력 하면 이번에는 봇 이름을 어떤걸로 할지 물어본다
내용중에 It must end in 'bot'이라고 끝은 무조건 bot으로 하랜다

봇 이름을 입력 하면 이렇게 해당 방 토큰을 알려줍니다.
이제 이 해당 토큰을 통해 메신저 알림 기능을 사용할 수 있습니다.

이제 채팅 목록을 보시면 방금 만들어진 방이 보이게 됩니다.
채팅방에 /start 입력 후에

https://api.telegram.org/bot발급받은토큰기입/getupdates

위 URL로 접속해면은 방금 입력한 사용자의 chatId를 확인 할 수 있습니다.
getChatId

확인한 chatId를 통해 해당 사용자에게 알림을 보낼 수 있어요

Send

제가 사용한 2가지 방법은

  • RestTemplate을 사용한 발송
  • TelegramBot을 사용한 방법

각자 입맛에 따라 사용하면 될 것 같아요

RestTemplate 사용

public class TelegramMessage {
	private String chatId;
	private String text;
	생략...    
}
public void send(String msg){
	String url = "https://api.telegram.org/bot" + token + "/sendMessage";

	//발송 param
	TelegramMessage telegramMessage = new TelegramMessage(chatId, msg);
	ObjectMapper mapper = new ObjectMapper().setPropertyNamingStrategy(PropertyNamingStrategy.SNAKE_CASE);
	String param = mapper.writeValueAsString(telegramMessage);

	//헤더 세팅
	RestTemplate restTemplate = new RestTemplate();
	HttpHeaders headers = new HttpHeaders();
	headers.set("Content-Type", MediaType.APPLICATION_JSON_VALUE);

	//발송
	HttpEntity<String> entity = new HttpEntity<>(param, headers);
	restTemplate.postForEntity(url, entity, String.class)
}

TelegramBot 사용

의존성 추가

<dependency>
	<groupId>com.github.pengrad</groupId>
	<artifactId>java-telegram-bot-api</artifactId>
	<version>4.9.0</version>
</dependency>

발송 처리

public void send(String msg){
	TelegramBot bot = new TelegramBot(token);
	bot.execute(new SendMessage(chatId, msg));
}

결과

발송할 시점과 내용은 여러분들이 커스텀 해서 발송하시면 됩니다.

발송할때 'ChatId' 단위로 발송하게 됩니다
같은 대화방이라도 누구는 받고 누구는 보내지 않게 가능한 거죠

profile
LEVEL UP

0개의 댓글