openclaw - 💡(How to fix) Fix [Feature]: Feishu — preserve text alongside TTS voice messages [1 comments, 2 participants]

Official PRs (…)
ON THIS PAGE

Recommended Tools

×6

Utilities matched from this issue’s tags and category — try them while you read without losing context.

GitHub issue graph ai analysis

Paste a GitHub issue URL. We fetch that issue, discover linked issues from bodies/comments/timeline, collect linked pull requests, and produce a structured English report.

The report is written in English Markdown for sharing and archival.

Helpful · Quick feedback

Loading…
GitHub stats
openclaw/openclaw#80249Fetched 2026-05-11 03:17:06
View on GitHub
Comments
1
Participants
2
Timeline
1
Reactions
2
Timeline (top)
commented ×1

Add a configuration option to preserve text content alongside TTS voice messages on Feishu channel. Currently, text is unconditionally suppressed when voice media is present.

Root Cause

Add a configuration option to preserve text content alongside TTS voice messages on Feishu channel. Currently, text is unconditionally suppressed when voice media is present.

Fix Action

Fix / Workaround

In extensions/feishu/src/reply-dispatcher.ts, the deliver function suppresses text delivery when voice media is detected:

Code Example

const shouldDeliverText =
  hasText &&
  !hasVoiceMedia &&   // ← text skipped for voice replies
  ...

---

// Option A: Global TTS config
{
  messages: {
    tts: {
      preserveTextWithVoice: true
    }
  }
}

// Option B: Feishu channel-level
{
  channels: {
    feishu: {
      preserveTextWithVoice: true
    }
  }
}

// Option C: Per-account (most flexible for multi-agent setups)
{
  channels: {
    feishu: {
      accounts: {
        "dd-family": {
          preserveTextWithVoice: true
        }
      }
    }
  }
}
RAW_BUFFERClick to expand / collapse

Summary

Add a configuration option to preserve text content alongside TTS voice messages on Feishu channel. Currently, text is unconditionally suppressed when voice media is present.

Use Case

My DD Agent serves my 9-year-old son — a voice-based AI companion for learning and play.

Voice messages make interaction lively and engaging for kids. But there are two critical reasons text must also be visible:

  1. Accessibility: If the child does not hear the voice clearly (noisy environment, unclear pronunciation), he can read the text.
  2. Literacy training: Seeing text alongside spoken words helps the child practice reading and character recognition — turning everyday chat into a learning opportunity.

Currently on Feishu, when TTS auto-reply is enabled, only the voice bubble is delivered — the text is discarded. This breaks both use cases.

Current Behavior

In extensions/feishu/src/reply-dispatcher.ts, the deliver function suppresses text delivery when voice media is detected:

const shouldDeliverText =
  hasText &&
  !hasVoiceMedia &&   // ← text skipped for voice replies
  ...

And shouldSuppressFeishuTextForVoiceMedia() in extensions/feishu/src/media.ts returns true whenever audioAsVoice === true or the file is .opus/.ogg.

Proposed Solution

Add a preserveTextWithVoice boolean option, defaulting to false (backward compatible):

// Option A: Global TTS config
{
  messages: {
    tts: {
      preserveTextWithVoice: true
    }
  }
}

// Option B: Feishu channel-level
{
  channels: {
    feishu: {
      preserveTextWithVoice: true
    }
  }
}

// Option C: Per-account (most flexible for multi-agent setups)
{
  channels: {
    feishu: {
      accounts: {
        "dd-family": {
          preserveTextWithVoice: true
        }
      }
    }
  }
}

When enabled, both a text message and a voice bubble are sent in sequence, rather than voice-only.

Impact

  • Feishu users using TTS for educational or accessibility purposes
  • Parents using AI companions for children's language learning
  • Any scenario where the user wants both "hear and read"

Alternatives Considered

  • Modifying the dist bundle directly (fragile, breaks on upgrades)
  • Community plugins (none currently address this)

Vote matrix · Quick signals

Works
Did the solution work? Tap to confirm.
Easy Fix
Was it a quick fix?
Time Saver
Did it save you time?
Blocking
Was it severely blocking?
Common Issue
Are others likely hitting this too?
Flaky / Intermittent
Is it intermittent?
Verified / Reproducible
Can you reproduce it reliably?
Loading…

Still need to ship something?

×6

Another batch ranked right after the header list — different links, same matching logic.

Back to top recommendations

TRENDING