updates
This commit is contained in:
parent
1486f3c512
commit
150bd1d825
|
|
@ -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":
|
||||
|
|
|
|||
Loading…
Reference in New Issue