Configuration

ข้อความกลุ่ม WhatsApp

สำหรับโมเดลกลุ่มข้ามช่องทาง (Discord, iMessage, Matrix, Microsoft Teams, Signal, Slack, Telegram, WhatsApp, Zalo) โปรดดู กลุ่ม หน้านี้ครอบคลุมพฤติกรรมเฉพาะของ WhatsApp ที่ต่อยอดจากโมเดลนั้น: การเปิดใช้งาน รายการอนุญาตของกลุ่ม คีย์เซสชันต่อกลุ่ม และการฉีดบริบทข้อความที่รอดำเนินการ

เป้าหมาย: ให้ OpenClaw อยู่ในกลุ่ม WhatsApp ตื่นขึ้นเฉพาะเมื่อถูกเรียก และแยกเธรดนั้นออกจากเซสชันข้อความส่วนตัว

พฤติกรรม

  • โหมดการเปิดใช้งาน: mention (ค่าเริ่มต้น) หรือ always mention ต้องมีการเรียก (การ @-กล่าวถึงจริงของ WhatsApp ผ่าน mentionedJids, รูปแบบ regex ที่ปลอดภัย หรือ E.164 ของบอตที่ปรากฏที่ใดก็ได้ในข้อความ) always จะปลุกเอเจนต์ในทุกข้อความ แต่ควรตอบกลับเฉพาะเมื่อเพิ่มคุณค่าได้อย่างมีความหมาย มิฉะนั้นจะคืนโทเค็นเงียบที่ตรงกันทุกตัวอักษร NO_REPLY / no_reply สามารถตั้งค่าเริ่มต้นในคอนฟิก (channels.whatsapp.groups) และเขียนทับต่อกลุ่มผ่าน /activation ได้ เมื่อมีการตั้งค่า channels.whatsapp.groups ค่านั้นยังทำหน้าที่เป็นรายการอนุญาตของกลุ่มด้วย (ใส่ "*" เพื่ออนุญาตทั้งหมด)
  • นโยบายกลุ่ม: channels.whatsapp.groupPolicy ควบคุมว่าจะยอมรับข้อความกลุ่มหรือไม่ (open|disabled|allowlist) allowlist ใช้ channels.whatsapp.groupAllowFrom (ค่ากลับสำรอง: channels.whatsapp.allowFrom ที่ระบุชัดเจน) ค่าเริ่มต้นคือ allowlist (ถูกบล็อกจนกว่าคุณจะเพิ่มผู้ส่ง)
  • เซสชันต่อกลุ่ม: คีย์เซสชันมีรูปแบบเช่น agent:<agentId>:whatsapp:group:<jid> ดังนั้นคำสั่งอย่าง /verbose on, /trace on หรือ /think high (ส่งเป็นข้อความเดี่ยว) จะมีขอบเขตเฉพาะกลุ่มนั้น สถานะข้อความส่วนตัวจะไม่ถูกแตะต้อง Heartbeat จะถูกข้ามสำหรับเธรดกลุ่ม
  • การฉีดบริบท: ข้อความกลุ่ม เฉพาะที่รอดำเนินการ (ค่าเริ่มต้น 50) ที่ ไม่ได้ กระตุ้นการรัน จะถูกเติมนำหน้าภายใต้ [Chat messages since your last reply - for context] โดยมีบรรทัดที่กระตุ้นอยู่ภายใต้ [Current message - respond to this] ข้อความที่อยู่ในเซสชันแล้วจะไม่ถูกฉีดซ้ำ
  • การแสดงผู้ส่ง: ตอนนี้ทุกชุดข้อความกลุ่มจะลงท้ายด้วย [from: Sender Name (+E164)] เพื่อให้ OpenClaw รู้ว่าใครกำลังพูด
  • ข้อความชั่วคราว/ดูครั้งเดียว: เราแกะข้อความเหล่านั้นก่อนแยกข้อความ/การกล่าวถึง ดังนั้นการเรียกที่อยู่ข้างในยังคงกระตุ้นได้
  • พรอมป์ระบบของกลุ่ม: ในเทิร์นแรกของเซสชันกลุ่ม (และทุกครั้งที่ /activation เปลี่ยนโหมด) เราจะฉีดข้อความสั้น ๆ ลงในพรอมป์ระบบ เช่น You are replying inside the WhatsApp group "<subject>". Group members: Alice (+44...), Bob (+43...), ... Activation: trigger-only ... Address the specific sender noted in the message context. หากไม่มีเมทาดาทา เราจะยังบอกเอเจนต์ว่าเป็นแชตกลุ่ม

ตัวอย่างคอนฟิก (WhatsApp)

เพิ่มบล็อก groupChat ลงใน ~/.openclaw/openclaw.json เพื่อให้การเรียกด้วยชื่อที่แสดงทำงานได้ แม้ WhatsApp จะตัด @ ที่มองเห็นได้ออกจากเนื้อความข้อความ:

json5
{  channels: {    whatsapp: {      groups: {        "*": { requireMention: true },      },    },  },  agents: {    list: [      {        id: "main",        groupChat: {          historyLimit: 50,          mentionPatterns: ["@?openclaw", "\\+?15555550123"],        },      },    ],  },}

หมายเหตุ:

  • regex ไม่สนใจตัวพิมพ์เล็กใหญ่ และใช้แนวป้องกัน safe-regex เดียวกับพื้นผิว regex ในคอนฟิกอื่น ๆ รูปแบบที่ไม่ถูกต้องและการทำซ้ำซ้อนที่ไม่ปลอดภัยจะถูกเพิกเฉย
  • WhatsApp ยังคงส่งการกล่าวถึงแบบมาตรฐานผ่าน mentionedJids เมื่อมีคนแตะรายชื่อติดต่อ ดังนั้นค่ากลับสำรองด้วยหมายเลขจึงแทบไม่จำเป็น แต่เป็นตาข่ายนิรภัยที่มีประโยชน์

คำสั่งเปิดใช้งาน (เฉพาะเจ้าของ)

ใช้คำสั่งแชตกลุ่ม:

  • /activation mention
  • /activation always

มีเพียงหมายเลขเจ้าของ (จาก channels.whatsapp.allowFrom หรือ E.164 ของบอตเองเมื่อไม่ได้ตั้งค่า) เท่านั้นที่เปลี่ยนค่านี้ได้ ส่ง /status เป็นข้อความเดี่ยวในกลุ่มเพื่อดูโหมดการเปิดใช้งานปัจจุบัน

วิธีใช้

  1. เพิ่มบัญชี WhatsApp ของคุณ (บัญชีที่รัน OpenClaw) เข้ากลุ่ม
  2. พูดว่า @openclaw … (หรือใส่หมายเลข) เฉพาะผู้ส่งที่อยู่ในรายการอนุญาตเท่านั้นที่กระตุ้นได้ เว้นแต่คุณตั้งค่า groupPolicy: "open"
  3. พรอมป์ของเอเจนต์จะรวมบริบทกลุ่มล่าสุดพร้อมเครื่องหมายท้าย [from: …] เพื่อให้สามารถเรียกคนที่ถูกต้องได้
  4. คำสั่งกำกับระดับเซสชัน (/verbose on, /trace on, /think high, /new หรือ /reset, /compact) มีผลเฉพาะกับเซสชันของกลุ่มนั้น ส่งเป็นข้อความเดี่ยวเพื่อให้ระบบลงทะเบียน เซสชันข้อความส่วนตัวของคุณยังคงแยกอิสระ

การทดสอบ / การยืนยัน

  • การทดสอบแบบเร็วด้วยตนเอง:
    • ส่งการเรียก @openclaw ในกลุ่ม และยืนยันว่ามีการตอบกลับที่อ้างถึงชื่อผู้ส่ง
    • ส่งการเรียกครั้งที่สอง และตรวจสอบว่ามีบล็อกประวัติรวมอยู่ จากนั้นถูกล้างในเทิร์นถัดไป
  • ตรวจสอบบันทึก Gateway (รันด้วย --verbose) เพื่อดูรายการ inbound web message ที่แสดง from: <groupJid> และส่วนต่อท้าย [from: …]

ข้อควรพิจารณาที่ทราบ

  • Heartbeat ถูกข้ามสำหรับกลุ่มโดยตั้งใจ เพื่อหลีกเลี่ยงการออกอากาศที่รบกวน
  • การระงับเสียงสะท้อนใช้สตริงชุดข้อความที่รวมกัน หากคุณส่งข้อความเหมือนกันสองครั้งโดยไม่มีการกล่าวถึง เฉพาะครั้งแรกเท่านั้นที่จะได้รับการตอบกลับ
  • รายการในที่เก็บเซสชันจะปรากฏเป็น agent:<agentId>:whatsapp:group:<jid> ในที่เก็บเซสชัน (~/.openclaw/agents/<agentId>/sessions/sessions.json โดยค่าเริ่มต้น) รายการที่หายไปหมายความเพียงว่ากลุ่มยังไม่ได้กระตุ้นการรัน
  • ตัวบ่งชี้การพิมพ์ในกลุ่มเป็นไปตาม agents.defaults.typingMode เมื่อเลือกให้การตอบกลับที่มองเห็นได้อยู่ในโหมดเฉพาะเครื่องมือข้อความ การพิมพ์จะเริ่มทันทีโดยค่าเริ่มต้น เพื่อให้สมาชิกกลุ่มเห็นว่าเอเจนต์กำลังทำงาน แม้จะไม่มีการโพสต์คำตอบสุดท้ายโดยอัตโนมัติก็ตาม คอนฟิกโหมดการพิมพ์ที่ระบุชัดเจนยังคงมีสิทธิเหนือกว่า

ที่เกี่ยวข้อง

Was this useful?
On this page

On this page