Regional platforms
Zalo
สถานะ: ทดลอง รองรับ DM แล้ว ส่วน ความสามารถ ด้านล่างสะท้อนพฤติกรรมปัจจุบันของบอต Marketplace
Plugin ที่รวมมาด้วย
Zalo มาพร้อมเป็น Plugin ที่รวมอยู่แล้วใน OpenClaw รุ่นปัจจุบัน ดังนั้นบิลด์แพ็กเกจปกติจึงไม่ต้องติดตั้งแยกต่างหาก
หากคุณใช้บิลด์เก่าหรือการติดตั้งแบบกำหนดเองที่ไม่รวม Zalo ให้ติดตั้งแพ็กเกจ npm โดยตรง:
- ติดตั้งผ่าน CLI:
openclaw plugins install @openclaw/zalo - เวอร์ชันที่ปักหมุด:
openclaw plugins install @openclaw/[email protected] - หรือจากซอร์ส checkout:
openclaw plugins install ./path/to/local/zalo-plugin - รายละเอียด: Plugins
ตั้งค่าอย่างรวดเร็ว (สำหรับผู้เริ่มต้น)
- ตรวจสอบว่า Plugin Zalo พร้อมใช้งาน
- OpenClaw รุ่นแพ็กเกจปัจจุบันรวมไว้แล้ว
- การติดตั้งรุ่นเก่า/แบบกำหนดเองสามารถเพิ่มเองได้ด้วยคำสั่งด้านบน
- ตั้งค่าโทเค็น:
- Env:
ZALO_BOT_TOKEN=... - หรือ config:
channels.zalo.accounts.default.botToken: "...".
- Env:
- รีสตาร์ท gateway (หรือทำการตั้งค่าให้เสร็จ)
- การเข้าถึง DM ใช้การจับคู่เป็นค่าเริ่มต้น อนุมัติรหัสจับคู่เมื่อมีการติดต่อครั้งแรก
config ขั้นต่ำ:
{
channels: {
zalo: {
enabled: true,
accounts: {
default: {
botToken: "12345689:abc-xyz",
dmPolicy: "pairing",
},
},
},
},
}
คืออะไร
Zalo เป็นแอปส่งข้อความที่เน้นเวียดนามเป็นหลัก Bot API ของ Zalo ช่วยให้ Gateway รันบอตสำหรับการสนทนาแบบ 1:1 ได้ เหมาะกับงานสนับสนุนหรือการแจ้งเตือนที่คุณต้องการให้เส้นทางกลับไปยัง Zalo แบบกำหนดแน่นอน
หน้านี้สะท้อนพฤติกรรมปัจจุบันของ OpenClaw สำหรับ Zalo Bot Creator / บอต Marketplace บอต Zalo Official Account (OA) เป็นพื้นผิวผลิตภัณฑ์ Zalo อีกแบบหนึ่งและอาจมีพฤติกรรมต่างกัน
- ช่องทาง Zalo Bot API ที่ Gateway เป็นเจ้าของ
- การกำหนดเส้นทางแบบแน่นอน: การตอบกลับกลับไปที่ Zalo เสมอ โมเดลไม่เลือกช่องทางเอง
- DM ใช้เซสชันหลักของ agent ร่วมกัน
- ส่วน ความสามารถ ด้านล่างแสดงการรองรับปัจจุบันของบอต Marketplace
ตั้งค่า (เส้นทางเร็ว)
1) สร้างโทเค็นบอต (Zalo Bot Platform)
- ไปที่ https://bot.zaloplatforms.com แล้วลงชื่อเข้าใช้
- สร้างบอตใหม่และกำหนดการตั้งค่า
- คัดลอกโทเค็นบอตแบบเต็ม (โดยทั่วไปคือ
numeric_id:secret) สำหรับบอต Marketplace โทเค็น runtime ที่ใช้งานได้อาจปรากฏในข้อความต้อนรับของบอตหลังสร้าง
2) กำหนดค่าโทเค็น (env หรือ config)
ตัวอย่าง:
{
channels: {
zalo: {
enabled: true,
accounts: {
default: {
botToken: "12345689:abc-xyz",
dmPolicy: "pairing",
},
},
},
},
}
หากภายหลังคุณย้ายไปยังพื้นผิวบอต Zalo ที่มีกลุ่มให้ใช้งาน คุณสามารถเพิ่ม config เฉพาะกลุ่ม เช่น groupPolicy และ groupAllowFrom ได้อย่างชัดเจน สำหรับพฤติกรรมบอต Marketplace ปัจจุบัน โปรดดู ความสามารถ
ตัวเลือก env: ZALO_BOT_TOKEN=... (ใช้ได้เฉพาะบัญชี default)
การรองรับหลายบัญชี: ใช้ channels.zalo.accounts พร้อมโทเค็นแยกต่อบัญชีและ name ที่ไม่บังคับ
- รีสตาร์ท gateway Zalo จะเริ่มทำงานเมื่อ resolve โทเค็นได้แล้ว (env หรือ config)
- การเข้าถึง DM ใช้การจับคู่เป็นค่าเริ่มต้น อนุมัติรหัสเมื่อมีการติดต่อบอตครั้งแรก
ทำงานอย่างไร (พฤติกรรม)
- ข้อความขาเข้าจะถูกปรับให้อยู่ใน envelope ช่องทางที่ใช้ร่วมกันพร้อม placeholder สำหรับสื่อ
- การตอบกลับจะถูกส่งกลับไปยังแชต Zalo เดิมเสมอ
- ใช้ long-polling เป็นค่าเริ่มต้น มีโหมด webhook พร้อมใช้งานด้วย
channels.zalo.webhookUrl
ข้อจำกัด
- ข้อความขาออกถูกแบ่งเป็นชิ้นละ 2000 อักขระ (ข้อจำกัดของ Zalo API)
- การดาวน์โหลด/อัปโหลดสื่อถูกจำกัดด้วย
channels.zalo.mediaMaxMb(ค่าเริ่มต้น 5) - การสตรีมถูกบล็อกเป็นค่าเริ่มต้น เนื่องจากข้อจำกัด 2000 อักขระทำให้การสตรีมมีประโยชน์น้อยลง
การควบคุมการเข้าถึง (DM)
การเข้าถึง DM
- ค่าเริ่มต้น:
channels.zalo.dmPolicy = "pairing"ผู้ส่งที่ไม่รู้จักจะได้รับรหัสจับคู่ ข้อความจะถูกละเว้นจนกว่าจะได้รับอนุมัติ (รหัสหมดอายุหลัง 1 ชั่วโมง) - อนุมัติผ่าน:
openclaw pairing list zaloopenclaw pairing approve zalo <CODE>
- การจับคู่เป็นการแลกเปลี่ยนโทเค็นค่าเริ่มต้น รายละเอียด: Pairing
channels.zalo.allowFromรับ ID ผู้ใช้แบบตัวเลข (ไม่มีการค้นหาชื่อผู้ใช้)
การควบคุมการเข้าถึง (กลุ่ม)
สำหรับ Zalo Bot Creator / บอต Marketplace การรองรับกลุ่มยังใช้งานจริงไม่ได้ เพราะไม่สามารถเพิ่มบอตเข้ากลุ่มได้เลย
หมายความว่า key config ที่เกี่ยวกับกลุ่มด้านล่างมีอยู่ใน schema แต่ไม่สามารถใช้กับบอต Marketplace ได้:
channels.zalo.groupPolicyควบคุมการจัดการขาเข้าของกลุ่ม:open | allowlist | disabledchannels.zalo.groupAllowFromจำกัดว่า ID ผู้ส่งใดสามารถเรียกใช้บอตในกลุ่มได้- หากไม่ได้ตั้งค่า
groupAllowFromZalo จะ fallback ไปใช้allowFromสำหรับการตรวจสอบผู้ส่ง - หมายเหตุ runtime: หากไม่มี
channels.zaloเลย runtime ยัง fallback ไปที่groupPolicy="allowlist"เพื่อความปลอดภัย
ค่าของนโยบายกลุ่ม (เมื่อพื้นผิวบอตของคุณมีการเข้าถึงกลุ่มให้ใช้งาน) คือ:
groupPolicy: "disabled"— บล็อกข้อความกลุ่มทั้งหมดgroupPolicy: "open"— อนุญาตสมาชิกกลุ่มใดก็ได้ (ต้องผ่าน mention gate)groupPolicy: "allowlist"— ค่าเริ่มต้นแบบปิดเมื่อไม่ผ่านเงื่อนไข รับเฉพาะผู้ส่งที่อนุญาตเท่านั้น
หากคุณใช้พื้นผิวผลิตภัณฑ์บอต Zalo แบบอื่นและตรวจสอบแล้วว่าพฤติกรรมกลุ่มทำงานได้ ให้บันทึกแยกต่างหากแทนการสมมติว่าตรงกับ flow ของบอต Marketplace
Long-polling เทียบกับ webhook
- ค่าเริ่มต้น: long-polling (ไม่ต้องมี URL สาธารณะ)
- โหมด webhook: ตั้งค่า
channels.zalo.webhookUrlและchannels.zalo.webhookSecret- webhook secret ต้องมี 8-256 อักขระ
- Webhook URL ต้องใช้ HTTPS
- Zalo ส่ง event พร้อม header
X-Bot-Api-Secret-Tokenสำหรับการตรวจสอบ - HTTP ของ Gateway จัดการคำขอ webhook ที่
channels.zalo.webhookPath(ค่าเริ่มต้นคือ path ของ webhook URL) - คำขอต้องใช้
Content-Type: application/json(หรือ media type แบบ+json) - event ซ้ำ (
event_name + message_id) จะถูกละเว้นในช่วง replay window สั้น ๆ - ทราฟฟิกแบบ burst ถูก rate-limit ต่อ path/source และอาจส่งคืน HTTP 429
หมายเหตุ: getUpdates (polling) และ webhook ใช้ร่วมกันไม่ได้ต่อเอกสาร Zalo API
ประเภทข้อความที่รองรับ
สำหรับภาพรวมการรองรับอย่างรวดเร็ว โปรดดู ความสามารถ หมายเหตุด้านล่างเพิ่มรายละเอียดในจุดที่พฤติกรรมต้องการบริบทเพิ่มเติม
- ข้อความตัวอักษร: รองรับเต็มรูปแบบพร้อมการแบ่งชิ้นที่ 2000 อักขระ
- URL ธรรมดาในข้อความ: ทำงานเหมือนข้อความ input ปกติ
- ตัวอย่างลิงก์ / rich link cards: ดูสถานะบอต Marketplace ใน ความสามารถ สิ่งเหล่านี้ไม่ได้ trigger การตอบกลับอย่างน่าเชื่อถือ
- ข้อความรูปภาพ: ดูสถานะบอต Marketplace ใน ความสามารถ การจัดการรูปภาพขาเข้าไม่น่าเชื่อถือ (แสดงตัวบ่งชี้กำลังพิมพ์โดยไม่มีการตอบกลับสุดท้าย)
- สติกเกอร์: ดูสถานะบอต Marketplace ใน ความสามารถ
- บันทึกเสียง / ไฟล์เสียง / วิดีโอ / ไฟล์แนบทั่วไป: ดูสถานะบอต Marketplace ใน ความสามารถ
- ประเภทที่ไม่รองรับ: ถูกบันทึกใน log (เช่น ข้อความจากผู้ใช้ที่ได้รับการป้องกัน)
ความสามารถ
ตารางนี้สรุปพฤติกรรมปัจจุบันของ Zalo Bot Creator / บอต Marketplace ใน OpenClaw
| ฟีเจอร์ | สถานะ |
|---|---|
| ข้อความโดยตรง | ✅ รองรับ |
| กลุ่ม | ❌ ไม่พร้อมใช้งานสำหรับบอต Marketplace |
| สื่อ (รูปภาพขาเข้า) | ⚠️ จำกัด / ตรวจสอบในสภาพแวดล้อมของคุณ |
| สื่อ (รูปภาพขาออก) | ⚠️ ยังไม่ได้ทดสอบซ้ำสำหรับบอต Marketplace |
| URL ธรรมดาในข้อความ | ✅ รองรับ |
| ตัวอย่างลิงก์ | ⚠️ ไม่น่าเชื่อถือสำหรับบอต Marketplace |
| รีแอ็กชัน | ❌ ไม่รองรับ |
| สติกเกอร์ | ⚠️ ไม่มีการตอบกลับจาก agent สำหรับบอต Marketplace |
| บันทึกเสียง / เสียง / วิดีโอ | ⚠️ ไม่มีการตอบกลับจาก agent สำหรับบอต Marketplace |
| ไฟล์แนบ | ⚠️ ไม่มีการตอบกลับจาก agent สำหรับบอต Marketplace |
| เธรด | ❌ ไม่รองรับ |
| โพล | ❌ ไม่รองรับ |
| คำสั่งเนทีฟ | ❌ ไม่รองรับ |
| การสตรีม | ⚠️ ถูกบล็อก (ข้อจำกัด 2000 อักขระ) |
เป้าหมายการส่ง (CLI/Cron)
- ใช้ chat id เป็นเป้าหมาย
- ตัวอย่าง:
openclaw message send --channel zalo --target 123456789 --message "hi".
การแก้ไขปัญหา
บอตไม่ตอบสนอง:
- ตรวจสอบว่าโทเค็นถูกต้อง:
openclaw channels status --probe - ตรวจสอบว่าผู้ส่งได้รับอนุมัติแล้ว (pairing หรือ allowFrom)
- ตรวจสอบ log ของ gateway:
openclaw logs --follow
Webhook ไม่ได้รับ event:
- ตรวจสอบให้แน่ใจว่า webhook URL ใช้ HTTPS
- ตรวจสอบว่า secret token มี 8-256 อักขระ
- ยืนยันว่า endpoint HTTP ของ gateway เข้าถึงได้บน path ที่กำหนดค่าไว้
- ตรวจสอบว่า getUpdates polling ไม่ได้กำลังทำงานอยู่ (ทั้งสองใช้ร่วมกันไม่ได้)
อ้างอิงการกำหนดค่า (Zalo)
การกำหนดค่าเต็ม: Configuration
key ระดับบนแบบ flat (channels.zalo.botToken, channels.zalo.dmPolicy และรายการที่คล้ายกัน) เป็น shorthand บัญชีเดียวแบบ legacy สำหรับ config ใหม่ แนะนำให้ใช้ channels.zalo.accounts.<id>.* ทั้งสองรูปแบบยังคงบันทึกไว้ที่นี่เพราะมีอยู่ใน schema
ตัวเลือก provider:
channels.zalo.enabled: เปิด/ปิดการเริ่มต้นช่องทางchannels.zalo.botToken: โทเค็นบอตจาก Zalo Bot Platformchannels.zalo.tokenFile: อ่านโทเค็นจาก path ไฟล์ปกติ Symlink จะถูกปฏิเสธchannels.zalo.dmPolicy:pairing | allowlist | open | disabled(ค่าเริ่มต้น: pairing)channels.zalo.allowFrom: allowlist สำหรับ DM (ID ผู้ใช้)openต้องใช้"*"wizard จะถามหา ID แบบตัวเลขchannels.zalo.groupPolicy:open | allowlist | disabled(ค่าเริ่มต้น: allowlist) มีอยู่ใน config; ดู ความสามารถ และ การควบคุมการเข้าถึง (กลุ่ม) สำหรับพฤติกรรมบอต Marketplace ปัจจุบันchannels.zalo.groupAllowFrom: allowlist ผู้ส่งในกลุ่ม (ID ผู้ใช้) fallback ไปใช้allowFromเมื่อไม่ได้ตั้งค่าchannels.zalo.mediaMaxMb: เพดานสื่อขาเข้า/ขาออก (MB, ค่าเริ่มต้น 5)channels.zalo.webhookUrl: เปิดใช้งานโหมด webhook (ต้องใช้ HTTPS)channels.zalo.webhookSecret: webhook secret (8-256 อักขระ)channels.zalo.webhookPath: path webhook บนเซิร์ฟเวอร์ HTTP ของ gatewaychannels.zalo.proxy: URL proxy สำหรับคำขอ API
ตัวเลือกหลายบัญชี:
channels.zalo.accounts.<id>.botToken: โทเค็นต่อบัญชีchannels.zalo.accounts.<id>.tokenFile: ไฟล์โทเค็นปกติต่อบัญชี Symlink จะถูกปฏิเสธchannels.zalo.accounts.<id>.name: ชื่อที่แสดงchannels.zalo.accounts.<id>.enabled: เปิด/ปิดบัญชีchannels.zalo.accounts.<id>.dmPolicy: นโยบาย DM ต่อบัญชีchannels.zalo.accounts.<id>.allowFrom: allowlist ต่อบัญชีchannels.zalo.accounts.<id>.groupPolicy: นโยบายกลุ่มต่อบัญชี มีอยู่ใน config; ดู ความสามารถ และ การควบคุมการเข้าถึง (กลุ่ม) สำหรับพฤติกรรมบอต Marketplace ปัจจุบันchannels.zalo.accounts.<id>.groupAllowFrom: allowlist ผู้ส่งในกลุ่มต่อบัญชีchannels.zalo.accounts.<id>.webhookUrl: URL webhook ต่อบัญชีchannels.zalo.accounts.<id>.webhookSecret: webhook secret ต่อบัญชีchannels.zalo.accounts.<id>.webhookPath: path webhook ต่อบัญชีchannels.zalo.accounts.<id>.proxy: URL proxy ต่อบัญชี
ที่เกี่ยวข้อง
- Channels Overview — ช่องทางที่รองรับทั้งหมด
- Pairing — การยืนยันตัวตน DM และ flow การจับคู่
- Groups — พฤติกรรมแชตกลุ่มและ mention gating
- Channel Routing — การกำหนดเส้นทางเซสชันสำหรับข้อความ
- Security — โมเดลการเข้าถึงและการเสริมความปลอดภัย