Zalo Personal (tidak resmi)
Status: eksperimental. Integrasi ini mengotomatisasi akun pribadi Zalo melaluizca-js native di dalam OpenClaw.
Peringatan: Ini adalah integrasi tidak resmi dan dapat mengakibatkan akun ditangguhkan/diblokir. Gunakan dengan risiko Anda sendiri.
Plugin bawaan
Zalo Personal dikirim sebagai plugin bawaan dalam rilis OpenClaw saat ini, jadi build paket normal tidak memerlukan instalasi terpisah. Jika Anda menggunakan build lama atau instalasi kustom yang tidak menyertakan Zalo Personal, instal secara manual:- Instal melalui CLI:
openclaw plugins install @openclaw/zalouser - Atau dari source checkout:
openclaw plugins install ./path/to/local/zalouser-plugin - Detail: Plugins
zca/openzca eksternal.
Penyiapan cepat (pemula)
- Pastikan plugin Zalo Personal tersedia.
- Rilis OpenClaw terpaket saat ini sudah menyertakannya.
- Instalasi lama/kustom dapat menambahkannya secara manual dengan perintah di atas.
- Login (QR, di mesin Gateway):
openclaw channels login --channel zalouser- Pindai kode QR dengan aplikasi seluler Zalo.
- Aktifkan channel:
- Restart Gateway (atau selesaikan penyiapan).
- Akses DM secara default menggunakan pairing; setujui kode pairing saat kontak pertama.
Apa itu
- Berjalan sepenuhnya in-process melalui
zca-js. - Menggunakan event listener native untuk menerima pesan masuk.
- Mengirim balasan langsung melalui JS API (teks/media/tautan).
- Dirancang untuk kasus penggunaan “akun pribadi” saat Zalo Bot API tidak tersedia.
Penamaan
ID channel adalahzalouser untuk menegaskan bahwa ini mengotomatisasi akun pengguna pribadi Zalo (tidak resmi). Kami mempertahankan zalo untuk potensi integrasi resmi Zalo API di masa depan.
Menemukan ID (direktori)
Gunakan CLI direktori untuk menemukan peer/grup dan ID-nya:Batasan
- Teks keluar dipecah menjadi ~2000 karakter (batas klien Zalo).
- Streaming diblokir secara default.
Kontrol akses (DM)
channels.zalouser.dmPolicy mendukung: pairing | allowlist | open | disabled (default: pairing).
channels.zalouser.allowFrom menerima ID pengguna atau nama. Saat penyiapan, nama di-resolve menjadi ID menggunakan lookup kontak in-process milik plugin.
Setujui melalui:
openclaw pairing list zalouseropenclaw pairing approve zalouser <code>
Akses grup (opsional)
- Default:
channels.zalouser.groupPolicy = "open"(grup diizinkan). Gunakanchannels.defaults.groupPolicyuntuk menimpa default saat tidak disetel. - Batasi ke allowlist dengan:
channels.zalouser.groupPolicy = "allowlist"channels.zalouser.groups(kunci sebaiknya berupa ID grup stabil; nama di-resolve menjadi ID saat startup jika memungkinkan)channels.zalouser.groupAllowFrom(mengontrol pengirim mana di grup yang diizinkan yang dapat memicu bot)
- Blokir semua grup:
channels.zalouser.groupPolicy = "disabled". - Wizard konfigurasi dapat meminta allowlist grup.
- Saat startup, OpenClaw me-resolve nama grup/pengguna dalam allowlist menjadi ID dan mencatat pemetaannya.
- Pencocokan allowlist grup secara default hanya berdasarkan ID. Nama yang tidak ter-resolve diabaikan untuk autentikasi kecuali
channels.zalouser.dangerouslyAllowNameMatching: truediaktifkan. channels.zalouser.dangerouslyAllowNameMatching: trueadalah mode kompatibilitas break-glass yang mengaktifkan kembali pencocokan nama grup yang dapat berubah.- Jika
groupAllowFromtidak disetel, runtime akan fallback keallowFromuntuk pemeriksaan pengirim grup. - Pemeriksaan pengirim berlaku untuk pesan grup normal maupun perintah kontrol (misalnya
/new,/reset).
Pembatasan mention grup
channels.zalouser.groups.<group>.requireMentionmengontrol apakah balasan grup memerlukan mention.- Urutan resolusi: ID/nama grup persis -> slug grup ternormalisasi ->
*-> default (true). - Ini berlaku baik untuk grup yang di-allowlist maupun mode grup terbuka.
- Perintah kontrol yang diotorisasi (misalnya
/new) dapat mem-bypass pembatasan mention. - Saat pesan grup dilewati karena mention diperlukan, OpenClaw menyimpannya sebagai riwayat grup tertunda dan menyertakannya pada pesan grup berikutnya yang diproses.
- Batas riwayat grup secara default adalah
messages.groupChat.historyLimit(fallback50). Anda dapat menimpanya per akun denganchannels.zalouser.historyLimit.
Multi-akun
Akun dipetakan ke profilzalouser dalam status OpenClaw. Contoh:
Typing, reaksi, dan pengakuan pengiriman
- OpenClaw mengirim event typing sebelum mengirim balasan (best-effort).
- Tindakan reaksi pesan
reactdidukung untukzalouserdalam tindakan channel.- Gunakan
remove: trueuntuk menghapus emoji reaksi tertentu dari pesan. - Semantik reaksi: Reactions
- Gunakan
- Untuk pesan masuk yang menyertakan metadata event, OpenClaw mengirim pengakuan delivered + seen (best-effort).
Pemecahan masalah
Login tidak tersimpan:openclaw channels status --probe- Login ulang:
openclaw channels logout --channel zalouser && openclaw channels login --channel zalouser
- Gunakan ID numerik di
allowFrom/groupAllowFrom/groups, atau nama teman/grup yang persis.
- Hapus asumsi proses
zcaeksternal lama. - Channel sekarang berjalan sepenuhnya di OpenClaw tanpa binary CLI eksternal.
Terkait
- Ikhtisar Channels — semua channel yang didukung
- Pairing — autentikasi DM dan alur pairing
- Groups — perilaku obrolan grup dan pembatasan mention
- Channel Routing — routing sesi untuk pesan
- Security — model akses dan hardening