Skip to content

feat(bluebubbles): inbound audio enricher β€” pre-dispatch transcription via /api/v1/message/audio-transcriptΒ #68719

@markthebest12

Description

@markthebest12

Problem

When an iMessage voice note arrives via BlueBubbles, the agent receives an empty string or 🎀 [Audio] and responds apologetically. BlueBubbles v1.14.0+ already exposes GET /api/v1/message/audio-transcript/:guid (Apple's on-device transcription, no ASR cost). OpenClaw has no built-in mechanism to fetch this transcript and rewrite the message body before the agent sees it.

Proposed feature

Add an inbound audio enricher to the BlueBubbles channel extension that:

  1. Detects audio-mime attachments on inbound messages (audio/*, or UTIs public.audio, com.apple.m4a-audio, public.mpeg-4-audio).
  2. Calls GET /api/v1/message/audio-transcript/:guid on the upstream BB server before dispatch.
  3. Rewrites the message body from ``/🎀 [Audio] to the transcript text.
  4. Fires a message_transcribed hook (scoped payload: accountId + guid + transcript, not full OpenClawConfig).
  5. Configuration surface: channels.bluebubbles.inboundAudioEnricher.enabled: boolean (default true when BB version >= 1.14.0), with per-attachment-type overrides.
  6. Never logs transcript content (PII).

Current workaround

openclaw-infra carries a flake overlay (nix/patches/bb-inbound-audio-enricher.patch) that wires this in locally. Spec: openclaw-infra docs/superpowers/specs/2026-04-17-bb-inbound-audio-design.md. Tracking issue: openclaw-infra#753.

Acceptance

  • Enricher runs before agent dispatch, replaces text body.
  • Hook payload scoped to accountId (not full gateway config).
  • Opt-out config flag honored.
  • Build passes with enricher module + defaults module.

Will remove the flake overlay once a tagged release includes the enricher.

Metadata

Metadata

Assignees

No one assigned

    Labels

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions