Regional platforms
Zalo
Status: eksperimental. Pesan langsung dan obrolan grup telah diimplementasikan; tabel Kemampuan di bawah mencerminkan perilaku yang telah diverifikasi pada bot Zalo Bot Creator / Marketplace.
Plugin bawaan
Zalo disertakan sebagai plugin bawaan dalam rilis OpenClaw saat ini, sehingga build terpaket tidak memerlukan instalasi terpisah.
Pada build lama atau instalasi khusus yang tidak menyertakan Zalo, instal paket npm secara langsung:
- Instal:
openclaw plugins install @openclaw/zalo - Versi yang disematkan:
openclaw plugins install @openclaw/zalo@2026.6.11 - Dari checkout lokal:
openclaw plugins install ./path/to/local/zalo-plugin - Detail: Plugin
Penyiapan cepat
- Buat token bot di https://bot.zaloplatforms.com (masuk, buat bot, konfigurasikan pengaturan). Token tersebut adalah
numeric_id:secret; untuk bot Marketplace, token runtime yang dapat digunakan mungkin muncul dalam pesan sambutan bot. - Tetapkan token, baik sebagai env
ZALO_BOT_TOKEN=...(hanya akun default) maupun dalam konfigurasi. - Mulai ulang Gateway.
- Setujui kode pemasangan saat kontak DM pertama (kebijakan DM default adalah pemasangan).
Konfigurasi minimal:
{ channels: { zalo: { enabled: true, accounts: { default: { botToken: "12345689:abc-xyz", dmPolicy: "pairing", }, }, }, },}Multiakun: tambahkan entri lainnya di bawah channels.zalo.accounts.<id>, masing-masing dengan botToken/name sendiri. channels.zalo.botToken (datar, tanpa accounts) adalah bentuk singkat akun tunggal lama; utamakan accounts.<id>.* untuk konfigurasi baru.
Apa itu Zalo
Zalo adalah aplikasi perpesanan yang berfokus pada Vietnam. Bot API-nya memungkinkan Gateway menjalankan bot untuk percakapan 1:1 dan obrolan grup, dengan perutean deterministik kembali ke Zalo (model tidak pernah memilih saluran).
Halaman ini membahas bot Zalo Bot Creator / Marketplace. Bot Zalo Official Account (OA) merupakan permukaan produk yang berbeda dan mungkin berperilaku berbeda; halaman ini tidak membahasnya.
Cara kerjanya
- Pesan masuk dinormalisasi ke dalam amplop saluran bersama dengan placeholder media.
- Balasan selalu dirutekan kembali ke obrolan Zalo yang sama; balasan kutipan tidak digunakan (
replyToModeselalu dinonaktifkan). - Long-polling (
getUpdates) digunakan secara default; mode webhook tersedia melaluichannels.zalo.webhookUrl. - Grup memerlukan @mention untuk memicu bot; hal ini tidak dapat dikonfigurasi per saluran.
Batas
| Batas | Nilai |
|---|---|
| Ukuran potongan teks keluar | 2000 karakter (batas API Zalo) |
| Ukuran media (masuk/keluar) | channels.zalo.mediaMaxMb, default 5 MB |
| Isi permintaan webhook | 1 MB, batas waktu baca 30s |
| Batas laju webhook | 120 permintaan / 60s per jalur+IP klien, lalu HTTP 429 |
| Tombstone pemutaran ulang webhook | 30 hari, hingga 20.000 peristiwa selesai per akun (dikunci berdasarkan ID pesan) |
Kontrol akses
Pesan langsung
channels.zalo.dmPolicy:pairing(default) |allowlist|open|disabled.- Pemasangan: pengirim yang tidak dikenal menerima kode pemasangan; pesan diabaikan sampai disetujui. Kode kedaluwarsa setelah 1 jam.
openclaw pairing list zaloopenclaw pairing approve zalo <CODE>- Detail: Pemasangan
channels.zalo.allowFrommenerima ID pengguna Zalo numerik (tanpa pencarian nama pengguna).openmemerlukan"*".
Grup
Obrolan grup didukung oleh plugin (chatTypes: ["direct", "group"]) dan dibatasi oleh mention serta kebijakan grup:
channels.zalo.groupPolicy:open|allowlist|disabled.channels.zalo.groupAllowFrommembatasi ID pengirim yang dapat memicu bot dalam grup; kembali menggunakanallowFromjika tidak ditetapkan.- Resolusi default: ketika
channels.zalodikonfigurasi,groupPolicyyang tidak ditetapkan diselesaikan menjadiopen. Ketikachannels.zalotidak ada sama sekali, runtime ditutup secara aman keallowlist. - Peringatan berdasarkan laporan penggunaan nyata: pada beberapa penyiapan bot Marketplace, bot sama sekali tidak dapat ditambahkan ke grup. Jika Anda mengalami hal tersebut, verifikasikan melalui pengaturan Zalo Bot Platform untuk bot Anda; ini merupakan batasan dari sisi platform, bukan kebijakan OpenClaw.
Long-polling dibandingkan webhook
- Default: long-polling (tidak memerlukan URL publik).
- Mode webhook: tetapkan
channels.zalo.webhookUrldanchannels.zalo.webhookSecret.- URL webhook harus menggunakan HTTPS.
- Rahasia webhook harus terdiri dari 8-256 karakter.
- Zalo mengirim peristiwa dengan header
X-Bot-Api-Secret-Token, yang diperiksa menggunakan perbandingan waktu konstan. - HTTP Gateway menangani permintaan webhook di
channels.zalo.webhookPath(secara default menggunakan jalur URL webhook). - Permintaan harus menggunakan
Content-Type: application/json(atau jenis media+json). - HTTP 200 hanya dikembalikan setelah peristiwa mentah disimpan secara persisten; kegagalan penyimpanan mengembalikan HTTP 500.
- Polling getUpdates dan webhook saling eksklusif menurut dokumentasi API Zalo.
Jenis pesan yang didukung
- Teks: dukungan penuh, dibagi menjadi potongan 2000 karakter.
- Media: masuk/keluar, dibatasi oleh
mediaMaxMb. - Reaksi, utas, jajak pendapat, perintah native: tidak didukung oleh plugin.
- Streaming: plugin mendeklarasikan kemampuan block-streaming, tetapi Zalo tidak memiliki opsi khusus untuk penyesuaian antrean keluar/penggabungan teks (berbeda dengan beberapa saluran regional lainnya); verifikasikan perilaku saat ini di lingkungan Anda jika hal ini penting bagi kasus penggunaan Anda.
Kemampuan
| Fitur | Status |
|---|---|
| Pesan langsung | Didukung |
| Grup | Didukung (dibatasi oleh mention) |
| Media (masuk/keluar) | Didukung, dibatasi oleh mediaMaxMb |
| Reaksi | Tidak didukung |
| Utas | Tidak didukung |
| Jajak pendapat | Tidak didukung |
| Perintah native | Tidak didukung |
| Balas-ke / kutipan | Tidak digunakan (selalu dinonaktifkan) |
Target pengiriman (CLI/cron)
Gunakan ID obrolan sebagai target:
openclaw message send --channel zalo --target 123456789 --message "hi"Pemecahan masalah
Bot tidak merespons:
- Periksa token:
openclaw channels status --probe - Pastikan pengirim telah disetujui (pemasangan atau
allowFrom) - Periksa log Gateway:
openclaw logs --follow
Webhook tidak menerima peristiwa:
- Pastikan URL webhook menggunakan HTTPS
- Pastikan rahasia terdiri dari 8-256 karakter
- Pastikan endpoint HTTP Gateway dapat dijangkau pada jalur yang dikonfigurasi
- Pastikan polling getUpdates tidak berjalan secara bersamaan (keduanya saling eksklusif)
- Lonjakan permintaan dapat menghasilkan HTTP 429 (120 permintaan / 60s per jalur+IP); tunggu dan coba lagi
Referensi konfigurasi
Konfigurasi lengkap: Konfigurasi
| Pengaturan | Deskripsi | Default |
|---|---|---|
channels.zalo.enabled |
Aktifkan/nonaktifkan proses awal saluran | true |
channels.zalo.accounts.<id>.botToken |
Token bot dari Zalo Bot Platform | - |
channels.zalo.accounts.<id>.tokenFile |
Baca token dari berkas (symlink ditolak) | - |
channels.zalo.accounts.<id>.name |
Nama tampilan | - |
channels.zalo.accounts.<id>.enabled |
Aktifkan/nonaktifkan akun ini | true |
channels.zalo.accounts.<id>.dmPolicy |
Kebijakan DM per akun | pairing |
channels.zalo.accounts.<id>.allowFrom |
Daftar izin DM (ID pengguna) | - |
channels.zalo.accounts.<id>.groupPolicy |
Kebijakan grup per akun | lihat Grup |
channels.zalo.accounts.<id>.groupAllowFrom |
Daftar izin pengirim grup; kembali menggunakan allowFrom |
- |
channels.zalo.accounts.<id>.mediaMaxMb |
Batas media masuk/keluar (MB) | 5 |
channels.zalo.accounts.<id>.webhookUrl |
Aktifkan mode webhook (HTTPS diperlukan) | - |
channels.zalo.accounts.<id>.webhookSecret |
Rahasia webhook (8-256 karakter) | - |
channels.zalo.accounts.<id>.webhookPath |
Jalur webhook pada server HTTP Gateway | jalur URL webhook |
channels.zalo.accounts.<id>.proxy |
URL proxy untuk permintaan API | - |
channels.zalo.accounts.<id>.responsePrefix |
Penimpaan prefiks respons keluar | - |
channels.zalo.defaultAccount |
Akun default ketika beberapa akun dikonfigurasi | default |
channels.zalo.botToken, channels.zalo.dmPolicy, dan kunci tingkat atas datar lainnya merupakan bentuk singkat akun tunggal lama untuk bidang di atas; kedua bentuk didukung.
Opsi env: ZALO_BOT_TOKEN=... hanya menyelesaikan token akun default.
Terkait
- Ikhtisar Saluran - semua saluran yang didukung
- Pemasangan - autentikasi DM dan alur pemasangan
- Grup - perilaku obrolan grup dan pembatasan mention
- Perutean Saluran - perutean sesi untuk pesan
- Keamanan - model akses dan penguatan