TROISINH
Làm quen AgentThiết lập & Chạy agent đầu tiên

Kết nối agent với Telegram, Zalo, Discord — Biến chat app thành 'văn phòng' cho AI

Hướng dẫn kết nối AI agent với Telegram Bot, Zalo OA và Discord qua webhook. Từ cấu hình BotFather đến xử lý async messaging, mở rộng agent ra khỏi terminal.

Tại sao phải xây giao diện web khi người dùng đã sống cả ngày trong Telegram, Zalo hay Discord? Kết nối AI agent trực tiếp vào các ứng dụng nhắn tin không chỉ tiết kiệm thời gian thiết kế UI mà còn xóa bỏ rào cản cài đặt — biến điện thoại của khách hàng thành "remote control" cho agent mà không cần dòng code frontend nào.

Vấn đề

Xây dựng một website để người dùng tương tác với AI nghe có vẻ đơn giản: chỉ cần một ô chat và nút gửi. Nhưng thực tế production rất khác. Bạn cần hệ thống authentication (đăng nhập, quên mật khẩu), responsive design cho mobile, hosting server, SSL certificate, và chống spam. Chi phí không chỉ là code mà còn là "cognitive load" bắt người dùng rời khỏi workflow hiện tại để mở một tab mới.

Tệ hơn, app fatigue — người dùng không muốn tải thêm ứng dụng. Tại thị trường Việt Nam, nếu bạn yêu cầu khách hàng cài app mới để dùng AI, tỷ lệ churn tăng 80%. Họ đã có Zalo (60 triệu người dùng), đã có Telegram cho nhóm kỹ thuật, đã có Discord cho cộng đồng. Tại sao AI agent không thể "nhập cư" vào những nơi họ đang sống?

Vấn đề thứ ba là statelessness của web chat widget truyền thống. Khi user refresh trang, context mất. Khi họ chuyển từ mobile sang desktop, lịch sử chat không theo. Còn messaging apps? Chúng là distributed state machine tự nhiên — chat ID chính là session key, lịch sử được persist sẵn trên cloud của Telegram/Zalo.

Ý tưởng cốt lõi

Thay vì xây "nhà mới" cho agent, hãy thuê "mặt bằng" sẵn có. Telegram, Zalo, Discord cung cấp sẵn infrastructure: authentication (qua phone number hoặc account linking), notification push, rich media support (ảnh, voice, file), và một UI mà người dùng đã quen thuộc đến mức muscle memory.

Cấu trúc kết nối gồm ba lớp:

1. Transport Layer — Webhook vs Long Polling

Khi user gửi tin nhắn, cần một cách để server của bạn "biết" ngay lập tức. Telegram cung cấp hai chế độ:

  • Long Polling: Bot của bạn gọi getUpdates mỗi 30 giây. Đơn giản để dev local (dùng ngrok), nhưng không scalable.
  • Webhook: Telegram POST JSON payload đến URL bạn chỉ định ngay khi có tin nhắn. Tốc độ real-time, nhưng yêu cầu server có HTTPS và phải trả lời trong vòng 60 giây (nếu không Telegram sẽ retry).
# Cấu hình webhook cho Telegram
curl -F "url=https://yourdomain.com/webhook" \
     https://api.telegram.org/bot<TOKEN>/setWebhook

2. Identity & State Management

Chat ID (Telegram) hoặc User ID (Zalo) chính là user_id trong hệ thống của bạn. Đây là "session key" miễn phí và bền vững — khi user mở lại chat sau 3 ngày, context vẫn nằm trong chat_id đó. Bạn chỉ cần lưu mapping chat_id → agent_session trong Redis hoặc SQLite.

Với Zalo OA (Official Account), điểm mạnh là phone number = identity. User không cần tạo tài khoản mới; họ nhắn tin cho OA qua số điện thoại đã xác thực. Điều này cực kỳ quan trọng cho fintech và banking agents tại Việt Nam, nơi KYC (Know Your Customer) đã được xử lý ngầm qua Zalo.

3. Presentation & Interaction Patterns

Mỗi nền tảng có "ngôn ngữ" riêng:

  • Telegram: Inline keyboards (callback buttons), MarkdownV2 formatting, voice message transcription qua Whisper.
  • Zalo: ZNS (Zalo Notification Service) cho transactional messages (OTP, trạng thái đơn hàng) với mức giá ~200đ/tin; Follower Messages cho tương tác rich media (0–50đ/tin).
  • Discord: Slash commands (/analyze, /deploy) và ephemeral messages (chỉ user thấy, không lưu lịch sử channel).

Trong OpenClaw, bạn chỉ cần khai báo channel adapter:

# openclaw.channels.telegram
type: telegram
token: ${TELEGRAM_BOT_TOKEN}
webhook_path: /webhook/telegram
allowed_groups: ["-100123456789"]  # Restrict to specific groups

Agent sẽ nhận IncomingMessage event, xử lý qua LLM, rồi gửi OutgoingMessage qua cùng channel — tất cả qua một interface chuẩn mà không cần quan tâm user đang dùng Telegram hay Zalo.

The "Chat as State Machine" Insight

Điều quan trọng nhất: messaging là asynchronous by design. Khi user gửi "Phân tích báo cáo Q3", họ không đợi spinner quay 10 giây trên web. Họ gửi đi, đi làm việc khác, rồi nhận notification khi agent xong. Điều này phù hợp hoàn hảo với LLM latency (3–10 giây suy nghĩ). Web widget đồng bộ sẽ timeout; chat bất đồng bộ thì natural.

Tại sao nó hoạt động

Async Architecture Match: LLM là "thinker" chậm, messaging là "mailbox" nhanh. Webhook tách biệt "nhận yêu cầu" (HTTP 200 OK ngay) với "xử lý" (queue + worker). Điều này tránh được timeout và cho phép agent xử lý file 50MB mà không sợ browser disconnect.

Identity & Trust: Telegram dùng phone number linking; Zalo dùng số điện thoại thực; Discord dùng account verification. Bạn không cần xây dựng hệ thống auth phức tạp. User cũng tin tưởng hơn vì họ đang nói chuyện với "account chính thức" (có tick xanh) trên nền tảng họ đã tin dùng 5 năm, thay vì website lạ.

Push Notification Native: Khi agent hoàn thành task, tin nhắn đến như notification từ bạn bè. Open rate của ZNS (90%+) vượt trội so với email (20%) hay web push notification (10%).

Rich Context: Chat history tự nhiên là "episodic memory". Khi user nói "Xem lại cái đó hôm qua", bạn chỉ cần scroll up trong thread — không cần implement pagination phức tạp. Hơn nữa, voice messages được transcribed, ảnh được OCR, documents được lưu trữ tạm thời — tất cả miễn phí qua Bot API.

Rate Limiting as Guardrails: Telegram giới hạn 20 tin nhắn/phút cho group, 1 tin/giây cho private. Điều này buộc bạn phải implement queue và backpressure ngay từ đầu — một bảo vệ production tự nhiên chống spam và runaway agents.

Ý nghĩa thực tế

Tính năngTelegram BotZalo OADiscord Bot
Chi phíMiễn phíTrả tiền/ZNS (~200đ), Follower (~0–50đ)Miễn phí
Thị trườngGlobal, dev-friendlyViệt Nam (60M+ users)Gaming, community
IdentityUsername/PhonePhone number verifiedDiscord ID
Rate limits20 msg/min groupTheo gói OA5 msg/5s
Rich mediaTất cảHạn chế file lớnEmbed, attachments
Best forFAQ, dev alertsFintech, e-commerce VNInternal ops, gaming

Ai nên dùng gì?

  • Startup toàn cầu: Telegram cho beta testers. Setup 5 phút, không cần compliance phức tạp.
  • Doanh nghiệp Việt Nam: Zalo OA là bắt buộc cho customer-facing agents. Ngân hàng như Vietcombank, BIDV dùng ZNS cho OTP vì trust cao và không cần app riêng.
  • Team kỹ thuật/DevOps: Discord cho alerts và deploy commands. Slash command /rollback production kết hợp với ephemeral response (chỉ admin thấy) là pattern hoàn hảo.

Hạn chế cần biết

  • Silent failures: Telegram trả về HTTP 200 nhưng tin nhắn không gửi được nếu bot bị block bởi user. Bạn cần check ok: false trong response.
  • State fragmentation: Không có built-in conversation memory. Nếu bạn không lưu chat_id → context vào database, agent sẽ "quên" mọi thứ mỗi khi restart.
  • Markdown parsing: Telegram dùng MarkdownV2 với escape rules khắt khe (_* cần escape). Lỗi parsing thường gây "tin nhắn trống" mà không báo lỗi rõ ràng.
  • Cold start: Webhook yêu cầu public HTTPS URL. Dev local cần ngrok hoặc cloudflared, thêm một bước friction so với web widget đơn giản.

Đào sâu hơn

Tài liệu chính thức:

Bài viết liên quan TroiSinh:

Cùng cụm (Getting Started):

Cài đặt OpenClaw: Từ zero đến agent đầu tiên

Thiết lập runtime và chạy agent đầu tiên trước khi kết nối messaging

Viết SOUL.md đầu tiên: Cho agent một linh hồn

Định nghĩa personality và rules cho agent trước khi đưa vào Telegram

AGENTS.md: Thiết lập workspace rules

Cấu hình multi-agent và phân quyền cho channel integration

Đọc tiếp (Level 1 — Phát triển Agent):

Multi-channel Strategy: Cùng agent, nhiều kênh

Quản lý context thống nhất khi user chuyển từ Telegram sang Web Chat

Event-driven Agents: Trigger từ webhook, email

Kiến trúc async và queue cho high-throughput messaging agents

On this page