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