Zalo (Bot API)
Status: experimental. Direct messages only; groups coming soon per Zalo docs.Cần plugin
Zalo được phân phối dưới dạng plugin và không đi kèm trong bản cài đặt lõi.- Cài đặt qua CLI:
openclaw plugins install @openclaw/zalo - Hoặc chọn Zalo trong quá trình hướng dẫn ban đầu và xác nhận lời nhắc cài đặt
- Chi tiết: Plugins
Thiết lập nhanh (cho người mới)
- Cài đặt plugin Zalo:
- Từ bản mã nguồn:
openclaw plugins install ./extensions/zalo - Từ npm (nếu đã phát hành):
openclaw plugins install @openclaw/zalo - Hoặc chọn Zalo trong hướng dẫn ban đầu và xác nhận lời nhắc cài đặt
- Từ bản mã nguồn:
- Đặt token:
- Biến môi trường:
ZALO_BOT_TOKEN=... - Hoặc cấu hình:
channels.zalo.botToken: "...".
- Biến môi trường:
- Khởi động lại gateway (hoặc hoàn tất hướng dẫn ban đầu).
- Quyền truy cập DM mặc định là ghép cặp; phê duyệt mã ghép cặp khi liên hệ lần đầu.
Nó là gì
Zalo is a Vietnam-focused messaging app; its Bot API lets the Gateway run a bot for 1:1 conversations. It is a good fit for support or notifications where you want deterministic routing back to Zalo.- Một kênh Zalo Bot API do Gateway sở hữu.
- Định tuyến xác định: phản hồi luôn quay lại Zalo; mô hình không chọn kênh.
- DM dùng chung phiên chính của tác tử.
- Nhóm chưa được hỗ trợ (tài liệu Zalo ghi “coming soon”).
Thiết lập (nhanh)
1. Tạo bot token (Zalo Bot Platform)
- Truy cập https://bot.zaloplatforms.com và đăng nhập.
- Tạo bot mới và cấu hình các thiết lập.
- Sao chép bot token (định dạng:
12345689:abc-xyz).
2) Cấu hình token (biến môi trường hoặc cấu hình)
Ví dụ:ZALO_BOT_TOKEN=... (chỉ hoạt động cho tài khoản mặc định).
Hỗ trợ nhiều tài khoản: dùng channels.zalo.accounts với token theo từng tài khoản và name tùy chọn.
- Khởi động lại gateway. Zalo starts when a token is resolved (env or config).
- DM access defaults to pairing. Approve the code when the bot is first contacted.
Cách hoạt động (hành vi)
- Tin nhắn đến được chuẩn hóa vào phong bì kênh dùng chung với placeholder cho media.
- Phản hồi luôn định tuyến về cùng cuộc trò chuyện Zalo.
- Mặc định dùng long-polling; có chế độ webhook với
channels.zalo.webhookUrl.
Giới hạn
- Văn bản gửi đi được chia khối 2000 ký tự (giới hạn API Zalo).
- Tải lên/tải xuống media bị giới hạn bởi
channels.zalo.mediaMaxMb(mặc định 5). - Streaming bị chặn theo mặc định do giới hạn 2000 ký tự khiến streaming kém hữu ích.
Kiểm soát truy cập (DM)
Quyền truy cập DM
- Mặc định:
channels.zalo.dmPolicy = "pairing". Người gửi chưa biết sẽ nhận mã ghép cặp; tin nhắn bị bỏ qua cho đến khi được duyệt (mã hết hạn sau 1 giờ). - Phê duyệt qua:
openclaw pairing list zaloopenclaw pairing approve zalo <CODE>
- Pairing is the default token exchange. Details: Pairing
channels.zalo.allowFromchấp nhận ID người dùng dạng số (không có tra cứu tên người dùng).
Long-polling so với webhook
- Mặc định: long-polling (không cần URL công khai).
- Chế độ webhook: đặt
channels.zalo.webhookUrlvàchannels.zalo.webhookSecret.- Secret webhook phải dài 8–256 ký tự.
- URL webhook phải dùng HTTPS.
- Zalo gửi sự kiện kèm header
X-Bot-Api-Secret-Tokenđể xác minh. - Gateway HTTP xử lý yêu cầu webhook tại
channels.zalo.webhookPath(mặc định là đường dẫn URL webhook).
Các loại tin nhắn được hỗ trợ
- Tin nhắn văn bản: Hỗ trợ đầy đủ với chia khối 2000 ký tự.
- Tin nhắn hình ảnh: Tải xuống và xử lý ảnh đến; gửi ảnh qua
sendPhoto. - Sticker: Được ghi log nhưng chưa xử lý đầy đủ (không có phản hồi từ tác tử).
- Loại không hỗ trợ: Được ghi log (ví dụ: tin nhắn từ người dùng được bảo vệ).
Khả năng
| Tính năng | Trạng thái |
|---|---|
| Tin nhắn trực tiếp | ✅ Được hỗ trợ |
| Nhóm | ❌ Sắp ra mắt (theo tài liệu Zalo) |
| Media (hình ảnh) | ✅ Được hỗ trợ |
| Reaction | ❌ Không hỗ trợ |
| Threads | ❌ Không hỗ trợ |
| Polls | ❌ Không hỗ trợ |
| Lệnh gốc | ❌ Không hỗ trợ |
| Streaming | ⚠️ Bị chặn (giới hạn 2000 ký tự) |
Đích gửi (CLI/cron)
- Dùng chat id làm đích.
- Ví dụ:
openclaw message send --channel zalo --target 123456789 --message "hi".
Xử lý sự cố
Bot không phản hồi:- Kiểm tra token hợp lệ:
openclaw channels status --probe - Xác minh người gửi đã được phê duyệt (ghép cặp hoặc allowFrom)
- Kiểm tra log gateway:
openclaw logs --follow
- Đảm bảo URL webhook dùng HTTPS
- Xác minh secret token dài 8–256 ký tự
- Xác nhận endpoint HTTP của gateway có thể truy cập tại đường dẫn đã cấu hình
- Kiểm tra getUpdates polling không đang chạy (chúng loại trừ lẫn nhau)
Tham chiếu cấu hình (Zalo)
Cấu hình đầy đủ: Configuration Tùy chọn nhà cung cấp:channels.zalo.enabled: bật/tắt khởi động kênh.channels.zalo.botToken: bot token từ Zalo Bot Platform.channels.zalo.tokenFile: đọc token từ đường dẫn tệp.channels.zalo.dmPolicy:pairing | allowlist | open | disabled(mặc định: ghép cặp).channels.zalo.allowFrom: DM allowlist (user IDs).openrequires"*". The wizard will ask for numeric IDs.channels.zalo.mediaMaxMb: giới hạn media vào/ra (MB, mặc định 5).channels.zalo.webhookUrl: bật chế độ webhook (yêu cầu HTTPS).channels.zalo.webhookSecret: secret webhook (8–256 ký tự).channels.zalo.webhookPath: đường dẫn webhook trên máy chủ HTTP của gateway.channels.zalo.proxy: URL proxy cho các yêu cầu API.
channels.zalo.accounts.<id>.botToken: per-account token.channels.zalo.accounts.<id>.tokenFile: per-account token file.channels.zalo.accounts.<id>.name`: tên hiển thị.channels.zalo.accounts.<id>.enabled: enable/disable account.channels.zalo.accounts.<id>.dmPolicy: per-account DM policy.channels.zalo.accounts.<id>.allowFrom: per-account allowlist.channels.zalo.accounts.<id>.webhookUrl: per-account webhook URL.channels.zalo.accounts.<id>``.webhookSecret: webhook secret theo từng tài khoản.channels.zalo.accounts.<id>``.webhookPath: đường dẫn webhook theo từng tài khoản.channels.zalo.accounts.<id>.proxy`: URL proxy theo từng tài khoản.