@amaster.ai/pi-channels 0.1.2-beta.18 → 0.1.2-beta.19
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/README.md +32 -25
- package/dist/adapters/wecom/adapter.d.ts +3 -1
- package/dist/adapters/wecom/adapter.d.ts.map +1 -1
- package/dist/adapters/wecom/adapter.js +194 -157
- package/dist/adapters/wecom/adapter.js.map +1 -1
- package/dist/adapters/wecom.d.ts +0 -2
- package/dist/adapters/wecom.d.ts.map +1 -1
- package/dist/adapters/wecom.js +0 -1
- package/dist/adapters/wecom.js.map +1 -1
- package/dist/bridge.d.ts +1 -0
- package/dist/bridge.d.ts.map +1 -1
- package/dist/bridge.js +92 -1
- package/dist/bridge.js.map +1 -1
- package/dist/config.js +5 -7
- package/dist/config.js.map +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +270 -15
- package/dist/index.js.map +1 -1
- package/dist/registry.d.ts +1 -0
- package/dist/registry.d.ts.map +1 -1
- package/dist/registry.js +7 -1
- package/dist/registry.js.map +1 -1
- package/dist/types.d.ts +10 -8
- package/dist/types.d.ts.map +1 -1
- package/package.json +3 -2
- package/dist/adapters/wecom/client.d.ts +0 -13
- package/dist/adapters/wecom/client.d.ts.map +0 -1
- package/dist/adapters/wecom/client.js +0 -116
- package/dist/adapters/wecom/client.js.map +0 -1
- package/dist/adapters/wecom/crypto.d.ts +0 -14
- package/dist/adapters/wecom/crypto.d.ts.map +0 -1
- package/dist/adapters/wecom/crypto.js +0 -37
- package/dist/adapters/wecom/crypto.js.map +0 -1
- package/dist/adapters/wecom/errors.d.ts +0 -25
- package/dist/adapters/wecom/errors.d.ts.map +0 -1
- package/dist/adapters/wecom/errors.js +0 -56
- package/dist/adapters/wecom/errors.js.map +0 -1
- package/dist/adapters/wecom/types.d.ts +0 -52
- package/dist/adapters/wecom/types.d.ts.map +0 -1
- package/dist/adapters/wecom/types.js +0 -2
- package/dist/adapters/wecom/types.js.map +0 -1
- package/dist/adapters/wecom/xml.d.ts +0 -4
- package/dist/adapters/wecom/xml.d.ts.map +0 -1
- package/dist/adapters/wecom/xml.js +0 -16
- package/dist/adapters/wecom/xml.js.map +0 -1
package/README.md
CHANGED
|
@@ -19,10 +19,9 @@ Feishu/WeCom adapters.
|
|
|
19
19
|
- `feishu` - Native Feishu/Lark app messaging backed by the official
|
|
20
20
|
`@larksuiteoapi/node-sdk`. Supports outgoing text messages, WebSocket events
|
|
21
21
|
by default, and HTTP event callbacks as a fallback.
|
|
22
|
-
- `wecom` - Native WeCom
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
failures.
|
|
22
|
+
- `wecom` - Native WeCom intelligent bot messaging backed by the official
|
|
23
|
+
`@wecom/aibot-node-sdk`. Supports WebSocket long connection events and active
|
|
24
|
+
Markdown pushes with Bot ID / Secret credentials.
|
|
26
25
|
- `webhook` - Generic outgoing HTTP requests.
|
|
27
26
|
|
|
28
27
|
## Example
|
|
@@ -40,17 +39,11 @@ Feishu/WeCom adapters.
|
|
|
40
39
|
},
|
|
41
40
|
"wecom": {
|
|
42
41
|
"type": "wecom",
|
|
43
|
-
"
|
|
44
|
-
"
|
|
45
|
-
"
|
|
46
|
-
"
|
|
47
|
-
"
|
|
48
|
-
"encodingAesKey": "${WECOM_ENCODING_AES_KEY}",
|
|
49
|
-
"incoming": {
|
|
50
|
-
"enabled": true,
|
|
51
|
-
"port": 8788,
|
|
52
|
-
"path": "/wecom/events"
|
|
53
|
-
}
|
|
42
|
+
"botId": "${WECOM_BOT_ID}",
|
|
43
|
+
"secret": "${WECOM_BOT_SECRET}",
|
|
44
|
+
"eventMode": "websocket",
|
|
45
|
+
"respondToMentionsOnly": true,
|
|
46
|
+
"timeoutMs": 15000
|
|
54
47
|
}
|
|
55
48
|
},
|
|
56
49
|
"routes": {
|
|
@@ -104,6 +97,23 @@ payloads:
|
|
|
104
97
|
|
|
105
98
|
Set `"eventMode": "off"` for outgoing-only usage.
|
|
106
99
|
|
|
100
|
+
### WeCom modes
|
|
101
|
+
|
|
102
|
+
Create an intelligent bot in the WeCom admin console, choose API mode, and select
|
|
103
|
+
the long connection option. Copy the Bot ID and Secret into the adapter config:
|
|
104
|
+
|
|
105
|
+
```json
|
|
106
|
+
{
|
|
107
|
+
"type": "wecom",
|
|
108
|
+
"botId": "${WECOM_BOT_ID}",
|
|
109
|
+
"secret": "${WECOM_BOT_SECRET}",
|
|
110
|
+
"eventMode": "websocket",
|
|
111
|
+
"allowedChatIds": ["wr_xxx"]
|
|
112
|
+
}
|
|
113
|
+
```
|
|
114
|
+
|
|
115
|
+
Set `"eventMode": "off"` when the bot should only send messages.
|
|
116
|
+
|
|
107
117
|
## Tool
|
|
108
118
|
|
|
109
119
|
```text
|
|
@@ -122,20 +132,17 @@ user_id:abc123
|
|
|
122
132
|
email:name@example.com
|
|
123
133
|
```
|
|
124
134
|
|
|
125
|
-
For WeCom, recipients
|
|
126
|
-
|
|
135
|
+
For WeCom intelligent bots, recipients are the conversation ids used by the Bot
|
|
136
|
+
API. In a group, send one message to the bot and use route capture to fill the
|
|
137
|
+
group `chatid`; for one-to-one pushes, use the target user's userid:
|
|
127
138
|
|
|
128
139
|
```text
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
tag:7
|
|
132
|
-
appchat:chat-id
|
|
140
|
+
wr_xxx
|
|
141
|
+
zhangsan
|
|
133
142
|
```
|
|
134
143
|
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
the WeCom console, or run pi behind a fixed egress proxy that is allowed by the
|
|
138
|
-
enterprise.
|
|
144
|
+
The intelligent bot adapter uses the WebSocket Bot API, so long connection mode
|
|
145
|
+
does not require a public callback URL.
|
|
139
146
|
|
|
140
147
|
## Events
|
|
141
148
|
|
|
@@ -1,3 +1,5 @@
|
|
|
1
1
|
import type { AdapterConfig, ChannelAdapter } from '../../types.js';
|
|
2
|
-
export declare function createWeComAdapter(config: AdapterConfig
|
|
2
|
+
export declare function createWeComAdapter(config: AdapterConfig, context?: {
|
|
3
|
+
log?: (event: string, data?: Record<string, unknown>, level?: string) => void;
|
|
4
|
+
}): ChannelAdapter;
|
|
3
5
|
//# sourceMappingURL=adapter.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"adapter.d.ts","sourceRoot":"","sources":["../../../src/adapters/wecom/adapter.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"adapter.d.ts","sourceRoot":"","sources":["../../../src/adapters/wecom/adapter.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EACV,aAAa,EACb,cAAc,EAIf,MAAM,gBAAgB,CAAC;AA4IxB,wBAAgB,kBAAkB,CAChC,MAAM,EAAE,aAAa,EACrB,OAAO,GAAE;IACP,GAAG,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,KAAK,CAAC,EAAE,MAAM,KAAK,IAAI,CAAC;CAC1E,GACL,cAAc,CAuIhB"}
|
|
@@ -1,8 +1,4 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import { WeComAgentClient } from './client.js';
|
|
3
|
-
import { decryptWeComEnvelope, verifyWeComSignature } from './crypto.js';
|
|
4
|
-
import { xmlTag, xmlText } from './xml.js';
|
|
5
|
-
const DEFAULT_WECOM_BASE_URL = 'https://qyapi.weixin.qq.com/cgi-bin';
|
|
1
|
+
import { WSClient, } from '@wecom/aibot-node-sdk';
|
|
6
2
|
function asConfig(config) {
|
|
7
3
|
return config;
|
|
8
4
|
}
|
|
@@ -13,189 +9,230 @@ function requireString(value, name) {
|
|
|
13
9
|
return String(value);
|
|
14
10
|
throw new Error(`WeCom adapter requires ${name}`);
|
|
15
11
|
}
|
|
16
|
-
function
|
|
17
|
-
const raw = requireString(value, name);
|
|
18
|
-
const parsed = Number(raw);
|
|
19
|
-
if (Number.isFinite(parsed))
|
|
20
|
-
return parsed;
|
|
21
|
-
throw new Error(`WeCom adapter requires numeric ${name}`);
|
|
22
|
-
}
|
|
23
|
-
function optionalString(value) {
|
|
24
|
-
if (typeof value === 'string' && value.trim())
|
|
25
|
-
return value.trim();
|
|
12
|
+
function optionalNumber(value) {
|
|
26
13
|
if (typeof value === 'number' && Number.isFinite(value))
|
|
27
|
-
return
|
|
14
|
+
return value;
|
|
15
|
+
if (typeof value === 'string' && value.trim() && Number.isFinite(Number(value))) {
|
|
16
|
+
return Number(value);
|
|
17
|
+
}
|
|
28
18
|
return undefined;
|
|
29
19
|
}
|
|
30
20
|
function normalizeConfig(config) {
|
|
31
21
|
const cfg = asConfig(config);
|
|
32
22
|
return {
|
|
33
23
|
...cfg,
|
|
34
|
-
|
|
35
|
-
agentId: requireNumber(cfg.agentId, 'agentId'),
|
|
24
|
+
botId: requireString(cfg.botId, 'botId'),
|
|
36
25
|
secret: requireString(cfg.secret, 'secret'),
|
|
37
|
-
|
|
38
|
-
timeoutMs:
|
|
39
|
-
tokenRefreshBufferSeconds: Number(cfg.tokenRefreshBufferSeconds ?? 120),
|
|
26
|
+
eventMode: cfg.eventMode === 'off' ? 'off' : 'websocket',
|
|
27
|
+
timeoutMs: optionalNumber(cfg.timeoutMs) ?? 15_000,
|
|
40
28
|
};
|
|
41
29
|
}
|
|
42
|
-
function
|
|
43
|
-
const
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
return { chatid: id };
|
|
53
|
-
return { touser: id };
|
|
30
|
+
function createSdkLogger(log) {
|
|
31
|
+
const emit = (level, message, args) => {
|
|
32
|
+
log?.('wecom-sdk', { message: [message, ...args].map(String).join(' ') }, level);
|
|
33
|
+
};
|
|
34
|
+
return {
|
|
35
|
+
debug: (message, ...args) => emit('DEBUG', message, args),
|
|
36
|
+
info: (message, ...args) => emit('INFO', message, args),
|
|
37
|
+
warn: (message, ...args) => emit('WARN', message, args),
|
|
38
|
+
error: (message, ...args) => emit('ERROR', message, args),
|
|
39
|
+
};
|
|
54
40
|
}
|
|
55
|
-
function
|
|
41
|
+
function textFromMessage(message) {
|
|
56
42
|
if (!message.text)
|
|
57
43
|
throw new Error('WeCom adapter requires text');
|
|
58
|
-
return {
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
};
|
|
44
|
+
return message.source ? `[${message.source}]\n${message.text}` : message.text;
|
|
45
|
+
}
|
|
46
|
+
function senderForMessage(body) {
|
|
47
|
+
const senderId = body.from?.userid ?? '';
|
|
48
|
+
return body.chattype === 'group' && body.chatid ? `${body.chatid}:${senderId}` : senderId;
|
|
49
|
+
}
|
|
50
|
+
function shouldAcceptMessage(body, cfg) {
|
|
51
|
+
const allowedChatIds = cfg.allowedChatIds;
|
|
52
|
+
if (body.chattype === 'group' &&
|
|
53
|
+
body.chatid &&
|
|
54
|
+
Array.isArray(allowedChatIds) &&
|
|
55
|
+
allowedChatIds.length > 0 &&
|
|
56
|
+
!allowedChatIds.includes(body.chatid)) {
|
|
57
|
+
return false;
|
|
58
|
+
}
|
|
59
|
+
const senderId = body.from?.userid ?? '';
|
|
60
|
+
const allowedSenderIds = cfg.allowedSenderIds;
|
|
61
|
+
if (senderId &&
|
|
62
|
+
Array.isArray(allowedSenderIds) &&
|
|
63
|
+
allowedSenderIds.length > 0 &&
|
|
64
|
+
!allowedSenderIds.includes(senderId)) {
|
|
65
|
+
return false;
|
|
66
|
+
}
|
|
67
|
+
return true;
|
|
63
68
|
}
|
|
64
|
-
function
|
|
69
|
+
function frameMetadata(frame, body) {
|
|
65
70
|
return {
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
71
|
+
messageId: body.msgid,
|
|
72
|
+
replyToMessageId: body.msgid,
|
|
73
|
+
botId: body.aibotid,
|
|
74
|
+
chatId: body.chatid,
|
|
75
|
+
groupId: body.chatid,
|
|
76
|
+
chatType: body.chattype,
|
|
77
|
+
senderId: body.from?.userid,
|
|
78
|
+
createTime: body.create_time,
|
|
79
|
+
responseUrl: body.response_url,
|
|
80
|
+
wecomReplyFrame: {
|
|
81
|
+
headers: frame.headers,
|
|
82
|
+
},
|
|
83
|
+
headers: frame.headers,
|
|
72
84
|
};
|
|
73
85
|
}
|
|
74
|
-
function
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
86
|
+
function replyFrameFromMetadata(metadata) {
|
|
87
|
+
const value = metadata?.wecomReplyFrame;
|
|
88
|
+
if (!value || typeof value !== 'object' || Array.isArray(value))
|
|
89
|
+
return undefined;
|
|
90
|
+
const headers = value.headers;
|
|
91
|
+
if (!headers || typeof headers !== 'object' || Array.isArray(headers))
|
|
92
|
+
return undefined;
|
|
93
|
+
return { headers: headers };
|
|
78
94
|
}
|
|
79
|
-
function
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
throw new Error(`Unexpected WeCom receiveId: ${decrypted.receiveId}`);
|
|
95
|
+
function replyStreamId(message) {
|
|
96
|
+
const metadata = message.metadata ?? {};
|
|
97
|
+
const messageId = typeof metadata.replyToMessageId === 'string' ? metadata.replyToMessageId : '';
|
|
98
|
+
if (messageId.trim())
|
|
99
|
+
return `amaster-${messageId.trim()}`;
|
|
100
|
+
return `amaster-${Date.now()}-${Math.random().toString(36).slice(2)}`;
|
|
101
|
+
}
|
|
102
|
+
function replyFinishFromMetadata(metadata) {
|
|
103
|
+
return metadata?.wecomReplyFinish !== false;
|
|
104
|
+
}
|
|
105
|
+
function normalizeWeComError(error) {
|
|
106
|
+
if (error.message.includes('853000') || /invalid bot_?id or secret/i.test(error.message)) {
|
|
107
|
+
return new Error('企业微信智能机器人认证失败:请确认 Bot ID 和 Secret 来自同一个“智能机器人 API 模式 / 长连接”配置。Secret 不是回调 Token、EncodingAESKey,也不是自建应用 Secret。');
|
|
93
108
|
}
|
|
94
|
-
return
|
|
109
|
+
return error;
|
|
95
110
|
}
|
|
96
|
-
export function createWeComAdapter(config) {
|
|
111
|
+
export function createWeComAdapter(config, context = {}) {
|
|
97
112
|
const cfg = normalizeConfig(config);
|
|
98
|
-
const
|
|
99
|
-
|
|
113
|
+
const clientOptions = {
|
|
114
|
+
botId: cfg.botId,
|
|
115
|
+
secret: cfg.secret,
|
|
116
|
+
requestTimeout: cfg.timeoutMs,
|
|
117
|
+
logger: createSdkLogger(context.log),
|
|
118
|
+
};
|
|
119
|
+
const reconnectInterval = optionalNumber(cfg.reconnectInterval);
|
|
120
|
+
if (reconnectInterval !== undefined)
|
|
121
|
+
clientOptions.reconnectInterval = reconnectInterval;
|
|
122
|
+
const maxReconnectAttempts = optionalNumber(cfg.maxReconnectAttempts);
|
|
123
|
+
if (maxReconnectAttempts !== undefined)
|
|
124
|
+
clientOptions.maxReconnectAttempts = maxReconnectAttempts;
|
|
125
|
+
const maxAuthFailureAttempts = optionalNumber(cfg.maxAuthFailureAttempts);
|
|
126
|
+
if (maxAuthFailureAttempts !== undefined) {
|
|
127
|
+
clientOptions.maxAuthFailureAttempts = maxAuthFailureAttempts;
|
|
128
|
+
}
|
|
129
|
+
const heartbeatInterval = optionalNumber(cfg.heartbeatInterval);
|
|
130
|
+
if (heartbeatInterval !== undefined)
|
|
131
|
+
clientOptions.heartbeatInterval = heartbeatInterval;
|
|
132
|
+
if (typeof cfg.wsUrl === 'string' && cfg.wsUrl.trim())
|
|
133
|
+
clientOptions.wsUrl = cfg.wsUrl.trim();
|
|
134
|
+
const client = new WSClient(clientOptions);
|
|
135
|
+
let authenticated = false;
|
|
136
|
+
let connectPromise = null;
|
|
137
|
+
let started = false;
|
|
138
|
+
client.on('authenticated', () => {
|
|
139
|
+
authenticated = true;
|
|
140
|
+
context.log?.('wecom-authenticated', { botId: cfg.botId });
|
|
141
|
+
});
|
|
142
|
+
client.on('disconnected', (reason) => {
|
|
143
|
+
authenticated = false;
|
|
144
|
+
context.log?.('wecom-disconnected', { reason }, 'WARN');
|
|
145
|
+
});
|
|
146
|
+
client.on('event.disconnected_event', () => {
|
|
147
|
+
authenticated = false;
|
|
148
|
+
context.log?.('wecom-server-disconnected', { error: '企业微信长连接已被新的机器人连接顶下线,请停止其他同 Bot ID 的连接后重新连接。' }, 'ERROR');
|
|
149
|
+
});
|
|
150
|
+
client.on('reconnecting', (attempt) => {
|
|
151
|
+
authenticated = false;
|
|
152
|
+
context.log?.('wecom-reconnecting', { attempt }, 'WARN');
|
|
153
|
+
});
|
|
154
|
+
client.on('error', (error) => {
|
|
155
|
+
context.log?.('wecom-client-error', { error: normalizeWeComError(error).message }, 'ERROR');
|
|
156
|
+
});
|
|
157
|
+
async function ensureConnected() {
|
|
158
|
+
if (client.isConnected && authenticated)
|
|
159
|
+
return;
|
|
160
|
+
if (connectPromise)
|
|
161
|
+
return connectPromise;
|
|
162
|
+
connectPromise = new Promise((resolve, reject) => {
|
|
163
|
+
const timer = setTimeout(() => {
|
|
164
|
+
cleanup();
|
|
165
|
+
reject(new Error('WeCom bot authentication timed out'));
|
|
166
|
+
}, cfg.timeoutMs);
|
|
167
|
+
const onAuthenticated = () => {
|
|
168
|
+
cleanup();
|
|
169
|
+
authenticated = true;
|
|
170
|
+
resolve();
|
|
171
|
+
};
|
|
172
|
+
const onError = (error) => {
|
|
173
|
+
cleanup();
|
|
174
|
+
reject(normalizeWeComError(error));
|
|
175
|
+
};
|
|
176
|
+
const cleanup = () => {
|
|
177
|
+
clearTimeout(timer);
|
|
178
|
+
client.off('authenticated', onAuthenticated);
|
|
179
|
+
client.off('error', onError);
|
|
180
|
+
connectPromise = null;
|
|
181
|
+
};
|
|
182
|
+
client.on('authenticated', onAuthenticated);
|
|
183
|
+
client.on('error', onError);
|
|
184
|
+
client.connect();
|
|
185
|
+
});
|
|
186
|
+
return connectPromise;
|
|
187
|
+
}
|
|
100
188
|
async function sendText(message) {
|
|
101
|
-
const
|
|
102
|
-
await
|
|
189
|
+
const text = textFromMessage(message);
|
|
190
|
+
await ensureConnected();
|
|
191
|
+
const replyFrame = replyFrameFromMetadata(message.metadata);
|
|
192
|
+
if (replyFrame) {
|
|
193
|
+
await client.replyStream(replyFrame, replyStreamId(message), text, replyFinishFromMetadata(message.metadata));
|
|
194
|
+
return;
|
|
195
|
+
}
|
|
196
|
+
await client.sendMessage(message.recipient, {
|
|
197
|
+
msgtype: 'markdown',
|
|
198
|
+
markdown: { content: text },
|
|
199
|
+
});
|
|
103
200
|
}
|
|
104
201
|
async function start(onMessage) {
|
|
105
|
-
if (
|
|
202
|
+
if (cfg.eventMode === 'off')
|
|
203
|
+
return;
|
|
204
|
+
if (started) {
|
|
205
|
+
await ensureConnected();
|
|
106
206
|
return;
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
response.writeHead(400).end('missing echostr');
|
|
125
|
-
return;
|
|
126
|
-
}
|
|
127
|
-
const decrypted = decryptAndValidate({
|
|
128
|
-
encrypted: echostr,
|
|
129
|
-
cfg,
|
|
130
|
-
token,
|
|
131
|
-
encodingAesKey,
|
|
132
|
-
timestamp,
|
|
133
|
-
nonce,
|
|
134
|
-
signature,
|
|
135
|
-
});
|
|
136
|
-
if (!decrypted) {
|
|
137
|
-
response.writeHead(401).end('invalid signature');
|
|
138
|
-
return;
|
|
139
|
-
}
|
|
140
|
-
response.writeHead(200, { 'Content-Type': 'text/plain; charset=utf-8' });
|
|
141
|
-
response.end(decrypted.message);
|
|
142
|
-
return;
|
|
143
|
-
}
|
|
144
|
-
if (request.method !== 'POST') {
|
|
145
|
-
response.writeHead(405).end('method not allowed');
|
|
146
|
-
return;
|
|
147
|
-
}
|
|
148
|
-
const encrypted = xmlTag(body, 'Encrypt');
|
|
149
|
-
if (!encrypted) {
|
|
150
|
-
response.writeHead(400).end('missing Encrypt');
|
|
151
|
-
return;
|
|
152
|
-
}
|
|
153
|
-
const decrypted = decryptAndValidate({
|
|
154
|
-
encrypted,
|
|
155
|
-
cfg,
|
|
156
|
-
token,
|
|
157
|
-
encodingAesKey,
|
|
158
|
-
timestamp,
|
|
159
|
-
nonce,
|
|
160
|
-
signature,
|
|
161
|
-
});
|
|
162
|
-
if (!decrypted) {
|
|
163
|
-
response.writeHead(401).end('invalid signature');
|
|
164
|
-
return;
|
|
165
|
-
}
|
|
166
|
-
const msgType = xmlText(decrypted.message, 'MsgType');
|
|
167
|
-
if (msgType === 'text') {
|
|
168
|
-
const sender = xmlText(decrypted.message, 'FromUserName');
|
|
169
|
-
const text = xmlText(decrypted.message, 'Content').trim();
|
|
170
|
-
if (sender && text) {
|
|
171
|
-
void onMessage({
|
|
172
|
-
adapter: 'wecom',
|
|
173
|
-
sender,
|
|
174
|
-
text,
|
|
175
|
-
metadata: {
|
|
176
|
-
msgType,
|
|
177
|
-
toUserName: xmlText(decrypted.message, 'ToUserName'),
|
|
178
|
-
agentId: xmlText(decrypted.message, 'AgentID'),
|
|
179
|
-
msgId: xmlTag(decrypted.message, 'MsgId'),
|
|
180
|
-
receiveId: decrypted.receiveId,
|
|
181
|
-
},
|
|
182
|
-
});
|
|
183
|
-
}
|
|
184
|
-
}
|
|
185
|
-
response.writeHead(200, { 'Content-Type': 'text/plain; charset=utf-8' });
|
|
186
|
-
response.end('success');
|
|
187
|
-
},
|
|
207
|
+
}
|
|
208
|
+
started = true;
|
|
209
|
+
client.on('message.text', (frame) => {
|
|
210
|
+
const body = frame.body;
|
|
211
|
+
if (!body)
|
|
212
|
+
return;
|
|
213
|
+
if (!shouldAcceptMessage(body, cfg))
|
|
214
|
+
return;
|
|
215
|
+
const text = body.text?.content?.trim();
|
|
216
|
+
if (!text)
|
|
217
|
+
return;
|
|
218
|
+
void onMessage({
|
|
219
|
+
adapter: 'wecom',
|
|
220
|
+
sender: senderForMessage(body),
|
|
221
|
+
text,
|
|
222
|
+
metadata: frameMetadata(frame, body),
|
|
223
|
+
});
|
|
188
224
|
});
|
|
225
|
+
await ensureConnected();
|
|
189
226
|
}
|
|
190
227
|
return {
|
|
191
|
-
direction: cfg.
|
|
228
|
+
direction: cfg.eventMode === 'off' ? 'outgoing' : 'bidirectional',
|
|
192
229
|
send: sendText,
|
|
193
230
|
start,
|
|
194
231
|
async stop() {
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
232
|
+
started = false;
|
|
233
|
+
authenticated = false;
|
|
234
|
+
connectPromise = null;
|
|
235
|
+
client.disconnect();
|
|
199
236
|
},
|
|
200
237
|
};
|
|
201
238
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"adapter.js","sourceRoot":"","sources":["../../../src/adapters/wecom/adapter.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"adapter.js","sourceRoot":"","sources":["../../../src/adapters/wecom/adapter.ts"],"names":[],"mappings":"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"}
|
package/dist/adapters/wecom.d.ts
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"wecom.d.ts","sourceRoot":"","sources":["../../src/adapters/wecom.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,MAAM,oBAAoB,CAAC
|
|
1
|
+
{"version":3,"file":"wecom.d.ts","sourceRoot":"","sources":["../../src/adapters/wecom.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,MAAM,oBAAoB,CAAC"}
|
package/dist/adapters/wecom.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"wecom.js","sourceRoot":"","sources":["../../src/adapters/wecom.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,MAAM,oBAAoB,CAAC
|
|
1
|
+
{"version":3,"file":"wecom.js","sourceRoot":"","sources":["../../src/adapters/wecom.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,MAAM,oBAAoB,CAAC"}
|
package/dist/bridge.d.ts
CHANGED
package/dist/bridge.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"bridge.d.ts","sourceRoot":"","sources":["../src/bridge.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC;AACrD,OAAO,KAAK,EAAE,YAAY,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AAmChE,qBAAa,UAAU;IACrB,OAAO,CAAC,MAAM,CAAyB;IACvC,OAAO,CAAC,GAAG,CAAS;IACpB,OAAO,CAAC,QAAQ,CAAkB;IAClC,OAAO,CAAC,OAAO,CAAS;IACxB,OAAO,CAAC,WAAW,CAAK;IACxB,OAAO,CAAC,QAAQ,CAAmC;gBAEvC,MAAM,EAAE,YAAY,GAAG,SAAS,EAAE,GAAG,EAAE,MAAM,EAAE,QAAQ,EAAE,eAAe;IAMpF,KAAK,IAAI,IAAI;IAIb,IAAI,IAAI,IAAI;IAOZ,QAAQ,IAAI,OAAO;IAInB,KAAK,IAAI;QAAE,MAAM,EAAE,OAAO,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAC;QAAC,aAAa,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE;IAW/E,aAAa,CAAC,OAAO,EAAE,eAAe,GAAG,OAAO,CAAC,IAAI,CAAC;
|
|
1
|
+
{"version":3,"file":"bridge.d.ts","sourceRoot":"","sources":["../src/bridge.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC;AACrD,OAAO,KAAK,EAAE,YAAY,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AAmChE,qBAAa,UAAU;IACrB,OAAO,CAAC,MAAM,CAAyB;IACvC,OAAO,CAAC,GAAG,CAAS;IACpB,OAAO,CAAC,QAAQ,CAAkB;IAClC,OAAO,CAAC,OAAO,CAAS;IACxB,OAAO,CAAC,WAAW,CAAK;IACxB,OAAO,CAAC,QAAQ,CAAmC;gBAEvC,MAAM,EAAE,YAAY,GAAG,SAAS,EAAE,GAAG,EAAE,MAAM,EAAE,QAAQ,EAAE,eAAe;IAMpF,KAAK,IAAI,IAAI;IAIb,IAAI,IAAI,IAAI;IAOZ,QAAQ,IAAI,OAAO;IAInB,KAAK,IAAI;QAAE,MAAM,EAAE,OAAO,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAC;QAAC,aAAa,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE;IAW/E,aAAa,CAAC,OAAO,EAAE,eAAe,GAAG,OAAO,CAAC,IAAI,CAAC;YAuC9C,iBAAiB;IAgB/B,OAAO,CAAC,UAAU;IASlB,OAAO,CAAC,oBAAoB;YAqCd,WAAW;IAsDzB,OAAO,CAAC,YAAY;CASrB"}
|