실시간 텔레그램 알림 설정

김수현·2025년 6월 24일

Suhyeon's 개발일지

목록 보기
25/34
post-thumbnail

지도가 로드될 때만 텔레그램 알림이 가면 제일 중요한 실시간 알림이 되지 않는다..
사용자가 사용하지 않을 때에도 알림을 통해 산불 경고를 주어야 하는데 지금까지 구현한 알림 기능은 그렇지 않다.

그래서 소켓 통신이 시작되고 데이터가 들어올 때 데이터 값을 비교해서 알림이 가도록 설정했다.

일단 사용자 별 chat id를 가져와야 하기 때문에, insertData에서 IMEI를 통해 device Table을 찾고, device Table에서 userId를 통해 user Table을 찾고, 그 user Table에서 receiveTelegram 컬럼을 가져와 chat id에 부여해주는 형식으로 구현했다.

if(insertData.F_Gas > 임곗값 넣어주기){
    const device = await models.device.findOne({
        where : { IMEI : insertData.IMEI},
    });
    const install = await models.install.findOne({
        where : { IMEI : insertData.IMEI}
    });

    const user = await models.user.findOne({
        where : { id : device.userId},
    });

    if(!user){
        return;
    }

    const chatId = user.receiveTelegram;

    if(chatId){
        await sendTelegramTestMessage(chatId, device, install, insertData.Sensing_Time);
    }

}

필요한 정보들을 같이 보내고, 불러오면 telegram 실시간 알림 설정은 끝이 난다.

이렇게 실제 감지 시간과 알림이 온 시간이 같은 걸 확인할 수 있다.

문제는 실 서버에 올리면, 가끔 에러가 나서 전달이 안되는 경우가 종종 생긴다.

Etimedout 에러인데 아직 정확한 문제를 파악하지 못해서 테스트 중이다.

0개의 댓글