Regional platforms

Zalo ส่วนบุคคล

สถานะ: อยู่ระหว่างการทดลอง การผสานรวมนี้ทำให้ บัญชี Zalo ส่วนบุคคล ทำงานอัตโนมัติผ่าน zca-js แบบเนทีฟภายในโปรเซส โดยไม่ต้องใช้ไบนารี CLI ภายนอก

การติดตั้ง

Zalo Personal เป็น Plugin ภายนอกอย่างเป็นทางการที่ไม่ได้รวมมากับแกนหลัก โปรดติดตั้งก่อนใช้งาน:

bash
openclaw plugins install @openclaw/zalouser
  • ตรึงเวอร์ชัน: openclaw plugins install @openclaw/zalouser@<version>
  • จากการเช็กเอาต์ซอร์ส: openclaw plugins install ./path/to/local/zalouser-plugin
  • รายละเอียด: Plugin

การตั้งค่าอย่างรวดเร็ว

  1. ติดตั้ง Plugin (ตามด้านบน)
  2. เข้าสู่ระบบ (ด้วย QR บนเครื่อง Gateway):
    • openclaw channels login --channel zalouser
    • สแกนรหัส QR ด้วยแอป Zalo บนอุปกรณ์เคลื่อนที่
  3. เปิดใช้งานช่องทาง:
json5
{  channels: {    zalouser: {      enabled: true,      dmPolicy: "pairing",    },  },}
  1. รีสตาร์ต Gateway (หรือดำเนินการตั้งค่าให้เสร็จสิ้น)
  2. การเข้าถึง DM ใช้การจับคู่เป็นค่าเริ่มต้น ให้อนุมัติรหัสการจับคู่เมื่อมีการติดต่อครั้งแรก

สิ่งนี้คืออะไร

  • ทำงานทั้งหมดภายในโปรเซสผ่านไลบรารี zca-js (ไม่มีไบนารี zca/openzca ภายนอก)
  • ใช้ตัวรับฟังเหตุการณ์แบบเนทีฟ (message, error) เพื่อรับข้อความขาเข้า
  • ส่งการตอบกลับโดยตรงผ่าน API ของ JS (ข้อความ/สื่อ/ลิงก์)
  • ออกแบบมาสำหรับกรณีใช้งาน "บัญชีส่วนบุคคล" ที่ไม่สามารถใช้ Zalo Bot API ได้

การตั้งชื่อ

รหัสช่องทางคือ zalouser เพื่อระบุอย่างชัดเจนว่านี่คือการทำให้ บัญชีผู้ใช้ Zalo ส่วนบุคคล ทำงานอัตโนมัติ (อย่างไม่เป็นทางการ) ส่วน zalo สงวนไว้สำหรับการผสานรวม Zalo API อย่างเป็นทางการที่อาจมีในอนาคต

การค้นหารหัส (ไดเรกทอรี)

bash
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 zalouser
  • openclaw 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 ว่าง

ตัวอย่าง:

json5
{  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

ตัวอย่าง:

json5
{  channels: {    zalouser: {      groupPolicy: "allowlist",      groups: {        "*": { enabled: true, requireMention: true },        "Work Chat": { enabled: true, requireMention: false },      },    },  },}

หลายบัญชี

บัญชีจะจับคู่กับโปรไฟล์ zalouser ในสถานะของ OpenClaw ตัวอย่าง:

json5
{  channels: {    zalouser: {      enabled: true,      defaultAccount: "default",      accounts: {        work: { enabled: true, profile: "work" },      },    },  },}

ตัวแปรสภาพแวดล้อม

การเลือกโปรไฟล์สามารถมาจากตัวแปรสภาพแวดล้อมได้เช่นกัน:

ตัวแปร วัตถุประสงค์
ZALOUSER_PROFILE ชื่อโปรไฟล์ที่จะใช้เมื่อไม่ได้ตั้งค่า profile ในการกำหนดค่าช่องทางหรือบัญชี
ZCA_PROFILE ค่าสำรองแบบเดิม ซึ่งใช้เฉพาะเมื่อไม่ได้ตั้งค่า ZALOUSER_PROFILE

ชื่อโปรไฟล์ใช้เลือกข้อมูลประจำตัวสำหรับเข้าสู่ระบบ Zalo ที่บันทึกไว้ในสถานะของ OpenClaw ลำดับการเลือก:

  1. profile ที่ระบุอย่างชัดเจนในการกำหนดค่า
  2. ZALOUSER_PROFILE
  3. ZCA_PROFILE
  4. รหัสบัญชีสำหรับบัญชีที่ไม่ใช่บัญชีเริ่มต้น หรือ 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 ภายนอก

เนื้อหาที่เกี่ยวข้อง

Was this useful?
On this page

On this page