feat: enhance user message preprocessing to include message creation timestamp

This commit is contained in:
Ethan
2025-03-02 18:49:32 +08:00
parent 98a9fed726
commit 9f7d9e4c0d
+18 -5
View File
@@ -61,7 +61,7 @@ class DifyServiceAPIRunner(runner.RequestRunner):
async def _preprocess_user_message( async def _preprocess_user_message(
self, query: core_entities.Query self, query: core_entities.Query
) -> tuple[str, list[str]]: ) -> tuple[str, list[str], int | None]:
"""预处理用户消息,提取纯文本,并将图片上传到 Dify 服务 """预处理用户消息,提取纯文本,并将图片上传到 Dify 服务
Returns: Returns:
@@ -69,6 +69,18 @@ class DifyServiceAPIRunner(runner.RequestRunner):
""" """
plain_text = "" plain_text = ""
image_ids = [] image_ids = []
# 尝试获取 CreateTime
create_time = None
try:
timestamp = query.message_event.source_platform_object.get('Data', {}).get('CreateTime')
# 确保 timestamp 是整数类型
if isinstance(timestamp, (int, float)):
create_time = int(timestamp)
except AttributeError:
# 如果获取过程中发生属性错误,保持 create_time 为 None
pass
if isinstance(query.user_message.content, list): if isinstance(query.user_message.content, list):
for ce in query.user_message.content: for ce in query.user_message.content:
if ce.type == "text": if ce.type == "text":
@@ -86,7 +98,7 @@ class DifyServiceAPIRunner(runner.RequestRunner):
elif isinstance(query.user_message.content, str): elif isinstance(query.user_message.content, str):
plain_text = query.user_message.content plain_text = query.user_message.content
return plain_text, image_ids return plain_text, image_ids, create_time
async def _chat_messages( async def _chat_messages(
self, query: core_entities.Query self, query: core_entities.Query
@@ -94,7 +106,7 @@ class DifyServiceAPIRunner(runner.RequestRunner):
"""调用聊天助手""" """调用聊天助手"""
cov_id = query.session.using_conversation.uuid or "" cov_id = query.session.using_conversation.uuid or ""
plain_text, image_ids = await self._preprocess_user_message(query) plain_text, image_ids, _ = await self._preprocess_user_message(query)
files = [ files = [
{ {
@@ -147,7 +159,7 @@ class DifyServiceAPIRunner(runner.RequestRunner):
"""调用聊天助手""" """调用聊天助手"""
cov_id = query.session.using_conversation.uuid or "" cov_id = query.session.using_conversation.uuid or ""
plain_text, image_ids = await self._preprocess_user_message(query) plain_text, image_ids, _ = await self._preprocess_user_message(query)
files = [ files = [
{ {
@@ -228,7 +240,7 @@ class DifyServiceAPIRunner(runner.RequestRunner):
cov_id = query.session.using_conversation.uuid cov_id = query.session.using_conversation.uuid
plain_text, image_ids = await self._preprocess_user_message(query) plain_text, image_ids, timestamp = await self._preprocess_user_message(query)
files = [ files = [
{ {
@@ -246,6 +258,7 @@ class DifyServiceAPIRunner(runner.RequestRunner):
"langbot_user_message_text": plain_text, "langbot_user_message_text": plain_text,
"langbot_session_id": f"{query.session.launcher_type.value}_{query.session.launcher_id}", "langbot_session_id": f"{query.session.launcher_type.value}_{query.session.launcher_id}",
"langbot_conversation_id": cov_id, "langbot_conversation_id": cov_id,
"langbot_msg_timestamp": timestamp,
}, },
user=f"{query.session.launcher_type.value}_{query.session.launcher_id}", user=f"{query.session.launcher_type.value}_{query.session.launcher_id}",
files=files, files=files,