업무 처리 중 문제가 발생 시 알림을 받고 싶다
워낙 자동으로 처리되는 일이 많다 보니, 문제가 생겼는지 파악하기가 힘들어졌다
중요한 시점에 알림 기능을 넣어야겠다
대화방이 있어야 알림을 발송할 수 있으니, 방을 만들어 보자
검색에서 BotFather
을 검색
대화방에서 /newbot
이라고 채팅을 치면은 등록 시작
그러면 대화방 명을 어떤걸로 할지 물어본다
원하는 이름을 입력 하면 이번에는 봇 이름을 어떤걸로 할지 물어본다
내용중에 It must end in 'bot'
이라고 끝은 무조건 bot으로 하랜다
봇 이름을 입력 하면 이렇게 해당 방 토큰을 알려줍니다.
이제 이 해당 토큰을 통해 메신저 알림 기능을 사용할 수 있습니다.
이제 채팅 목록을 보시면 방금 만들어진 방이 보이게 됩니다.
채팅방에 /start
입력 후에
위 URL로 접속해면은 방금 입력한 사용자의 chatId
를 확인 할 수 있습니다.
확인한 chatId를 통해 해당 사용자에게 알림을 보낼 수 있어요
제가 사용한 2가지 방법은
RestTemplate
을 사용한 발송TelegramBot
을 사용한 방법각자 입맛에 따라 사용하면 될 것 같아요
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)
}
의존성 추가
<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' 단위로 발송하게 됩니다
같은 대화방이라도 누구는 받고 누구는 보내지 않게 가능한 거죠