#BlueBubble binding
1 messages Β· Page 1 of 1 (latest)
I checked the current docs/source. The key bit: accountId is not the channel selector. If Simon passes accountId: "bluebubbles" while the run is Discord-bound, OpenClaw still resolves the delivery channel from the current Discord context, which explains deliveryContext.channel = discord, accountId = bluebubbles.
Use an explicit channel + target:
{
"action": "send",
"channel": "bluebubbles",
"target": "+17855050067",
"message": "Seed queue drained."
}
If you have named BlueBubbles accounts, add the actual account id:
{
"action": "send",
"channel": "bluebubbles",
"accountId": "default",
"target": "+17855050067",
"message": "Seed queue drained."
}
target: "bluebubbles:+1555..." is accepted by the BlueBubbles target normalizer once the channel is already BlueBubbles, but it is not the thing Iβd rely on to switch channels from a Discord-bound session. Be explicit: channel: "bluebubbles".
The other likely blocker is cross-context policy. OpenClaw blocks cross-provider sends by default. For a Discord-bound agent to send BlueBubbles/iMessage, set:
{
tools: {
message: {
crossContext: {
allowAcrossProviders: true,
marker: { enabled: true, prefix: "[from {channel}] " }
}
}
}
}
Then restart the gateway. Docs: https://docs.openclaw.ai/help/faq#how-do-i-send-a-discord-message-from-telegram-cross-context-messaging-denied
Answers to the numbered bits:
- Correct shape is
channel: "bluebubbles"plustarget: "+E164"/chat_guid:.../chat_id:.../chat_identifier:....accountIdis only for selecting a configured account. - No binding is needed for ad-hoc outbound sends. Bindings are for persistent ACP/session routing. They can help account selection, but they are not required if you pass
channel,target, and optionallyaccountId.
channels.bluebubbles.enabled: trueauto-activates the bundled BlueBubbles channel plugin.plugins.entries.bluebubbles.config: {}does not needenabled: truein normal config. Exception: if you useplugins.allow, make surebluebubblesis in the allowlist;plugins.enabled: false,plugins.deny, orplugins.entries.bluebubbles.enabled: falsecan still block it.- Use
openclaw status --deepandopenclaw doctor; doctor now reports plugin/channel status warnings when the gateway is healthy. A practical outbound smoke test is:
openclaw message send --channel bluebubbles --target "+17855050067" --message "test from OpenClaw"
- In Simonβs
TOOLS.md, write it very literally:
### iMessage / BlueBubbles notifications
Use the message tool with an explicit channel. Do not put "bluebubbles" in accountId unless that is the configured account id.
Example:
{ "action": "send", "channel": "bluebubbles", "accountId": "default", "target": "+17855050067", "message": "Done." }
This requires tools.message.crossContext.allowAcrossProviders=true when the active session is Discord-bound.