claw-subagent-service 0.0.45 → 0.0.47
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
|
@@ -25,9 +25,9 @@ class MessageHandler {
|
|
|
25
25
|
}
|
|
26
26
|
|
|
27
27
|
shouldHandleMessage(msg) {
|
|
28
|
+
// Docker 中每次启动都是新连接,群聊@消息常以离线消息形式推送,不再静默过滤
|
|
28
29
|
if (msg.isOffLineMessage) {
|
|
29
|
-
this.log?.info('[MessageHandler]
|
|
30
|
-
return false;
|
|
30
|
+
this.log?.info('[MessageHandler] 收到离线消息,仍继续处理');
|
|
31
31
|
}
|
|
32
32
|
|
|
33
33
|
const allowedTypes = ['RC:TxtMsg', 'claw'];
|
|
@@ -42,16 +42,23 @@ class RongCloudClient {
|
|
|
42
42
|
this.log?.info(`[RongCloudClient] has sendReadReceiptResponseV2: ${typeof RongIMLib.sendReadReceiptResponseV2 === 'function'}`);
|
|
43
43
|
this.log?.info(`[RongCloudClient] has sendReadReceiptResponseV5: ${typeof RongIMLib.sendReadReceiptResponseV5 === 'function'}`);
|
|
44
44
|
|
|
45
|
+
// 同时注册新版 addEventListener 和旧版 setOnReceiveMessageListener
|
|
46
|
+
// 某些场景下(如群聊消息)SDK 可能只通过旧版监听器分发
|
|
45
47
|
if (RongIMLib.addEventListener) {
|
|
46
|
-
this.log?.info('[RongCloudClient]
|
|
48
|
+
this.log?.info('[RongCloudClient] 注册 addEventListener 事件');
|
|
47
49
|
|
|
48
50
|
RongIMLib.addEventListener(RongIMLib.Events?.MESSAGES || 'MESSAGES', (event) => {
|
|
49
|
-
|
|
51
|
+
this.log?.info(`[RongCloudClient] MESSAGES 事件触发, messages长度=${event?.messages?.length || 0}`);
|
|
50
52
|
event.messages?.forEach(msg => {
|
|
51
53
|
this.handleReceivedMessage(msg);
|
|
52
54
|
});
|
|
53
55
|
});
|
|
54
56
|
|
|
57
|
+
// 调试:监听消息被拦截事件
|
|
58
|
+
RongIMLib.addEventListener(RongIMLib.Events?.MESSAGE_BLOCKED || 'MESSAGE_BLOCKED', (data) => {
|
|
59
|
+
this.log?.warn(`[RongCloudClient] 消息被拦截: ${JSON.stringify(data).substring(0, 200)}`);
|
|
60
|
+
});
|
|
61
|
+
|
|
55
62
|
RongIMLib.addEventListener(RongIMLib.Events?.CONNECTED || 'CONNECTED', () => {
|
|
56
63
|
this.log?.info('[RongCloudClient] 连接成功事件');
|
|
57
64
|
this.isConnected = true;
|
|
@@ -61,22 +68,26 @@ class RongCloudClient {
|
|
|
61
68
|
this.log?.warn(`[RongCloudClient] 断开连接, code: ${code}`);
|
|
62
69
|
this.isConnected = false;
|
|
63
70
|
});
|
|
64
|
-
}
|
|
65
|
-
this.log?.info('[RongCloudClient] 使用 setOnReceiveMessageListener 模式');
|
|
71
|
+
}
|
|
66
72
|
|
|
73
|
+
// 兜底:旧版监听器,防止群聊消息漏收
|
|
74
|
+
if (RongIMLib.setOnReceiveMessageListener) {
|
|
75
|
+
this.log?.info('[RongCloudClient] 注册 setOnReceiveMessageListener 兜底');
|
|
76
|
+
RongIMLib.setOnReceiveMessageListener({
|
|
77
|
+
onReceived: (message) => {
|
|
78
|
+
this.log?.info(`[RongCloudClient] setOnReceiveMessageListener 收到消息: messageType=${message.messageType}, senderUserId=${message.senderUserId}, conversationType=${message.conversationType}`);
|
|
79
|
+
this.handleReceivedMessage(message);
|
|
80
|
+
}
|
|
81
|
+
});
|
|
82
|
+
}
|
|
83
|
+
|
|
84
|
+
if (RongIMLib.setConnectionStatusListener && !RongIMLib.addEventListener) {
|
|
67
85
|
RongIMLib.setConnectionStatusListener({
|
|
68
86
|
onChanged: (status) => {
|
|
69
87
|
this.log?.info(`[RongCloudClient] 连接状态变化: ${status}`);
|
|
70
88
|
this.isConnected = status === 3 || status === 'Connected';
|
|
71
89
|
}
|
|
72
90
|
});
|
|
73
|
-
|
|
74
|
-
RongIMLib.setOnReceiveMessageListener({
|
|
75
|
-
onReceived: (message) => {
|
|
76
|
-
this.log?.info(`[RongCloudClient] onReceived: messageType=${message.messageType}, senderUserId=${message.senderUserId}`);
|
|
77
|
-
this.handleReceivedMessage(message);
|
|
78
|
-
}
|
|
79
|
-
});
|
|
80
91
|
}
|
|
81
92
|
|
|
82
93
|
try {
|
|
@@ -100,9 +111,10 @@ class RongCloudClient {
|
|
|
100
111
|
}
|
|
101
112
|
|
|
102
113
|
handleReceivedMessage(message) {
|
|
103
|
-
// 1.
|
|
114
|
+
// 1. 不再静默过滤离线消息:Docker 中每次启动都是新连接,
|
|
115
|
+
// 群聊@消息常以离线消息形式推送,过滤会导致消息丢失
|
|
104
116
|
if (message.isOffLineMessage) {
|
|
105
|
-
|
|
117
|
+
this.log?.info('[RongCloudClient] 收到离线消息,仍继续处理');
|
|
106
118
|
}
|
|
107
119
|
|
|
108
120
|
// 2. 过滤自己发送的消息(融云 SDK 可能将发送消息回传)
|