메인 콘텐츠로 건너뛰기
Telegram 툴킷은 에이전트와 워크플로우가 Telegram 봇과 상호작용할 수 있게 합니다. 메시지 전송 및 편집, 미디어 전송, 채팅 구성원 관리, 초대 링크 생성, 인바운드 메시지에서 워크플로우를 트리거하기 위한 웹훅 등록을 지원합니다. Telegram 봇과 자격 증명은 @BotFather라는 Telegram 봇을 통해 관리됩니다 — 웹 개발자 콘솔은 없습니다.

전제 조건

요구 사항세부 사항
Telegram 계정@BotFather와 상호작용하는 데 필요

1단계 — Telegram 봇 생성

1

@BotFather 열기

Telegram을 열고 @BotFather와 대화를 시작합니다.
2

새 봇 생성

/newbot 명령을 보내고 지시를 따릅니다:
프롬프트세부 사항
봇 이름사람의 읽을 수 있는 표시 이름 (예: My App)
사용자 이름고유해야 하며 bot으로 끝나야 합니다 (예: myapp_bot)
3

봇 토큰 복사

BotFather가 봇 토큰이 포함된 성공 메시지로 응답합니다 — 123456789:ABCdefGhIJKlmNoPQRsTUVwxyZ와 같습니다. 복사하여 안전하게 저장하세요.
BotFather의 /setuserpic 명령을 사용하여 앱 로고와 일치하는 프로필 사진을 설정하세요. 인식 가능한 이미지는 봇이 사용자에게 전문적이고 신뢰할 수 있게 보이게 합니다.

2단계 — EK에 토큰 추가

  1. 워크플로우에서 Telegram 툴킷 단계를 추가합니다.
  2. 연결 선택연결 만들기를 클릭합니다.
  3. 연결 이름을 입력하고 봇 토큰을 붙여넣습니다.
  4. 저장을 클릭합니다.

토큰 관리

봇 토큰은 봇의 마스터 키입니다. 공유하지 마세요, 공개 레포지토리에 커밋하지 마세요, 또는 클라이언트 측 코드에서 노출하지 마세요.
토큰이 실수로 유출된 경우 즉시 폐기하세요:
  1. @BotFather에게 메시지를 보냅니다
  2. /mybots를 보냅니다
  3. 봇을 선택합니다
  4. API Token현재 토큰 폐기를 탭합니다
새 토큰이 생성됩니다. EK에서 새 값으로 연결을 업데이트하세요.

사용 가능한 도구

도구설명
New Message (트리거)봇에 메시지가 전송되면 워크플로우를 시작합니다
Send Text Message봇에서 모든 채팅으로 텍스트 메시지를 보냅니다
Send Media사진, 동영상, 스티커 또는 애니메이션 GIF를 보냅니다
Edit Message Text이전에 보낸 메시지의 텍스트를 업데이트합니다
Delete Message채팅에서 메시지를 삭제합니다
Get Chat Info채팅에 대한 메타데이터를 가져옵니다
Get Chat Member채팅에서 사용자의 구성원 상태를 조회합니다
Create Invite Link그룹 또는 채널의 초대 링크를 생성합니다
Register WebhookTelegram에게 봇 메시지를 워크플로우로 전달하도록 요청합니다
Deregister Webhook웹훅을 제거하고 메시지 전달을 중지합니다

트리거 — New Message

누군가가 Telegram 봇에 메시지를 보낼 때마다 자동으로 워크플로우를 시작합니다. 설정:
1

트리거 추가

New Message 트리거를 워크플로우의 첫 번째 단계로 추가합니다. 트리거 구성 패널에서 /tool-webhook/{workflow-id} URL을 복사합니다.
2

웹훅 등록

Register Webhook 단계를 사용하여 Telegram에게 해당 URL로 메시지를 전달하도록 요청합니다. 한 번만 실행하세요 — 아래 웹훅 등록을 참조하세요.
3

테스트

봇에 테스트 메시지를 보냅니다. 워크플로우가 실행되고 모든 메시지 데이터가 변수로 사용 가능합니다.
사용 가능한 트리거 변수:
변수설명
{{ trigger.body.message.text }}사용자가 보낸 메시지 텍스트
{{ trigger.body.message.chat.id }}채팅 ID — 모든 전송 단계에서 이 ID를 사용합니다
{{ trigger.body.message.from.id }}발신자의 Telegram 사용자 ID
{{ trigger.body.message.from.first_name }}발신자의 이름
{{ trigger.body.message.from.username }}발신자의 사용자 이름 (비어 있을 수 있음)
{{ trigger.body.message.message_id }}인바운드 메시지의 ID
{{ trigger.body.update_id }}Telegram의 고유 업데이트 ID

메시징 작업

Send Text Message

봇에서 모든 Telegram 채팅으로 텍스트 메시지를 보냅니다. 핵심 입력:
입력설명
Chat ID전송할 채팅. 워크플로우를 트리거한 사람의 경우 {{ trigger.body.message.chat.id }}를 사용합니다. 고정 그룹 또는 채널의 경우 숫자 ID를 붙여넣습니다.
Message전송할 텍스트. 변수와 정적 텍스트를 혼합합니다. 예: 안녕하세요 {{ trigger.body.message.from.first_name }}님, 요청이 접수되었습니다.
Format일반 텍스트는 비워 두세요. <b>굵게</b> / <i>기울임꼴</i>을 위해 HTML로 설정합니다. Markdown을 위해 MarkdownV2로 설정합니다 (특수 문자가 자동으로 이스케이프됨).
Disable Web Page Preview링크 미리보기를 억제하려면 true로 설정합니다
Message Thread ID선택 사항 — 포럼 슈퍼그룹에만 해당
Reply Markup선택 사항 — 인라인 키보드 또는 사용자 지정 답장 키보드용 JSON 객체
다운스트림 단계에서 출력 참조:
  • 메시지 ID (이후 편집 또는 삭제에 필요): {{ step.output.message_id }}
  • 채팅 ID: {{ step.output.chat_id }}

Send Media

Telegram 채팅에 사진, 동영상, 스티커 또는 애니메이션 GIF를 보냅니다. 핵심 입력:
입력설명
Chat ID전송할 채팅
Media Typephoto, video, sticker, animation 중 하나여야 합니다
Media URL파일에 대한 공개 접근 가능한 HTTPS URL — Telegram이 직접 가져옴
Media ID또는 이전에 업로드된 파일의 Telegram file_id. Media URL 또는 Media ID 중 하나를 제공하세요. 둘 다 제공하지 마세요.
Caption미디어 아래에 표시되는 선택적 텍스트. Format을 통해 HTML/MarkdownV2를 지원합니다.
Format캡션의 파싱 모드
Message Thread ID선택 사항 — 포럼 슈퍼그룹 토픽용
Media URL이나 Media ID가 모두 제공되지 않으면 단계가 오류를 반환합니다. URL은 공개적으로 접근 가능해야 합니다 — 로컬 또는 프라이빗 URL은 작동하지 않습니다.

Edit Message Text

봇이 이전에 보낸 메시지의 텍스트를 업데이트합니다. 핵심 입력:
입력설명
Chat ID원본 메시지가 있는 채팅
Message IDSend Text Message 출력의 message_id{{ step.output.message_id }}
Text새 메시지 내용
Format새 텍스트의 파싱 모드 (비어 있음 = 일반 텍스트, HTML, 또는 MarkdownV2)
예시 사용 사례: 먼저 “요청을 처리하고 있습니다…”를 보냅니다. 워크플로우 로직을 실행합니다. 그런 다음 최종 결과로 해당 메시지를 편집합니다 — 사용자는 두 개가 아닌 하나의 메시지를 보게 됩니다.

Delete Message

채팅에서 메시지를 삭제합니다. 핵심 입력:
입력설명
Chat ID메시지가 있는 채팅
Message ID삭제할 메시지의 message_id
봇은 채팅에서 관리자가 아닌 한 자체 메시지만 삭제할 수 있습니다. Telegram은 또한 시간 제한을 부과합니다 — 48시간이 지난 메시지는 일반적으로 봇이 삭제할 수 없습니다.

채팅 및 구성원 작업

Get Chat Info

채팅에 대한 메타데이터를 가져옵니다. 핵심 입력:
입력설명
Chat ID조회할 채팅
다운스트림 단계에서 값 참조:
  • 채팅 제목: {{ step.output.title }}
  • 설명: {{ step.output.description }}
  • 초대 링크: {{ step.output.invite_link }}

Get Chat Member

채팅에서 특정 사용자를 조회하고 구성원 상태와 역할을 반환합니다. 핵심 입력:
입력설명
Chat ID조회할 채팅
User ID조회할 Telegram 사용자 ID. 워크플로우를 트리거한 사람의 경우 {{ trigger.body.message.from.id }}를 사용합니다.
다운스트림 단계에서 값 참조:
  • 상태: {{ step.output.status }}
  • 사용자 이름: {{ step.output.username }}
가능한 상태 값: creator, administrator, member, restricted, left, kicked 예시 사용 사례: {{ step.output.status }}를 확인합니다 — left 또는 kicked와 같으면 메시지 전송을 건너뛰고 대신 오류를 처리합니다. 그룹 또는 채널의 새 초대 링크를 생성합니다.
봇은 대상 채팅에서 “사용자 초대” 권한이 있는 관리자여야 합니다.
핵심 입력:
입력설명
Chat ID그룹 또는 채널
Name선택적 링크 레이블 (최대 32자), Telegram 관리 패널에서 표시됨
Expire Date선택 사항. 링크가 만료되는 ISO-8601 문자열. 예: 2026-12-31T23:59:59Z. 내부적으로 unix 타임스탬프로 변환됩니다.
Member Limit선택 사항. 이 링크를 통해 가입할 수 있는 최대 인원 (1-99,999)
다운스트림 단계에서 링크 참조:
  • 초대 URL: {{ step.output.invite_link }}
출력의 expire_date는 ISO 형식이 아닌 unix 타임스탬프(정수 초)입니다. 채팅이 새 구성원에게 관리자 승인을 요구하는 경우 creates_join_requesttrue가 됩니다.

웹훅 설정 작업

이 두 단계는 New Message 트리거를 봇에 연결합니다. 워크플로우당 한 번만 실행하세요.

Register Webhook

Telegram에게 봇에서 워크플로우 URL로 메시지를 전달하기 시작하도록 요청합니다. 핵심 입력:
입력설명
URLNew Message 트리거 패널의 /tool-webhook/{workflow-id} URL
Allowed Updates일반 메시지만 수신하려면 ["message"]로 설정합니다 (권장). 동일한 기본값을 사용하려면 비워 둡니다.
Secret Token선택 사항이지만 권장됩니다. 임의의 문자열 (예: my-secret-abc123). Telegram이 모든 웹훅 요청 헤더에 이를 포함하여 요청이 진본인지 확인할 수 있습니다.
Drop Pending Updates웹훅이 등록되기 전에 도착한 메시지를 무시하려면 true로 설정합니다

Deregister Webhook

웹훅을 제거하고 Telegram이 워크플로우로 메시지를 전달하는 것을 중지합니다. 핵심 입력:
입력설명
Drop Pending Updates웹훅이 활성 상태인 동안 대기열에 추가된 메시지를 폐기하려면 true로 설정합니다

문제 해결

증상가능한 원인해결
워크플로우가 새 메시지에서 실행되지 않음웹훅이 등록되지 않았거나 잘못된 URL을 가리킴올바른 트리거 URL로 Register Webhook 실행
401 Unauthorized봇 토큰이 유효하지 않거나 폐기됨토큰을 확인하거나 @BotFather를 통해 새 토큰 생성
미디어가 전달되지 않음URL이 공개적으로 접근 가능하지 않음공개 HTTPS URL 사용 — 로컬 또는 프라이빗 URL은 작동하지 않음
메시지를 삭제할 수 없음메시지가 48시간이 지났거나 봇이 관리자가 아님봇은 관리자 권한이 없으면 최근 메시지만 삭제할 수 있음
초대 링크의 creates_join_request: true채팅이 새 구성원에게 관리자 승인을 요구함이는 예상된 동작입니다 — 사용자는 가입 전 승인되어야 합니다
오래된 메시지가 워크플로우를 트리거웹훅 등록 시 대기 중인 업데이트가 지워지지 않음Drop Pending Updatestrue로 설정하여 다시 등록