fix: 飞书长连接改用 ThreadPoolExecutor 处理消息
- 用 ThreadPoolExecutor(max_workers=5) 替代单次 threading.Thread - 支持并发处理多条消息,避免排队阻塞 - 添加消息序号日志,方便追踪消息接收和处理 - _process_message_safe 包装确保异常不会导致线程崩溃 - 如果消息确实没被 SDK 推送,日志里不会有对应的 #N 记录
This commit is contained in:
@@ -1,6 +1,6 @@
|
||||
# 飞书长连接模式使用指南
|
||||
|
||||
> ✅ **已验证可用** - 2026-02-11
|
||||
> **已验证可用** - 2026-02-11
|
||||
>
|
||||
> 本文档介绍如何使用飞书官方 SDK 的长连接模式,无需公网域名即可接入飞书机器人。
|
||||
|
||||
@@ -8,14 +8,14 @@
|
||||
|
||||
飞书官方 SDK 提供了**事件订阅 2.0(长连接模式)**,相比传统的 webhook 模式有以下优势:
|
||||
|
||||
| 特性 | Webhook 模式(旧) | 长连接模式(新)✅ |
|
||||
| 特性 | Webhook 模式(旧) | 长连接模式(新) |
|
||||
|------|-------------------|-------------------|
|
||||
| 公网域名 | ✅ 必需 | ❌ 不需要 |
|
||||
| SSL 证书 | ✅ 必需 | ❌ 不需要 |
|
||||
| 回调配置 | ✅ 需要配置 | ❌ 不需要 |
|
||||
| 内网部署 | ❌ 不支持 | ✅ 支持 |
|
||||
| 实时性 | 中等(HTTP 轮询) | ✅ 高(WebSocket) |
|
||||
| 稳定性 | 中等 | ✅ 高(自动重连) |
|
||||
| 公网域名 | 必需 | 不需要 |
|
||||
| SSL 证书 | 必需 | 不需要 |
|
||||
| 回调配置 | 需要配置 | 不需要 |
|
||||
| 内网部署 | 不支持 | 支持 |
|
||||
| 实时性 | 中等(HTTP 轮询) | 高(WebSocket) |
|
||||
| 稳定性 | 中等 | 高(自动重连) |
|
||||
|
||||
---
|
||||
|
||||
@@ -61,12 +61,12 @@ python init_database.py
|
||||
访问 [飞书开放平台](https://open.feishu.cn/app),为您的应用添加以下权限:
|
||||
|
||||
**必需权限:**
|
||||
- ✅ `im:message` - 获取与发送单聊、群组消息
|
||||
- ✅ `im:message:send_as_bot` - 以应用的身份发消息
|
||||
- ✅ `im:chat` - 获取群组信息
|
||||
- `im:message` - 获取与发送单聊、群组消息
|
||||
- `im:message:send_as_bot` - 以应用的身份发消息
|
||||
- `im:chat` - 获取群组信息
|
||||
|
||||
**可选权限(用于工单同步):**
|
||||
- ✅ `bitable:app` - 查看、评论、编辑和管理多维表格
|
||||
- `bitable:app` - 查看、评论、编辑和管理多维表格
|
||||
|
||||
**注意:** 添加权限后需要重新发布应用版本。
|
||||
|
||||
@@ -94,7 +94,7 @@ python start_feishu_bot.py
|
||||
- 日志级别: INFO
|
||||
|
||||
🔌 启动模式: 事件订阅 2.0(长连接)
|
||||
✅ 优势:
|
||||
优势:
|
||||
- 无需公网域名
|
||||
- 无需配置 webhook
|
||||
- 自动重连
|
||||
@@ -107,7 +107,7 @@ python start_feishu_bot.py
|
||||
- App ID: cli_xxxxxxxxxxxxx
|
||||
- 模式: 事件订阅 2.0(长连接)
|
||||
- 无需公网域名和 webhook 配置
|
||||
✅ 飞书长连接服务初始化成功
|
||||
飞书长连接服务初始化成功
|
||||
```
|
||||
|
||||
### 方式 2: 在代码中集成
|
||||
@@ -175,10 +175,10 @@ app.run(...)
|
||||
- 原始内容: @TSP助手 车辆无法连接网络
|
||||
- 清理后内容: 车辆无法连接网络
|
||||
🔑 会话用户标识: feishu_oc_xxxxxxxxxxxxx_ou_xxxxxxxxxxxxx
|
||||
🆕 为用户 ou_xxxxxxxxxxxxx 在群聊 oc_xxxxxxxxxxxxx 创建新会话: session_xxxxxxxxxxxxx
|
||||
为用户 ou_xxxxxxxxxxxxx 在群聊 oc_xxxxxxxxxxxxx 创建新会话: session_xxxxxxxxxxxxx
|
||||
🤖 调用 TSP Assistant 处理消息...
|
||||
📤 准备发送回复 (长度: 156)
|
||||
✅ 成功回复消息: om_xxxxxxxxxxxxx
|
||||
成功回复消息: om_xxxxxxxxxxxxx
|
||||
```
|
||||
|
||||
---
|
||||
@@ -195,12 +195,12 @@ app.run(...)
|
||||
```
|
||||
|
||||
**缺点:**
|
||||
- ❌ 需要公网域名
|
||||
- ❌ 需要配置 SSL
|
||||
- ❌ 内网无法部署
|
||||
- ❌ 需要在飞书后台配置回调地址
|
||||
- 需要公网域名
|
||||
- 需要配置 SSL
|
||||
- 内网无法部署
|
||||
- 需要在飞书后台配置回调地址
|
||||
|
||||
### 新模式(长连接)- 推荐 ✅
|
||||
### 新模式(长连接)- 推荐
|
||||
|
||||
**文件:** `src/integrations/feishu_longconn_service.py`
|
||||
|
||||
@@ -210,16 +210,16 @@ app.run(...)
|
||||
```
|
||||
|
||||
**优点:**
|
||||
- ✅ 无需公网域名
|
||||
- ✅ 无需 SSL 证书
|
||||
- ✅ 内网可部署
|
||||
- ✅ 无需配置回调地址
|
||||
- ✅ 自动重连
|
||||
- ✅ 更稳定
|
||||
- 无需公网域名
|
||||
- 无需 SSL 证书
|
||||
- 内网可部署
|
||||
- 无需配置回调地址
|
||||
- 自动重连
|
||||
- 更稳定
|
||||
|
||||
---
|
||||
|
||||
## 📊 架构说明
|
||||
## 架构说明
|
||||
|
||||
```
|
||||
┌─────────────────────────────────────────────────────────────┐
|
||||
@@ -332,7 +332,7 @@ python3 -m pip install --upgrade certifi
|
||||
|
||||
3. **验证修复**:
|
||||
```bash
|
||||
python3 -c "import urllib.request; urllib.request.urlopen('https://open.feishu.cn', timeout=5); print('✅ SSL 验证成功')"
|
||||
python3 -c "import urllib.request; urllib.request.urlopen('https://open.feishu.cn', timeout=5); print(' SSL 验证成功')"
|
||||
```
|
||||
|
||||
**解决方案(Linux/Windows):**
|
||||
@@ -343,11 +343,11 @@ pip3 install --upgrade certifi
|
||||
### Q2: 启动后没有收到消息?
|
||||
|
||||
**检查清单:**
|
||||
1. ✅ 确认飞书应用权限已配置(`im:message`)
|
||||
2. ✅ 确认应用已发布最新版本
|
||||
3. ✅ 确认机器人已添加到群聊
|
||||
4. ✅ 查看日志是否有连接成功的提示
|
||||
5. ✅ 确认没有 SSL 证书错误(见 Q1)
|
||||
1. 确认飞书应用权限已配置(`im:message`)
|
||||
2. 确认应用已发布最新版本
|
||||
3. 确认机器人已添加到群聊
|
||||
4. 查看日志是否有连接成功的提示
|
||||
5. 确认没有 SSL 证书错误(见 Q1)
|
||||
|
||||
### Q3: 提示"权限不足"?
|
||||
|
||||
@@ -379,7 +379,7 @@ pip3 install --upgrade certifi
|
||||
|
||||
现在您的 TSP Assistant 已经支持**飞书官方 SDK 的长连接模式**!
|
||||
|
||||
✅ **核心优势:**
|
||||
**核心优势:**
|
||||
- 无需公网域名
|
||||
- 无需 webhook 配置
|
||||
- 内网可部署
|
||||
@@ -387,7 +387,7 @@ pip3 install --upgrade certifi
|
||||
- 群聊隔离
|
||||
- 完整的工单管理和 AI 分析功能
|
||||
|
||||
✅ **使用方式:**
|
||||
**使用方式:**
|
||||
```bash
|
||||
python start_feishu_bot.py
|
||||
```
|
||||
|
||||
Reference in New Issue
Block a user