From f28ac0166536a2a4b68cac685a41ea667f60f7e9 Mon Sep 17 00:00:00 2001 From: yj <2077506045@qq.com> Date: 星期三, 03 九月 2025 14:43:03 +0800 Subject: [PATCH] 兼容企业微信 --- app/services/message_processor.py | 46 ++++++++++++++++++++++++++++++---------------- 1 files changed, 30 insertions(+), 16 deletions(-) diff --git a/app/services/message_processor.py b/app/services/message_processor.py index fecc840..8a79a72 100644 --- a/app/services/message_processor.py +++ b/app/services/message_processor.py @@ -94,7 +94,7 @@ # 寮傚父鎯呭喌涓嬭繑鍥炲師濮媍ontent return callback_data.get("data", {}).get("content", "") - def parse_at_mentions(self, ai_answer: str) -> Tuple[str, List[str]]: + def parse_at_mentions(self, ai_answer: str, from_user: str) -> Tuple[str, List[str]]: """ 瑙f瀽AI鍥炲涓殑@瀛楃锛屾彁鍙栧鏈嶅悕绉� @@ -130,10 +130,17 @@ db.query(Contact).filter(Contact.nick_name == name).first() ) if contact: - at_wc_ids.append(contact.wc_id) - logger.info( - f"鎵惧埌瀹㈡湇鑱旂郴浜�: name={name}, wc_id={contact.wc_id}" - ) + # 濡傛灉from_user鍖呭惈@openim琛ㄧず鏄紒涓氬井淇★紝浣跨敤work_wc_id + if "@openim" in from_user: + at_wc_ids.append(contact.work_wc_id) + logger.info( + f"鎵惧埌瀹㈡湇鑱旂郴浜�-寰俊: name={name}, wc_id={contact.work_wc_id}" + ) + else: + at_wc_ids.append(contact.wc_id) + logger.info( + f"鎵惧埌瀹㈡湇鑱旂郴浜�-浼佷笟寰俊: name={name}, wc_id={contact.wc_id}" + ) else: logger.warning(f"鏈壘鍒板鏈嶈仈绯讳汉: name={name}") @@ -371,12 +378,14 @@ return False # 3.2 鑾峰彇缇ょ粍涓彂瑷�娆℃暟鏈�澶氱殑鐢ㄦ埛鏄电О - most_active_nickname = ( - group_stats_service.get_most_active_user_nickname(from_group) - ) - logger.info( - f"缇ょ粍鏈�娲昏穬鐢ㄦ埛鏄电О: group={from_group}, nickname={most_active_nickname}" - ) + # most_active_nickname = ( + # group_stats_service.get_most_active_user_nickname(from_group) + # ) + # logger.info( + # f"缇ょ粍鏈�娲昏穬鐢ㄦ埛鏄电О: group={from_group}, nickname={most_active_nickname}" + # ) + # 鑾峰彇榛樿瀹㈡湇鍚嶇О + nickname = settings.customer_service_default_name # 3.3 鑾峰彇鐢ㄦ埛鍦ㄥ綋鍓嶇兢缁勭殑conversation_id conversation_id = redis_queue.get_conversation_id(from_user, from_group) @@ -386,7 +395,7 @@ query=content, user=from_user, conversation_id=conversation_id, - nick_name=most_active_nickname, + nick_name=nickname, ) if silence_service.is_silence_active(from_group): @@ -475,7 +484,7 @@ success = False if ai_answer: # 瑙f瀽AI鍥炲涓殑@瀛楃 - processed_answer, at_wc_ids = self.parse_at_mentions(ai_answer) + processed_answer, at_wc_ids = self.parse_at_mentions(ai_answer, from_user) # 鍒ゆ柇AI鍥炲鏄惁鏄粨鏉熷瓧绗︿覆 is_end_str = self.is_end_str(ai_answer) # 鍙戦�佹秷鎭紝鏈�澶氶噸璇�3娆� @@ -495,10 +504,15 @@ ) else: # 濡傛灉璇ョ兢缁勯潤榛樻ā寮忔湭婵�娲伙紝婵�娲婚潤榛樻ā寮� - silence_service.activate_silence_mode(from_group) - logger.info( + flag = silence_service.activate_silence_mode(from_group) + if flag: + logger.info( f"AI鍥炲@瀹㈡湇锛岀兢缁勯潤榛樻ā寮忓凡婵�娲�: fromUser={from_user}, fromGroup={from_group}" - ) + ) + else: + logger.info( + f"AI鍥炲@瀹㈡湇锛屾湭婵�娲婚潤榛樻ā寮�: fromUser={from_user}, fromGroup={from_group}" + ) success = True break else: -- Gitblit v1.9.1