feishu-audio
将本地音频文件转换为飞书可播放的语音消息。
适用场景
- - 用户说"朗读 xxx"、"语音播报"
- 需要发送可播放的语音消息到飞书
前置条件
- 1. ffmpeg - 音频格式转换
CODEBLOCK0
- 2. 飞书应用配置 - 需要以下环境变量:
-
FEISHU_APP_ID
- INLINECODE1
- 3. 接收者 - 飞书用户 Open ID(从上下文获取或手动指定)
使用方法
方式 1:使用已有音频文件
CODEBLOCK1
方式 2:结合 TTS 使用
先生成音频,再用本技能发送:
CODEBLOCK2
脚本说明
send_audio.sh
主脚本,完整的音频消息发送流程。
参数:
- -
$1 - 音频文件路径(必需) - INLINECODE3 - 接收者 Open ID(可选,默认从环境变量 FEISHU_RECEIVER 获取)
环境变量:
- -
FEISHU_APP_ID - 飞书应用 ID - INLINECODE5 - 飞书应用密钥
- INLINECODE6 - 接收者 Open ID(可选)
流程:
- 1. 检查 ffmpeg 是否可用
- 检查音频文件是否存在
- 用 ffmpeg 转换为 opus 格式(飞书要求)
- 获取飞书 tenantaccesstoken
- 上传到飞书(file_type=opus)
- 发送 audio 消息
音频格式要求
飞书语音消息要求:
- - 格式: opus (OGG 容器)
- 编码: libopus
- 采样率: 24000 Hz
- 声道: 单声道
故障排查
ffmpeg 未安装
CODEBLOCK3
上传失败
检查飞书应用权限:
消息发送成功但无法播放
确认:
- 1. 上传时使用了 INLINECODE9
- 上传时传递了
duration 参数
feishu-audio
将本地音频文件转换为飞书可播放的语音消息。
适用场景
- - 用户说朗读 xxx、语音播报
- 需要发送可播放的语音消息到飞书
前置条件
- 1. ffmpeg - 音频格式转换
bash
brew install ffmpeg
- 2. 飞书应用配置 - 需要以下环境变量:
- FEISHU
APPID
- FEISHU
APPSECRET
- 3. 接收者 - 飞书用户 Open ID(从上下文获取或手动指定)
使用方法
方式 1:使用已有音频文件
bash
bash scripts/send_audio.sh <音频文件路径> [接收者OpenID]
方式 2:结合 TTS 使用
先生成音频,再用本技能发送:
bash
1. 用 edge-tts 生成音频
edge-tts -t 你好,我是小曦 -v zh-CN-XiaoxiaoNeural --write-media /tmp/voice.mp3
2. 转为 opus 并发送到飞书
bash scripts/send_audio.sh /tmp/voice.mp3
脚本说明
send_audio.sh
主脚本,完整的音频消息发送流程。
参数:
- - $1 - 音频文件路径(必需)
- $2 - 接收者 Open ID(可选,默认从环境变量 FEISHU_RECEIVER 获取)
环境变量:
- - FEISHUAPPID - 飞书应用 ID
- FEISHUAPPSECRET - 飞书应用密钥
- FEISHU_RECEIVER - 接收者 Open ID(可选)
流程:
- 1. 检查 ffmpeg 是否可用
- 检查音频文件是否存在
- 用 ffmpeg 转换为 opus 格式(飞书要求)
- 获取飞书 tenantaccesstoken
- 上传到飞书(file_type=opus)
- 发送 audio 消息
音频格式要求
飞书语音消息要求:
- - 格式: opus (OGG 容器)
- 编码: libopus
- 采样率: 24000 Hz
- 声道: 单声道
故障排查
ffmpeg 未安装
bash
brew install ffmpeg
上传失败
检查飞书应用权限:
- - im:message
- im:message:sendasbot
消息发送成功但无法播放
确认:
- 1. 上传时使用了 file_type=opus
- 上传时传递了 duration 参数