飞书文件发送技能(安全版)

Polar Sponsor
爱发电 赞助
.NET 9.0

通过飞书 Lark API 发送文件、图片和音频消息,需使用强制性的两步流程。适用于需要发送文件、图片或语音消息到...

飞书文件发送技能功能概述

飞书文件发送技能是一项面向实际任务的技能,主要用于app i i i是一项围绕特定任务主题设计的实用技能。它会根据用户给出的目标、输入材料和运行环境,组织必要的处理步骤,调用适合的工具或接口,并把执行结果整理成便于检查和继续使用的形式。

核心要点

  • 使用时需要先确认任务范围、关键参数、依赖条件与期望输出,再依照技能定义的流程逐步执行,避免遗漏重要信息。
  • 该技能适合纳入可重复的自动化工作流,也可用于单次任务处理;
  • 完成后应核对结果的完整性、准确性和可用性,并根据实际反馈调整配置、输入或后续步骤。

使用与执行

涉及外部服务、账号权限和敏感数据时,还应遵守相应的安全要求。从功能定位来看,该技能强调把分散的操作要求整理成清晰、可复用的处理流程,使用户能够围绕既定目标快速准备输入、选择执行方式并获得结构化结果。实际使用前应先确认任务范围、数据来源、运行环境、必要权限和关键参数,再依据技能说明逐步执行;

结果检查与注意事项

若输入条件不完整,应先补齐信息或采用保守配置,避免因错误假设导致结果偏离需求。执行过程中需要关注工具调用是否成功、接口或依赖是否可用、输出格式是否符合预期,并对异常提示、缺失字段和边界情况进行处理;涉及批量任务时,还应保存进度,避免中断后重复操作。

飞书文件/图片发送 Skill

快速开始

1. 配置文件

复制示例配置文件:

cd ~/.openclaw/workspace/skills/feishu-send-file
cp config.json.example config.json
# 使用你喜欢的编辑器修改 config.json

填入你的配置:

{
  "app_id": "cli_xxxxxxxxxxxxxxxx",
  "app_secret": "your_app_secret_here",
  "receive_id": "ou_xxxxxxxxxxxxxxxx",
  "message_mode": "send"
}

配置说明:

字段说明示例
app_id飞书应用IDcli_xxxxxxxxxxxxxxxx
app_secret飞书应用密钥xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
receive_id接收人Open IDou_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
message_mode消息模式:send = 直接发送send

⚠️ 重要:本脚本只支持发送模式 (send),不支持回复模式 (reply),避免消息被标记为回复。

安全提示:

  • config.json 已被添加到 .gitignore,不会意外提交到 Git
  • 建议使用环境变量方式,避免在文件中存储凭证

2. 发送消息

cd ~/.openclaw/workspace/skills/feishu-send-file

# 发送文本
./scripts/send-message.sh text "你好主人!"

# 发送 Markdown 卡片
./scripts/send-message.sh card "**加粗** 和 *斜体*"

# 发送图片
./scripts/send-message.sh image "/path/to/photo.png"

# 发送语音(opus格式)
./scripts/send-message.sh audio "/path/to/voice.opus"

# 发送视频
./scripts/send-message.sh video "/path/to/video.mp4"

# 发送文件
./scripts/send-message.sh file "/path/to/document.pdf"

3. 环境变量方式(推荐)

使用环境变量临时覆盖配置文件:

export FEISHU_APP_ID="cli_xxx"
export FEISHU_APP_SECRET="xxx"
export FEISHU_RECEIVE_ID="ou_xxx"

./scripts/send-message.sh text "消息内容"

优先级:环境变量 > 配置文件

⚠️ CRITICAL: OpenClaw 自动回复陷阱

问题描述

OpenClaw 的消息回复机制会自动将响应关联到用户消息,导致变成「回复」而不是「发送」!

即使你用 curl 调用 API,如果最后通过 OpenClaw 的 normal 回复输出,系统仍可能标记为 has_reply_context: true

解决方案:使用独立脚本

必须 使用提供的独立脚本 send-message.sh,它完全绕过 OpenClaw 的回复机制:

# ✅ 正确:使用独立脚本(绕过 OpenClaw 回复)
./scripts/send-message.sh text "你好主人!"
./scripts/send-message.sh image "/path/to/image.png"
./scripts/send-message.sh audio "/path/to/voice.opus"

不要 这样做:

# ❌ 错误:即使 curl 成功,最后通过 OpenClaw 回复输出,仍会变成「回复」
curl -X POST ...
echo "发送成功"  # 这行输出会被 OpenClaw 标记为回复

⚠️ 重要警告

1. 发送消息 vs 回复消息

必须使用「发送消息」API,不要混用「回复消息」API

用途APIURL说明
✅ 发送消息发送消息POST /im/v1/messages本技能使用,直接发送消息
❌ 回复消息回复消息POST /im/v1/messages/:message_id/reply不使用,用于回复指定消息

正确的发送消息 URL:

POST https://open.feishu.cn/open-apis/im/v1/messages?receive_id_type=open_id

错误的回复消息 URL:

# 不要用这个!
POST https://open.feishu.cn/open-apis/im/v1/messages/:message_id/reply

2. 必须使用两步流程

飞书发送文件/图片必须使用两步流程,一步都不能少!

❌ 错误方式:直接通过 message API 发送文件路径 ✅ 正确方式:先上传获取 file_key/image_key,再用 key 发送消息

三种API的区别

类型上传API消息类型返回key适用场景
图片/im/v1/imagesimageimage_keyjpg/png/gif等图片
文件/im/v1/filesfilefile_key文档、压缩包等
语音/im/v1/filesaudio/filefile_keyopus/mp3音频
视频/im/v1/filesmediafile_keymp4视频
表情包/im/v1/imagesimageimage_keypng/gif表情包

图片发送流程

第一步:上传图片获取 image_key

curl -X POST "https://open.feishu.cn/open-apis/im/v1/images" 
  -H "Authorization: Bearer $TOKEN" 
  -F "image_type=message" 
  -F "image=@/path/to/image.jpg"

响应示例:

{
  "code": 0,
  "data": {
    "image_key": "img_v3_02ve_xxxx-xxxx-xxxx-xxxx"
  }
}

关键点:

  • image_type 必须是 message
  • image 使用 @ 符号指定本地图片路径
  • 保存返回的 image_key,下一步要用

第二步:发送图片消息

curl -X POST "https://open.feishu.cn/open-apis/im/v1/messages?receive_id_type=open_id" 
  -H "Authorization: Bearer $TOKEN" 
  -H "Content-Type: application/json" 
  -d '{
    "receive_id": "ou_xxxxxx",
    "msg_type": "image",
    "content": "{"image_key":"img_v3_02ve_xxxx-xxxx-xxxx-xxxx"}"
  }'

文件发送流程

第一步:上传文件获取 file_key

curl -X POST "https://open.feishu.cn/open-apis/im/v1/files" 
  -H "Authorization: Bearer $TOKEN" 
  -F "file_type=stream" 
  -F "file_name=文件名.md" 
  -F "file=@/path/to/file"

响应示例:

{
  "code": 0,
  "data": {
    "file_key": "file_v3_00ve_xxxx-xxxx-xxxx-xxxx"
  }
}

关键点:

  • file_type 必须是 stream
  • file_name 必须包含扩展名
  • file 使用 @ 符号指定本地文件路径

第二步:发送文件消息

curl -X POST "https://open.feishu.cn/open-apis/im/v1/messages?receive_id_type=open_id" 
  -H "Authorization: Bearer $TOKEN" 
  -H "Content-Type: application/json" 
  -d '{
    "receive_id": "ou_xxxxxx",
    "msg_type": "file",
    "content": "{"file_key":"file_v3_00ve_xxxx-xxxx-xxxx-xxxx"}"
  }'

完整参数说明

获取 tenant_access_token

所有API调用都需要先获取令牌:

curl -X POST "https://open.feishu.cn/open-apis/auth/v3/tenant_access_token/internal" 
  -H "Content-Type: application/json" 
  -d '{
    "app_id": "cli_xxxxx",
    "app_secret": "xxxxx"
  }'

receive_id_type 选项

类型说明示例
open_id用户的唯一标识(推荐)ou_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
user_id用户IDuser_xxxxx
union_id统一IDon_xxxxx
email邮箱user@company.com
chat_id群聊IDoc_xxxxx

使用脚本自动发送

本skill包含自动化脚本:

发送图片

./scripts/send-image.sh <app_id> <app_secret> <receive_id> <image_path>

发送文件

./scripts/send-file.sh <app_id> <app_secret> <receive_id> <file_path>

发送语音

./scripts/send-audio.sh <app_id> <app_secret> <receive_id> <audio_path>

环境变量方式

export FEISHU_APP_ID="cli_xxxxx"
export FEISHU_APP_SECRET="xxxxx"
./scripts/send-image.sh "" "" "ou_xxxxx" "/path/to/image.jpg"
./scripts/send-file.sh "" "" "ou_xxxxx" "/path/to/file.pdf"
./scripts/send-audio.sh "" "" "ou_xxxxx" "/path/to/voice.opus"

常见错误

错误原因解决
field validation failed缺少 receive_id_typeURL必须加 ?receive_id_type=open_id
invalid file_keyfile_key格式错误或已过期重新上传文件获取新key
invalid image_keyimage_key格式错误或已过期重新上传图片获取新key
permission denied应用没有权限检查应用权限设置
user not foundreceive_id错误确认ID类型和值正确

快速判断:用图片API还是文件API?

  • 图片API (/im/v1/images): jpg, jpeg, png, gif, bmp, webp 等图片格式
  • 文件API (/im/v1/files): pdf, doc, docx, xls, xlsx, zip, 等其他所有文件
  • 语音API (/im/v1/files): opus, mp3 等音频格式

语音消息发送流程

飞书语音消息使用文件上传 API,但有一些特殊要求:

音频格式要求

格式file_typemsg_type说明
opusopusaudio最佳格式,直接播放
mp3opusfile兼容发送,作为文件

发送语音消息

方式一:使用脚本(推荐)

# 环境变量方式
export FEISHU_APP_ID="cli_xxxxx"
export FEISHU_APP_SECRET="xxxxx"

# 发送语音
./scripts/send-audio.sh "" "" "ou_xxxxx" "/path/to/voice.opus"

方式二:手动 curl

第一步:上传音频获取 file_key

curl -X POST "https://open.feishu.cn/open-apis/im/v1/files" 
  -H "Authorization: Bearer $TOKEN" 
  -F "file_type=opus" 
  -F "file_name=voice.opus" 
  -F "file=@/path/to/voice.opus"

响应示例:

{
  "code": 0,
  "data": {
    "file_key": "file_v3_00ve_xxxx-xxxx-xxxx-xxxx"
  }
}

第二步:发送语音消息

curl -X POST "https://open.feishu.cn/open-apis/im/v1/messages?receive_id_type=open_id" 
  -H "Authorization: Bearer $TOKEN" 
  -H "Content-Type: application/json" 
  -d '{
    "receive_id": "ou_xxxxx",
    "msg_type": "audio",
    "content": "{"file_key":"file_v3_00ve_xxxx-xxxx-xxxx-xxxx"}"
  }'

关键点:

  • file_type 设置为 opus(推荐)或 stream
  • msg_type 设置为 audio 显示为语音消息,或 file 显示为文件
  • 音频文件建议为 opus 格式,兼容性最好

音频格式转换

如果手头是 mp3 格式,可以使用 ffmpeg 转换:

# mp3 转 opus
ffmpeg -i input.mp3 -c:a libopus -b:a 32k output.opus

# 或者直接用 mp3 发送(作为文件类型)
# file_type=stream, msg_type=file

视频消息发送流程 ⭐

飞书视频消息使用 media 消息类型,支持 mp4 格式。

视频格式要求

参数要求
格式mp4
大小最大 500MB
上传 API/im/v1/files
file_typemp4

发送视频

使用脚本

export FEISHU_APP_ID="cli_xxxxx"
export FEISHU_APP_SECRET="xxxxx"

# 发送视频(可选封面图)
./scripts/send-video.sh "" "" "ou_xxxxx" "/path/to/video.mp4" "/path/to/thumb.jpg"

手动 curl

第一步:上传视频

curl -X POST "https://open.feishu.cn/open-apis/im/v1/files" 
  -H "Authorization: Bearer $TOKEN" 
  -F "file_type=mp4" 
  -F "file=@/path/to/video.mp4"

第二步:发送视频

curl -X POST "https://open.feishu.cn/open-apis/im/v1/messages?receive_id_type=open_id" 
  -H "Authorization: Bearer $TOKEN" 
  -H "Content-Type: application/json" 
  -d '{
    "receive_id": "ou_xxxxx",
    "msg_type": "media",
    "content": "{"file_key":"file_v3_00ve_xxxx","image_key":"img_v3_02ve_xxxx"}"
  }'

注意:视频消息可包含封面图 image_key(可选)

表情包发送流程 ⭐

飞书表情包本质上是图片消息,但可以显示为可收藏的表情样式。

表情包类型

类型说明方法
Emoji 字符😸🎉🐱 等直接发送文本消息
图片表情png/gif 图片发送图片消息

发送表情包

方式一:Emoji 字符(最简单)

# 发送包含 emoji 的文本
curl -X POST "https://open.feishu.cn/open-apis/im/v1/messages?receive_id_type=open_id" 
  -H "Authorization: Bearer $TOKEN" 
  -H "Content-Type: application/json" 
  -d '{
    "receive_id": "ou_xxxxx",
    "msg_type": "text",
    "content": "{"text":"😸🎉🐱👍"}"
  }'

方式二:使用脚本发送图片表情

export FEISHU_APP_ID="cli_xxxxx"
export FEISHU_APP_SECRET="xxxxx"

# 发送图片作为表情包
./scripts/send-sticker.sh "" "" "ou_xxxxx" "/path/to/sticker.png"

方式三:手动 curl 发送图片表情

# 上传表情图片
curl -X POST "https://open.feishu.cn/open-apis/im/v1/images" 
  -H "Authorization: Bearer $TOKEN" 
  -F "image_type=message" 
  -F "image=@/path/to/sticker.png"

# 发送图片(显示为表情样式)
curl -X POST "https://open.feishu.cn/open-apis/im/v1/messages?receive_id_type=open_id" 
  -H "Authorization: Bearer $TOKEN" 
  -H "Content-Type: application/json" 
  -d '{
    "receive_id": "ou_xxxxx",
    "msg_type": "image",
    "content": "{"image_key":"img_v3_02ve_xxxx"}"
  }'

检查清单

发送前确认:

  • 已获取 tenant_access_token
  • 已判断使用图片API还是文件API
  • 已上传并获取 image_keyfile_key
  • URL包含 ?receive_id_type=xxx
  • msg_type 设置正确(image/file/audio/media)
  • content 包含正确的 key
  • receive_idreceive_id_type 匹配

各类型消息检查表

消息类型file_typemsg_type需要 Key
图片-imageimage_key
文件streamfilefile_key
语音opusaudiofile_key
视频mp4mediafile_key (+ 可选 image_key)
表情包-imageimage_key

参考文档

  • 上传图片API: https://open.feishu.cn/document/server-docs/im-v1/image/create
  • 上传文件API: https://open.feishu.cn/document/server-docs/im-v1/file/create
  • 发送消息API: https://open.feishu.cn/document/server-docs/im-v1/message/create
  • 完整消息类型指南: MESSAGE_TYPES.md

相关专题

更多
Aionclaw智能助手介绍
Aionclaw智能助手介绍

本专题汇总了AionClaw(AI龙虾助手)的功能介绍与在线使用入口。AionClaw是杭州趣猿人工智能有限公司推出的桌面级AI智能体,能直接在电脑上读写文件、运行脚本、操作浏览器,自动交付Word、PPT、Excel等成品。

2026.09.20

0

13

AionClaw AI智能体与电脑自动化任务执行功能使用教程
AionClaw AI智能体与电脑自动化任务执行功能使用教程

AionClaw专题整理AI智能体与电脑自动化相关功能使用教程,涵盖安装部署、AI任务执行、Skills技能、文件处理、浏览器控制、电脑操作、持久记忆、聊天工具连接以及办公、编程和内容创作等功能,帮助用户快速掌握AionClaw的实际使用方法。

2026.09.20

0

15

AI视频生成软件推荐
AI视频生成软件推荐

本专题汇总了当前主流的AI视频生成软件推荐与排行榜单,涵盖seko、AniShort、剧云、Lovart、LiblibAI及立刻mv等热门工具。同时整理了各软件在文生视频、图生视频、时长限制、画质表现及免费额度等方面的差异对比,助您快速选对适合创作需求的AI视频生成工具。

2026.09.16

0

9

ai生成视频的工具免费版合集
ai生成视频的工具免费版合集

本专题汇总了当前免费AI生成视频工具的排行榜与推荐清单,涵盖seko、讯飞智作、AniShort及剧云、Lovart等多模型集成平台。同时整理了各工具的免费额度、输出时长、水印政策及适用场景差异,助您快速选择合适工具开启AI视频创作。

2026.09.16

0

10

Pandas时间序列分析与可视化报表
Pandas时间序列分析与可视化报表

本专题整理Pandas日期转换、时间索引、重采样、滚动窗口、时区处理、plot绘图、Styler表格样式和报表输出方法。

2026.09.16

0

23

Pandas数据筛选索引与清洗处理
Pandas数据筛选索引与清洗处理

本专题整理Pandas中的loc、iloc、条件筛选、query查询、缺失值处理、重复值删除、类型转换和字符串列清洗方法。

2026.09.16

0

25

Pandas数据读取导入与文件导出处理
Pandas数据读取导入与文件导出处理

本专题整理Pandas读取CSV、Excel、JSON、SQL、Parquet等文件的方法,以及to_csv、to_excel、to_sql和to_parquet等常用数据导出流程。

2026.09.16

0

27

GDB怎么设置断点
GDB怎么设置断点

本专题介绍GDB按照函数名、源代码行号和文件位置设置断点的方法,详细说明run、continue、next、step等命令的配合使用,帮助定位程序崩溃、逻辑异常及代码未按预期执行的问题。

2026.09.11

0

28

GDB怎么查看变量值
GDB怎么查看变量值

本专题介绍GDB调试过程中查看变量值的具体方法,涵盖局部变量、函数参数、数组、结构体和指针内容查询,同时整理变量持续显示、格式化输出及无法读取变量时的排查思路。

2026.09.11

0

22

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程