mirror of
https://github.com/hanzoai/bot.git
synced 2026-10-30 17:24:26 +00:00
Strip upstream marketing surfaces (logo picture, EXFOLIATE tagline, sponsor block pointing at upstream's OpenAI/Vercel/Blacksmith/Convex relationship) and rewrite refs: openclaw → hanzo-bot (CLI name from package.bin) OpenClaw → Hanzo Bot (display name) openclaw/openclaw → hanzoai/bot openclaw.ai → hanzo.ai docs.openclaw.ai → docs.hanzo.ai discord.gg/clawd → hanzo.ai#community openclaw/nix-openclaw → hanzoai/nix-bot Touches the top-level README plus the in-tree READMEs that carried the same upstream copy (apps/*, assets/chrome-extension, docs/security, docs/.i18n, extensions/*, scripts/shell-helpers, src/hooks/bundled). Residual OPENCLAW_* env-var refs are intentionally left — they document the runtime config keys the code still reads. Renaming those needs a matching code change with a config migration.
2.3 KiB
2.3 KiB
BlueBubbles extension (developer reference)
This directory contains the BlueBubbles external channel plugin for Hanzo Bot.
If you’re looking for how to use BlueBubbles as an agent/tool user, see:
skills/bluebubbles/SKILL.md
Layout
- Extension package:
extensions/bluebubbles/(entry:index.ts). - Channel implementation:
extensions/bluebubbles/src/channel.ts. - Webhook handling:
extensions/bluebubbles/src/monitor.ts(register per-account route viaregisterPluginHttpRoute). - REST helpers:
extensions/bluebubbles/src/send.ts+extensions/bluebubbles/src/probe.ts. - Runtime bridge:
extensions/bluebubbles/src/runtime.ts(set viaapi.runtime). - Catalog entry for onboarding:
src/channels/plugins/catalog.ts.
Internal helpers (use these, not raw API calls)
probeBlueBubblesinextensions/bluebubbles/src/probe.tsfor health checks.sendMessageBlueBubblesinextensions/bluebubbles/src/send.tsfor text delivery.resolveChatGuidForTargetinextensions/bluebubbles/src/send.tsfor chat lookup.sendBlueBubblesReactioninextensions/bluebubbles/src/reactions.tsfor tapbacks.sendBlueBubblesTyping+markBlueBubblesChatReadinextensions/bluebubbles/src/chat.ts.downloadBlueBubblesAttachmentinextensions/bluebubbles/src/attachments.tsfor inbound media.buildBlueBubblesApiUrl+blueBubblesFetchWithTimeoutinextensions/bluebubbles/src/types.tsfor shared REST plumbing.
Webhooks
- BlueBubbles posts JSON to the gateway HTTP server.
- Normalize sender/chat IDs defensively (payloads vary by version).
- Skip messages marked as from self.
- Route into core reply pipeline via the plugin runtime (
api.runtime) andhanzo-bot/plugin-sdkhelpers. - For attachments/stickers, use
<media:...>placeholders when text is empty and attach media paths viaMediaUrl(s)in the inbound context.
Config (core)
channels.bluebubbles.serverUrl(base URL),channels.bluebubbles.password,channels.bluebubbles.webhookPath.- Action gating:
channels.bluebubbles.actions.reactions(default true).
Message tool notes
- Reactions: the
reactaction requires atarget(phone number or chat identifier) in addition tomessageId. Example:action=react target=+15551234567 messageId=ABC123 emoji=❤️