## 🚀 重大更新 ### 飞书集成升级 - ✅ 迁移到飞书官方 SDK 的事件订阅 2.0(长连接模式) - ✅ 无需公网域名和 webhook 配置 - ✅ 支持内网部署 - ✅ 自动重连机制 ### 核心功能优化 - ✅ 优化群聊隔离机制(每个用户在每个群独立会话) - ✅ 增强日志输出(emoji 标记便于快速识别) - ✅ 完善错误处理和异常恢复 - ✅ 添加 SSL 证书问题解决方案 ### 新增文件 - `src/integrations/feishu_longconn_service.py` - 飞书长连接服务 - `start_feishu_bot.py` - 启动脚本 - `test_feishu_connection.py` - 连接诊断工具 - `docs/FEISHU_LONGCONN.md` - 详细使用文档 - `README.md` - 项目说明文档 ### 技术改进 - 添加 lark-oapi==1.3.5 官方 SDK - 升级 certifi 包以支持 SSL 验证 - 优化配置加载逻辑 - 改进会话管理机制 ### 文档更新 - 新增飞书长连接模式完整文档 - 更新快速开始指南 - 添加常见问题解答(SSL、权限、部署等) - 完善架构说明和技术栈介绍 ## 📝 使用方式 启动飞书长连接服务(无需公网域名): ```bash python3 start_feishu_bot.py ``` 详见:docs/FEISHU_LONGCONN.md Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
77 lines
2.2 KiB
Python
Executable File
77 lines
2.2 KiB
Python
Executable File
#!/usr/bin/env python3
|
|
# 如果系统中 python 命令不存在,请使用: python3 start_feishu_bot.py
|
|
# -*- coding: utf-8 -*-
|
|
"""
|
|
启动飞书长连接客户端
|
|
使用官方 SDK 的事件订阅 2.0 模式,无需公网域名
|
|
"""
|
|
import sys
|
|
import os
|
|
import logging
|
|
from pathlib import Path
|
|
|
|
# 添加项目根目录到 Python 路径
|
|
project_root = Path(__file__).parent
|
|
sys.path.insert(0, str(project_root))
|
|
|
|
# 配置日志
|
|
import os
|
|
|
|
# 从环境变量获取日志级别,默认为 INFO
|
|
log_level = os.getenv('LOG_LEVEL', 'INFO').upper()
|
|
|
|
# 配置日志格式
|
|
logging.basicConfig(
|
|
level=getattr(logging, log_level, logging.INFO),
|
|
format='%(asctime)s [%(levelname)s] [%(name)s] %(message)s',
|
|
datefmt='%Y-%m-%d %H:%M:%S'
|
|
)
|
|
|
|
logger = logging.getLogger(__name__)
|
|
|
|
|
|
def main():
|
|
"""主函数"""
|
|
# 加载配置
|
|
from src.config.unified_config import get_config
|
|
config = get_config()
|
|
|
|
logger.info("=" * 80)
|
|
logger.info("🚀 TSP Assistant - 飞书长连接客户端")
|
|
logger.info("=" * 80)
|
|
logger.info("")
|
|
logger.info("📋 配置信息:")
|
|
logger.info(f" - App ID: {config.feishu.app_id}")
|
|
logger.info(f" - 数据库: {config.database.url}")
|
|
logger.info(f" - LLM: {config.llm.provider}/{config.llm.model}")
|
|
logger.info(f" - 日志级别: {log_level}")
|
|
logger.info("")
|
|
logger.info("🔌 启动模式: 事件订阅 2.0(长连接)")
|
|
logger.info("✅ 优势:")
|
|
logger.info(" - 无需公网域名")
|
|
logger.info(" - 无需配置 webhook")
|
|
logger.info(" - 自动重连")
|
|
logger.info(" - 实时接收消息")
|
|
logger.info("")
|
|
logger.info("💡 提示: 按 Ctrl+C 停止服务")
|
|
logger.info("=" * 80)
|
|
logger.info("")
|
|
|
|
# 导入并启动长连接服务
|
|
from src.integrations.feishu_longconn_service import get_feishu_longconn_service
|
|
|
|
try:
|
|
service = get_feishu_longconn_service()
|
|
service.start() # 这里会阻塞,持续监听飞书事件
|
|
except KeyboardInterrupt:
|
|
logger.info("")
|
|
logger.info("⏹️ 用户中断,正在停止服务...")
|
|
logger.info("👋 再见!")
|
|
except Exception as e:
|
|
logger.error(f"❌ 服务异常退出: {e}", exc_info=True)
|
|
sys.exit(1)
|
|
|
|
|
|
if __name__ == "__main__":
|
|
main()
|