본문 바로가기

백엔드/에이피아이

텔레그램 웹훅, 텔레그램 봇으로 실시간 소통하기: 완벽 가이드

반응형

텔레그램 봇을 활용하여 실시간으로 메시지를 받거나 시스템의 알림을 받고 싶으신가요? 웹훅(Webhook)은 특정 이벤트가 발생했을 때 텔레그램이 여러분이 지정한 URL로 자동으로 메시지를 보내주는 방식으로 이를 통해 실시간 메시지를 수신이 가능합니다. 이 글에서는 서버 개발에 대한 깊은 지식 없이도 텔레그램 봇을 생성하고 웹훅을 설정하는 텔레그램 '내부' 설정에 초점을 맞춰 설명해 드리겠습니다.

1. 텔레그램 봇 생성 및 토큰 확보

웹훅 설정을 시작하기 전에 먼저 텔레그램 봇이 있어야 합니다. 봇을 만들고 이 봇을 제어할 수 있는 고유한 봇 토큰(Bot Token)을 받는 과정은 매우 간단합니다.

BotFather 찾기:

  • 텔레그램 앱을 엽니다.
  • 검색창에 @BotFather를 입력하여 공식 BotFather 봇을 찾아 대화를 시작합니다.

새 봇 생성 시작:

  • BotFather에게 /newbot 명령어를 입력합니다.

봇 이름 및 사용자명 지정:

  • 봇의 표시 이름(예: 내 시스템 알림 봇)을 입력합니다. 이 이름은 사용자들이 봇과의 채팅에서 보게 될 이름입니다.
  • 이어서 봇의 사용자명(예: MySystemAlerts_bot)을 입력합니다. 사용자명은 반드시 _bot으로 끝나야 하며, 텔레그램 내에서 고유해야 합니다.

봇 토큰 확보:

  • 봇 생성이 완료되면 BotFather가 축하 메시지와 함께 HTTP API 토큰을 알려줍니다.
  • 이 토큰은 여러분의 봇을 제어하는 열쇠와 같으므로 절대 다른 사람에게 노출되지 않도록 안전하게 보관해야 합니다.
  • 예시: 123456:ABC-DEF1234ghIkl-zyx57W2v1u123ew11

2. 웹훅 URL 준비 (텔레그램 설정만을 위한 전제)

텔레그램 웹훅을 설정하려면, 텔레그램이 이벤트를 보낼 외부에서 접근 가능한 URL이 필요합니다. 이 URL은 텔레그램으로부터 HTTP POST 요청을 받아 처리할 수 있는 여러분의 서버나 웹 서비스의 주소가 됩니다.

여기서 중요한 점은 이 URL이 HTTPS 프로토콜을 사용해야 한다는 것입니다. 텔레그램은 보안상의 이유로 HTTP 프로토콜을 사용하는 웹훅 URL은 허용하지 않습니다. 이 엔드포인트를 어떻게 구성하는지는 이 글의 범위를 벗어나지만, 웹훅 설정을 위한 필수 전제 조건임을 기억해 주세요.

3. 텔레그램에 웹훅 URL 설정 (setWebhook API 호출)

이제 봇 토큰과 텔레그램 이벤트가 전달될 URL이 준비되었으니, 텔레그램 서버에 웹훅을 등록할 차례입니다. 텔레그램 Bot API가 제공하는 setWebhook 메서드를 사용하면 됩니다.

가장 간단한 방법은 웹 브라우저나 cURL 명령어를 이용하는 것입니다.

① 웹 브라우저를 이용하는 방법:

다음 형식의 URL을 만들어서 웹 브라우저 주소창에 붙여 넣고 실행합니다.

https://api.telegram.org/bot[봇-토큰]/setWebhook?url=[유저-엔드포인트-URL]
  • [봇-토큰] 부분에는 BotFather에게 받은 봇 토큰을 입력합니다.
  • [유저-엔드포인트-URL] 부분에는 텔레그램 이벤트가 전달될 여러분의 HTTPS URL을 입력합니다.

예시:

봇 토큰이 123456:ABC-DEF이고, 웹훅 엔드포인트 URL이 https://my-awesome-service.com/telegram-notifications라면 다음과 같이 됩니다.

https://api.telegram.org/bot123456:ABC-DEF/setWebhook?url=https://my-awesome-service.com/telegram-notifications

② cURL 명령어를 이용하는 방법:

터미널이나 명령 프롬프트에서 다음 명령어를 실행합니다.

curl -F "url=https://[여러분의-웹훅-엔드포인트-URL]" \
"https://api.telegram.org/bot[당신의-봇-토큰]/setWebhook"

성공적으로 웹훅이 설정되면, 웹 브라우저나 cURL의 응답으로 다음과 같은 JSON 메시지를 받게 됩니다.

{"ok":true,"result":true,"description":"Webhook was set"}

이 메시지는 텔레그램 웹훅이 성공적으로 등록되었음을 의미합니다.

4. 웹훅 정보 확인 및 삭제 (getWebhookInfo, deleteWebhook)

웹훅이 제대로 설정되었는지 확인하거나, 더 이상 필요 없는 웹훅을 삭제하고 싶을 때도 텔레그램 Bot API를 활용할 수 있습니다.

  • 현재 웹훅 정보 확인 (getWebhookInfo):
    • 웹 브라우저 주소창에 다음 URL을 입력합니다. 
    • https://api.telegram.org/bot[당신의-봇-토큰]/getWebhookInfo
    • 등록된 웹훅 URL, 마지막 오류 정보, 보류 중인 업데이트 수 등 상세 정보를 확인할 수 있습니다.
  • 웹훅 삭제 (deleteWebhook):
    • 새로운 웹훅을 설정하기 전에 기존 웹훅을 삭제해야 하는 경우가 있습니다. 다음 URL을 웹 브라우저에 입력하여 웹훅을 삭제할 수 있습니다.
      https://api.telegram.org/bot[당신의-봇-토큰]/deleteWebhook
    • 성공 시 다음과 같은 응답을 받게 됩니다.
      {"ok":true,"result":true,"description":"Webhook was deleted"}

5. 웹훅 설정 완료!

이제 텔레그램 봇은 웹훅을 통해 텔레그램 서버로부터 메시지나 다른 이벤트 업데이트를 자동으로 받아볼 준비가 완료되었습니다. 봇에게 메시지를 보내거나 봇이 있는 채널/그룹에서 활동하면, 설정된 웹훅 URL로 텔레그램 업데이트가 전송됩니다.

728x90
반응형