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

5.7 KiB
Raw Permalink Blame History

飞书机器人发布问题修复总结

📋 问题列表

序号 问题描述 严重程度 状态
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_idchat_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 分钟自动刷新

图片处理流程

# 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. 网络环境:服务器需要能够访问飞书 APIopen.feishu.cn
  4. SSL 证书WordPress 使用自签名证书,已配置跳过验证

🔄 服务管理

# 查看服务状态
systemctl status wp-publish

# 重启服务
systemctl restart wp-publish

# 查看日志
tail -f /www/wwwroot/wp-publish/logs/feishu_bot.log

📞 技术支持

如有问题,请查看日志文件获取详细错误信息,或联系技术支持。