From 915253bb2ab0f12caf8a848b7dbdc8bc401db9ca Mon Sep 17 00:00:00 2001 From: H Vs Date: Tue, 25 Feb 2025 17:17:49 +0800 Subject: [PATCH] =?UTF-8?q?=E8=B0=83=E6=95=B4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- resources/login_resources.py | 42 +++++++++++++++++++++++++++++++--- resources/messages_resource.py | 31 +++++++++++++++++++++---- 2 files changed, 66 insertions(+), 7 deletions(-) diff --git a/resources/login_resources.py b/resources/login_resources.py index ffa93e1..badfe56 100644 --- a/resources/login_resources.py +++ b/resources/login_resources.py @@ -1,7 +1,10 @@ from flask_restful import Resource, reqparse from flask import jsonify,request,json from common import redis_helper,utils -from wechat import gewe_chat +from wechat import gewe_chat,biz +from common.log import logger, log_exception +import time + class GetLoginInfoResource(Resource): @@ -39,12 +42,45 @@ class GetLoginWxQRCodeResource(Resource): tel= req.get("tel") region_id= req.get("regionId") agent_token_id= req.get("agentTokenId") + + loginfo=gewe_chat.wxchat.get_login_info_from_cache(tel) + status=loginfo.get('status','0') + + if status=='1': + msg=f'手机号{tel},wx_token{token_id} 已经微信登录,终止登录流程' + logger.info(msg) + response=jsonify({'code': 501, 'message': msg}) + response.status_code = 501 + return response + expried_time=int(time.time())+800 + flag=gewe_chat.wxchat.acquire_login_lock(token_id,800) + if not flag: + msg=f'手机号{tel}, wx_token{token_id} 登录进行中,稍后再试' + logger.info(msg) + response=jsonify({'code': 501, 'message': msg}) + response.status_code = 501 + return response + + app_id=loginfo.get('app_id','') + + qr_code = gewe_chat.wxchat.get_login_qr_code(token_id, app_id,region_id) + base64_string = qr_code.get('qrImgBase64') + uuid = qr_code.get('uuid') + if not uuid: + msg=f"uuid获取二维码失败,uuid: {uuid}" + gewe_chat.wxchat.release_login_lock(token_id) + logger.info(msg) + response=jsonify({'code': 501, 'message': msg}) + response.status_code = 501 + return response + + data={ "tokenId": token_id, "tel": tel, - "base64Img": "data:image/png;base64,"+"aaaaaa", - "expiredTime": "12345678901", + "base64Img": base64_string, + "expiredTime": expried_time, } return jsonify(data) diff --git a/resources/messages_resource.py b/resources/messages_resource.py index 70ee79a..c94c463 100644 --- a/resources/messages_resource.py +++ b/resources/messages_resource.py @@ -319,7 +319,7 @@ def ai_chat_text(token_id,app_id,wxid,msg_data,msg_content): if isinstance(reply_content, list) : - reply_content=reply_content[0].get('text').get("content") + reply_content=remove_markdown_symbol(reply_content[0].get('text').get("content")) else: reply_content=text @@ -327,8 +327,8 @@ def ai_chat_text(token_id,app_id,wxid,msg_data,msg_content): memory.USER_INTERACTIVE_CACHE[wxid] = { "interactive":False } - reply_content=res["choices"][0]["message"]["content"] - + reply_content=remove_markdown_symbol(res["choices"][0]["message"]["content"]) + gewe_chat.wxchat.post_text(token_id,app_id,callback_to_user,reply_content) gewe_chat.wxchat.save_session_messages_to_cache(hash_key, {"role": "assistant", "content": reply_content}) # 回复的对话 @@ -873,8 +873,31 @@ def check_chatroom(userName): return True return False +# def remove_markdown_symbol(text: str): +# # 移除markdown格式,目前先移除** +# if not text or not isinstance(text, str): +# return text +# return re.sub(r'\*\*(.*?)\*\*', r'\1', text) + + def remove_markdown_symbol(text: str): # 移除markdown格式,目前先移除** if not text or not isinstance(text, str): return text - return re.sub(r'\*\*(.*?)\*\*', r'\1', text) \ No newline at end of file + # 去除加粗、斜体等格式 + #text = re.sub(r'\*\*([^*]+)\*\*', r'\1', text) # 去除加粗 + text=re.sub(r'\*\*(.*?)\*\*', r'\1', text) + text = re.sub(r'\*([^*]+)\*', r'\1', text) # 去除斜体 + text = re.sub(r'__([^_]+)__', r'\1', text) # 去除加粗(下划线) + text = re.sub(r'_(.*?)_', r'\1', text) # 去除斜体(下划线) + + # 去除行内代码块 + text = re.sub(r'`([^`]+)`', r'\1', text) + + # 去除换行符\n,或者多余的空格 + #text = re.sub(r'\n+', ' ', text) + + # 去除列表编号等 + #text = re.sub(r'^\d+\.\s*', '', text, flags=re.MULTILINE) + print(text) + return text \ No newline at end of file