สถานะ: พร้อมใช้งาน production ผ่าน WhatsApp Web (Baileys) Gateway เป็นเจ้าของเซสชันที่เชื่อมโยงDocumentation Index
Fetch the complete documentation index at: https://docs.openclaw.ai/llms.txt
Use this file to discover all available pages before exploring further.
การติดตั้ง (เมื่อต้องการ)
- Onboarding (
openclaw onboard) และopenclaw channels add --channel whatsappจะแจ้งให้ติดตั้ง Plugin WhatsApp ในครั้งแรกที่คุณเลือก openclaw channels login --channel whatsappยังเสนอขั้นตอนการติดตั้งเมื่อ ยังไม่มี Plugin อยู่- Dev channel + git checkout: ค่าเริ่มต้นเป็นพาธ Plugin ภายในเครื่อง
- Stable/Beta: ใช้แพ็กเกจ npm
@openclaw/whatsappบนแท็ก release อย่างเป็นทางการปัจจุบัน
PATH ระหว่าง npm install เพราะ
หนึ่งใน dependency Baileys/libsignal ถูกดึงมาจาก git URL ให้ติดตั้ง
Git for Windows จากนั้นรีสตาร์ต shell แล้วรันการติดตั้งอีกครั้ง:
bin ของมันอยู่บน PATH
Pairing
Channel troubleshooting
Gateway configuration
การตั้งค่าอย่างรวดเร็ว
Link WhatsApp (QR)
รูปแบบการปรับใช้
Dedicated number (recommended)
Dedicated number (recommended)
- ข้อมูลระบุตัวตน WhatsApp แยกต่างหากสำหรับ OpenClaw
- allowlist ของ DM และขอบเขตการกำหนดเส้นทางชัดเจนขึ้น
- โอกาสเกิดความสับสนจากการแชทกับตัวเองต่ำลง
Personal-number fallback
Personal-number fallback
dmPolicy: "allowlist"allowFromรวมหมายเลขส่วนตัวของคุณselfChatMode: true
allowFromWhatsApp Web-only channel scope
WhatsApp Web-only channel scope
Baileys) ในสถาปัตยกรรม channel ปัจจุบันของ OpenClawไม่มี channel ส่งข้อความ Twilio WhatsApp แยกต่างหากในรีจิสทรี chat-channel ที่มีในตัวโมเดล runtime
- Gateway เป็นเจ้าของ socket WhatsApp และลูปการเชื่อมต่อใหม่
- watchdog การเชื่อมต่อใหม่ใช้กิจกรรม transport ของ WhatsApp Web ไม่ใช่เฉพาะปริมาณ app-message ขาเข้า ดังนั้นเซสชันอุปกรณ์ที่เชื่อมโยงซึ่งเงียบอยู่จะไม่ถูกรีสตาร์ตเพียงเพราะไม่มีใครส่งข้อความเมื่อเร็ว ๆ นี้ ขีดจำกัด application-silence ที่ยาวขึ้นยังคงบังคับให้เชื่อมต่อใหม่หาก transport frame ยังมาถึงแต่ไม่มีการจัดการข้อความ application ตลอดช่วงเวลา watchdog; หลังจากการเชื่อมต่อใหม่ชั่วคราวสำหรับเซสชันที่เพิ่งมีการใช้งาน การตรวจ application-silence นั้นจะใช้ timeout ข้อความปกติสำหรับช่วง recovery แรก
- timing ของ socket Baileys ระบุไว้อย่างชัดเจนใต้
web.whatsapp.*:keepAliveIntervalMsควบคุม ping application ของ WhatsApp Web,connectTimeoutMsควบคุม timeout ของ opening handshake และdefaultQueryTimeoutMsควบคุม timeout ของ query Baileys - การส่งขาออกต้องมี listener WhatsApp ที่ใช้งานอยู่สำหรับบัญชีเป้าหมาย
- การส่งกลุ่มจะแนบ metadata การ mention แบบ native สำหรับ token
@+<digits>และ@<digits>ในข้อความและ caption สื่อเมื่อ token ตรงกับ metadata ผู้เข้าร่วม WhatsApp ปัจจุบัน รวมถึงกลุ่มที่อิง LID - ระบบจะละเว้นแชทสถานะและ broadcast (
@status,@broadcast) - watchdog การเชื่อมต่อใหม่ติดตามกิจกรรม transport ของ WhatsApp Web ไม่ใช่เฉพาะปริมาณ app-message ขาเข้า: เซสชันอุปกรณ์ที่เชื่อมโยงซึ่งเงียบอยู่จะยังคงอยู่ขณะ transport frame ยังดำเนินต่อ แต่ transport stall จะบังคับให้เชื่อมต่อใหม่ก่อนเส้นทาง remote disconnect ที่มาภายหลังมาก
- แชทโดยตรงใช้กฎเซสชัน DM (
session.dmScope; ค่าเริ่มต้นmainรวม DM เข้ากับเซสชัน main ของ agent) - เซสชันกลุ่มถูกแยกออก (
agent:<agentId>:whatsapp:group:<jid>) - WhatsApp Channels/Newsletters สามารถเป็นเป้าหมายขาออกแบบชัดเจนด้วย JID
@newsletterแบบ native ของมัน การส่ง newsletter ขาออกใช้ metadata เซสชัน channel (agent:<agentId>:whatsapp:channel:<jid>) แทน semantics ของเซสชัน DM - transport ของ WhatsApp Web เคารพตัวแปรสภาพแวดล้อม proxy มาตรฐานบนโฮสต์ Gateway (
HTTPS_PROXY,HTTP_PROXY,NO_PROXY/ ตัวแปรอักษรเล็กรูปแบบเดียวกัน) ควรใช้การกำหนดค่า proxy ระดับโฮสต์แทนการตั้งค่า proxy เฉพาะ channel WhatsApp - เมื่อเปิดใช้
messages.removeAckAfterReplyOpenClaw จะล้าง reaction ack ของ WhatsApp หลังจากส่ง reply ที่มองเห็นได้แล้ว
hook ของ Plugin และความเป็นส่วนตัว
ข้อความขาเข้า WhatsApp อาจมีเนื้อหาข้อความส่วนบุคคล หมายเลขโทรศัพท์ ตัวระบุกลุ่ม ชื่อผู้ส่ง และฟิลด์การเชื่อมโยงเซสชัน ด้วยเหตุนี้ WhatsApp จะไม่ broadcast payload hookmessage_received ขาเข้าไปยัง Plugin
เว้นแต่คุณจะ opt in อย่างชัดเจน:
การควบคุมการเข้าถึงและการเปิดใช้งาน
- DM policy
- Group policy + allowlists
- Mentions + /activation
channels.whatsapp.dmPolicy ควบคุมการเข้าถึงแชทโดยตรง:pairing(ค่าเริ่มต้น)allowlistopen(ต้องให้allowFromรวม"*")disabled
allowFrom รับหมายเลขรูปแบบ E.164 (normalize ภายใน)allowFrom เป็นรายการควบคุมการเข้าถึงผู้ส่ง DM ไม่ได้กั้นการส่งขาออกแบบชัดเจนไปยัง JID กลุ่ม WhatsApp หรือ JID channel @newsletterการ override หลายบัญชี: channels.whatsapp.accounts.<id>.dmPolicy (และ allowFrom) มีลำดับความสำคัญเหนือค่าเริ่มต้นระดับ channel สำหรับบัญชีนั้นรายละเอียดพฤติกรรม runtime:- pairing ถูกเก็บถาวรใน allow-store ของ channel และรวมกับ
allowFromที่กำหนดค่าไว้ - automation ตามกำหนดเวลาและ fallback ผู้รับ Heartbeat ใช้เป้าหมายการส่งแบบชัดเจนหรือ
allowFromที่กำหนดค่าไว้; การอนุมัติ pairing ของ DM ไม่ใช่ผู้รับ Cron หรือ Heartbeat โดยนัย - หากไม่ได้กำหนดค่า allowlist หมายเลขตนเองที่เชื่อมโยงจะได้รับอนุญาตโดยค่าเริ่มต้น
- OpenClaw ไม่จับคู่ DM
fromMeขาออกโดยอัตโนมัติ (ข้อความที่คุณส่งถึงตัวเองจากอุปกรณ์ที่เชื่อมโยง)
พฤติกรรมหมายเลขส่วนตัวและ self-chat
เมื่อหมายเลขตนเองที่เชื่อมโยงอยู่ในallowFrom ด้วย safeguard ของ self-chat WhatsApp จะเปิดใช้งาน:
- ข้าม read receipt สำหรับรอบ self-chat
- ละเว้นพฤติกรรม auto-trigger ของ mention-JID ที่มิฉะนั้นจะ ping ตัวคุณเอง
- หากไม่ได้ตั้งค่า
messages.responsePrefixreply ของ self-chat จะมีค่าเริ่มต้นเป็น[{identity.name}]หรือ[openclaw]
การ normalize ข้อความและ context
Inbound envelope + reply context
Inbound envelope + reply context
ReplyToId, ReplyToBody, ReplyToSender, JID/E.164 ของผู้ส่ง)
เมื่อเป้าหมาย quoted reply เป็นสื่อที่ดาวน์โหลดได้ OpenClaw จะบันทึกผ่าน
store สื่อขาเข้าปกติและเปิดเผยเป็น MediaPath/MediaType เพื่อให้
agent สามารถตรวจสอบรูปภาพที่อ้างอิง แทนที่จะเห็นเพียง
<media:image>Media placeholders and location/contact extraction
Media placeholders and location/contact extraction
<media:image><media:video><media:audio><media:document><media:sticker>
<media:audio> ดังนั้นการพูด mention ถึง bot ใน voice note จึงสามารถ
trigger reply ได้ หาก transcript ยังไม่ mention ถึง bot
transcript จะถูกเก็บไว้ในประวัติกลุ่มที่รอดำเนินการแทน placeholder ดิบbody ของตำแหน่งใช้ข้อความพิกัดแบบกระชับ ป้ายกำกับ/ความคิดเห็นของตำแหน่งและรายละเอียด contact/vCard ถูกแสดงเป็น metadata ที่ไม่น่าเชื่อถือใน fenced block ไม่ใช่ข้อความ prompt แบบ inlinePending group history injection
Pending group history injection
- ขีดจำกัดเริ่มต้น:
50 - การกำหนดค่า:
channels.whatsapp.historyLimit - ทางเลือกสำรอง:
messages.groupChat.historyLimit 0ปิดใช้งาน
[ข้อความแชตตั้งแต่การตอบกลับครั้งล่าสุดของคุณ - เพื่อเป็นบริบท][ข้อความปัจจุบัน - ตอบกลับข้อความนี้]
ใบตอบรับการอ่าน
ใบตอบรับการอ่าน
การส่ง การแบ่งส่วน และสื่อ
การแบ่งส่วนข้อความ
การแบ่งส่วนข้อความ
- ขีดจำกัดส่วนเริ่มต้น:
channels.whatsapp.textChunkLimit = 4000 channels.whatsapp.chunkMode = "length" | "newline"- โหมด
newlineจะให้ความสำคัญกับขอบเขตย่อหน้า (บรรทัดว่าง) จากนั้นจึงถอยกลับไปใช้การแบ่งส่วนตามความยาวที่ปลอดภัย
พฤติกรรมสื่อขาออก
พฤติกรรมสื่อขาออก
- รองรับเพย์โหลดรูปภาพ วิดีโอ เสียง (บันทึกเสียง PTT) และเอกสาร
- สื่อเสียงจะถูกส่งผ่านเพย์โหลด
audioของ Baileys พร้อมptt: trueเพื่อให้ไคลเอนต์ WhatsApp แสดงผลเป็นบันทึกเสียงแบบกดเพื่อพูด - เพย์โหลดตอบกลับจะเก็บ
audioAsVoiceไว้; เอาต์พุตบันทึกเสียง TTS สำหรับ WhatsApp จะยังคงอยู่บนเส้นทาง PTT นี้ แม้ provider จะส่งคืน MP3 หรือ WebM - เสียง Ogg/Opus ดั้งเดิมจะถูกส่งเป็น
audio/ogg; codecs=opusเพื่อความเข้ากันได้กับบันทึกเสียง - เสียงที่ไม่ใช่ Ogg รวมถึงเอาต์พุต MP3/WebM ของ Microsoft Edge TTS จะถูกแปลงรหัสด้วย
ffmpegเป็น Ogg/Opus โมโน 48 kHz ก่อนส่งแบบ PTT /tts latestส่งคำตอบล่าสุดของ assistant เป็นบันทึกเสียงเดียว และระงับการส่งซ้ำสำหรับคำตอบเดียวกัน;/tts chat on|off|defaultควบคุม TTS อัตโนมัติสำหรับแชต WhatsApp ปัจจุบัน- รองรับการเล่น GIF แบบเคลื่อนไหวผ่าน
gifPlayback: trueในการส่งวิดีโอ - คำบรรยายจะถูกใช้กับรายการสื่อแรกเมื่อส่งเพย์โหลดตอบกลับหลายสื่อ ยกเว้นบันทึกเสียง PTT ซึ่งจะส่งเสียงก่อนและส่งข้อความที่มองเห็นได้แยกต่างหาก เพราะไคลเอนต์ WhatsApp ไม่ได้แสดงผลคำบรรยายของบันทึกเสียงอย่างสม่ำเสมอ
- แหล่งสื่ออาจเป็น HTTP(S),
file://หรือพาธภายในเครื่อง
ขีดจำกัดขนาดสื่อและพฤติกรรมทางเลือกสำรอง
ขีดจำกัดขนาดสื่อและพฤติกรรมทางเลือกสำรอง
- เพดานการบันทึกสื่อขาเข้า:
channels.whatsapp.mediaMaxMb(ค่าเริ่มต้น50) - เพดานการส่งสื่อขาออก:
channels.whatsapp.mediaMaxMb(ค่าเริ่มต้น50) - การแทนที่รายบัญชีใช้
channels.whatsapp.accounts.<accountId>.mediaMaxMb - รูปภาพจะถูกปรับให้เหมาะสมโดยอัตโนมัติ (ปรับขนาด/ไล่คุณภาพ) เพื่อให้พอดีกับขีดจำกัด
- เมื่อการส่งสื่อล้มเหลว ทางเลือกสำรองสำหรับรายการแรกจะส่งคำเตือนเป็นข้อความแทนการทิ้งคำตอบไปอย่างเงียบ ๆ
การอ้างอิงในการตอบกลับ
WhatsApp รองรับการอ้างอิงการตอบกลับแบบดั้งเดิม โดยคำตอบขาออกจะอ้างอิงข้อความขาเข้าให้เห็น ควบคุมได้ด้วยchannels.whatsapp.replyToMode
| ค่า | พฤติกรรม |
|---|---|
"off" | ไม่อ้างอิงเลย; ส่งเป็นข้อความธรรมดา |
"first" | อ้างอิงเฉพาะส่วนแรกของคำตอบขาออก |
"all" | อ้างอิงทุกส่วนของคำตอบขาออก |
"batched" | อ้างอิงคำตอบแบบชุดที่อยู่ในคิว โดยปล่อยให้คำตอบทันทีไม่ถูกอ้างอิง |
"off" การแทนที่รายบัญชีใช้ channels.whatsapp.accounts.<id>.replyToMode
ระดับการตอบสนอง
channels.whatsapp.reactionLevel ควบคุมว่า agent ใช้การตอบสนองด้วยอีโมจิบน WhatsApp กว้างเพียงใด:
| ระดับ | การตอบสนอง Ack | การตอบสนองที่ agent เริ่มเอง | คำอธิบาย |
|---|---|---|---|
"off" | ไม่ | ไม่ | ไม่มีการตอบสนองเลย |
"ack" | ใช่ | ไม่ | เฉพาะการตอบสนอง Ack (ใบตอบรับก่อนตอบกลับ) |
"minimal" | ใช่ | ใช่ (ระมัดระวัง) | Ack + การตอบสนองของ agent พร้อมแนวทางแบบระมัดระวัง |
"extensive" | ใช่ | ใช่ (ส่งเสริมให้ใช้) | Ack + การตอบสนองของ agent พร้อมแนวทางที่ส่งเสริมให้ใช้ |
"minimal"
การแทนที่รายบัญชีใช้ channels.whatsapp.accounts.<id>.reactionLevel
การตอบสนองเพื่อรับทราบ
WhatsApp รองรับการตอบสนอง Ack ทันทีเมื่อได้รับขาเข้าผ่านchannels.whatsapp.ackReaction
การตอบสนอง Ack ถูกควบคุมด้วย reactionLevel — จะถูกระงับเมื่อ reactionLevel เป็น "off"
- ส่งทันทีหลังจากขาเข้าได้รับการยอมรับ (ก่อนตอบกลับ)
- ความล้มเหลวจะถูกบันทึกในล็อก แต่ไม่บล็อกการส่งคำตอบตามปกติ
- โหมดกลุ่ม
mentionsจะตอบสนองในรอบที่ถูกกระตุ้นโดยการกล่าวถึง; การเปิดใช้งานกลุ่มalwaysทำหน้าที่เป็นทางลัดข้ามการตรวจสอบนี้ - WhatsApp ใช้
channels.whatsapp.ackReaction(ไม่ได้ใช้messages.ackReactionแบบเดิมที่นี่)
หลายบัญชีและข้อมูลประจำตัว
การเลือกบัญชีและค่าเริ่มต้น
การเลือกบัญชีและค่าเริ่มต้น
- รหัสบัญชีมาจาก
channels.whatsapp.accounts - การเลือกบัญชีเริ่มต้น:
defaultหากมีอยู่ มิฉะนั้นใช้รหัสบัญชีแรกที่กำหนดค่าไว้ (เรียงลำดับแล้ว) - รหัสบัญชีถูกปรับรูปแบบภายในสำหรับการค้นหา
พาธข้อมูลประจำตัวและความเข้ากันได้แบบเดิม
พาธข้อมูลประจำตัวและความเข้ากันได้แบบเดิม
- พาธ auth ปัจจุบัน:
~/.openclaw/credentials/whatsapp/<accountId>/creds.json - ไฟล์สำรอง:
creds.json.bak - auth เริ่มต้นแบบเดิมใน
~/.openclaw/credentials/ยังถูกรับรู้/ย้ายสำหรับโฟลว์บัญชีเริ่มต้น
พฤติกรรมการออกจากระบบ
พฤติกรรมการออกจากระบบ
openclaw channels logout --channel whatsapp [--account <id>] ล้างสถานะ auth ของ WhatsApp สำหรับบัญชีนั้นเมื่อเข้าถึง Gateway ได้ การออกจากระบบจะหยุดตัวรับฟัง WhatsApp แบบสดสำหรับบัญชีที่เลือกก่อน เพื่อไม่ให้เซสชันที่เชื่อมโยงอยู่ยังคงรับข้อความจนกว่าจะรีสตาร์ตครั้งถัดไป openclaw channels remove --channel whatsapp จะหยุดตัวรับฟังแบบสดก่อนปิดใช้งานหรือลบการกำหนดค่าบัญชีเช่นกันในไดเรกทอรี auth แบบเดิม oauth.json จะถูกเก็บไว้ ขณะที่ไฟล์ auth ของ Baileys จะถูกลบเครื่องมือ การกระทำ และการเขียนการกำหนดค่า
- การรองรับเครื่องมือของ agent รวมถึงการกระทำการตอบสนองของ WhatsApp (
react) - เกตการกระทำ:
channels.whatsapp.actions.reactionschannels.whatsapp.actions.polls
- การเขียนการกำหนดค่าที่เริ่มโดยช่องทางเปิดใช้งานโดยค่าเริ่มต้น (ปิดใช้งานผ่าน
channels.whatsapp.configWrites=false)
การแก้ไขปัญหา
ยังไม่ได้เชื่อมโยง (ต้องใช้ QR)
ยังไม่ได้เชื่อมโยง (ต้องใช้ QR)
เชื่อมโยงแล้วแต่ถูกตัดการเชื่อมต่อ / วนเชื่อมต่อใหม่
เชื่อมโยงแล้วแต่ถูกตัดการเชื่อมต่อ / วนเชื่อมต่อใหม่
status=408 Request Time-out Connection was lost ซ้ำ ๆ ให้ปรับ
เวลาของซ็อกเก็ต Baileys ภายใต้ web.whatsapp เริ่มจากการลด
keepAliveIntervalMs ให้ต่ำกว่าระยะหมดเวลาว่างของเครือข่าย และเพิ่ม
connectTimeoutMs บนลิงก์ที่ช้าหรือสูญเสียแพ็กเก็ต:~/.openclaw/logs/whatsapp-health.log ระบุว่า Gateway inactive แต่
openclaw gateway status และ openclaw channels status --probe แสดงว่า
gateway และ WhatsApp ปกติดี ให้รัน openclaw doctor บน Linux doctor
จะเตือนเกี่ยวกับรายการ crontab แบบเดิมที่ยังเรียกใช้
~/.openclaw/bin/ensure-whatsapp.sh; ลบรายการเก่าเหล่านั้นด้วย
crontab -e เพราะ cron อาจไม่มีสภาพแวดล้อม systemd user-bus และ
ทำให้สคริปต์เก่านั้นรายงานสุขภาพ gateway ผิดพลาดหากจำเป็น ให้เชื่อมโยงใหม่ด้วย channels loginการเข้าสู่ระบบด้วย QR หมดเวลาหลัง proxy
การเข้าสู่ระบบด้วย QR หมดเวลาหลัง proxy
openclaw channels login --channel whatsapp ล้มเหลวก่อนแสดงโค้ด QR ที่ใช้งานได้ พร้อม status=408 Request Time-out หรือการตัดการเชื่อมต่อซ็อกเก็ต TLSการเข้าสู่ระบบ WhatsApp Web ใช้สภาพแวดล้อม proxy มาตรฐานของโฮสต์ gateway (HTTPS_PROXY, HTTP_PROXY, ตัวแปรตัวพิมพ์เล็ก และ NO_PROXY) ตรวจสอบว่าโปรเซส gateway สืบทอด proxy env และ NO_PROXY ไม่ตรงกับ mmg.whatsapp.netไม่มีตัวรับฟังที่ใช้งานอยู่เมื่อส่ง
ไม่มีตัวรับฟังที่ใช้งานอยู่เมื่อส่ง
คำตอบปรากฏในทรานสคริปต์แต่ไม่อยู่ใน WhatsApp
คำตอบปรากฏในทรานสคริปต์แต่ไม่อยู่ใน WhatsApp
auto-reply delivery failed หรือ auto-reply was not accepted by WhatsApp providerข้อความกลุ่มถูกละเว้นโดยไม่คาดคิด
ข้อความกลุ่มถูกละเว้นโดยไม่คาดคิด
groupPolicygroupAllowFrom/allowFrom- รายการ allowlist ของ
groups - เกตการกล่าวถึง (
requireMention+ รูปแบบการกล่าวถึง) - คีย์ซ้ำใน
openclaw.json(JSON5): รายการภายหลังจะแทนที่รายการก่อนหน้า ดังนั้นให้มีgroupPolicyเดียวต่อขอบเขต
คำเตือนรันไทม์ Bun
คำเตือนรันไทม์ Bun
พรอมป์ระบบ
WhatsApp รองรับพรอมป์ระบบแบบ Telegram สำหรับกลุ่มและแชตโดยตรงผ่านแมปgroups และ direct
ลำดับชั้นการแก้ค่าสำหรับข้อความกลุ่ม:
แมป groups ที่มีผลจะถูกกำหนดก่อน: หากบัญชีกำหนด groups ของตนเองไว้ ค่านั้นจะแทนที่แมป groups ที่รากทั้งหมด (ไม่มี deep merge) จากนั้นการค้นหาพรอมป์จะทำงานบนแมปเดี่ยวที่ได้:
- พรอมป์ระบบเฉพาะกลุ่ม (
groups["<groupId>"].systemPrompt): ใช้เมื่อรายการกลุ่มเฉพาะมีอยู่ในแมป และ มีการกำหนดคีย์systemPromptหากsystemPromptเป็นสตริงว่าง ("") wildcard จะถูกระงับและไม่มีพรอมป์ระบบถูกนำไปใช้ - พรอมป์ระบบ wildcard ของกลุ่ม (
groups["*"].systemPrompt): ใช้เมื่อไม่มีรายการกลุ่มเฉพาะอยู่ในแมปเลย หรือเมื่อมีอยู่แต่ไม่ได้กำหนดคีย์systemPrompt
direct ที่มีผลจะถูกกำหนดก่อน: หากบัญชีกำหนด direct ของตนเองไว้ ค่านั้นจะแทนที่แมป direct ที่รากทั้งหมด (ไม่มี deep merge) จากนั้นการค้นหาพรอมป์จะทำงานบนแมปเดี่ยวที่ได้:
- พรอมป์ระบบแบบเฉพาะ Direct (
direct["<peerId>"].systemPrompt): ใช้เมื่อมีรายการเพียร์เฉพาะอยู่ในแมป และ มีการกำหนดคีย์systemPromptของรายการนั้น หากsystemPromptเป็นสตริงว่าง ("") ไวลด์การ์ดจะถูกระงับ และจะไม่มีการใช้พรอมป์ระบบ - พรอมป์ระบบไวลด์การ์ดของ Direct (
direct["*"].systemPrompt): ใช้เมื่อไม่มีรายการเพียร์เฉพาะอยู่ในแมปเลย หรือเมื่อมีอยู่แต่ไม่ได้กำหนดคีย์systemPrompt
dms ยังคงเป็นบักเก็ตโอเวอร์ไรด์ประวัติต่อ DM แบบเบา (dms.<id>.historyLimit) ส่วนการโอเวอร์ไรด์พรอมป์อยู่ภายใต้ directgroups ระดับรากจะถูกระงับโดยตั้งใจสำหรับทุกบัญชีในการตั้งค่าหลายบัญชี แม้แต่บัญชีที่ไม่ได้กำหนด groups ของตัวเอง เพื่อป้องกันไม่ให้บอตได้รับข้อความกลุ่มจากกลุ่มที่บอตไม่ได้เป็นสมาชิกอยู่ WhatsApp ไม่ใช้การป้องกันนี้: groups ระดับรากและ direct ระดับรากจะถูกสืบทอดโดยบัญชีที่ไม่ได้กำหนดโอเวอร์ไรด์ระดับบัญชีเสมอ ไม่ว่าจะกำหนดค่ากี่บัญชีก็ตาม ในการตั้งค่า WhatsApp แบบหลายบัญชี หากคุณต้องการพรอมป์กลุ่มหรือ direct แยกตามบัญชี ให้กำหนดแมปเต็มภายใต้แต่ละบัญชีอย่างชัดเจนแทนการพึ่งพาค่าเริ่มต้นระดับราก
พฤติกรรมสำคัญ:
channels.whatsapp.groupsเป็นทั้งแมปการกำหนดค่าต่อกลุ่มและ allowlist กลุ่มระดับแชต ไม่ว่าจะอยู่ในขอบเขตระดับรากหรือระดับบัญชีgroups["*"]หมายถึง “อนุญาตทุกกลุ่ม” สำหรับขอบเขตนั้น- เพิ่ม
systemPromptของกลุ่มแบบไวลด์การ์ดเฉพาะเมื่อคุณต้องการให้ขอบเขตนั้นอนุญาตทุกกลุ่มอยู่แล้ว หากคุณยังต้องการให้มีเพียงชุด ID กลุ่มคงที่เท่านั้นที่มีสิทธิ์ อย่าใช้groups["*"]เป็นค่าเริ่มต้นของพรอมป์ ให้ทำซ้ำพรอมป์ในแต่ละรายการกลุ่มที่อยู่ใน allowlist อย่างชัดเจนแทน - การรับกลุ่มและการอนุญาตผู้ส่งเป็นการตรวจสอบแยกกัน
groups["*"]ขยายชุดของกลุ่มที่เข้าถึงการจัดการกลุ่มได้ แต่ไม่ได้อนุญาตผู้ส่งทุกคนในกลุ่มเหล่านั้นด้วยตัวเอง การเข้าถึงของผู้ส่งยังคงถูกควบคุมแยกต่างหากโดยchannels.whatsapp.groupPolicyและchannels.whatsapp.groupAllowFrom channels.whatsapp.directไม่มีผลข้างเคียงแบบเดียวกันสำหรับ DMdirect["*"]ให้เพียงการกำหนดค่า direct-chat เริ่มต้นหลังจาก DM ได้รับการรับเข้าแล้วโดยdmPolicyร่วมกับallowFromหรือกฎของ pairing-store
ตัวชี้ไปยังเอกสารอ้างอิงการกำหนดค่า
เอกสารอ้างอิงหลัก: ฟิลด์ WhatsApp ที่มีสัญญาณสำคัญ:- การเข้าถึง:
dmPolicy,allowFrom,groupPolicy,groupAllowFrom,groups - การส่งมอบ:
textChunkLimit,chunkMode,mediaMaxMb,sendReadReceipts,ackReaction,reactionLevel - หลายบัญชี:
accounts.<id>.enabled,accounts.<id>.authDir, การโอเวอร์ไรด์ระดับบัญชี - การดำเนินงาน:
configWrites,debounceMs,web.enabled,web.heartbeatSeconds,web.reconnect.*,web.whatsapp.* - พฤติกรรมเซสชัน:
session.dmScope,historyLimit,dmHistoryLimit,dms.<id>.historyLimit - พรอมป์:
groups.<id>.systemPrompt,groups["*"].systemPrompt,direct.<id>.systemPrompt,direct["*"].systemPrompt