@pawastation/wechat-kf 0.1.2 → 0.2.0
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 +34 -28
- package/README.zh-CN.md +34 -28
- package/dist/index.d.ts +5 -15
- package/dist/index.js +5 -5
- package/dist/index.js.map +1 -1
- package/dist/src/accounts.d.ts +2 -1
- package/dist/src/accounts.js +61 -19
- package/dist/src/accounts.js.map +1 -1
- package/dist/src/api.d.ts +31 -2
- package/dist/src/api.js +41 -13
- package/dist/src/api.js.map +1 -1
- package/dist/src/bot.d.ts +10 -8
- package/dist/src/bot.js +231 -78
- package/dist/src/bot.js.map +1 -1
- package/dist/src/channel.d.ts +7 -106
- package/dist/src/channel.js +208 -71
- package/dist/src/channel.js.map +1 -1
- package/dist/src/config-schema.d.ts +0 -6
- package/dist/src/config-schema.js +2 -7
- package/dist/src/config-schema.js.map +1 -1
- package/dist/src/constants.d.ts +20 -0
- package/dist/src/constants.js +29 -0
- package/dist/src/constants.js.map +1 -1
- package/dist/src/crypto.js +7 -6
- package/dist/src/crypto.js.map +1 -1
- package/dist/src/monitor.d.ts +27 -14
- package/dist/src/monitor.js +67 -120
- package/dist/src/monitor.js.map +1 -1
- package/dist/src/outbound.d.ts +10 -44
- package/dist/src/outbound.js +277 -92
- package/dist/src/outbound.js.map +1 -1
- package/dist/src/reply-dispatcher.d.ts +2 -6
- package/dist/src/reply-dispatcher.js +131 -32
- package/dist/src/reply-dispatcher.js.map +1 -1
- package/dist/src/runtime.d.ts +1 -119
- package/dist/src/runtime.js +2 -1
- package/dist/src/runtime.js.map +1 -1
- package/dist/src/send-utils.d.ts +13 -0
- package/dist/src/send-utils.js +56 -4
- package/dist/src/send-utils.js.map +1 -1
- package/dist/src/token.js +7 -3
- package/dist/src/token.js.map +1 -1
- package/dist/src/types.d.ts +68 -6
- package/dist/src/webhook.d.ts +16 -16
- package/dist/src/webhook.js +92 -75
- package/dist/src/webhook.js.map +1 -1
- package/dist/src/wechat-kf-directives.d.ts +132 -9
- package/dist/src/wechat-kf-directives.js +535 -24
- package/dist/src/wechat-kf-directives.js.map +1 -1
- package/index.ts +22 -12
- package/openclaw.plugin.json +1 -3
- package/package.json +3 -2
- package/dist/src/chunk-utils.d.ts +0 -18
- package/dist/src/chunk-utils.js +0 -58
- package/dist/src/chunk-utils.js.map +0 -1
package/dist/src/outbound.js
CHANGED
|
@@ -5,12 +5,15 @@
|
|
|
5
5
|
* This module implements the OpenClaw `ChannelPlugin.outbound` interface and
|
|
6
6
|
* is called by the framework when the agent produces a final reply.
|
|
7
7
|
*
|
|
8
|
-
* Text
|
|
9
|
-
*
|
|
8
|
+
* Text is first converted from markdown to Unicode formatting (formatText),
|
|
9
|
+
* then chunked via the runtime's `chunkTextWithMode` helper (respecting user
|
|
10
|
+
* `chunkMode` config). Framework auto-chunking is disabled (`chunker: null`)
|
|
11
|
+
* because it would chunk *before* formatting, causing post-format expansion
|
|
12
|
+
* (Unicode math-bold chars are 2 `.length` units each) to exceed the limit.
|
|
10
13
|
*
|
|
11
|
-
* For media, the
|
|
12
|
-
*
|
|
13
|
-
* `uploadAndSendMedia`
|
|
14
|
+
* For media, the framework's `loadWebMedia` handles all URL formats
|
|
15
|
+
* (HTTP, file://, local paths, MEDIA: prefix, ~), then the buffer is
|
|
16
|
+
* uploaded to WeChat and sent using `uploadAndSendMedia` from `send-utils.ts`.
|
|
14
17
|
*
|
|
15
18
|
* WeChat KF session limits:
|
|
16
19
|
* The API enforces a 48-hour / 5-message limit per session window.
|
|
@@ -25,14 +28,22 @@
|
|
|
25
28
|
*
|
|
26
29
|
* accountId = openKfId (dynamically discovered)
|
|
27
30
|
*/
|
|
28
|
-
import { readFile } from "node:fs/promises";
|
|
29
|
-
import { extname } from "node:path";
|
|
30
31
|
import { resolveAccount } from "./accounts.js";
|
|
31
|
-
import { sendLinkMessage, sendTextMessage,
|
|
32
|
-
import {
|
|
33
|
-
import {
|
|
34
|
-
import {
|
|
35
|
-
import {
|
|
32
|
+
import { sendBusinessCardMessage, sendCaLinkMessage, sendLinkMessage, sendLocationMessage, sendMiniprogramMessage, sendMsgMenuMessage, sendRawMessage, sendTextMessage, } from "./api.js";
|
|
33
|
+
import { CHANNEL_ID, logTag, WECHAT_MSG_LIMIT_ERRCODE, WECHAT_TEXT_CHUNK_LIMIT } from "./constants.js";
|
|
34
|
+
import { getSharedContext } from "./monitor.js";
|
|
35
|
+
import { getRuntime } from "./runtime.js";
|
|
36
|
+
import { formatText, mediaKindToWechatType, resolveThumbMediaId, uploadAndSendMedia } from "./send-utils.js";
|
|
37
|
+
import { buildMsgMenuPayload, parseWechatDirective } from "./wechat-kf-directives.js";
|
|
38
|
+
/** Resolve chunk limit and mode from the runtime, then split text accordingly. */
|
|
39
|
+
function chunkViaRuntime(text, cfg, accountId) {
|
|
40
|
+
const core = getRuntime();
|
|
41
|
+
const limit = core.channel.text.resolveTextChunkLimit(cfg, CHANNEL_ID, accountId, {
|
|
42
|
+
fallbackLimit: WECHAT_TEXT_CHUNK_LIMIT,
|
|
43
|
+
});
|
|
44
|
+
const mode = core.channel.text.resolveChunkMode(cfg, CHANNEL_ID);
|
|
45
|
+
return core.channel.text.chunkTextWithMode(text, limit, mode);
|
|
46
|
+
}
|
|
36
47
|
/**
|
|
37
48
|
* Check whether an error indicates the WeChat 48h/5-message session limit.
|
|
38
49
|
* When detected, logs a warning and returns true so the caller can handle
|
|
@@ -44,37 +55,45 @@ function isSessionLimitError(err) {
|
|
|
44
55
|
}
|
|
45
56
|
return false;
|
|
46
57
|
}
|
|
58
|
+
function warnSessionLimit(err, externalUserId, openKfId) {
|
|
59
|
+
if (isSessionLimitError(err)) {
|
|
60
|
+
getSharedContext()?.botCtx.log?.warn(`${logTag()} session limit exceeded (48h/5-msg) for user=${externalUserId} kf=${openKfId}. ` +
|
|
61
|
+
`The customer must send a new message before more replies can be delivered.`);
|
|
62
|
+
}
|
|
63
|
+
}
|
|
47
64
|
export const wechatKfOutbound = {
|
|
48
65
|
deliveryMode: "direct",
|
|
49
|
-
chunker:
|
|
50
|
-
chunkerMode: "text",
|
|
66
|
+
chunker: null, // disabled — sendText formats first, then chunks internally
|
|
51
67
|
textChunkLimit: WECHAT_TEXT_CHUNK_LIMIT,
|
|
52
68
|
sendText: async ({ cfg, to, text, accountId }) => {
|
|
53
|
-
const account = resolveAccount(cfg, accountId);
|
|
54
|
-
const
|
|
69
|
+
const account = resolveAccount(cfg, accountId ?? "");
|
|
70
|
+
const effectiveAccountId = accountId ?? "";
|
|
71
|
+
const openKfId = account.openKfId ?? effectiveAccountId;
|
|
55
72
|
if (!account.corpId || !account.appSecret || !openKfId) {
|
|
56
|
-
throw new Error(
|
|
73
|
+
throw new Error(`${logTag()} missing corpId/appSecret/openKfId`);
|
|
57
74
|
}
|
|
58
75
|
const externalUserId = String(to).replace(/^user:/, "");
|
|
59
|
-
// ── Intercept [[
|
|
60
|
-
// Parse on raw text so
|
|
76
|
+
// ── Intercept [[wechat_*:...]] directives BEFORE formatText ──
|
|
77
|
+
// Parse on raw text so fields stay clean (formatText would
|
|
61
78
|
// convert markdown inside the directive to unicode characters).
|
|
62
|
-
const directive =
|
|
79
|
+
const directive = parseWechatDirective(text);
|
|
63
80
|
if (directive.link) {
|
|
64
81
|
try {
|
|
65
82
|
let thumbMediaId;
|
|
66
83
|
if (directive.link.thumbUrl) {
|
|
67
|
-
|
|
68
|
-
const uploaded = await uploadMedia(account.corpId, account.appSecret, "image", downloaded.buffer, downloaded.filename);
|
|
69
|
-
thumbMediaId = uploaded.media_id;
|
|
84
|
+
thumbMediaId = await resolveThumbMediaId(directive.link.thumbUrl, account.corpId, account.appSecret);
|
|
70
85
|
}
|
|
71
86
|
// WeChat requires thumb_media_id for link cards — fall back to plain text if missing
|
|
72
87
|
if (!thumbMediaId) {
|
|
73
88
|
const fallbackText = directive.text
|
|
74
89
|
? `${formatText(directive.text)}\n${directive.link.title}: ${directive.link.url}`
|
|
75
90
|
: `${directive.link.title}: ${directive.link.url}`;
|
|
76
|
-
const
|
|
77
|
-
|
|
91
|
+
const fallbackChunks = chunkViaRuntime(fallbackText, cfg, effectiveAccountId);
|
|
92
|
+
let lastResult;
|
|
93
|
+
for (const chunk of fallbackChunks) {
|
|
94
|
+
lastResult = await sendTextMessage(account.corpId, account.appSecret, externalUserId, openKfId, chunk);
|
|
95
|
+
}
|
|
96
|
+
return { channel: CHANNEL_ID, messageId: lastResult?.msgid ?? "", chatId: to };
|
|
78
97
|
}
|
|
79
98
|
const linkResult = await sendLinkMessage(account.corpId, account.appSecret, externalUserId, openKfId, {
|
|
80
99
|
title: directive.link.title,
|
|
@@ -84,76 +103,171 @@ export const wechatKfOutbound = {
|
|
|
84
103
|
});
|
|
85
104
|
// Send remaining text if non-empty (apply formatText to surrounding text only)
|
|
86
105
|
if (directive.text) {
|
|
87
|
-
|
|
106
|
+
const remainFormatted = formatText(directive.text);
|
|
107
|
+
const remainChunks = chunkViaRuntime(remainFormatted, cfg, effectiveAccountId);
|
|
108
|
+
for (const chunk of remainChunks) {
|
|
109
|
+
await sendTextMessage(account.corpId, account.appSecret, externalUserId, openKfId, chunk);
|
|
110
|
+
}
|
|
88
111
|
}
|
|
89
|
-
return { channel:
|
|
112
|
+
return { channel: CHANNEL_ID, messageId: linkResult.msgid, chatId: to };
|
|
90
113
|
}
|
|
91
114
|
catch (err) {
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
115
|
+
warnSessionLimit(err, externalUserId, openKfId);
|
|
116
|
+
throw err;
|
|
117
|
+
}
|
|
118
|
+
}
|
|
119
|
+
if (directive.location) {
|
|
120
|
+
try {
|
|
121
|
+
const locResult = await sendLocationMessage(account.corpId, account.appSecret, externalUserId, openKfId, directive.location);
|
|
122
|
+
if (directive.text) {
|
|
123
|
+
const remainChunks = chunkViaRuntime(formatText(directive.text), cfg, effectiveAccountId);
|
|
124
|
+
for (const chunk of remainChunks) {
|
|
125
|
+
await sendTextMessage(account.corpId, account.appSecret, externalUserId, openKfId, chunk);
|
|
126
|
+
}
|
|
95
127
|
}
|
|
128
|
+
return { channel: CHANNEL_ID, messageId: locResult.msgid, chatId: to };
|
|
129
|
+
}
|
|
130
|
+
catch (err) {
|
|
131
|
+
warnSessionLimit(err, externalUserId, openKfId);
|
|
96
132
|
throw err;
|
|
97
133
|
}
|
|
98
134
|
}
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
135
|
+
if (directive.miniprogram) {
|
|
136
|
+
try {
|
|
137
|
+
let thumbMediaId;
|
|
138
|
+
if (directive.miniprogram.thumbUrl) {
|
|
139
|
+
thumbMediaId = await resolveThumbMediaId(directive.miniprogram.thumbUrl, account.corpId, account.appSecret);
|
|
140
|
+
}
|
|
141
|
+
if (!thumbMediaId) {
|
|
142
|
+
// Miniprogram card requires thumb — fall back to text
|
|
143
|
+
const fallback = directive.text
|
|
144
|
+
? `${formatText(directive.text)}\n[小程序] ${directive.miniprogram.title}`
|
|
145
|
+
: `[小程序] ${directive.miniprogram.title}`;
|
|
146
|
+
const chunks = chunkViaRuntime(fallback, cfg, effectiveAccountId);
|
|
147
|
+
let lastResult;
|
|
148
|
+
for (const chunk of chunks) {
|
|
149
|
+
lastResult = await sendTextMessage(account.corpId, account.appSecret, externalUserId, openKfId, chunk);
|
|
150
|
+
}
|
|
151
|
+
return { channel: CHANNEL_ID, messageId: lastResult?.msgid ?? "", chatId: to };
|
|
152
|
+
}
|
|
153
|
+
const mpResult = await sendMiniprogramMessage(account.corpId, account.appSecret, externalUserId, openKfId, {
|
|
154
|
+
appid: directive.miniprogram.appid,
|
|
155
|
+
title: directive.miniprogram.title,
|
|
156
|
+
pagepath: directive.miniprogram.pagepath,
|
|
157
|
+
thumb_media_id: thumbMediaId,
|
|
158
|
+
});
|
|
159
|
+
if (directive.text) {
|
|
160
|
+
const remainChunks = chunkViaRuntime(formatText(directive.text), cfg, effectiveAccountId);
|
|
161
|
+
for (const chunk of remainChunks) {
|
|
162
|
+
await sendTextMessage(account.corpId, account.appSecret, externalUserId, openKfId, chunk);
|
|
163
|
+
}
|
|
164
|
+
}
|
|
165
|
+
return { channel: CHANNEL_ID, messageId: mpResult.msgid, chatId: to };
|
|
166
|
+
}
|
|
167
|
+
catch (err) {
|
|
168
|
+
warnSessionLimit(err, externalUserId, openKfId);
|
|
169
|
+
throw err;
|
|
170
|
+
}
|
|
103
171
|
}
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
172
|
+
if (directive.menu) {
|
|
173
|
+
try {
|
|
174
|
+
const menuPayload = buildMsgMenuPayload(directive.menu);
|
|
175
|
+
const menuResult = await sendMsgMenuMessage(account.corpId, account.appSecret, externalUserId, openKfId, menuPayload);
|
|
176
|
+
if (directive.text) {
|
|
177
|
+
const remainChunks = chunkViaRuntime(formatText(directive.text), cfg, effectiveAccountId);
|
|
178
|
+
for (const chunk of remainChunks) {
|
|
179
|
+
await sendTextMessage(account.corpId, account.appSecret, externalUserId, openKfId, chunk);
|
|
180
|
+
}
|
|
181
|
+
}
|
|
182
|
+
return { channel: CHANNEL_ID, messageId: menuResult.msgid, chatId: to };
|
|
183
|
+
}
|
|
184
|
+
catch (err) {
|
|
185
|
+
warnSessionLimit(err, externalUserId, openKfId);
|
|
186
|
+
throw err;
|
|
108
187
|
}
|
|
109
|
-
throw err;
|
|
110
188
|
}
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
189
|
+
if (directive.businessCard) {
|
|
190
|
+
try {
|
|
191
|
+
const cardResult = await sendBusinessCardMessage(account.corpId, account.appSecret, externalUserId, openKfId, directive.businessCard);
|
|
192
|
+
if (directive.text) {
|
|
193
|
+
const remainChunks = chunkViaRuntime(formatText(directive.text), cfg, effectiveAccountId);
|
|
194
|
+
for (const chunk of remainChunks) {
|
|
195
|
+
await sendTextMessage(account.corpId, account.appSecret, externalUserId, openKfId, chunk);
|
|
196
|
+
}
|
|
197
|
+
}
|
|
198
|
+
return { channel: CHANNEL_ID, messageId: cardResult.msgid, chatId: to };
|
|
199
|
+
}
|
|
200
|
+
catch (err) {
|
|
201
|
+
warnSessionLimit(err, externalUserId, openKfId);
|
|
202
|
+
throw err;
|
|
203
|
+
}
|
|
117
204
|
}
|
|
118
|
-
|
|
119
|
-
// ── HTTP/HTTPS URL: download then upload ──
|
|
120
|
-
if (mediaUrl?.startsWith("http")) {
|
|
121
|
-
const downloaded = await downloadMediaFromUrl(mediaUrl);
|
|
122
|
-
const ext = downloaded.ext.toLowerCase();
|
|
123
|
-
const mediaType = detectMediaType(ext);
|
|
205
|
+
if (directive.caLink) {
|
|
124
206
|
try {
|
|
125
|
-
const
|
|
126
|
-
if (text
|
|
127
|
-
|
|
207
|
+
const caResult = await sendCaLinkMessage(account.corpId, account.appSecret, externalUserId, openKfId, directive.caLink);
|
|
208
|
+
if (directive.text) {
|
|
209
|
+
const remainChunks = chunkViaRuntime(formatText(directive.text), cfg, effectiveAccountId);
|
|
210
|
+
for (const chunk of remainChunks) {
|
|
211
|
+
await sendTextMessage(account.corpId, account.appSecret, externalUserId, openKfId, chunk);
|
|
212
|
+
}
|
|
128
213
|
}
|
|
129
|
-
return { channel:
|
|
214
|
+
return { channel: CHANNEL_ID, messageId: caResult.msgid, chatId: to };
|
|
130
215
|
}
|
|
131
216
|
catch (err) {
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
217
|
+
warnSessionLimit(err, externalUserId, openKfId);
|
|
218
|
+
throw err;
|
|
219
|
+
}
|
|
220
|
+
}
|
|
221
|
+
if (directive.raw) {
|
|
222
|
+
try {
|
|
223
|
+
const rawResult = await sendRawMessage(account.corpId, account.appSecret, externalUserId, openKfId, directive.raw.msgtype, directive.raw.payload);
|
|
224
|
+
if (directive.text) {
|
|
225
|
+
const remainChunks = chunkViaRuntime(formatText(directive.text), cfg, effectiveAccountId);
|
|
226
|
+
for (const chunk of remainChunks) {
|
|
227
|
+
await sendTextMessage(account.corpId, account.appSecret, externalUserId, openKfId, chunk);
|
|
228
|
+
}
|
|
135
229
|
}
|
|
230
|
+
return { channel: CHANNEL_ID, messageId: rawResult.msgid, chatId: to };
|
|
231
|
+
}
|
|
232
|
+
catch (err) {
|
|
233
|
+
warnSessionLimit(err, externalUserId, openKfId);
|
|
136
234
|
throw err;
|
|
137
235
|
}
|
|
138
236
|
}
|
|
139
|
-
|
|
237
|
+
const formatted = formatText(text);
|
|
238
|
+
const chunks = chunkViaRuntime(formatted, cfg, effectiveAccountId);
|
|
239
|
+
try {
|
|
240
|
+
let lastResult;
|
|
241
|
+
for (const chunk of chunks) {
|
|
242
|
+
lastResult = await sendTextMessage(account.corpId, account.appSecret, externalUserId, openKfId, chunk);
|
|
243
|
+
}
|
|
244
|
+
return { channel: CHANNEL_ID, messageId: lastResult?.msgid ?? "", chatId: to };
|
|
245
|
+
}
|
|
246
|
+
catch (err) {
|
|
247
|
+
warnSessionLimit(err, externalUserId, openKfId);
|
|
248
|
+
throw err;
|
|
249
|
+
}
|
|
250
|
+
},
|
|
251
|
+
sendMedia: async ({ cfg, to, text, mediaUrl, accountId }) => {
|
|
252
|
+
const account = resolveAccount(cfg, accountId ?? "");
|
|
253
|
+
const openKfId = account.openKfId ?? accountId ?? "";
|
|
254
|
+
if (!account.corpId || !account.appSecret || !openKfId) {
|
|
255
|
+
throw new Error(`${logTag()} missing corpId/appSecret/openKfId`);
|
|
256
|
+
}
|
|
257
|
+
const externalUserId = String(to).replace(/^user:/, "");
|
|
140
258
|
if (mediaUrl) {
|
|
141
|
-
const
|
|
142
|
-
const
|
|
143
|
-
const mediaType =
|
|
144
|
-
const filename = mediaUrl.split("/").pop() || "file";
|
|
259
|
+
const core = getRuntime();
|
|
260
|
+
const loaded = await core.media.loadWebMedia(mediaUrl, { optimizeImages: false });
|
|
261
|
+
const mediaType = mediaKindToWechatType(loaded.kind);
|
|
145
262
|
try {
|
|
146
|
-
const result = await uploadAndSendMedia(account.corpId, account.appSecret, externalUserId, openKfId, buffer,
|
|
263
|
+
const result = await uploadAndSendMedia(account.corpId, account.appSecret, externalUserId, openKfId, loaded.buffer, loaded.fileName ?? "file", mediaType);
|
|
147
264
|
if (text?.trim()) {
|
|
148
265
|
await sendTextMessage(account.corpId, account.appSecret, externalUserId, openKfId, formatText(text));
|
|
149
266
|
}
|
|
150
|
-
return { channel:
|
|
267
|
+
return { channel: CHANNEL_ID, messageId: result.msgid, chatId: to };
|
|
151
268
|
}
|
|
152
269
|
catch (err) {
|
|
153
|
-
|
|
154
|
-
console.error(`[wechat-kf] session limit exceeded (48h/5-msg) for user=${externalUserId} kf=${openKfId}. ` +
|
|
155
|
-
`The customer must send a new message before more replies can be delivered.`);
|
|
156
|
-
}
|
|
270
|
+
warnSessionLimit(err, externalUserId, openKfId);
|
|
157
271
|
throw err;
|
|
158
272
|
}
|
|
159
273
|
}
|
|
@@ -161,35 +275,30 @@ export const wechatKfOutbound = {
|
|
|
161
275
|
const content = text?.trim() ? `${text}\n${mediaUrl || ""}` : mediaUrl || text || "";
|
|
162
276
|
try {
|
|
163
277
|
const result = await sendTextMessage(account.corpId, account.appSecret, externalUserId, openKfId, content);
|
|
164
|
-
return { channel:
|
|
278
|
+
return { channel: CHANNEL_ID, messageId: result.msgid, chatId: to };
|
|
165
279
|
}
|
|
166
280
|
catch (err) {
|
|
167
|
-
|
|
168
|
-
console.error(`[wechat-kf] session limit exceeded (48h/5-msg) for user=${externalUserId} kf=${openKfId}. ` +
|
|
169
|
-
`The customer must send a new message before more replies can be delivered.`);
|
|
170
|
-
}
|
|
281
|
+
warnSessionLimit(err, externalUserId, openKfId);
|
|
171
282
|
throw err;
|
|
172
283
|
}
|
|
173
284
|
},
|
|
174
285
|
sendPayload: async ({ cfg, to, text, accountId, payload }) => {
|
|
175
|
-
const account = resolveAccount(cfg, accountId);
|
|
176
|
-
const openKfId = account.openKfId ?? accountId;
|
|
286
|
+
const account = resolveAccount(cfg, accountId ?? "");
|
|
287
|
+
const openKfId = account.openKfId ?? accountId ?? "";
|
|
177
288
|
if (!account.corpId || !account.appSecret || !openKfId) {
|
|
178
|
-
throw new Error(
|
|
289
|
+
throw new Error(`${logTag()} missing corpId/appSecret/openKfId`);
|
|
179
290
|
}
|
|
180
291
|
const externalUserId = String(to).replace(/^user:/, "");
|
|
181
292
|
const wechatKf = payload.channelData?.wechatKf;
|
|
182
293
|
const link = wechatKf?.link;
|
|
183
294
|
if (link) {
|
|
184
295
|
let thumbMediaId = link.thumb_media_id;
|
|
185
|
-
//
|
|
296
|
+
// Resolve thumbnail if only thumbUrl/path/media_id is provided
|
|
186
297
|
if (!thumbMediaId && link.thumbUrl) {
|
|
187
|
-
|
|
188
|
-
const uploaded = await uploadMedia(account.corpId, account.appSecret, "image", downloaded.buffer, downloaded.filename);
|
|
189
|
-
thumbMediaId = uploaded.media_id;
|
|
298
|
+
thumbMediaId = await resolveThumbMediaId(link.thumbUrl, account.corpId, account.appSecret);
|
|
190
299
|
}
|
|
191
300
|
if (!thumbMediaId) {
|
|
192
|
-
throw new Error(
|
|
301
|
+
throw new Error(`${logTag()} sendPayload link requires thumb_media_id or thumbUrl`);
|
|
193
302
|
}
|
|
194
303
|
try {
|
|
195
304
|
const result = await sendLinkMessage(account.corpId, account.appSecret, externalUserId, openKfId, {
|
|
@@ -203,13 +312,92 @@ export const wechatKfOutbound = {
|
|
|
203
312
|
const textContent = (text ?? payload.text);
|
|
204
313
|
await sendTextMessage(account.corpId, account.appSecret, externalUserId, openKfId, formatText(textContent));
|
|
205
314
|
}
|
|
206
|
-
return { channel:
|
|
315
|
+
return { channel: CHANNEL_ID, messageId: result.msgid, chatId: to };
|
|
316
|
+
}
|
|
317
|
+
catch (err) {
|
|
318
|
+
warnSessionLimit(err, externalUserId, openKfId);
|
|
319
|
+
throw err;
|
|
320
|
+
}
|
|
321
|
+
}
|
|
322
|
+
const location = wechatKf?.location;
|
|
323
|
+
if (location) {
|
|
324
|
+
try {
|
|
325
|
+
const result = await sendLocationMessage(account.corpId, account.appSecret, externalUserId, openKfId, location);
|
|
326
|
+
if ((text ?? payload.text)?.trim()) {
|
|
327
|
+
await sendTextMessage(account.corpId, account.appSecret, externalUserId, openKfId, formatText((text ?? payload.text)));
|
|
328
|
+
}
|
|
329
|
+
return { channel: CHANNEL_ID, messageId: result.msgid, chatId: to };
|
|
330
|
+
}
|
|
331
|
+
catch (err) {
|
|
332
|
+
warnSessionLimit(err, externalUserId, openKfId);
|
|
333
|
+
throw err;
|
|
334
|
+
}
|
|
335
|
+
}
|
|
336
|
+
const miniprogram = wechatKf?.miniprogram;
|
|
337
|
+
if (miniprogram) {
|
|
338
|
+
let thumbMediaId = miniprogram.thumb_media_id;
|
|
339
|
+
if (!thumbMediaId && miniprogram.thumbUrl) {
|
|
340
|
+
thumbMediaId = await resolveThumbMediaId(miniprogram.thumbUrl, account.corpId, account.appSecret);
|
|
341
|
+
}
|
|
342
|
+
if (!thumbMediaId) {
|
|
343
|
+
throw new Error(`${logTag()} sendPayload miniprogram requires thumb_media_id or thumbUrl`);
|
|
344
|
+
}
|
|
345
|
+
try {
|
|
346
|
+
const result = await sendMiniprogramMessage(account.corpId, account.appSecret, externalUserId, openKfId, {
|
|
347
|
+
appid: miniprogram.appid,
|
|
348
|
+
title: miniprogram.title,
|
|
349
|
+
pagepath: miniprogram.pagepath,
|
|
350
|
+
thumb_media_id: thumbMediaId,
|
|
351
|
+
});
|
|
352
|
+
if ((text ?? payload.text)?.trim()) {
|
|
353
|
+
await sendTextMessage(account.corpId, account.appSecret, externalUserId, openKfId, formatText((text ?? payload.text)));
|
|
354
|
+
}
|
|
355
|
+
return { channel: CHANNEL_ID, messageId: result.msgid, chatId: to };
|
|
356
|
+
}
|
|
357
|
+
catch (err) {
|
|
358
|
+
warnSessionLimit(err, externalUserId, openKfId);
|
|
359
|
+
throw err;
|
|
360
|
+
}
|
|
361
|
+
}
|
|
362
|
+
const msgmenu = wechatKf?.msgmenu;
|
|
363
|
+
if (msgmenu) {
|
|
364
|
+
try {
|
|
365
|
+
const result = await sendMsgMenuMessage(account.corpId, account.appSecret, externalUserId, openKfId, msgmenu);
|
|
366
|
+
if ((text ?? payload.text)?.trim()) {
|
|
367
|
+
await sendTextMessage(account.corpId, account.appSecret, externalUserId, openKfId, formatText((text ?? payload.text)));
|
|
368
|
+
}
|
|
369
|
+
return { channel: CHANNEL_ID, messageId: result.msgid, chatId: to };
|
|
370
|
+
}
|
|
371
|
+
catch (err) {
|
|
372
|
+
warnSessionLimit(err, externalUserId, openKfId);
|
|
373
|
+
throw err;
|
|
374
|
+
}
|
|
375
|
+
}
|
|
376
|
+
const businessCard = wechatKf?.businessCard;
|
|
377
|
+
if (businessCard) {
|
|
378
|
+
try {
|
|
379
|
+
const result = await sendBusinessCardMessage(account.corpId, account.appSecret, externalUserId, openKfId, businessCard);
|
|
380
|
+
if ((text ?? payload.text)?.trim()) {
|
|
381
|
+
await sendTextMessage(account.corpId, account.appSecret, externalUserId, openKfId, formatText((text ?? payload.text)));
|
|
382
|
+
}
|
|
383
|
+
return { channel: CHANNEL_ID, messageId: result.msgid, chatId: to };
|
|
207
384
|
}
|
|
208
385
|
catch (err) {
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
|
|
386
|
+
warnSessionLimit(err, externalUserId, openKfId);
|
|
387
|
+
throw err;
|
|
388
|
+
}
|
|
389
|
+
}
|
|
390
|
+
const caLink = wechatKf?.caLink;
|
|
391
|
+
if (caLink) {
|
|
392
|
+
try {
|
|
393
|
+
const result = await sendCaLinkMessage(account.corpId, account.appSecret, externalUserId, openKfId, caLink);
|
|
394
|
+
if ((text ?? payload.text)?.trim()) {
|
|
395
|
+
await sendTextMessage(account.corpId, account.appSecret, externalUserId, openKfId, formatText((text ?? payload.text)));
|
|
212
396
|
}
|
|
397
|
+
return { channel: CHANNEL_ID, messageId: result.msgid, chatId: to };
|
|
398
|
+
}
|
|
399
|
+
catch (err) {
|
|
400
|
+
warnSessionLimit(err, externalUserId, openKfId);
|
|
213
401
|
throw err;
|
|
214
402
|
}
|
|
215
403
|
}
|
|
@@ -218,17 +406,14 @@ export const wechatKfOutbound = {
|
|
|
218
406
|
if (textContent.trim()) {
|
|
219
407
|
try {
|
|
220
408
|
const result = await sendTextMessage(account.corpId, account.appSecret, externalUserId, openKfId, formatText(textContent));
|
|
221
|
-
return { channel:
|
|
409
|
+
return { channel: CHANNEL_ID, messageId: result.msgid, chatId: to };
|
|
222
410
|
}
|
|
223
411
|
catch (err) {
|
|
224
|
-
|
|
225
|
-
console.error(`[wechat-kf] session limit exceeded (48h/5-msg) for user=${externalUserId} kf=${openKfId}. ` +
|
|
226
|
-
`The customer must send a new message before more replies can be delivered.`);
|
|
227
|
-
}
|
|
412
|
+
warnSessionLimit(err, externalUserId, openKfId);
|
|
228
413
|
throw err;
|
|
229
414
|
}
|
|
230
415
|
}
|
|
231
|
-
return { channel:
|
|
416
|
+
return { channel: CHANNEL_ID, messageId: "", chatId: to };
|
|
232
417
|
},
|
|
233
418
|
};
|
|
234
419
|
//# sourceMappingURL=outbound.js.map
|
package/dist/src/outbound.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"outbound.js","sourceRoot":"","sources":["../../src/outbound.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"outbound.js","sourceRoot":"","sources":["../../src/outbound.ts"],"names":[],"mappings":"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"}
|
|
@@ -18,7 +18,7 @@
|
|
|
18
18
|
*
|
|
19
19
|
* accountId = openKfId (dynamically discovered)
|
|
20
20
|
*/
|
|
21
|
-
import type { OpenClawConfig } from "
|
|
21
|
+
import type { OpenClawConfig, PluginRuntime } from "openclaw/plugin-sdk";
|
|
22
22
|
/** Minimal runtime shape used only for error logging in the reply dispatcher. */
|
|
23
23
|
type RuntimeErrorLogger = {
|
|
24
24
|
error?: (...args: unknown[]) => void;
|
|
@@ -32,9 +32,5 @@ export type CreateReplyDispatcherParams = {
|
|
|
32
32
|
openKfId: string;
|
|
33
33
|
accountId: string;
|
|
34
34
|
};
|
|
35
|
-
export declare function createReplyDispatcher(params: CreateReplyDispatcherParams):
|
|
36
|
-
dispatcher: unknown;
|
|
37
|
-
replyOptions: unknown;
|
|
38
|
-
markDispatchIdle: (() => void) | undefined;
|
|
39
|
-
};
|
|
35
|
+
export declare function createReplyDispatcher(params: CreateReplyDispatcherParams): ReturnType<PluginRuntime["channel"]["reply"]["createReplyDispatcherWithTyping"]>;
|
|
40
36
|
export {};
|