0%

텔래그램(Telegram) 봇 만들기

19년 8월 19일 아래의 내용이 추가

  • 봇 생성 시 정보 추가
  • 그룹 생성 추가

텔레그램(Telegram) 봇 만들기

최근 Jenkins를 이용하여 CI/CD를 구성해보던 중 빌드 완료 시 알림 메세지를 줄 수 있는 것을 보다가 텔레그램을 써보게 되었다.
사실 이 용도 외에도 서버에서 크리티컬 이슈 또는 서버가 내려가는 경우 텔레그램이나 슬랙 등으로 알림을 전달할 수 있는 기능을 개발할 예정이었다.
이번 포스팅에서는 텔레그램의 봇을 만드는 것을 다뤄보려 한다.

포스팅을 하기 전에 텔레그램에 이미 가입이 되어 있다는 것을 전재로 한다.


1. 텔레그램(Web 또는 클라이언트)에서 검색

아래의 사진과 같이 검색 란에서 botfather라는 키워드로 검색을 하면 아래와 같이 첫 번째의 @BotFather라는 항목이 뜬다.

채팅의 시작 또는 이미 채팅 창이 열러 있다면 /start 를 입력해준다.

2. 봇 생성 및 설정

처음 BotFather와 대화를 진행하면 봇의 종류를 알려준다. (아래의 그림 참고)

여기서 우리는 새로운 봇을 만들 것이기에 /netbot 이라는 것을 입력해준다.
그리고 아래와 같이 봇 정보를 입력하는 화면이 뜬다. 이름을 입력하라는 메세지가 뜬다.

1번의 경우 생성할 봇의 이름으로써 사용자에게 보여지는 봇의 이름을 의미한다.
한글도 가능하며 알맞게 작성해준다.

2번의 경우 봇의 이름을 입력하는데 이는 해당 봇의 이름(ID 개념)을 입력해준다.
향후 개발에 연동 시 필요하다.

3번의 경우 botfather가 준 메세지를 보면 알겠지만 2번에 입력한 ID가 중복된 경우이다.
그래서 다른 ID를 입력해준다.

정상적으로 봇이 생성되었다면 아래의 사진처럼 해당 봇의 생성 정보와 토큰 정보 등을 알려준다.
토큰의 경우 매우 중요하므로 노출되지 않게 보관해둔다.

그리고 나서 위 그림의 채팅에서 t.me/[생성 봇 이름] 을 클릭하면 해당 봇의 채팅 방으로 이동한다.
해당 봇이 정상적으로 생성이 되었는지 확인을 위해서는 아래의 Url 형식으로 브라우저에 호출해본다.

1
2
3
https://api.telegram.org/bot[전달받은 고유 토큰 값]/getUpdates

Ex : https://api.telegram.org/bot000200190:AzFA1zZkM12vyADDSSDP/getUpdates

위와 같이 Json 형식의 응답이 온다면 정상적으로 동작하는 것이다.


3. Chat ID 확인

2번을 진행 후 정상 동작 확인을 위해 호출 했던 URL (/getUpdates) 를 새로 고침 또는 재 호출을 해보면 아래와 같은 Json 형태가 반환된다.

위 그림은 내가 회사에서 사용한 것이라서 주요 정보는 가렸다.
위에서 보면 “from” 이라는 항목의 ID가 존재하는데 이것이 Chat ID 값이다.
Chat ID를 통해 메세지를 보내는 작업 등을 할 수 있다.
아래의 URL을 통해서 해당 봇이 있는 채팅방으로 메세지를 전송할 수 있다.

1
2
3
https://api.telegram.org/[Bot ID]:[Token]/sendmessage?chat_id=[Chat ID]&text=Test!!

EX : https://api.telegram.org/bot000200190:AzFA1zZkM12vyADDSSDP/sendmessage?chat_id=12345678&text=Test!!한글

위 그림 처럼 해당 채팅방에 메세지가 전달됨을 알 수 있다.


(번외) 채널 만들기

봇과 1:1 채팅 용도 외에도 같이 개발 또는 운영 그리고 다른 봇들과 함께 알림을 받거나 처리를 해야 할 때 사용할 수 있는 텔레그램 체널을 만들어 본다.
주요 정보 및 민감정보는 삭제하였으나 진행에 큰 문제는 없다.

먼저 화면 상단에서 채널 만들기를 선택한다. (아래 사진 참고)

적당한 채널명과 설명을 적어주고 공개 또는 비공개를 선택한다.

채널명 채널 오픈 선택
|

채널 상단의 설정에서 채널 관리 항목으로 이동한다.

메뉴에서 관리자 항목을 선택한다.
그리고 관리자 추가 버튼을 클릭한다.

관리자 선택 선택 창
|

관리자로 추가할 봇을 선택하고 등록한 후 권한을 알맞게 부여한다.
본인의 경우 크게 권한이 필요하지 않아서 최소한의 권한을 부여하였다.

관리자 봇 검색 추가 권한 부여
| |

채널이 생성되면 아까 사용한 URL 중 채널 정보를 받는 URL을 호출해본다.

https://api.telegram.org/bot[Auth-Key]/getUpdates

그룹의 경우 Chat ID의 값이 -152432 등으로 표기된다.

{“message_id”:3,”chat”:{“id”:-1111261514761,”title”:”\ubaa8\ube4c \uc11c\ube44\uc2a4”…


정리

이번에 jenkins 뿐만이 아닌 서비스에서 크리티컬한 장애가 발생할 경우를 위해서 간단한 알림 시스템을 생각했었는데, 이 봇 알림을 이용하면 좋을 것 같다.
다음에는 슬랙 봇도 알아보도록 할 예정이다.