claw-subagent-service 0.0.119 → 0.0.121
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/package.json
CHANGED
|
@@ -633,11 +633,39 @@ class MessageHandler {
|
|
|
633
633
|
sightUrl = content.sightUrl || content.url || '';
|
|
634
634
|
name = content.name || '未知视频';
|
|
635
635
|
duration = content.duration || 0;
|
|
636
|
+
} else if (typeof content === 'string') {
|
|
637
|
+
// 尝试解析 content 是否为 JSON(包含 sightUrl)
|
|
638
|
+
try {
|
|
639
|
+
const contentObj = JSON.parse(content);
|
|
640
|
+
if (contentObj.sightUrl) {
|
|
641
|
+
sightUrl = contentObj.sightUrl;
|
|
642
|
+
name = contentObj.name || '未知视频';
|
|
643
|
+
duration = contentObj.duration || 0;
|
|
644
|
+
}
|
|
645
|
+
} catch (e) {
|
|
646
|
+
// content 不是 JSON,可能是 base64 缩略图
|
|
647
|
+
sightUrl = msg.sightUrl || msg.url || msg.localPath || '';
|
|
648
|
+
}
|
|
636
649
|
} else {
|
|
637
650
|
sightUrl = msg.sightUrl || msg.url || msg.localPath || '';
|
|
638
651
|
}
|
|
639
652
|
|
|
653
|
+
// 如果还是没有找到 URL,尝试从 extra 字段获取
|
|
654
|
+
if (!sightUrl && msg.extra) {
|
|
655
|
+
try {
|
|
656
|
+
const extraData = JSON.parse(msg.extra);
|
|
657
|
+
sightUrl = extraData.videoUrl || extraData.sightUrl || '';
|
|
658
|
+
} catch (e) {
|
|
659
|
+
// extra 不是 JSON,忽略
|
|
660
|
+
}
|
|
661
|
+
}
|
|
662
|
+
|
|
640
663
|
this.log?.info(`[_extractMessageContent] 视频消息: sightUrl=${sightUrl}`);
|
|
664
|
+
|
|
665
|
+
if (!sightUrl) {
|
|
666
|
+
return '[视频](无法获取视频地址)';
|
|
667
|
+
}
|
|
668
|
+
|
|
641
669
|
return `[视频] ${sightUrl} ${name} ${duration}秒`;
|
|
642
670
|
}
|
|
643
671
|
|
|
@@ -651,11 +679,37 @@ class MessageHandler {
|
|
|
651
679
|
fileUrl = content.fileUrl || content.fileUri || content.url || '';
|
|
652
680
|
name = content.name || '未知文件';
|
|
653
681
|
size = content.size || 0;
|
|
682
|
+
} else if (typeof content === 'string') {
|
|
683
|
+
// 尝试解析 content 是否为 JSON(包含 fileUrl)
|
|
684
|
+
try {
|
|
685
|
+
const contentObj = JSON.parse(content);
|
|
686
|
+
if (contentObj.fileUrl) {
|
|
687
|
+
fileUrl = contentObj.fileUrl;
|
|
688
|
+
}
|
|
689
|
+
} catch (e) {
|
|
690
|
+
// content 不是 JSON
|
|
691
|
+
fileUrl = msg.fileUrl || msg.fileUri || msg.url || msg.localPath || '';
|
|
692
|
+
}
|
|
654
693
|
} else {
|
|
655
694
|
fileUrl = msg.fileUrl || msg.fileUri || msg.url || msg.localPath || '';
|
|
656
695
|
}
|
|
657
696
|
|
|
697
|
+
// 如果还是没有找到 URL,尝试从 extra 字段获取
|
|
698
|
+
if (!fileUrl && msg.extra) {
|
|
699
|
+
try {
|
|
700
|
+
const extraData = JSON.parse(msg.extra);
|
|
701
|
+
fileUrl = extraData.fileUrl || extraData.fileUri || '';
|
|
702
|
+
} catch (e) {
|
|
703
|
+
// extra 不是 JSON,忽略
|
|
704
|
+
}
|
|
705
|
+
}
|
|
706
|
+
|
|
658
707
|
this.log?.info(`[_extractMessageContent] 文件消息: fileUrl=${fileUrl}`);
|
|
708
|
+
|
|
709
|
+
if (!fileUrl) {
|
|
710
|
+
return '[文件](无法获取文件地址)';
|
|
711
|
+
}
|
|
712
|
+
|
|
659
713
|
return `[文件] ${fileUrl} ${name} ${size}`;
|
|
660
714
|
}
|
|
661
715
|
|
|
@@ -172,6 +172,9 @@ class RongCloudClient {
|
|
|
172
172
|
// command 等结构化消息保留完整 JSON(上层需要 msg_type 等字段)
|
|
173
173
|
if (message.messageType === 'command' || rawContent.msg_type) {
|
|
174
174
|
rawContent = JSON.stringify(rawContent);
|
|
175
|
+
} else if (['RC:ImgMsg', 'RC:SightMsg', 'RC:FileMsg', 'RC:HQVCMsg'].includes(message.messageType)) {
|
|
176
|
+
// 媒体消息保留完整对象,以便上层提取 URL
|
|
177
|
+
rawContent = JSON.stringify(rawContent);
|
|
175
178
|
} else {
|
|
176
179
|
rawContent = rawContent.content || rawContent.text || JSON.stringify(rawContent);
|
|
177
180
|
}
|