mirror of
https://github.com/langbot-app/LangBot.git
synced 2026-06-02 03:55:55 +00:00
fix: 修复钉钉文件消息解析失效问题(优化 downloadCode 提取逻辑) (#2080)
* fix: resolve dingtalk file parsing issue by extracting downloadCode from content * style: fix ruff format trailing whitespace --------- Co-authored-by: RockChinQ <rockchinq@gmail.com>
This commit is contained in:
@@ -272,15 +272,30 @@ class DingTalkClient:
|
|||||||
|
|
||||||
message_data['Type'] = 'audio'
|
message_data['Type'] = 'audio'
|
||||||
elif incoming_message.message_type == 'file':
|
elif incoming_message.message_type == 'file':
|
||||||
down_list = incoming_message.get_down_list()
|
# 获取原始数据字典并提取嵌套的文件信息
|
||||||
if len(down_list) >= 2:
|
raw_data = incoming_message.to_dict()
|
||||||
message_data['File'] = await self.get_file_url(down_list[0])
|
file_info = raw_data.get('content', {})
|
||||||
message_data['Name'] = down_list[1]
|
|
||||||
|
# 兼容处理:如果 content 仍为 JSON 字符串则进行解析
|
||||||
|
if isinstance(file_info, str):
|
||||||
|
try:
|
||||||
|
file_info = json.loads(file_info)
|
||||||
|
except (json.JSONDecodeError, TypeError):
|
||||||
|
file_info = {}
|
||||||
|
|
||||||
|
download_code = file_info.get('downloadCode')
|
||||||
|
file_name = file_info.get('fileName')
|
||||||
|
|
||||||
|
if download_code and file_name:
|
||||||
|
# 转换 downloadCode 为可下载的真实 URL
|
||||||
|
message_data['File'] = await self.get_file_url(download_code)
|
||||||
|
message_data['Name'] = file_name
|
||||||
else:
|
else:
|
||||||
if self.logger:
|
if self.logger:
|
||||||
await self.logger.error(f'get_down_list() returned fewer than 2 elements: {down_list}')
|
await self.logger.error(f'Failed to extract file info from message content: {file_info}')
|
||||||
message_data['File'] = None
|
message_data['File'] = None
|
||||||
message_data['Name'] = None
|
message_data['Name'] = None
|
||||||
|
|
||||||
message_data['Type'] = 'file'
|
message_data['Type'] = 'file'
|
||||||
|
|
||||||
copy_message_data = message_data.copy()
|
copy_message_data = message_data.copy()
|
||||||
|
|||||||
Reference in New Issue
Block a user