Regional platforms
Zalo pribadi
Status: eksperimental. Integrasi ini mengotomatiskan akun Zalo pribadi melalui zca-js native di dalam OpenClaw.
Plugin bawaan
Zalo Personal disertakan sebagai Plugin bawaan dalam rilis OpenClaw saat ini, jadi build terpaket normal tidak memerlukan instalasi terpisah.
Jika Anda menggunakan build lama atau instalasi kustom yang mengecualikan Zalo Personal, instal paket npm secara langsung:
- Instal melalui CLI:
openclaw plugins install @openclaw/zalouser - Versi tersemat:
openclaw plugins install @openclaw/[email protected] - Atau dari checkout sumber:
openclaw plugins install ./path/to/local/zalouser-plugin - Detail: Plugin
Tidak diperlukan binary CLI 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 saluran:
{
channels: {
zalouser: {
enabled: true,
dmPolicy: "pairing",
},
},
}
- Mulai ulang Gateway (atau selesaikan penyiapan).
- Akses DM secara default menggunakan pairing; setujui kode pairing pada kontak pertama.
Apa itu
- Berjalan sepenuhnya di dalam proses melalui
zca-js. - Menggunakan event listener native untuk menerima pesan masuk.
- Mengirim balasan langsung melalui API JS (teks/media/tautan).
- Dirancang untuk kasus penggunaan "akun pribadi" saat Zalo Bot API tidak tersedia.
Penamaan
ID saluran adalah zalouser agar jelas bahwa ini mengotomatiskan akun pengguna Zalo pribadi (tidak resmi). Kami mempertahankan zalo untuk potensi integrasi API Zalo resmi di masa mendatang.
Menemukan ID (direktori)
Gunakan CLI direktori untuk menemukan peer/grup dan ID-nya:
openclaw directory self --channel zalouser
openclaw directory peers list --channel zalouser --query "name"
openclaw directory groups list --channel zalouser --query "work"
Batas
- Teks keluar dipecah menjadi potongan ~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 harus menggunakan ID pengguna Zalo yang stabil. Selama penyiapan interaktif, nama yang dimasukkan dapat di-resolve menjadi ID menggunakan pencarian kontak dalam proses milik Plugin.
Jika nama mentah tetap ada dalam konfigurasi, startup me-resolve nama tersebut hanya saat channels.zalouser.dangerouslyAllowNameMatching: true diaktifkan. Tanpa opt-in tersebut, pemeriksaan pengirim runtime hanya berbasis ID dan nama mentah diabaikan untuk otorisasi.
Setujui melalui:
openclaw pairing list zalouseropenclaw pairing approve zalouser <code>
Akses grup (opsional)
- Default:
channels.zalouser.groupPolicy = "open"(grup diizinkan). Gunakanchannels.defaults.groupPolicyuntuk mengganti default saat belum disetel. - Batasi ke allowlist dengan:
channels.zalouser.groupPolicy = "allowlist"channels.zalouser.groups(kunci harus berupa ID grup yang stabil; nama di-resolve menjadi ID saat startup hanya jikachannels.zalouser.dangerouslyAllowNameMatching: truediaktifkan)channels.zalouser.groupAllowFrom(mengontrol pengirim mana dalam 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 hanya saat
channels.zalouser.dangerouslyAllowNameMatching: truediaktifkan. - Pencocokan allowlist grup secara default hanya berbasis ID. Nama yang tidak ter-resolve diabaikan untuk autentikasi kecuali
channels.zalouser.dangerouslyAllowNameMatching: truediaktifkan. channels.zalouser.dangerouslyAllowNameMatching: trueadalah mode kompatibilitas darurat yang mengaktifkan kembali resolusi nama startup yang dapat berubah dan pencocokan nama grup runtime.- Jika
groupAllowFrombelum disetel, runtime kembali menggunakanallowFromuntuk pemeriksaan pengirim grup. - Pemeriksaan pengirim berlaku untuk pesan grup normal dan perintah kontrol (misalnya
/new,/reset).
Contoh:
{
channels: {
zalouser: {
groupPolicy: "allowlist",
groupAllowFrom: ["1471383327500481391"],
groups: {
"123456789": { allow: true },
"Work Chat": { allow: true },
},
},
},
}
Gate mention grup
channels.zalouser.groups.<group>.requireMentionmengontrol apakah balasan grup memerlukan mention.- Urutan resolusi: ID/nama grup persis -> slug grup yang dinormalisasi ->
*-> default (true). - Ini berlaku untuk grup dalam allowlist dan mode grup terbuka.
- Mengutip pesan bot dihitung sebagai mention implisit untuk aktivasi grup.
- Perintah kontrol yang diotorisasi (misalnya
/new) dapat melewati gate 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 default ke
messages.groupChat.historyLimit(fallback50). Anda dapat menggantinya per akun denganchannels.zalouser.historyLimit.
Contoh:
{
channels: {
zalouser: {
groupPolicy: "allowlist",
groups: {
"*": { allow: true, requireMention: true },
"Work Chat": { allow: true, requireMention: false },
},
},
},
}
Multi-akun
Akun dipetakan ke profil zalouser dalam state OpenClaw. Contoh:
{
channels: {
zalouser: {
enabled: true,
defaultAccount: "default",
accounts: {
work: { enabled: true, profile: "work" },
},
},
},
}
Pengetikan, reaksi, dan pengakuan pengiriman
- OpenClaw mengirim event pengetikan sebelum mengirim balasan (upaya terbaik).
- Aksi reaksi pesan
reactdidukung untukzalouserdalam aksi saluran.- Gunakan
remove: trueuntuk menghapus emoji reaksi tertentu dari sebuah pesan. - Semantik reaksi: Reaksi
- Gunakan
- Untuk pesan masuk yang menyertakan metadata event, OpenClaw mengirim pengakuan terkirim + terlihat (upaya terbaik).
Pemecahan masalah
Login tidak tersimpan:
openclaw channels status --probe- Login ulang:
openclaw channels logout --channel zalouser && openclaw channels login --channel zalouser
Nama allowlist/grup tidak ter-resolve:
- Gunakan ID numerik dalam
allowFrom/groupAllowFromdan ID grup yang stabil dalamgroups. Jika Anda memang memerlukan nama teman/grup yang persis, aktifkanchannels.zalouser.dangerouslyAllowNameMatching: true.
Upgrade dari penyiapan lama berbasis CLI:
- Hapus asumsi lama tentang proses
zcaeksternal. - Saluran sekarang berjalan sepenuhnya di OpenClaw tanpa binary CLI eksternal.
Terkait
- Ikhtisar Saluran — semua saluran yang didukung
- Pairing — autentikasi DM dan alur pairing
- Grup — perilaku chat grup dan gate mention
- Perutean Saluran — perutean sesi untuk pesan
- Keamanan — model akses dan hardening