飞书文件发送技能
将本地文件发送到飞书聊天,支持多种文件类型,自动识别并正确处理。
功能特性
- ✅ 支持多种文件类型(文档、图片、压缩包等)
- ✅ 自动识别文件 MIME 类型
- ✅ 文件大小检查
- ✅ 上传到飞书服务器
- ✅ 发送文件消息
- ✅ 错误处理和重试
前置要求
环境变量
# 飞书配置
export FEISHU_APP_ID="cli_xxx" # 飞书应用 ID
export FEISHU_APP_SECRET="your_secret" # 飞书应用密钥
export FEISHU_RECEIVER="ou_xxx" # 接收者 Open ID(可选,默认从上下文获取)
必需工具
curl - HTTP 请求
jq - JSON 处理
file - 文件类型识别
使用方法
基本用法
# 发送文件
bash scripts/send_file.sh /path/to/file.pdf
# 发送文件到指定接收者
bash scripts/send_file.sh /path/to/file.pdf ou_xxxxx
支持的文件类型
| 类型 |
扩展名 |
file_type |
最大大小 |
| PDF |
.pdf |
pdf |
30 MB |
| Word |
.doc, .docx |
doc, docx |
30 MB |
| Excel |
.xls, .xlsx |
xls, xlsx |
30 MB |
| PowerPoint |
.ppt, .pptx |
ppt, pptx |
30 MB |
| 图片 |
.jpg, .jpeg, .png, .gif, .bmp, .webp |
image |
20 MB |
| 音频 |
.mp3, .wav, .aac, .ogg, .m4a, .amr, .flac, .wma |
audio |
30 MB |
| 视频 |
.mp4, .mov, .avi, .mkv, .flv, .wmv, .webm, .m4v |
video |
50 MB |
| 压缩包 |
.zip, .rar, .7z, .tar, .gz |
stream |
30 MB |
| 文本 |
.txt, .md, .json, .xml, .csv |
stream |
30 MB |
| 其他 |
其他文件类型 |
stream |
30 MB |
注意: opus 格式是飞书音频消息专用格式,不作为文件附件处理。如需发送语音消息,请使用 feishu-voice 技能。
脚本说明
send_file.sh
主脚本,完整的文件发送流程。
用法:
bash scripts/send_file.sh <文件路径> [接收者ID]
参数:
文件路径 (必需): 要发送的文件路径
接收者ID (可选): 接收者 Open ID(默认使用环境变量 FEISHU_RECEIVER)
环境变量:
FEISHU_APP_ID: 飞书应用 ID
FEISHU_APP_SECRET: 飞书应用密钥
FEISHU_RECEIVER: 接收者 Open ID(可选)
流程说明
- 获取 Access Token: 使用 App ID 和 Secret 获取访问令牌
- 识别文件类型: 根据文件扩展名或 MIME 类型确定 file_type
- 检查文件大小: 确保不超过飞书限制
- 上传文件: 上传到飞书服务器,获取 file_key
- 发送消息: 发送文件消息到指定接收者
技术细节
文件大小限制
| 文件类型 |
大小限制 |
| 图片 |
20 MB |
| 音频 |
30 MB |
| 视频 |
50 MB |
| 其他文件(PDF、Office、压缩包等) |
30 MB |
file_type 参数
上传文件时需要指定 file_type 参数:
image: 图片文件
audio: 音频文件
video: 视频文件
pdf: PDF 文件
doc, docx: Word 文档
xls, xlsx: Excel 文档
ppt, pptx: PowerPoint 文档
stream: 其他文件(压缩包、文本等)
API 端点
| 端点 |
用途 |
/auth/v3/tenant_access_token/internal |
获取访问令牌 |
/im/v1/files |
上传文件 |
/im/v1/messages |
发送消息 |
消息格式
发送文件消息的 JSON 格式:
{
"msg_type": "file",
"content": "{\"file_key\": \"file_v2_xxx\"}"
}
故障排查
文件上传失败
问题: 文件上传返回错误
可能原因:
- 文件大小超限
- 文件类型不支持
- 网络问题
解决:
# 检查文件大小
ls -lh /path/to/file
# 检查文件类型
file /path/to/file
权限错误
问题: 上传时返回权限错误
解决: 确保飞书应用有以下权限:
im:message
im:message:send_as_bot
im:file
接收者不存在
问题: 发送消息时返回接收者不存在
解决: 确认接收者 ID 正确:
- Open ID:
ou_xxx
- Chat ID:
oc_xxx
完整示例
# 设置环境变量
export FEISHU_APP_ID="your_app_id_here"
export FEISHU_APP_SECRET="your_app_secret_here"
export FEISHU_RECEIVER="ou_xxxxx"
# 发送 PDF 文件
bash /root/.openclaw/workspace/skills/feishu-file/scripts/send_file.sh \
/path/to/document.pdf
# 发送到指定接收者
bash /root/.openclaw/workspace/skills/feishu-file/scripts/send_file.sh \
/path/to/report.xlsx ou_yyyyy
注意事项
- 文件路径: 支持绝对路径和相对路径
- 文件名: 建议使用英文文件名,避免特殊字符
- 大小限制: 超过限制的文件会返回错误
- 网络问题: 上传大文件时可能需要较长时间
- 文件清理: 本地文件不会自动删除
相关技能
feishu-voice: 发送语音消息
feishu-doc: 飞书文档操作
feishu-drive: 飞书云盘操作
1---2name: feishu-file3description: 飞书文件发送技能。支持发送各类文件到飞书聊天,包括文档、图片、压缩包等,自动识别文件类型并处理上传。4---5
6# 飞书文件发送技能
7
8将本地文件发送到飞书聊天,支持多种文件类型,自动识别并正确处理。
9
10## 功能特性
11
12- ✅ 支持多种文件类型(文档、图片、压缩包等)
13- ✅ 自动识别文件 MIME 类型
14- ✅ 文件大小检查
15- ✅ 上传到飞书服务器
16- ✅ 发送文件消息
17- ✅ 错误处理和重试
18
19## 前置要求
20
21### 环境变量
22
23```bash
24# 飞书配置
25export FEISHU_APP_ID="cli_xxx" # 飞书应用 ID
26export FEISHU_APP_SECRET="your_secret" # 飞书应用密钥
27export FEISHU_RECEIVER="ou_xxx" # 接收者 Open ID(可选,默认从上下文获取)
28```
29
30### 必需工具
31
32- `curl` - HTTP 请求
33- `jq` - JSON 处理
34- `file` - 文件类型识别
35
36## 使用方法
37
38### 基本用法
39
40```bash
41# 发送文件
42bash scripts/send_file.sh /path/to/file.pdf
43
44# 发送文件到指定接收者
45bash scripts/send_file.sh /path/to/file.pdf ou_xxxxx
46```
47
48### 支持的文件类型
49
50| 类型 | 扩展名 | file_type | 最大大小 |
51|------|--------|-----------|----------|
52| PDF | .pdf | pdf | 30 MB |
53| Word | .doc, .docx | doc, docx | 30 MB |
54| Excel | .xls, .xlsx | xls, xlsx | 30 MB |
55| PowerPoint | .ppt, .pptx | ppt, pptx | 30 MB |
56| 图片 | .jpg, .jpeg, .png, .gif, .bmp, .webp | image | 20 MB |
57| 音频 | .mp3, .wav, .aac, .ogg, .m4a, .amr, .flac, .wma | audio | 30 MB |
58| 视频 | .mp4, .mov, .avi, .mkv, .flv, .wmv, .webm, .m4v | video | 50 MB |
59| 压缩包 | .zip, .rar, .7z, .tar, .gz | stream | 30 MB |
60| 文本 | .txt, .md, .json, .xml, .csv | stream | 30 MB |
61| 其他 | 其他文件类型 | stream | 30 MB |
62
63> **注意**: opus 格式是飞书音频消息专用格式,不作为文件附件处理。如需发送语音消息,请使用 `feishu-voice` 技能。
64
65## 脚本说明
66
67### send_file.sh
68
69主脚本,完整的文件发送流程。
70
71**用法:**
72```bash
73bash scripts/send_file.sh <文件路径> [接收者ID]
74```
75
76**参数:**
77- `文件路径` (必需): 要发送的文件路径
78- `接收者ID` (可选): 接收者 Open ID(默认使用环境变量 FEISHU_RECEIVER)
79
80**环境变量:**
81- `FEISHU_APP_ID`: 飞书应用 ID
82- `FEISHU_APP_SECRET`: 飞书应用密钥
83- `FEISHU_RECEIVER`: 接收者 Open ID(可选)
84
85### 流程说明
86
871. **获取 Access Token**: 使用 App ID 和 Secret 获取访问令牌
882. **识别文件类型**: 根据文件扩展名或 MIME 类型确定 file_type
893. **检查文件大小**: 确保不超过飞书限制
904. **上传文件**: 上传到飞书服务器,获取 file_key
915. **发送消息**: 发送文件消息到指定接收者
92
93## 技术细节
94
95### 文件大小限制
96
97| 文件类型 | 大小限制 |
98|---------|---------|
99| 图片 | 20 MB |
100| 音频 | 30 MB |
101| 视频 | 50 MB |
102| 其他文件(PDF、Office、压缩包等) | 30 MB |
103
104### file_type 参数
105
106上传文件时需要指定 `file_type` 参数:
107
108- `image`: 图片文件
109- `audio`: 音频文件
110- `video`: 视频文件
111- `pdf`: PDF 文件
112- `doc`, `docx`: Word 文档
113- `xls`, `xlsx`: Excel 文档
114- `ppt`, `pptx`: PowerPoint 文档
115- `stream`: 其他文件(压缩包、文本等)
116
117### API 端点
118
119| 端点 | 用途 |
120|------|------|
121| `/auth/v3/tenant_access_token/internal` | 获取访问令牌 |
122| `/im/v1/files` | 上传文件 |
123| `/im/v1/messages` | 发送消息 |
124
125### 消息格式
126
127发送文件消息的 JSON 格式:
128
129```json
130{
131 "msg_type": "file",
132 "content": "{\"file_key\": \"file_v2_xxx\"}"
133}
134```
135
136## 故障排查
137
138### 文件上传失败
139
140**问题**: 文件上传返回错误
141
142**可能原因**:
1431. 文件大小超限
1442. 文件类型不支持
1453. 网络问题
146
147**解决**:
148```bash
149# 检查文件大小
150ls -lh /path/to/file
151
152# 检查文件类型
153file /path/to/file
154```
155
156### 权限错误
157
158**问题**: 上传时返回权限错误
159
160**解决**: 确保飞书应用有以下权限:
161- `im:message`
162- `im:message:send_as_bot`
163- `im:file`
164
165### 接收者不存在
166
167**问题**: 发送消息时返回接收者不存在
168
169**解决**: 确认接收者 ID 正确:
170- Open ID: `ou_xxx`
171- Chat ID: `oc_xxx`
172
173## 完整示例
174
175```bash
176# 设置环境变量
177export FEISHU_APP_ID="your_app_id_here"
178export FEISHU_APP_SECRET="your_app_secret_here"
179export FEISHU_RECEIVER="ou_xxxxx"
180
181# 发送 PDF 文件
182bash /root/.openclaw/workspace/skills/feishu-file/scripts/send_file.sh \
183 /path/to/document.pdf
184
185# 发送到指定接收者
186bash /root/.openclaw/workspace/skills/feishu-file/scripts/send_file.sh \
187 /path/to/report.xlsx ou_yyyyy
188```
189
190## 注意事项
191
1921. **文件路径**: 支持绝对路径和相对路径
1932. **文件名**: 建议使用英文文件名,避免特殊字符
1943. **大小限制**: 超过限制的文件会返回错误
1954. **网络问题**: 上传大文件时可能需要较长时间
1965. **文件清理**: 本地文件不会自动删除
197
198## 相关技能
199
200- `feishu-voice`: 发送语音消息
201- `feishu-doc`: 飞书文档操作
202- `feishu-drive`: 飞书云盘操作