diff --git a/.openclaw-sync/source.json b/.openclaw-sync/source.json index 7198bbafc..77c15e921 100644 --- a/.openclaw-sync/source.json +++ b/.openclaw-sync/source.json @@ -1,5 +1,5 @@ { "repository": "openclaw/openclaw", - "sha": "b9eb31b54cfaffcfd116486e0e25fe610cc73c60", - "syncedAt": "2026-05-02T19:58:28.682Z" + "sha": "0fad53a19281abf934c5101d681dfe21f3770351", + "syncedAt": "2026-05-02T20:10:43.325Z" } diff --git a/docs/channels/whatsapp.md b/docs/channels/whatsapp.md index 5bc9bab9b..ac52d84df 100644 --- a/docs/channels/whatsapp.md +++ b/docs/channels/whatsapp.md @@ -158,6 +158,7 @@ OpenClaw recommends running WhatsApp on a separate number when possible. (The ch - The reconnect watchdog follows WhatsApp Web transport activity, not only inbound app-message volume: quiet linked-device sessions stay up while transport frames continue, but a transport stall forces reconnect well before the later remote disconnect path. - Direct chats use DM session rules (`session.dmScope`; default `main` collapses DMs to the agent main session). - Group sessions are isolated (`agent::whatsapp:group:`). +- WhatsApp Channels/Newsletters can be explicit outbound targets with their native `@newsletter` JID. Outbound newsletter sends use channel session metadata (`agent::whatsapp:channel:`) rather than DM session semantics. - WhatsApp Web transport honors standard proxy environment variables on the gateway host (`HTTPS_PROXY`, `HTTP_PROXY`, `NO_PROXY` / lowercase variants). Prefer host-level proxy config over channel-specific WhatsApp proxy settings. - When `messages.removeAckAfterReply` is enabled, OpenClaw clears the WhatsApp ack reaction after a visible reply is delivered. @@ -214,6 +215,8 @@ content and identifiers. `allowFrom` accepts E.164-style numbers (normalized internally). + `allowFrom` is a DM sender access-control list. It does not gate explicit outbound sends to WhatsApp group JIDs or `@newsletter` channel JIDs. + Multi-account override: `channels.whatsapp.accounts..dmPolicy` (and `allowFrom`) take precedence over channel-level defaults for that account. Runtime behavior details: diff --git a/docs/cli/directory.md b/docs/cli/directory.md index 073a698e0..5d24fbff1 100644 --- a/docs/cli/directory.md +++ b/docs/cli/directory.md @@ -32,7 +32,7 @@ openclaw message send --channel slack --target user:U012ABCDEF --message "hello" ## ID formats (by channel) -- WhatsApp: `+15551234567` (DM), `1234567890-1234567890@g.us` (group) +- WhatsApp: `+15551234567` (DM), `1234567890-1234567890@g.us` (group), `120363123456789@newsletter` (Channel/Newsletter outbound target) - Telegram: `@username` or numeric chat id; groups are numeric ids - Slack: `user:U…` and `channel:C…` - Discord: `user:` and `channel:` diff --git a/docs/cli/message.md b/docs/cli/message.md index 76c42c3e2..891a4b1c2 100644 --- a/docs/cli/message.md +++ b/docs/cli/message.md @@ -26,7 +26,7 @@ Channel selection: Target formats (`--target`): -- WhatsApp: E.164 or group JID +- WhatsApp: E.164, group JID, or WhatsApp Channel/Newsletter JID (`...@newsletter`) - Telegram: chat id or `@username` - Discord: `channel:` or `user:` (or `<@id>` mention; raw numeric ids are treated as channels) - Google Chat: `spaces/` or `users/` @@ -76,7 +76,7 @@ Name lookup: - Telegram only: `--thread-id` (forum topic id) - Slack only: `--thread-id` (thread timestamp; `--reply-to` uses the same field) - Telegram + Discord: `--silent` - - WhatsApp only: `--gif-playback` + - WhatsApp only: `--gif-playback`; WhatsApp Channels/Newsletters are addressed with their native `@newsletter` JID. - `poll` - Channels: WhatsApp/Telegram/Discord/Matrix/Microsoft Teams