Regional platforms
Zalo pribadi
Status: eksperimental. Integrasi ini mengotomatiskan akun Zalo pribadi melalui zca-js native, di dalam proses, tanpa biner CLI eksternal.
Instalasi
Zalo Personal adalah plugin eksternal resmi yang tidak disertakan dalam inti. Instal sebelum digunakan:
openclaw plugins install @openclaw/zalouser- Sematkan versi:
openclaw plugins install @openclaw/zalouser@<version> - Dari checkout sumber:
openclaw plugins install ./path/to/local/zalouser-plugin - Detail: Plugin
Penyiapan cepat
- Instal plugin (di atas).
- Masuk (QR, pada mesin Gateway):
openclaw channels login --channel zalouser- Pindai kode QR dengan aplikasi seluler Zalo.
- Aktifkan kanal:
{ channels: { zalouser: { enabled: true, dmPolicy: "pairing", }, },}- Mulai ulang Gateway (atau selesaikan penyiapan).
- Akses DM secara default menggunakan pemasangan; setujui kode pemasangan pada kontak pertama.
Apa itu
- Berjalan sepenuhnya di dalam proses melalui pustaka
zca-js(tanpa biner eksternalzca/openzca). - Menggunakan pemantau peristiwa native (
message,error) untuk menerima pesan masuk. - Mengirim balasan secara langsung melalui API JS (teks/media/tautan).
- Dirancang untuk kasus penggunaan "akun pribadi" ketika API Bot Zalo tidak tersedia.
Penamaan
ID kanal adalah zalouser untuk memperjelas bahwa integrasi ini mengotomatiskan akun pengguna Zalo pribadi (tidak resmi). zalo dicadangkan untuk kemungkinan integrasi API Zalo resmi pada masa mendatang.
Menemukan ID (direktori)
openclaw directory self --channel zalouseropenclaw directory peers list --channel zalouser --query "name"openclaw directory groups list --channel zalouser --query "work"Batasan
- Teks keluar dipecah menjadi bagian-bagian sepanjang 2.000 karakter (batas klien Zalo).
- Streaming tidak didukung.
Kontrol akses (DM)
channels.zalouser.dmPolicy: pairing | allowlist | open | disabled (default: pairing).
channels.zalouser.allowFrom harus menggunakan ID pengguna Zalo yang stabil. Nilai ini juga dapat merujuk ke grup akses pengirim statis (accessGroup:<name>). Selama penyiapan interaktif, nama yang dimasukkan dapat ditetapkan ke ID menggunakan pencarian kontak di dalam proses milik plugin.
Jika nama mentah tetap ada dalam konfigurasi, proses awal hanya menetapkannya ketika channels.zalouser.dangerouslyAllowNameMatching: true diaktifkan. Tanpa keikutsertaan eksplisit tersebut, pemeriksaan pengirim saat runtime hanya berdasarkan ID dan nama mentah diabaikan untuk otorisasi.
Setujui melalui:
openclaw pairing list zalouseropenclaw pairing approve zalouser <code>
Akses grup (opsional)
- Default:
channels.zalouser.groupPolicy = "allowlist"(grup memerlukan entri daftar izin eksplisit). - Buka semua grup:
channels.zalouser.groupPolicy = "open". - Blokir semua grup:
channels.zalouser.groupPolicy = "disabled". - Dengan
groupPolicy = "allowlist":- Kunci
channels.zalouser.groupsharus berupa ID grup yang stabil; nama hanya ditetapkan ke ID saat proses awal ketikachannels.zalouser.dangerouslyAllowNameMatching: truediaktifkan. channels.zalouser.groupAllowFrommengontrol pengirim mana dalam grup yang diizinkan yang dapat memicu bot; grup akses pengirim statis dapat dirujuk denganaccessGroup:<name>.
- Kunci
- Wisaya konfigurasi dapat meminta daftar izin grup.
- Pencocokan daftar izin grup secara default hanya berdasarkan ID. Nama yang tidak dapat ditetapkan diabaikan untuk autentikasi kecuali
channels.zalouser.dangerouslyAllowNameMatching: truediaktifkan. channels.zalouser.dangerouslyAllowNameMatching: trueadalah mode kompatibilitas darurat yang mengaktifkan kembali penetapan nama yang dapat berubah saat proses awal dan pencocokan nama grup saat runtime.groupAllowFromtidak beralih menggunakanallowFromuntuk pesan grup biasa: membiarkannya kosong pada grup dalam daftar izin akan membuka grup tersebut bagi semua pengirim. Perintah kontrol yang diotorisasi (misalnya/new) merupakan pengecualian; pemeriksaan pengirim perintah akan beralih menggunakanallowFromketikagroupAllowFromkosong.
Contoh:
{ channels: { zalouser: { groupPolicy: "allowlist", groupAllowFrom: ["1471383327500481391"], groups: { "123456789": { enabled: true }, "Work Chat": { enabled: true }, }, }, },}Pembatasan berdasarkan penyebutan dalam grup
channels.zalouser.groups.<group>.requireMentionmengontrol apakah balasan grup memerlukan penyebutan.- Urutan penetapan: ID grup -> alias
group:<id>-> nama/slug grup (kandidat berbasis nama hanya berlaku ketikadangerouslyAllowNameMatching: true) ->*-> default (true). - Berlaku untuk grup dalam daftar izin maupun mode grup terbuka.
- Mengutip pesan bot dihitung sebagai penyebutan implisit untuk aktivasi grup.
- Perintah kontrol yang diotorisasi (misalnya
/new) dapat melewati pembatasan berdasarkan penyebutan. - Ketika pesan grup dilewati karena penyebutan diwajibkan, OpenClaw menyimpannya sebagai riwayat grup tertunda dan menyertakannya pada pesan grup berikutnya yang diproses.
- Batas riwayat grup:
channels.zalouser.historyLimit, kemudianmessages.groupChat.historyLimit, lalu nilai cadangan50.
Contoh:
{ channels: { zalouser: { groupPolicy: "allowlist", groups: { "*": { enabled: true, requireMention: true }, "Work Chat": { enabled: true, requireMention: false }, }, }, },}Multiakun
Akun dipetakan ke profil zalouser dalam status OpenClaw. Contoh:
{ channels: { zalouser: { enabled: true, defaultAccount: "default", accounts: { work: { enabled: true, profile: "work" }, }, }, },}Variabel lingkungan
Pemilihan profil juga dapat berasal dari variabel lingkungan:
| Variabel | Tujuan |
|---|---|
ZALOUSER_PROFILE |
Nama profil yang digunakan ketika profile tidak ditetapkan dalam konfigurasi kanal atau akun. |
ZCA_PROFILE |
Nilai cadangan lama yang hanya digunakan ketika ZALOUSER_PROFILE tidak ditetapkan. |
Nama profil memilih kredensial masuk Zalo yang disimpan dalam status OpenClaw. Urutan penetapan:
profileeksplisit dalam konfigurasi.ZALOUSER_PROFILE.ZCA_PROFILE.- ID akun untuk akun nondefault, atau
defaultuntuk akun default.
Untuk penyiapan multiakun, sebaiknya tetapkan profile pada setiap akun dalam konfigurasi agar satu variabel lingkungan tidak membuat beberapa akun berbagi sesi masuk yang sama.
Pengetikan, reaksi, dan konfirmasi pengiriman
- OpenClaw mengirim peristiwa pengetikan sebelum mengirimkan balasan (upaya terbaik).
- Tindakan reaksi pesan
reactdidukung untukzalouserdalam tindakan kanal.- Gunakan
remove: trueuntuk menghapus emoji reaksi tertentu dari pesan. - Semantik reaksi: Reaksi
- Gunakan
- Untuk pesan masuk yang menyertakan metadata peristiwa, OpenClaw mengirim konfirmasi telah dikirim + telah dilihat (upaya terbaik).
Pemecahan masalah
Sesi masuk tidak bertahan:
openclaw channels status --probe- Masuk kembali:
openclaw channels logout --channel zalouser && openclaw channels login --channel zalouser
Nama daftar izin/grup tidak dapat ditetapkan:
- Gunakan ID numerik dalam
allowFrom/groupAllowFromdan ID grup yang stabil dalamgroups. Jika Anda sengaja perlu menggunakan nama teman/grup yang persis, aktifkanchannels.zalouser.dangerouslyAllowNameMatching: true.
Ditingkatkan dari penyiapan lama berbasis zca/CLI eksternal:
- Hapus semua asumsi tentang proses
zcaeksternal; kanal kini berjalan sepenuhnya di dalam proses melaluizca-js, tanpa biner CLI eksternal.
Terkait
- Ikhtisar Kanal - semua kanal yang didukung
- Pemasangan - autentikasi DM dan alur pemasangan
- Grup - perilaku percakapan grup dan pembatasan berdasarkan penyebutan
- Perutean Kanal - perutean sesi untuk pesan
- Keamanan - model akses dan penguatan