From 150bd1d8251c16edbb609883c02eec0af3ed9eb5 Mon Sep 17 00:00:00 2001 From: zwt13703 Date: Mon, 27 Apr 2026 19:48:05 +0800 Subject: [PATCH] updates --- app/services/message_service.py | 20 ++++++++++++++------ 1 file changed, 14 insertions(+), 6 deletions(-) diff --git a/app/services/message_service.py b/app/services/message_service.py index 9b62b7d..b8cbf74 100644 --- a/app/services/message_service.py +++ b/app/services/message_service.py @@ -11,17 +11,18 @@ async def save_messages(db: AsyncSession, msg_list: list[dict]) -> int: """批量保存消息,按 msg_id 去重,返回新增数量""" saved = 0 for msg in msg_list: + origin = _normalize_origin(msg.get("origin", 3)) stmt = pg_insert(Message).values( - msg_id=msg.get("msgid") or msg.get("msg_id", ""), - open_kfid=msg.get("open_kfid", settings.open_kfid), - external_userid=msg.get("external_userid", ""), + msg_id=str(msg.get("msgid") or msg.get("msg_id", "")), + open_kfid=str(msg.get("open_kfid", settings.open_kfid)), + external_userid=str(msg.get("external_userid", "")), servicer_userid=msg.get("servicer_userid"), send_time=datetime.fromtimestamp(msg.get("send_time", 0)), - msgtype=msg.get("msgtype", "unknown"), - origin=msg.get("origin", "customer"), + msgtype=str(msg.get("msgtype", "unknown")), + origin=origin, content=_extract_text_content(msg), raw_data=msg, - direction="inbound" if msg.get("origin") != "servicer" else "outbound", + direction="inbound" if origin != "servicer" else "outbound", status="received", ).on_conflict_do_nothing(index_elements=["msg_id"]) result = await db.execute(stmt) @@ -133,6 +134,13 @@ async def send_and_save(db: AsyncSession, external_userid: str, content: str, return result +def _normalize_origin(origin) -> str: + """将微信 API 返回的 origin 整数转为字符串""" + if isinstance(origin, int): + return {3: "customer", 4: "system", 5: "servicer"}.get(origin, str(origin)) + return str(origin) + + def _extract_text_content(msg: dict) -> str: """从消息中提取文本内容""" if msg.get("msgtype") == "text":