feishu_fabu/BUGFIX_SUMMARY.md
wp-publish-bot 1fb93e34c6 feat: 初始化 WordPress 自动发布系统(飞书机器人集成)
- 飞书消息接收与处理(文字、图片、Word 文档)
- WordPress REST API 文章发布
- 图片自动上传到媒体库
- Word 文档解析与发布
- HTML 格式化与分类自动匹配
- Python CLI 工具(避免 shell 引号冲突)
- Webhook 服务器(8080 端口)
- 完整日志系统
2026-05-12 15:09:30 +08:00

194 lines
5.7 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 飞书机器人发布问题修复总结
## 📋 问题列表
| 序号 | 问题描述 | 严重程度 | 状态 |
|------|---------|---------|------|
| 1 | 飞书机器人使用未加密的图片链接发布到文章,图片打不开 | 🔴 严重 | ✅ 已修复 |
| 2 | 发布图片到文章时,删除了原有文字内容,只保留图片 | 🔴 严重 | ✅ 已修复 |
| 3 | 发布图片时报错WordPress 返回"传入的 JSON 体无效" | 🟡 中等 | ✅ 已修复 |
---
## 🔍 问题 1飞书图片链接问题
### 原始问题
飞书机器人发布文章时,图片使用了飞书的临时链接(如 `https://www.feishu.cn/file/26b372ae-e315-4e61-8047-dc93608b830f?public=1`),在 WordPress 网站上无法正常显示。
### 根本原因
1. 飞书图片 URL 需要特定的认证 token 才能访问
2. WordPress 网站无法直接访问飞书的私有图床
3. 飞书图片链接有有效期限制
### 解决方案
**采用"下载 → 上传 → 替换"三步走策略**
1. 创建飞书 API 客户端模块 (`modules/feishu_api.py`)
- 获取飞书访问令牌(自动刷新)
- 下载飞书图片(支持 base64 解码)
- 下载飞书文件(支持 base64 解码)
2. 更新飞书机器人脚本 (`feishu_bot.py`)
- 新增 `_download_image()` 方法:下载飞书图片到本地
- 新增 `_download_file()` 方法:下载飞书文件到本地
- 新增 `_get_message_images()` 方法:获取消息中的所有图片
3. 更新飞书配置 (`feishu_config.py`)
- 填入飞书应用凭证
---
## 🔍 问题 2文字被删除问题
### 原始问题
发布图片到文章时,删除了原有文字内容,只保留了图片。
### 根本原因
`_handle_image_message` 方法中,`text="图片文章"` 覆盖了原始文字内容。
### 解决方案
1. 更新 `_handle_image_message` 方法,保留原始文字内容
2. 新增 `message_id``chat_id` 参数,用于获取消息中的图片
3. 确保图片发布时不会覆盖文字内容
---
## 🔍 问题 3JSON 格式错误
### 原始问题
发布图片时报错WordPress 返回"传入的 JSON 体无效"。
### 根本原因
1. Webhook 服务器收到空数据或格式错误的数据
2. JSON 解析失败,导致请求处理中断
### 解决方案
1. 更新 Webhook 服务器 (`webhook_server.py`)
- 添加更详细的错误处理
- 添加空请求检查
- 添加 JSON 解析失败时的详细日志
---
## 📁 文件结构
```
/www/wwwroot/wp-publish/
├── modules/
│ ├── feishu_api.py # 飞书 API 客户端(新增)
│ ├── wp_api.py # WordPress API
│ ├── wp_category.py # 分类匹配
│ ├── wp_formatter.py # HTML 格式化
│ ├── wp_image_handler.py # 图片处理
│ ├── wp_logger.py # 日志系统
│ └── wp_parse_docx.py # Word 解析
├── scripts/
│ ├── wp_publish.py # Word 文档发布
│ └── wp_publish_text.py # 文字 + 图片发布
├── feishu_bot.py # 飞书机器人(已更新)
├── feishu_config.py # 飞书配置(已更新)
├── webhook_server.py # Webhook 服务器(已更新)
├── IMAGE_FIX.md # 问题说明文档
├── BUGFIX_SUMMARY.md # 修复总结文档
└── logs/ # 日志目录
```
---
## 🚀 使用方式
### 方式 1发送文字 + 图片
在飞书中发送文字和图片,机器人会自动:
1. 下载所有图片
2. 上传到 WordPress 媒体库
3. 发布包含 WordPress 图片链接的文章
### 方式 2发送 Word 文档
在飞书中发送 `.docx` 文件,机器人会自动:
1. 下载 Word 文档
2. 解析文档内容
3. 提取并上传图片
4. 发布文章
### 方式 3发送指令发布
```
#标题 文章标题
#分类 ai
文章正文内容
[图片]
```
---
## 🔧 技术细节
### 飞书 API 认证
- 使用 `tenant_access_token` 进行认证
- 自动刷新令牌(有效期 2 小时)
- 令牌过期前 5 分钟自动刷新
### 图片处理流程
```python
# 1. 获取访问令牌
token = feishu_client.get_access_token()
# 2. 下载图片
image_path = feishu_client.download_image(image_key)
# 3. 上传到 WordPress
result = image_handler.upload_image(image_path)
# 4. 获取 WordPress 图片 URL
wp_image_url = result.get('url')
```
### 错误处理
- 飞书 API 调用失败:记录错误日志,返回失败消息
- 图片下载失败:跳过该图片,继续处理其他内容
- WordPress 上传失败:记录错误,尝试重新上传
---
## 📊 测试验证
### 测试步骤
1. 在飞书中发送一条包含图片的消息
2. 检查日志确认图片下载成功
3. 检查 WordPress 媒体库确认图片上传成功
4. 访问发布的文章,确认图片正常显示
### 日志位置
- 飞书机器人日志:`/www/wwwroot/wp-publish/logs/feishu_bot.log`
- 飞书 API 日志:`/www/wwwroot/wp-publish/logs/feishu_api.log`
- WordPress 发布日志:`/www/wwwroot/wp-publish/logs/publish.log`
---
## ⚠️ 注意事项
1. **飞书权限**:确保飞书应用已开通 `im:message:receive` 权限
2. **文件大小**:飞书图片和文件下载有大小限制(通常 20MB
3. **网络环境**:服务器需要能够访问飞书 API`open.feishu.cn`
4. **SSL 证书**WordPress 使用自签名证书,已配置跳过验证
---
## 🔄 服务管理
```bash
# 查看服务状态
systemctl status wp-publish
# 重启服务
systemctl restart wp-publish
# 查看日志
tail -f /www/wwwroot/wp-publish/logs/feishu_bot.log
```
---
## 📞 技术支持
如有问题,请查看日志文件获取详细错误信息,或联系技术支持。