Regional platforms
Zalo ส่วนตัว
สถานะ: ทดลอง การผสานการทำงานนี้ทำให้ บัญชี Zalo ส่วนบุคคล ทำงานอัตโนมัติผ่าน zca-js แบบเนทีฟภายใน OpenClaw
Plugin ที่มาพร้อมชุดติดตั้ง
Zalo Personal จัดส่งเป็น Plugin ที่มาพร้อมชุดติดตั้งใน OpenClaw รุ่นปัจจุบัน ดังนั้นบิลด์แบบแพ็กเกจปกติ จึงไม่ต้องติดตั้งแยกต่างหาก
หากคุณใช้บิลด์เก่ากว่าหรือการติดตั้งแบบกำหนดเองที่ไม่รวม Zalo Personal ให้ติดตั้งแพ็กเกจ npm โดยตรง:
- ติดตั้งผ่าน CLI:
openclaw plugins install @openclaw/zalouser - เวอร์ชันที่ปักหมุดไว้:
openclaw plugins install @openclaw/zalouser@2026.5.2 - หรือจากเช็กเอาต์ซอร์ส:
openclaw plugins install ./path/to/local/zalouser-plugin - รายละเอียด: Plugin
ไม่จำเป็นต้องมีไบนารี CLI ภายนอก zca/openzca
การตั้งค่าอย่างรวดเร็ว (สำหรับผู้เริ่มต้น)
- ตรวจสอบให้แน่ใจว่า Plugin Zalo Personal พร้อมใช้งาน
- OpenClaw รุ่นแพ็กเกจปัจจุบันรวมไว้แล้ว
- การติดตั้งเก่า/แบบกำหนดเองสามารถเพิ่มเองได้ด้วยคำสั่งด้านบน
- เข้าสู่ระบบ (QR บนเครื่อง Gateway):
openclaw channels login --channel zalouser- สแกนรหัส QR ด้วยแอปมือถือ Zalo
- เปิดใช้งานช่องทาง:
{ channels: { zalouser: { enabled: true, dmPolicy: "pairing", }, },}- รีสตาร์ท Gateway (หรือทำการตั้งค่าให้เสร็จ)
- การเข้าถึง DM มีค่าเริ่มต้นเป็นการจับคู่ อนุมัติรหัสจับคู่เมื่อมีการติดต่อครั้งแรก
คืออะไร
- ทำงานทั้งหมดภายในโปรเซสผ่าน
zca-js - ใช้ตัวรับฟังอีเวนต์แบบเนทีฟเพื่อรับข้อความขาเข้า
- ส่งคำตอบโดยตรงผ่าน JS API (ข้อความ/สื่อ/ลิงก์)
- ออกแบบมาสำหรับกรณีใช้งานแบบ "บัญชีส่วนบุคคล" ที่ Zalo Bot API ไม่พร้อมใช้งาน
การตั้งชื่อ
รหัสช่องทางคือ zalouser เพื่อระบุให้ชัดเจนว่านี่ทำให้ บัญชีผู้ใช้ Zalo ส่วนบุคคล ทำงานอัตโนมัติ (ไม่เป็นทางการ) เราสงวน zalo ไว้สำหรับการผสานการทำงานกับ Zalo API อย่างเป็นทางการที่อาจมีในอนาคต
การหา ID (ไดเรกทอรี)
ใช้ CLI ไดเรกทอรีเพื่อค้นหาเพียร์/กลุ่มและ ID ของรายการเหล่านั้น:
openclaw directory self --channel zalouseropenclaw directory peers list --channel zalouser --query "name"openclaw directory groups list --channel zalouser --query "work"ข้อจำกัด
- ข้อความขาออกจะถูกแบ่งเป็นชิ้นขนาดประมาณ 2000 อักขระ (ข้อจำกัดของไคลเอนต์ Zalo)
- การสตรีมถูกบล็อกตามค่าเริ่มต้น
การควบคุมการเข้าถึง (DM)
channels.zalouser.dmPolicy รองรับ: pairing | allowlist | open | disabled (ค่าเริ่มต้น: pairing)
channels.zalouser.allowFrom ควรใช้ ID ผู้ใช้ Zalo ที่เสถียร และยังสามารถอ้างอิงกลุ่มการเข้าถึงผู้ส่งแบบคงที่ได้ด้วย (accessGroup:<name>) ระหว่างการตั้งค่าแบบโต้ตอบ ชื่อที่ป้อนสามารถถูกแปลงเป็น ID ได้โดยใช้การค้นหาผู้ติดต่อภายในโปรเซสของ Plugin
หากชื่อดิบยังคงอยู่ในคอนฟิก การเริ่มต้นระบบจะแปลงชื่อนั้นเฉพาะเมื่อเปิดใช้ channels.zalouser.dangerouslyAllowNameMatching: true เท่านั้น หากไม่มีการเลือกเปิดใช้นี้ การตรวจสอบผู้ส่งขณะรันไทม์จะใช้เฉพาะ ID และชื่อดิบจะถูกละเว้นสำหรับการอนุญาต
อนุมัติผ่าน:
openclaw pairing list zalouseropenclaw pairing approve zalouser <code>
การเข้าถึงกลุ่ม (ไม่บังคับ)
- ค่าเริ่มต้น:
channels.zalouser.groupPolicy = "open"(อนุญาตกลุ่ม) ใช้channels.defaults.groupPolicyเพื่อแทนที่ค่าเริ่มต้นเมื่อไม่ได้ตั้งค่า - จำกัดไว้เฉพาะ allowlist ด้วย:
channels.zalouser.groupPolicy = "allowlist"channels.zalouser.groups(คีย์ควรเป็น ID กลุ่มที่เสถียร ชื่อจะถูกแปลงเป็น ID เมื่อเริ่มต้นระบบเฉพาะเมื่อเปิดใช้channels.zalouser.dangerouslyAllowNameMatching: true)channels.zalouser.groupAllowFrom(ควบคุมว่าผู้ส่งใดในกลุ่มที่อนุญาตสามารถทริกเกอร์บอตได้ กลุ่มการเข้าถึงผู้ส่งแบบคงที่สามารถอ้างอิงด้วยaccessGroup:<name>)
- บล็อกกลุ่มทั้งหมด:
channels.zalouser.groupPolicy = "disabled" - ตัวช่วยตั้งค่าสามารถถามหา allowlist ของกลุ่มได้
- เมื่อเริ่มต้นระบบ OpenClaw จะแปลงชื่อกลุ่ม/ผู้ใช้ใน allowlist เป็น ID และบันทึกการแมปเฉพาะเมื่อเปิดใช้
channels.zalouser.dangerouslyAllowNameMatching: true - การจับคู่ allowlist ของกลุ่มใช้เฉพาะ ID ตามค่าเริ่มต้น ชื่อที่แปลงไม่ได้จะถูกละเว้นสำหรับการยืนยันสิทธิ์ เว้นแต่จะเปิดใช้
channels.zalouser.dangerouslyAllowNameMatching: true channels.zalouser.dangerouslyAllowNameMatching: trueเป็นโหมดความเข้ากันได้แบบฉุกเฉินที่เปิดใช้การแปลงชื่อเมื่อเริ่มต้นระบบที่เปลี่ยนแปลงได้และการจับคู่ชื่อกลุ่มขณะรันไทม์อีกครั้ง- หากไม่ได้ตั้งค่า
groupAllowFromรันไทม์จะย้อนกลับไปใช้allowFromสำหรับการตรวจสอบผู้ส่งในกลุ่ม - การตรวจสอบผู้ส่งมีผลกับทั้งข้อความกลุ่มปกติและคำสั่งควบคุม (เช่น
/new,/reset)
ตัวอย่าง:
{ channels: { zalouser: { groupPolicy: "allowlist", groupAllowFrom: ["1471383327500481391"], groups: { "123456789": { allow: true }, "Work Chat": { allow: true }, }, }, },}การกั้นด้วยการกล่าวถึงในกลุ่ม
channels.zalouser.groups.<group>.requireMentionควบคุมว่าคำตอบในกลุ่มต้องมีการกล่าวถึงหรือไม่- ลำดับการแปลง: ID/ชื่อกลุ่มแบบตรงกันทุกตัว -> slug กลุ่มที่ทำให้เป็นมาตรฐาน ->
*-> ค่าเริ่มต้น (true) - มีผลทั้งกับกลุ่มใน allowlist และโหมดกลุ่มแบบเปิด
- การอ้างข้อความของบอตนับเป็นการกล่าวถึงโดยนัยสำหรับการเปิดใช้งานกลุ่ม
- คำสั่งควบคุมที่ได้รับอนุญาต (เช่น
/new) สามารถข้ามการกั้นด้วยการกล่าวถึงได้ - เมื่อข้อความกลุ่มถูกข้ามเพราะต้องมีการกล่าวถึง OpenClaw จะจัดเก็บไว้เป็นประวัติกลุ่มที่รอดำเนินการและรวมไว้ในข้อความกลุ่มถัดไปที่ถูกประมวลผล
- ขีดจำกัดประวัติกลุ่มมีค่าเริ่มต้นเป็น
messages.groupChat.historyLimit(fallback50) คุณสามารถแทนที่เป็นรายบัญชีด้วยchannels.zalouser.historyLimit
ตัวอย่าง:
{ channels: { zalouser: { groupPolicy: "allowlist", groups: { "*": { allow: true, requireMention: true }, "Work Chat": { allow: true, requireMention: false }, }, }, },}หลายบัญชี
บัญชีแมปกับโปรไฟล์ zalouser ในสถานะ OpenClaw ตัวอย่าง:
{ channels: { zalouser: { enabled: true, defaultAccount: "default", accounts: { work: { enabled: true, profile: "work" }, }, }, },}ตัวแปรสภาพแวดล้อม
Plugin Zalo Personal ยังสามารถอ่านการเลือกโปรไฟล์จากตัวแปรสภาพแวดล้อมได้ด้วย:
ZALOUSER_PROFILE: ชื่อโปรไฟล์ที่จะใช้เมื่อไม่ได้ตั้งค่าprofileในคอนฟิกช่องทางหรือบัญชีZCA_PROFILE: ชื่อโปรไฟล์ fallback แบบเดิม ใช้เฉพาะเมื่อไม่ได้ตั้งค่าZALOUSER_PROFILE
ชื่อโปรไฟล์จะเลือกข้อมูลรับรองการเข้าสู่ระบบ Zalo ที่บันทึกไว้ในสถานะ OpenClaw ลำดับการแปลงคือ:
profileแบบชัดเจนในคอนฟิกZALOUSER_PROFILEZCA_PROFILE- ID บัญชีสำหรับบัญชีที่ไม่ใช่ค่าเริ่มต้น หรือ
defaultสำหรับบัญชีค่าเริ่มต้น
สำหรับการตั้งค่าหลายบัญชี ควรตั้งค่า profile ในแต่ละบัญชีในคอนฟิก เพื่อให้
ตัวแปรสภาพแวดล้อมเพียงตัวเดียวไม่ทำให้หลายบัญชีใช้เซสชันการเข้าสู่ระบบเดียวกันร่วมกัน
การพิมพ์ ปฏิกิริยา และการยืนยันการส่ง
- OpenClaw ส่งอีเวนต์การพิมพ์ก่อนส่งคำตอบ (พยายามอย่างดีที่สุด)
- รองรับแอ็กชันปฏิกิริยาข้อความ
reactสำหรับzalouserในแอ็กชันช่องทาง- ใช้
remove: trueเพื่อลบอีโมจิปฏิกิริยาเฉพาะรายการออกจากข้อความ - ความหมายของปฏิกิริยา: ปฏิกิริยา
- ใช้
- สำหรับข้อความขาเข้าที่มีเมทาดาทาอีเวนต์ OpenClaw จะส่งการยืนยัน delivered + seen (พยายามอย่างดีที่สุด)
การแก้ไขปัญหา
การเข้าสู่ระบบไม่คงอยู่:
openclaw channels status --probe- เข้าสู่ระบบอีกครั้ง:
openclaw channels logout --channel zalouser && openclaw channels login --channel zalouser
ชื่อใน allowlist/กลุ่มไม่ถูกแปลง:
- ใช้ ID แบบตัวเลขใน
allowFrom/groupAllowFromและ ID กลุ่มที่เสถียรในgroupsหากคุณตั้งใจต้องใช้ชื่อเพื่อน/กลุ่มแบบตรงกันทุกตัว ให้เปิดใช้channels.zalouser.dangerouslyAllowNameMatching: true
อัปเกรดจากการตั้งค่าแบบ CLI เก่า:
- ลบสมมติฐานเกี่ยวกับโปรเซสภายนอก
zcaเก่าออก - ตอนนี้ช่องทางทำงานเต็มรูปแบบใน OpenClaw โดยไม่ต้องใช้ไบนารี CLI ภายนอก
ที่เกี่ยวข้อง
- ภาพรวมช่องทาง — ช่องทางที่รองรับทั้งหมด
- การจับคู่ — การยืนยันตัวตน DM และโฟลว์การจับคู่
- กลุ่ม — พฤติกรรมแชทกลุ่มและการกั้นด้วยการกล่าวถึง
- การกำหนดเส้นทางช่องทาง — การกำหนดเส้นทางเซสชันสำหรับข้อความ
- ความปลอดภัย — โมเดลการเข้าถึงและการเสริมความแข็งแกร่ง