Cài đặt (theo nhu cầu)
- Onboarding (
openclaw onboard) vàopenclaw channels add --channel whatsappsẽ nhắc cài đặt Plugin WhatsApp trong lần đầu bạn chọn kênh này. openclaw channels login --channel whatsappcũng cung cấp luồng cài đặt khi Plugin chưa có.- Kênh dev + git checkout: mặc định dùng đường dẫn Plugin cục bộ.
- Stable/Beta: cài đặt Plugin
@openclaw/whatsappchính thức từ ClawHub trước, với npm làm phương án dự phòng. - Runtime WhatsApp được phân phối bên ngoài gói npm OpenClaw lõi để các phụ thuộc runtime riêng của WhatsApp nằm cùng Plugin bên ngoài.
@openclaw/whatsapp) khi bạn cần phương án dự phòng từ registry.
Chỉ ghim phiên bản chính xác khi bạn cần một bản cài đặt có thể tái lập.
Pairing
Channel troubleshooting
Gateway configuration
Thiết lập nhanh
Link WhatsApp (QR)
Gọi người yêu cầu hiện tại bằng MeowCaller (thử nghiệm)
Plugin WhatsApp có thể hiển thịwhatsapp_call trong các lượt agent bắt nguồn từ WhatsApp. Công cụ này
dùng MeowCaller để thực hiện cuộc gọi thoại WhatsApp đến
người yêu cầu được ủy quyền hiện tại và phát một tin nhắn TTS của OpenClaw sau khi họ trả lời. Công cụ
không chấp nhận số đích, nên prompt không thể chuyển hướng cuộc gọi đến bên thứ ba.
Khả năng thử nghiệm này bị tắt theo mặc định.
Enable experimental calls
actions.calls: true vào kênh WhatsApp trong openclaw.json:false, OpenClaw không hiển thị công cụ whatsapp_call cho agent.Install the reviewed MeowCaller CLI
meowcaller trên PATH của máy chủ Gateway.
Cho đến khi MeowCaller PR #7 được hợp nhất, hãy build
nhánh đã được review tại commit 752050471fc2bf7a8cdfbf7dbd3cd4e865d85d3f:$HOME/.local/bin cũng nằm trên PATH của dịch vụ Gateway. Bản sửa đổi này cung cấp
các lệnh pair tường minh và notify chỉ gửi. notify không mở micro, loa,
thiết bị video, bộ nhận âm thanh vào, hoặc thu thập chẩn đoán. Không thay thế bằng lệnh
play của CLI ví dụ.Pair the MeowCaller linked device
whatsapp_call báo cáo
thư mục trạng thái theo tài khoản và lệnh ghép đôi. Với tài khoản mặc định:MeowCaller linked device ready. Sau đó lệnh thoát. Giữ wa-voip.db
riêng tư; đó là phiên thiết bị liên kết của MeowCaller. Hành động trạng thái whatsapp_call
trả về lệnh và shell theo tài khoản khi bạn dùng tài khoản không mặc định. Trên
Windows, chạy lệnh PowerShell của nó; MeowCaller tạo thư mục lưu trữ.Configure TTS and call from WhatsApp
Call me and say the build finished. Công cụ phân giải người gửi
từ ngữ cảnh inbound đáng tin cậy, tổng hợp một tệp WAV riêng tư tạm thời, chạy MeowCaller trong một
cửa sổ cuộc gọi có giới hạn, rồi xóa tệp âm thanh sau đó. OpenClaw truyền rõ ràng kho lưu trữ của
tài khoản, chờ trạng thái thoát bằng không sau khi trả lời, phát lại và gác máy, đồng thời xem
timeout hoặc thoát khác không là một lần gọi công cụ thất bại.- chỉ cuộc gọi âm thanh outbound một-một
- không có số đích tùy ý
- không chia sẻ xác thực với kết nối trò chuyện
- không tự gọi từ chế độ số cá nhân/tự trò chuyện
- âm thanh tổng hợp bị giới hạn ở 60 giây
- không có biên nhận nghe được ở phía thiết bị cầm tay ngoài hoàn tất trả lời/phát lại/gác máy của MeowCaller
- OpenClaw dừng tiến trình đồng hành sau một cửa sổ giới hạn 115-175 giây, bao gồm các pha kết nối, trả lời, phát lại và tắt của MeowCaller
Mẫu triển khai
Dedicated number (recommended)
Dedicated number (recommended)
- danh tính WhatsApp riêng cho OpenClaw
- allowlist DM và ranh giới định tuyến rõ hơn
- giảm khả năng nhầm lẫn tự trò chuyện
Personal-number fallback
Personal-number fallback
dmPolicy: "allowlist"allowFrombao gồm số cá nhân của bạnselfChatMode: true
allowFrom.WhatsApp Web-only channel scope
WhatsApp Web-only channel scope
Baileys) trong kiến trúc kênh OpenClaw hiện tại.Không có kênh nhắn tin Twilio WhatsApp riêng trong registry kênh trò chuyện tích hợp.Mô hình runtime
- Gateway sở hữu socket WhatsApp và vòng lặp kết nối lại.
- Watchdog kết nối lại dùng hoạt động truyền tải WhatsApp Web, không chỉ khối lượng tin nhắn ứng dụng inbound, nên một phiên thiết bị liên kết yên lặng sẽ không bị khởi động lại chỉ vì gần đây không có ai gửi tin nhắn. Một giới hạn im lặng ứng dụng dài hơn vẫn buộc kết nối lại nếu các frame truyền tải tiếp tục đến nhưng không có tin nhắn ứng dụng nào được xử lý trong cửa sổ watchdog; sau một lần kết nối lại tạm thời cho phiên vừa hoạt động gần đây, kiểm tra im lặng ứng dụng đó dùng timeout tin nhắn bình thường cho cửa sổ khôi phục đầu tiên.
- Thời gian socket Baileys được khai báo tường minh dưới
web.whatsapp.*:keepAliveIntervalMskiểm soát ping ứng dụng WhatsApp Web,connectTimeoutMskiểm soát timeout bắt tay mở kết nối, vàdefaultQueryTimeoutMskiểm soát thời gian chờ truy vấn Baileys cộng với giới hạn thao tác gửi/presence outbound cục bộ và biên nhận đọc inbound của OpenClaw. - Gửi outbound yêu cầu một listener WhatsApp đang hoạt động cho tài khoản đích.
- Gửi nhóm gắn siêu dữ liệu mention gốc cho các token
@+<digits>và@<digits>trong văn bản và chú thích media khi token khớp với siêu dữ liệu người tham gia WhatsApp hiện tại, bao gồm các nhóm dùng LID. - Trò chuyện trạng thái và broadcast bị bỏ qua (
@status,@broadcast). - Watchdog kết nối lại theo dõi hoạt động truyền tải WhatsApp Web, không chỉ khối lượng tin nhắn ứng dụng inbound: các phiên thiết bị liên kết yên lặng vẫn duy trì trong khi frame truyền tải tiếp tục, nhưng truyền tải bị ngừng sẽ buộc kết nối lại sớm hơn nhiều so với đường ngắt kết nối từ xa về sau.
- Trò chuyện trực tiếp dùng quy tắc phiên DM (
session.dmScope; mặc địnhmaingộp DM vào phiên chính của agent). - Phiên nhóm được cô lập (
agent:<agentId>:whatsapp:group:<jid>). - WhatsApp Channels/Newsletters có thể là đích outbound tường minh với JID
@newslettergốc của chúng. Gửi newsletter outbound dùng siêu dữ liệu phiên kênh (agent:<agentId>:whatsapp:channel:<jid>) thay vì ngữ nghĩa phiên DM. - Truyền tải WhatsApp Web tôn trọng các biến môi trường proxy tiêu chuẩn trên máy chủ Gateway (
HTTPS_PROXY,HTTP_PROXY,NO_PROXY/ các biến chữ thường tương ứng). Nên dùng cấu hình proxy cấp máy chủ thay vì thiết lập proxy WhatsApp riêng theo kênh. - Khi
messages.removeAckAfterReplyđược bật, OpenClaw xóa phản ứng ack WhatsApp sau khi phản hồi hiển thị được gửi.
Prompt phê duyệt
WhatsApp có thể hiển thị prompt phê duyệt exec và Plugin bằng phản ứng👍 / 👎. Việc gửi được
kiểm soát bởi cấu hình chuyển tiếp phê duyệt cấp cao nhất:
approvals.exec và approvals.plugin độc lập với nhau. Bật WhatsApp làm kênh chỉ liên kết
transport; nó không gửi prompt phê duyệt trừ khi nhóm phê duyệt tương ứng được bật
và định tuyến đến WhatsApp. Chế độ phiên chỉ gửi phê duyệt emoji gốc cho các phê duyệt
bắt nguồn từ WhatsApp. Chế độ đích dùng pipeline chuyển tiếp dùng chung cho các đích WhatsApp
tường minh và không tạo fanout DM người phê duyệt riêng.
Phản ứng phê duyệt WhatsApp yêu cầu người phê duyệt WhatsApp tường minh từ allowFrom hoặc "*".
defaultTo kiểm soát các đích tin nhắn mặc định thông thường; nó không phải là người phê duyệt phê duyệt. Các lệnh
/approve thủ công vẫn đi qua đường dẫn ủy quyền người gửi WhatsApp bình thường trước khi
phân giải phê duyệt.
Hook Plugin và quyền riêng tư
WhatsApp tin nhắn đến có thể chứa nội dung tin nhắn cá nhân, số điện thoại, mã định danh nhóm, tên người gửi và các trường tương quan phiên. Vì lý do đó, WhatsApp không phát các payload hookmessage_received đến plugin
trừ khi bạn bật rõ ràng:
Kiểm soát truy cập và kích hoạt
- DM policy
- Group policy + allowlists
- Mentions + /activation
channels.whatsapp.dmPolicy kiểm soát quyền truy cập trò chuyện trực tiếp:pairing(mặc định)allowlistopen(yêu cầuallowFrombao gồm"*")disabled
allowFrom chấp nhận các số theo kiểu E.164 (được chuẩn hóa nội bộ).allowFrom là danh sách kiểm soát truy cập người gửi DM. Nó không chặn các lượt gửi đi rõ ràng đến JID nhóm WhatsApp hoặc JID kênh @newsletter.Ghi đè nhiều tài khoản: channels.whatsapp.accounts.<id>.dmPolicy (và allowFrom) được ưu tiên hơn mặc định cấp kênh cho tài khoản đó.Chi tiết hành vi runtime:- các ghép đôi được lưu bền trong allow-store của kênh và được hợp nhất với
allowFromđã cấu hình - tự động hóa theo lịch và fallback người nhận Heartbeat dùng đích gửi rõ ràng hoặc
allowFromđã cấu hình; phê duyệt ghép đôi DM không mặc nhiên là người nhận Cron hoặc Heartbeat - nếu không cấu hình allowlist, số tự thân đã liên kết được cho phép theo mặc định
- OpenClaw không bao giờ tự động ghép đôi các DM
fromMegửi đi (tin nhắn bạn gửi cho chính mình từ thiết bị đã liên kết)
Liên kết ACP đã cấu hình
WhatsApp hỗ trợ liên kết ACP bền vững với các mụcbindings[] cấp cao nhất:
- Trò chuyện trực tiếp khớp các số E.164 như
+15555550123. - Nhóm khớp các JID nhóm WhatsApp như
120363424282127706@g.us. - Allowlist nhóm, chính sách người gửi và cổng nhắc đến hoặc kích hoạt chạy trước khi OpenClaw bảo đảm phiên ACP đã cấu hình tồn tại.
- Một liên kết ACP đã cấu hình và khớp sẽ sở hữu tuyến. Nhóm phát rộng WhatsApp không phân tán lượt đó sang các phiên WhatsApp thông thường.
Hành vi số cá nhân và tự trò chuyện
Khi số tự thân đã liên kết cũng có trongallowFrom, các biện pháp bảo vệ tự trò chuyện của WhatsApp sẽ kích hoạt:
- bỏ qua biên nhận đã đọc cho các lượt tự trò chuyện
- bỏ qua hành vi tự động kích hoạt mention-JID vốn sẽ ping chính bạn
- nếu chưa đặt
messages.responsePrefix, trả lời tự trò chuyện mặc định là[{identity.name}]hoặc[openclaw]
Chuẩn hóa tin nhắn và ngữ cảnh
Inbound envelope + reply context
Inbound envelope + reply context
ReplyToId, ReplyToBody, ReplyToSender, JID/E.164 của người gửi).
Khi đích trả lời được trích dẫn là media có thể tải xuống, OpenClaw lưu nó qua
kho media đến thông thường và hiển thị nó dưới dạng MediaPath/MediaType để
agent có thể kiểm tra hình ảnh được tham chiếu thay vì chỉ thấy
<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>, vì vậy việc nói lời nhắc đến bot trong ghi chú thoại có thể
kích hoạt trả lời. Nếu bản chép lời vẫn không nhắc đến bot, bản chép lời
được giữ trong lịch sử nhóm đang chờ thay vì placeholder thô.Phần thân vị trí dùng văn bản tọa độ ngắn gọn. Nhãn/bình luận vị trí và chi tiết liên hệ/vCard được hiển thị dưới dạng siêu dữ liệu không tin cậy trong khối rào, không phải văn bản prompt nội tuyến.Pending group history injection
Pending group history injection
- giới hạn mặc định:
50 - cấu hình:
channels.whatsapp.historyLimit - fallback:
messages.groupChat.historyLimit 0tắt
[Chat messages since your last reply - for context][Current message - respond to this]
Read receipts
Read receipts
Gửi, chia đoạn và media
Text chunking
Text chunking
- giới hạn đoạn mặc định:
channels.whatsapp.textChunkLimit = 4000 channels.whatsapp.chunkMode = "length" | "newline"- chế độ
newlineưu tiên ranh giới đoạn văn (dòng trống), sau đó fallback về chia đoạn an toàn theo độ dài
Outbound media behavior
Outbound media behavior
- hỗ trợ payload hình ảnh, video, âm thanh (ghi chú thoại PTT) và tài liệu
- media âm thanh được gửi qua payload
audiocủa Baileys vớiptt: true, để client WhatsApp hiển thị nó như một ghi chú thoại nhấn-để-nói - payload trả lời giữ nguyên
audioAsVoice; đầu ra ghi chú thoại TTS cho WhatsApp vẫn ở trên đường dẫn PTT này ngay cả khi provider trả về MP3 hoặc WebM - âm thanh Ogg/Opus gốc được gửi dưới dạng
audio/ogg; codecs=opusđể tương thích ghi chú thoại - âm thanh không phải Ogg, bao gồm đầu ra Microsoft Edge TTS MP3/WebM, được chuyển mã bằng
ffmpegsang Ogg/Opus mono 48 kHz trước khi gửi PTT /tts latestgửi trả lời assistant mới nhất dưới dạng một ghi chú thoại và chặn gửi lặp lại cho cùng trả lời đó;/tts chat on|off|defaultkiểm soát auto-TTS cho cuộc trò chuyện WhatsApp hiện tại- phát lại GIF động được hỗ trợ qua
gifPlayback: truetrên lượt gửi video forceDocument/asDocumentgửi hình ảnh, GIF và video đi qua payload tài liệu của Baileys để tránh nén media của WhatsApp trong khi vẫn giữ tên tệp và loại MIME đã phân giải- phụ đề được áp dụng cho mục media đầu tiên khi gửi payload trả lời đa media, ngoại trừ ghi chú thoại PTT gửi âm thanh trước và văn bản hiển thị riêng vì client WhatsApp không hiển thị phụ đề ghi chú thoại một cách nhất quán
- nguồn media có thể là HTTP(S),
file://hoặc đường dẫn cục bộ
Media size limits and fallback behavior
Media size limits and fallback behavior
- giới hạn lưu media đến:
channels.whatsapp.mediaMaxMb(mặc định50) - giới hạn gửi media đi:
channels.whatsapp.mediaMaxMb(mặc định50) - ghi đè theo tài khoản dùng
channels.whatsapp.accounts.<accountId>.mediaMaxMb - hình ảnh được tự động tối ưu hóa (quét thay đổi kích thước/chất lượng) để vừa giới hạn, trừ khi
forceDocument/asDocumentyêu cầu gửi dưới dạng tài liệu - khi gửi media thất bại, fallback mục đầu tiên gửi cảnh báo văn bản thay vì âm thầm bỏ phản hồi
Trích dẫn trả lời
WhatsApp hỗ trợ trích dẫn trả lời gốc, trong đó trả lời gửi đi trích dẫn tin nhắn đến một cách hiển thị. Kiểm soát bằngchannels.whatsapp.replyToMode.
| Giá trị | Hành vi |
|---|---|
"off" | Không bao giờ trích dẫn; gửi như tin nhắn thường |
"first" | Chỉ trích dẫn đoạn trả lời gửi đi đầu tiên |
"all" | Trích dẫn mọi đoạn trả lời gửi đi |
"batched" | Trích dẫn các trả lời theo lô trong hàng đợi, còn trả lời tức thời không được trích dẫn |
"off". Ghi đè theo tài khoản dùng channels.whatsapp.accounts.<id>.replyToMode.
Mức phản ứng
channels.whatsapp.reactionLevel kiểm soát mức độ rộng rãi agent dùng phản ứng emoji trên WhatsApp:
| Mức | Phản ứng xác nhận | Phản ứng do agent khởi tạo | Mô tả |
|---|---|---|---|
"off" | Không | Không | Hoàn toàn không có phản ứng |
"ack" | Có | Không | Chỉ phản ứng xác nhận (biên nhận trước trả lời) |
"minimal" | Có | Có (thận trọng) | Xác nhận + phản ứng của agent với hướng dẫn thận trọng |
"extensive" | Có | Có (khuyến khích) | Xác nhận + phản ứng của agent với hướng dẫn khuyến khích |
"minimal".
Ghi đè theo tài khoản dùng channels.whatsapp.accounts.<id>.reactionLevel.
Phản ứng xác nhận
WhatsApp hỗ trợ phản ứng xác nhận tức thời khi nhận tin nhắn đến quachannels.whatsapp.ackReaction.
Phản ứng xác nhận được kiểm soát bởi reactionLevel — chúng bị chặn khi reactionLevel là "off".
- được gửi ngay sau khi tin nhắn đến được chấp nhận (trước phản hồi)
- nếu có
ackReactionnhưng không cóemoji, WhatsApp dùng emoji danh tính của tác tử được định tuyến, dự phòng về ”👀”; bỏ quaackReactionhoặc đặtemoji: ""để không gửi phản ứng xác nhận - lỗi được ghi log nhưng không chặn việc gửi phản hồi thông thường
- chế độ nhóm
mentionsphản ứng trên các lượt được kích hoạt bằng lượt nhắc đến; kích hoạt nhómalwaysđóng vai trò bỏ qua kiểm tra này - WhatsApp dùng
channels.whatsapp.ackReaction(messages.ackReactioncũ không được dùng ở đây)
Phản ứng trạng thái vòng đời
Đặtmessages.statusReactions.enabled: true để cho phép WhatsApp thay thế phản ứng xác nhận trong một lượt thay vì giữ nguyên emoji biên nhận tĩnh. Khi bật, OpenClaw dùng cùng một vị trí phản ứng của tin nhắn đến cho các trạng thái vòng đời như đã xếp hàng, đang suy nghĩ, hoạt động công cụ, Compaction, hoàn tất và lỗi.
channels.whatsapp.ackReactionvẫn kiểm soát liệu phản ứng trạng thái có đủ điều kiện cho tin nhắn trực tiếp và nhóm hay không.- Phản ứng trạng thái đã xếp hàng dùng cùng emoji xác nhận hiệu lực như phản ứng xác nhận thông thường.
- WhatsApp có một vị trí phản ứng bot cho mỗi tin nhắn, vì vậy các cập nhật vòng đời thay thế phản ứng hiện tại tại chỗ.
messages.removeAckAfterReply: truexóa phản ứng trạng thái cuối cùng sau thời gian giữ hoàn tất/lỗi đã cấu hình.- Các danh mục emoji công cụ bao gồm
tool,coding,web,deploy,buildvàconcierge.
Nhiều tài khoản và thông tin xác thực
Chọn tài khoản và giá trị mặc định
Chọn tài khoản và giá trị mặc định
- ID tài khoản đến từ
channels.whatsapp.accounts - chọn tài khoản mặc định:
defaultnếu có, nếu không thì dùng ID tài khoản được cấu hình đầu tiên (đã sắp xếp) - ID tài khoản được chuẩn hóa nội bộ để tra cứu
Đường dẫn thông tin xác thực và khả năng tương thích cũ
Đường dẫn thông tin xác thực và khả năng tương thích cũ
- đường dẫn xác thực hiện tại:
~/.openclaw/credentials/whatsapp/<accountId>/creds.json - tệp sao lưu:
creds.json.bak - xác thực mặc định cũ trong
~/.openclaw/credentials/vẫn được nhận diện/di chuyển cho các luồng tài khoản mặc định
Hành vi đăng xuất
Hành vi đăng xuất
openclaw channels logout --channel whatsapp [--account <id>] xóa trạng thái xác thực WhatsApp cho tài khoản đó.Khi có thể truy cập Gateway, đăng xuất trước tiên dừng trình lắng nghe WhatsApp đang chạy cho tài khoản đã chọn để phiên đã liên kết không tiếp tục nhận tin nhắn cho đến lần khởi động lại tiếp theo. openclaw channels remove --channel whatsapp cũng dừng trình lắng nghe đang chạy trước khi vô hiệu hóa hoặc xóa cấu hình tài khoản.Trong các thư mục xác thực cũ, oauth.json được giữ lại trong khi các tệp xác thực Baileys bị xóa.Công cụ, hành động và ghi cấu hình
- Hỗ trợ công cụ tác tử bao gồm hành động phản ứng WhatsApp (
react). - Cổng hành động:
channels.whatsapp.actions.reactionschannels.whatsapp.actions.polls
- Ghi cấu hình do kênh khởi tạo được bật theo mặc định (tắt qua
channels.whatsapp.configWrites=false).
Khắc phục sự cố
Chưa liên kết (cần QR)
Chưa liên kết (cần QR)
Đã liên kết nhưng bị ngắt kết nối / vòng lặp kết nối lại
Đã liên kết nhưng bị ngắt kết nối / vòng lặp kết nối lại
status=408 Request Time-out Connection was lost, hãy tinh chỉnh
thời gian socket Baileys trong web.whatsapp. Bắt đầu bằng cách rút ngắn
keepAliveIntervalMs xuống dưới thời gian chờ nhàn rỗi của mạng và tăng
connectTimeoutMs trên các liên kết chậm hoặc mất gói:~/.openclaw/logs/whatsapp-health.log báo Gateway inactive nhưng
openclaw gateway status và openclaw channels status --probe cho thấy
gateway và WhatsApp vẫn khỏe mạnh, hãy chạy openclaw doctor. Trên Linux, doctor
cảnh báo về các mục crontab cũ vẫn gọi
~/.openclaw/bin/ensure-whatsapp.sh; xóa các mục cũ đó bằng
crontab -e vì cron có thể thiếu môi trường user-bus của systemd và
khiến script cũ đó báo sai tình trạng Gateway.Nếu cần, liên kết lại bằng channels login.Đăng nhập QR hết thời gian chờ sau proxy
Đăng nhập QR hết thời gian chờ sau proxy
openclaw channels login --channel whatsapp thất bại trước khi hiển thị mã QR có thể dùng được với status=408 Request Time-out hoặc ngắt kết nối socket TLS.Đăng nhập WhatsApp Web dùng môi trường proxy chuẩn của máy chủ gateway (HTTPS_PROXY, HTTP_PROXY, các biến chữ thường tương ứng và NO_PROXY). Xác minh tiến trình gateway kế thừa env proxy và NO_PROXY không khớp với mmg.whatsapp.net.Không có trình lắng nghe hoạt động khi gửi
Không có trình lắng nghe hoạt động khi gửi
Phản hồi xuất hiện trong bản ghi nhưng không có trong WhatsApp
Phản hồi xuất hiện trong bản ghi nhưng không có trong WhatsApp
auto-reply delivery failed hoặc auto-reply was not accepted by WhatsApp provider.Tin nhắn nhóm bị bỏ qua ngoài dự kiến
Tin nhắn nhóm bị bỏ qua ngoài dự kiến
groupPolicygroupAllowFrom/allowFrom- các mục danh sách cho phép
groups - cổng nhắc đến (
requireMention+ mẫu nhắc đến) - khóa trùng lặp trong
openclaw.json(JSON5): các mục sau ghi đè mục trước, vì vậy hãy giữ mộtgroupPolicyduy nhất cho mỗi phạm vi
channels.whatsapp.groups, WhatsApp vẫn có thể quan sát tin nhắn từ các nhóm khác, nhưng OpenClaw loại bỏ chúng trước khi định tuyến phiên. Thêm JID nhóm vào channels.whatsapp.groups hoặc thêm groups["*"] để chấp nhận tất cả nhóm trong khi vẫn giữ ủy quyền người gửi dưới groupPolicy và groupAllowFrom.Cảnh báo runtime Bun
Cảnh báo runtime Bun
Prompt hệ thống
WhatsApp hỗ trợ prompt hệ thống kiểu Telegram cho nhóm và cuộc trò chuyện trực tiếp qua các mapgroups và direct.
Thứ bậc phân giải cho tin nhắn nhóm:
Map groups hiệu lực được xác định trước: nếu tài khoản định nghĩa groups riêng, nó thay thế hoàn toàn map groups gốc (không gộp sâu). Sau đó tra cứu prompt chạy trên map đơn kết quả:
- Prompt hệ thống theo nhóm (
groups["<groupId>"].systemPrompt): được dùng khi mục nhóm cụ thể tồn tại trong map và khóasystemPromptcủa nó được định nghĩa. NếusystemPromptlà chuỗi rỗng (""), ký tự đại diện bị chặn và không áp dụng prompt hệ thống. - Prompt hệ thống ký tự đại diện nhóm (
groups["*"].systemPrompt): được dùng khi mục nhóm cụ thể hoàn toàn không có trong map, hoặc khi mục đó tồn tại nhưng không định nghĩa khóasystemPrompt.
direct hiệu lực được xác định trước: nếu tài khoản định nghĩa direct riêng, nó thay thế hoàn toàn map direct gốc (không gộp sâu). Sau đó tra cứu prompt chạy trên map đơn kết quả:
- Prompt hệ thống theo tin nhắn trực tiếp (
direct["<peerId>"].systemPrompt): được dùng khi mục peer cụ thể tồn tại trong map và khóasystemPromptcủa nó được định nghĩa. NếusystemPromptlà chuỗi rỗng (""), ký tự đại diện bị chặn và không áp dụng prompt hệ thống. - Prompt hệ thống ký tự đại diện tin nhắn trực tiếp (
direct["*"].systemPrompt): được dùng khi mục peer cụ thể hoàn toàn không có trong map, hoặc khi mục đó tồn tại nhưng không định nghĩa khóasystemPrompt.
dms vẫn là bucket ghi đè lịch sử nhẹ cho từng DM (dms.<id>.historyLimit). Ghi đè prompt nằm dưới direct.groups gốc được chủ ý chặn cho tất cả tài khoản trong thiết lập nhiều tài khoản — ngay cả các tài khoản không định nghĩa groups riêng — để ngăn bot nhận tin nhắn nhóm từ các nhóm mà nó không thuộc về. WhatsApp không áp dụng cơ chế bảo vệ này: groups gốc và direct gốc luôn được các tài khoản không định nghĩa ghi đè cấp tài khoản kế thừa, bất kể có bao nhiêu tài khoản được cấu hình. Trong thiết lập WhatsApp nhiều tài khoản, nếu bạn muốn prompt nhóm hoặc trực tiếp theo từng tài khoản, hãy định nghĩa đầy đủ map dưới từng tài khoản thay vì dựa vào mặc định cấp gốc.
Hành vi quan trọng:
channels.whatsapp.groupsvừa là map cấu hình theo nhóm vừa là danh sách cho phép nhóm ở cấp trò chuyện. Ở phạm vi gốc hoặc tài khoản,groups["*"]nghĩa là “tất cả nhóm được chấp nhận” cho phạm vi đó.- Chỉ thêm
systemPromptnhóm ký tự đại diện khi bạn đã muốn phạm vi đó chấp nhận tất cả nhóm. Nếu bạn vẫn chỉ muốn một tập ID nhóm cố định đủ điều kiện, đừng dùnggroups["*"]cho mặc định prompt. Thay vào đó, lặp lại prompt trên từng mục nhóm được cho phép rõ ràng. - Chấp nhận nhóm và ủy quyền người gửi là các kiểm tra riêng biệt.
groups["*"]mở rộng tập nhóm có thể đi tới xử lý nhóm, nhưng bản thân nó không ủy quyền mọi người gửi trong các nhóm đó. Quyền truy cập của người gửi vẫn được kiểm soát riêng bởichannels.whatsapp.groupPolicyvàchannels.whatsapp.groupAllowFrom. channels.whatsapp.directkhông có cùng tác dụng phụ đối với DM.direct["*"]chỉ cung cấp cấu hình cuộc trò chuyện trực tiếp mặc định sau khi một DM đã được chấp nhận bởidmPolicycộng vớiallowFromhoặc quy tắc kho ghép cặp.
Con trỏ tham chiếu cấu hình
Tham chiếu chính: Các trường WhatsApp quan trọng:- truy cập:
dmPolicy,allowFrom,groupPolicy,groupAllowFrom,groups - phân phối:
textChunkLimit,chunkMode,mediaMaxMb,sendReadReceipts,ackReaction,reactionLevel - đa tài khoản:
accounts.<id>.enabled,accounts.<id>.authDir, các ghi đè ở cấp tài khoản - vận hành:
configWrites,debounceMs,web.enabled,web.heartbeatSeconds,web.reconnect.*,web.whatsapp.* - hành vi phiên:
session.dmScope,historyLimit,dmHistoryLimit,dms.<id>.historyLimit - lời nhắc:
groups.<id>.systemPrompt,groups["*"].systemPrompt,direct.<id>.systemPrompt,direct["*"].systemPrompt