openclaw - 💡(How to fix) Fix [Feature]: Feishu TTS Audio Replies Send File Path Instead of Playable Audio [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#72049Fetched 2026-04-27 05:35:36
View on GitHub
Comments
1
Participants
2
Timeline
3
Reactions
0
Timeline (top)
closed ×1commented ×1labeled ×1

When the Feishu channel receives a voice message and OpenClaw's built-in TTS auto mechanism generates an audio reply, the file path (e.g., C:\Users\...\media\outbound\voice-xxx.mp3) is sent as plain text instead of using Feishu's msg_type: "audio" API to deliver a directly-playable audio message.

Root Cause

When the Feishu channel receives a voice message and OpenClaw's built-in TTS auto mechanism generates an audio reply, the file path (e.g., C:\Users\...\media\outbound\voice-xxx.mp3) is sent as plain text instead of using Feishu's msg_type: "audio" API to deliver a directly-playable audio message.

Fix Action

Fix / Workaround

  • Affected users/systems/channels: All users running OpenClaw with Feishu channel + TTS enabled (messages.tts.auto: "inbound")

  • Severity: Annoying — blocks the intended voice reply experience but does not crash

  • Frequency: Every voice message interaction where TTS reply is expected

  • Consequence: Users must manually open the audio file from the filesystem path, defeating the purpose of voice reply; degrades user experience on voice-forward workflows

  • Workaround exists: Manual node send_audio.js invocation works but requires the Agent to explicitly call it, which is not part of the natural TTS auto flow

  • Workaround script: ~/.openclaw/workspace/send_audio.js

  • Feishu audio function: extensions/openclaw-lark/src/messaging/outbound/media.jssendAudioLark()

RAW_BUFFERClick to expand / collapse

Summary

When the Feishu channel receives a voice message and OpenClaw's built-in TTS auto mechanism generates an audio reply, the file path (e.g., C:\Users\...\media\outbound\voice-xxx.mp3) is sent as plain text instead of using Feishu's msg_type: "audio" API to deliver a directly-playable audio message.

Problem to solve

Current pain: Users who send voice messages expect to receive voice replies. Instead, they receive a text message containing the local filesystem path to the generated MP3 file, which is not playable and requires manual work to locate and open the file.

Why current behavior is insufficient:

  • The TTS file is successfully generated at ~/.openclaw/media/outbound/voice-*.mp3
  • Feishu's plugin has a working sendAudioLark() function that can send audio messages via msg_type: "audio"
  • However, the built-in TTS auto delivery path does not invoke this function — it treats the audio file path as plain text and sends it via sendTextLark()
  • Users receive: C:\Users\name\.openclaw\media\outbound\voice-xxx.mp3 (unplayable text)
  • Users expect: 📎 audio bubble in Feishu that plays directly

Proposed solution

Option A (Recommended — Built-in): Extend OpenClaw's TTS auto mechanism to detect Feishu as the target channel and route audio files through Feishu's audio API:

  1. TTS auto trigger fires after agent reply is generated
  2. Detect current channel is Feishu
  3. TTS generates MP3 file to media/outbound/
  4. Instead of appending file path to text reply, invoke:
    • uploadFileLark() → get file_key
    • sendAudioLark() → send msg_type: "audio" message
  5. User receives playable audio bubble in Feishu

Option B (Alternative): Expose a feishu_send_audio Agent Tool so the Agent can explicitly call the existing send_audio.js logic after generating TTS output, as a skill/tool step rather than automatic behavior.

Alternatives considered

No response

Impact

  • Affected users/systems/channels: All users running OpenClaw with Feishu channel + TTS enabled (messages.tts.auto: "inbound")
  • Severity: Annoying — blocks the intended voice reply experience but does not crash
  • Frequency: Every voice message interaction where TTS reply is expected
  • Consequence: Users must manually open the audio file from the filesystem path, defeating the purpose of voice reply; degrades user experience on voice-forward workflows
  • Workaround exists: Manual node send_audio.js invocation works but requires the Agent to explicitly call it, which is not part of the natural TTS auto flow

Evidence/examples

Environment

  • OpenClaw version: 2026.4.23
  • Feishu plugin version: 2026.4.1
  • OS: Windows
  • TTS Provider: Microsoft (zh-CN-XiaoxiaoNeural)
  • Channel: Feishu (WebSocket mode)

Related Files

  • Workaround script: ~/.openclaw/workspace/send_audio.js
  • Feishu audio function: extensions/openclaw-lark/src/messaging/outbound/media.jssendAudioLark()

Additional information

No response

extent analysis

TL;DR

Modify OpenClaw's TTS auto mechanism to use Feishu's audio API for sending voice replies.

Guidance

  • Identify the TTS auto delivery path in OpenClaw and modify it to detect Feishu as the target channel.
  • Instead of sending the audio file path as plain text, invoke uploadFileLark() to get the file_key and then use sendAudioLark() to send the audio message.
  • Consider implementing Option A (Built-in) for a seamless voice reply experience.
  • If modifying the TTS auto mechanism is not feasible, explore Option B (Alternative) by exposing a feishu_send_audio Agent Tool.

Example

No code snippet is provided as the issue does not contain sufficient code details.

Notes

The proposed solution assumes that the sendAudioLark() function in the Feishu plugin is working correctly and can handle the audio file generated by the TTS mechanism.

Recommendation

Apply workaround by modifying the TTS auto mechanism to use Feishu's audio API, as described in Option A (Built-in), to provide a seamless voice reply experience for users.

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

openclaw - 💡(How to fix) Fix [Feature]: Feishu TTS Audio Replies Send File Path Instead of Playable Audio [1 comments, 2 participants]