diff --git a/data/tsp_assistant.db b/data/tsp_assistant.db index 8e10e57..21ca0d4 100644 Binary files a/data/tsp_assistant.db and b/data/tsp_assistant.db differ diff --git a/src/integrations/feishu_longconn_service.py b/src/integrations/feishu_longconn_service.py index f3bb8e0..229e628 100644 --- a/src/integrations/feishu_longconn_service.py +++ b/src/integrations/feishu_longconn_service.py @@ -78,27 +78,39 @@ class FeishuLongConnService: content = message.content sender = event.sender - # 获取发送者ID和群信息(优先 open_id,user_id 可能为 None) - sender_open_id = getattr(sender.sender_id, 'open_id', '') or '' - sender_user_id = getattr(sender.sender_id, 'user_id', '') or '' - sender_id = sender_user_id or sender_open_id or 'unknown' + # 获取发送者ID和群信息 + sender_id_obj = sender.sender_id + # 调试:打印 sender 对象的所有属性 try: - tenant_key = sender.sender_id.tenant_key + sender_attrs = {k: getattr(sender_id_obj, k, None) for k in ['user_id', 'open_id', 'union_id'] if getattr(sender_id_obj, k, None)} + if not sender_attrs: + # 尝试 __dict__ 或 dir + sender_attrs = {k: v for k, v in vars(sender_id_obj).items() if v and not k.startswith('_')} if hasattr(sender_id_obj, '__dict__') else {} + logger.info(f"🔍 sender_id 属性: {sender_attrs}") + except Exception as e: + logger.warning(f"🔍 无法解析 sender_id 属性: {e}, type={type(sender_id_obj)}") + sender_attrs = {} + + sender_open_id = getattr(sender_id_obj, 'open_id', '') or '' + sender_user_id = getattr(sender_id_obj, 'user_id', '') or '' + sender_union_id = getattr(sender_id_obj, 'union_id', '') or '' + sender_id = sender_open_id or sender_user_id or sender_union_id or 'unknown' + sender_type = getattr(sender, 'sender_type', 'user') + try: + tenant_key = sender_id_obj.tenant_key except: tenant_key = "unknown" - # 获取发送者姓名(用 open_id 查询,不需要 contact 权限) - sender_name = sender_id - try: - from src.integrations.feishu_service import FeishuService - fs = FeishuService() - id_for_query = sender_open_id or sender_user_id - id_type = 'open_id' if sender_open_id else 'user_id' - if id_for_query: - user_info = fs.get_user_info(id_for_query, id_type=id_type) - sender_name = user_info.get('name') or user_info.get('en_name') or sender_id - except Exception as e: - logger.warning(f"获取发送者信息失败: {e}") + # 获取发送者姓名 + sender_name = f"用户_{sender_id[-8:]}" if len(sender_id) > 8 else sender_id + if sender_open_id: + try: + from src.integrations.feishu_service import FeishuService + fs = FeishuService() + user_info = fs.get_user_info(sender_open_id, id_type='open_id') + sender_name = user_info.get('name') or user_info.get('en_name') or sender_name + except Exception as e: + logger.debug(f"获取发送者姓名失败: {e}") # 详细日志记录 chat_type_desc = '群聊(group)' if chat_type == 'group' else '私聊(p2p)' if chat_type == 'p2p' else chat_type @@ -145,11 +157,7 @@ class FeishuLongConnService: logger.info(f"✅ 清理后内容: {text_content}") - # 获取发送者ID - sender_id = sender.sender_id.user_id - # 构造会话用户ID(群聊隔离) - # 格式: feishu_群聊ID_用户ID session_user_id = f"feishu_{chat_id}_{sender_id}" logger.info(f"🔑 会话标识: {session_user_id}")