이번 포스트에서는 텔레그램에서 제공하는 웹용 애플리케이션 프로그래밍 인터페이스(API) 를 이용해 텔레그램 메시지를 전송하는 방법에 대해 설명하겠습니다. 트레이딩 뷰에서 매매 시그널, 즉 Alert 가 발생했을 때 자동으로 매매를 실행할 수 있는데, 그 결과를 받기 위한 방법으로 가장 쉽게 구현할 수 있는 방법이라고 볼 수 있습니다.
여기서 '웹용 API' 라는 표현은 HTTP 프로토콜을 사용하는 API 라고 부르는 게 정확한데, 쉽게 말하면 웹 브라우저에서 주소창에 입력하는 주소를 이용해서 텔레그램에 메시지를 전송하는 것이라고 할 수 있습니다. HTTP 에 대해서는 다음 강의를 참고하시기 바랍니다:
https://opentutorials.org/course/3385/21673
HTTP 소개 - 생활코딩
수업소개 HTTP가 무엇인지를 살펴봅니다. 크롬 개발자 도구 내의 네트워트 기능도 살짝 살펴봅니다. 강의
opentutorials.org
텔레그램에서 메시지를 받기 위해서는 우선 텔레그램 계정이 필요하고, 나에게 메시지를 보내줄 상대가 필요합니다. 사람이 아닌 가상의 서비스가 메시지를 보내주게 되는데, 이러한 서비스를 '봇(bot)' 이라고 부릅니다. 이러한 봇을 통해 텔레그램 메시지를 받는 시나리오는 다음과 같이 네 단계로 구분해볼 수 있습니다 :
또한 이번 글에서 다루는 내용의 실행 예는 다음 영상에서 확인할 수 있습니다:
그럼 하나씩 알아보기로 하겠습니다. 혹시 텔레그램 계정이 없으신 분은 https://telegram.org/ 에서 텔레그램 앱을 설치하고 계정을 만들어야 합니다.
텔레그램 봇을 만들고 Access Token 발급 받기
먼저 텔레그램에서 메시지를 보내 줄 봇을 하나 만들어야 합니다. 봇을 만드는 법은 어렵지 않은데요, 개인 계정을 만들 때에 아이디와 이름이 필요하듯이 봇을 만들 때도 봇 이름을 정해줘야 합니다.
- 먼저 텔레그램의 검색창에서 "BotFather" 을 검색하고 대화를 시작합니다.
- /newbot 이라고 메시지를 전송하면, BotFather 은 봇의 이름을 정해달라고 합니다.
- 봇 이름을 입력하고 전송하면, BotFather 은 봇의 username을 정해달라고 합니다.
- 봇의 username을 입력하고 전송하면, BotFather 은 봇을 생성하고 Access Key 를 알려줍니다.
이 과정을 마치면 BotFather 은 봇을 생성하고 Access Token 을 발급해서 알려줍니다.
Chat ID 조회하기
이제 봇이 만들어졌으니 봇이 나에게 말을 걸도록 명령을 내려보겠습니다. 봇에게 명령을 내리려면 세 가지 정보가 필요합니다.
- 액세스 토큰 : 아무나 봇에게 명령을 내릴 수 있다면 대화방은 엉망이 될 것입니다. 따라서 봇에게 명령을 내릴 수 있는 권한이 필요한데, 이 권한을 나타내는 식별 코드가 바로 액세스 토큰입니다. 따라서 봇에게 명령을 내릴 때는 (즉 API 를 호출할 때는) 이러한 액세스 토큰 정보를 함께 전송해야 합니다. 이 액세스 토큰은 앞에서 BotFather 이 봇을 만들 때 미리 생성해서 알려줬습니다.
- 방 번호(chat id) : 봇이 메시지를 보낼 대상인 방 번호(chat id)가 필요합니다. 방 번호는 봇을 만들 때 따로 알려주지 않으므로 API 를 호출해서 따로 알아내야 합니다.
- 전송할 메시지(text) : 봇이 대화방에서 이야기 할 메시지를 알려줘야 합니다. 트레이딩 뷰에서 Alert 가 발생했을 때, 이 때의 매매 정보를 담고 있는 Message 를 보내주는 것이 하나의 예가 될 것입니다.
이제 방 번호를 알아내는 방법을 설명하겠습니다.
먼저 방에서의 대화 히스토리가 쌓여야 하므로 대화창에 메시지를 보냅니다.
"hello", "world" 메시지를 차례로 보내면 화면은 아래 그림과 같을 것입니다:
BotFather 이 생성한 액세스 토큰값이 다음과 같다고 합시다:
5123174825:AAFQ3zjwNMVcmSD6lLOsJlh9GXX2CQZjs4Q
브라우저에서 주소창에 다음과 같이 입력합니다:
https://api.telegram.org/bot5123174825:AAFQ3zjwNMVcmSD6lLOsJlh9GXX2CQZjs4Q/getUpdates
이는 최근의 대화 내역을 가져오는 API 인데, 보다시피 https://api.telegram.org/bot<ACCESS_TOKEN>/getUpdates 형식으로 되어 있으며, 상세한 규격은 텔레그램 API 문서에서 정의하고 있습니다.
브라우저에 명령을 보냈을 때의 응답 화면은 아래와 같습니다 :
응답은 JSON 이라는 형식으로 받게 되는데, 중요한 것은 데이터 내에 "id" 와 "text" 필드에 봇과 나눈 대화의 방 번호와 메시지 내용이 들어있다는 사실입니다.
따라서 위의 예로부터 chat id (592001187) 를 얻어올 수 있고, 이제 봇으로부터 메시지를 받을 수 있는 모든 준비가 되었습니다.
메시지 전송해 보기
이제 메시지를 보내보겠습니다.
위의 예에서 액세스 토큰 값 5123174825:AAFQ3zjwNMVcmSD6lLOsJlh9GXX2CQZjs4Q , 방 번호 592001187 을 이용해서 브라우저 주소창에 다음 주소를 입력합니다 :
https://api.telegram.org/bot5123174825:AAFQ3zjwNMVcmSD6lLOsJlh9GXX2CQZjs4Q/sendMessage?chat_id=592001187&text=안녕하세요
이는 방 번호(chat_id)와 메시지(text) 를 파라미터로 받아 메시지를 전송(sendMessage)하는 텔레그램 API 로서, 규격은 동일 문서에 정의되어 있습니다.
실행 결과 화면은 다음과 같습니다:
좌측은 텔레그램 대화방, 우측은 브라우저 화면입니다. 브라우저에서 API 를 호출하면 text 로 넘겨받은 값(안녕하세요)으로 봇이 나와의 대화방에서 말을 겁니다.
참고로 유튜브 데모에서는 브라우저를 사용하지 않고 Google Colaboratory 를 이용하고 있습니다. 파이썬과 Colab 은 별도의 포스트로 얘기하겠습니다. 소스는 https://bit.ly/3hoNvMs 에서 확인할 수 있습니다.
'가상화폐 투자자 가이드' 카테고리의 다른 글
파이썬과 Google Colab 퀵스타트 (1) | 2022.03.10 |
---|---|
트레이딩 뷰 퀵스타트 (3) - 알림 설정 (1) | 2022.03.04 |
트레이딩 뷰 퀵스타트 (2) - 전략 작성 (0) | 2022.03.03 |
트레이딩 뷰 퀵스타트 (1) - 지표 작성 (0) | 2022.03.02 |
Cloud Functions 퀵스타트 - 텔레그램 봇 실행하기 (0) | 2022.03.01 |