feat: 飞书消息记录完善 记录发送者ID、姓名、群信息
- FeishuService 新增 get_user_info() 根据 user_id 获取飞书用户姓名 - feishu_bot.py 处理消息时获取发送者姓名,日志格式改为:发送者=姓名(ID), 群=chat_id, 类型=群聊/私聊, 租户=xxx - feishu_longconn_service.py 同样获取发送者姓名并记录 - Conversation.ip_address 存储 feishu:user_id:sender_name(扩大字段到200字符) - Conversation.invocation_method 存储 feishu_bot(group) / feishu_longconn(p2p) 等详细来源 - ChatSession.source 同步记录详细来源信息
This commit is contained in:
@@ -103,14 +103,27 @@ def _process_message_in_background(app, event_data: dict):
|
||||
chat_manager = service_manager.get_chat_manager()
|
||||
|
||||
# 获取发送者ID(从event中提取)
|
||||
sender_id = event.get('sender', {}).get('sender_id', {}).get('user_id', 'unknown')
|
||||
sender = event.get('sender', {})
|
||||
sender_id = sender.get('sender_id', {}).get('user_id', 'unknown')
|
||||
sender_open_id = sender.get('sender_id', {}).get('open_id', '')
|
||||
sender_type = sender.get('sender_type', 'user')
|
||||
|
||||
# 获取发送者姓名
|
||||
sender_name = '未知用户'
|
||||
try:
|
||||
if sender_id and sender_id != 'unknown':
|
||||
user_info = feishu_service.get_user_info(sender_id)
|
||||
sender_name = user_info.get('name') or user_info.get('en_name') or sender_id
|
||||
except Exception as e:
|
||||
logger.warning(f"[Feishu Bot] 获取发送者信息失败: {e}")
|
||||
|
||||
logger.info(f"[Feishu Bot] 📨 消息详情: 发送者={sender_name}({sender_id}), 群={chat_id}, 类型={chat_type_desc}, 租户={tenant_id}, 消息ID={message_id}")
|
||||
logger.info(f"[Feishu Bot] 📝 消息内容: '{text_content}'")
|
||||
|
||||
# 群聊隔离:每个用户在每个群都有独立会话
|
||||
# 格式:feishu_群聊ID_用户ID
|
||||
user_id = f"feishu_{chat_id}_{sender_id}"
|
||||
|
||||
logger.info(f"[Feishu Bot] 会话用户标识: {user_id}")
|
||||
|
||||
# 检查是否已有活跃会话
|
||||
active_sessions = chat_manager.get_active_sessions()
|
||||
session_id = None
|
||||
@@ -126,17 +139,16 @@ def _process_message_in_background(app, event_data: dict):
|
||||
# 如果没有会话,创建新会话
|
||||
if not session_id:
|
||||
session_id = chat_manager.create_session(user_id=user_id, work_order_id=None, tenant_id=tenant_id)
|
||||
logger.info(f"[Feishu Bot] 为用户 {sender_id} 在群聊 {chat_id} 创建新会话: {session_id} (租户: {tenant_id})")
|
||||
logger.info(f"[Feishu Bot] 新建会话: {session_id}, 用户={sender_name}({sender_id}), 租户={tenant_id}")
|
||||
|
||||
# 4. 调用实时对话接口处理消息
|
||||
logger.info(f"[Feishu Bot] 调用实时对话接口处理消息...")
|
||||
response_data = chat_manager.process_message(
|
||||
session_id=session_id,
|
||||
user_message=text_content,
|
||||
ip_address=None,
|
||||
invocation_method="feishu_bot"
|
||||
ip_address=f"feishu:{sender_id}:{sender_name}",
|
||||
invocation_method=f"feishu_bot({chat_type})"
|
||||
)
|
||||
logger.info(f"[Feishu Bot] 实时对话接口返回结果: {response_data}")
|
||||
logger.info(f"[Feishu Bot] 处理结果: success={response_data.get('success')}, 用户={sender_name}")
|
||||
|
||||
# 5. 提取回复并发送
|
||||
if response_data.get("success"):
|
||||
|
||||
Reference in New Issue
Block a user