Telegram 툴킷은 에이전트와 워크플로우가 Telegram 봇과 상호작용할 수 있게 합니다. 메시지 전송 및 편집, 미디어 전송, 채팅 구성원 관리, 초대 링크 생성, 인바운드 메시지에서 워크플로우를 트리거하기 위한 웹훅 등록을 지원합니다.
Telegram 봇과 자격 증명은 @BotFather라는 Telegram 봇을 통해 관리됩니다 — 웹 개발자 콘솔은 없습니다.
전제 조건
| 요구 사항 | 세부 사항 |
|---|
| Telegram 계정 | @BotFather와 상호작용하는 데 필요 |
1단계 — Telegram 봇 생성
새 봇 생성
/newbot 명령을 보내고 지시를 따릅니다:| 프롬프트 | 세부 사항 |
|---|
| 봇 이름 | 사람의 읽을 수 있는 표시 이름 (예: My App) |
| 사용자 이름 | 고유해야 하며 bot으로 끝나야 합니다 (예: myapp_bot) |
봇 토큰 복사
BotFather가 봇 토큰이 포함된 성공 메시지로 응답합니다 — 123456789:ABCdefGhIJKlmNoPQRsTUVwxyZ와 같습니다. 복사하여 안전하게 저장하세요.
BotFather의 /setuserpic 명령을 사용하여 앱 로고와 일치하는 프로필 사진을 설정하세요. 인식 가능한 이미지는 봇이 사용자에게 전문적이고 신뢰할 수 있게 보이게 합니다.
2단계 — EK에 토큰 추가
- 워크플로우에서 Telegram 툴킷 단계를 추가합니다.
- 연결 선택 → 연결 만들기를 클릭합니다.
- 연결 이름을 입력하고 봇 토큰을 붙여넣습니다.
- 저장을 클릭합니다.
- 에이전트 빌더에서 에이전트를 엽니다.
- 왼쪽 사이드바의 툴킷 탭으로 이동합니다.
- Telegram을 찾고 에이전트에 추가를 클릭합니다.
- Telegram Bot Token 아래에 봇 토큰을 붙여넣습니다.
- 저장을 클릭합니다.
토큰 관리
봇 토큰은 봇의 마스터 키입니다. 공유하지 마세요, 공개 레포지토리에 커밋하지 마세요, 또는 클라이언트 측 코드에서 노출하지 마세요.
토큰이 실수로 유출된 경우 즉시 폐기하세요:
- @BotFather에게 메시지를 보냅니다
/mybots를 보냅니다
- 봇을 선택합니다
- 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 Webhook | Telegram에게 봇 메시지를 워크플로우로 전달하도록 요청합니다 |
| Deregister Webhook | 웹훅을 제거하고 메시지 전달을 중지합니다 |
트리거 — New Message
누군가가 Telegram 봇에 메시지를 보낼 때마다 자동으로 워크플로우를 시작합니다.
설정:
트리거 추가
New Message 트리거를 워크플로우의 첫 번째 단계로 추가합니다. 트리거 구성 패널에서 /tool-webhook/{workflow-id} URL을 복사합니다.
웹훅 등록
Register Webhook 단계를 사용하여 Telegram에게 해당 URL로 메시지를 전달하도록 요청합니다. 한 번만 실행하세요 — 아래 웹훅 등록을 참조하세요. 테스트
봇에 테스트 메시지를 보냅니다. 워크플로우가 실행되고 모든 메시지 데이터가 변수로 사용 가능합니다.
사용 가능한 트리거 변수:
| 변수 | 설명 |
|---|
{{ 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 }}
Telegram 채팅에 사진, 동영상, 스티커 또는 애니메이션 GIF를 보냅니다.
핵심 입력:
| 입력 | 설명 |
|---|
| Chat ID | 전송할 채팅 |
| Media Type | photo, 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 ID | Send 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
채팅에 대한 메타데이터를 가져옵니다.
핵심 입력:
다운스트림 단계에서 값 참조:
- 채팅 제목:
{{ 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와 같으면 메시지 전송을 건너뛰고 대신 오류를 처리합니다.
Create Invite Link
그룹 또는 채널의 새 초대 링크를 생성합니다.
봇은 대상 채팅에서 “사용자 초대” 권한이 있는 관리자여야 합니다.
핵심 입력:
| 입력 | 설명 |
|---|
| 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_request는 true가 됩니다.
웹훅 설정 작업
이 두 단계는 New Message 트리거를 봇에 연결합니다. 워크플로우당 한 번만 실행하세요.
Register Webhook
Telegram에게 봇에서 워크플로우 URL로 메시지를 전달하기 시작하도록 요청합니다.
핵심 입력:
| 입력 | 설명 |
|---|
| URL | New 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 Updates를 true로 설정하여 다시 등록 |