Merge pull request #48 from luochen211/fix/weixin-long-reply-chunking

fix: chunk long WeChat replies for iLink
This commit is contained in:
xmanrui 2026-08-24 21:53:51 +08:00
commit 36cbbe48e7
10 changed files with 219 additions and 174 deletions

View file

@ -12,6 +12,7 @@ export const WEIXIN_QR_BASE_URL = 'https://ilinkai.weixin.qq.com/';
export const WEIXIN_PROTOCOL_VERSION = '2.4.6';
export const DEFAULT_BOT_TYPE = '3';
export const WEIXIN_CDN_BASE_URL = 'https://novac2c.cdn.weixin.qq.com/c2c';
export const DEFAULT_WEIXIN_MAX_MESSAGE_CHARS = 1_800;
const WEIXIN_CDN_HOST = 'novac2c.cdn.weixin.qq.com';
@ -744,7 +745,7 @@ export function weixinMessageId(message) {
return nonEmptyString(message?.client_id);
}
export function splitWeixinText(text, maxChars = 4_000) {
export function splitWeixinText(text, maxChars = DEFAULT_WEIXIN_MAX_MESSAGE_CHARS) {
if (text.length <= maxChars) return [text];
const chunks = [];
let remaining = text;

View file

@ -1,4 +1,5 @@
import {
DEFAULT_WEIXIN_MAX_MESSAGE_CHARS,
extractWeixinFiles,
extractWeixinImages,
extractWeixinText,
@ -184,7 +185,7 @@ export class WeixinHarnessBridge {
status = createWeixinBridgeStatus(),
logger = console,
replyTimeoutMs = 600_000,
maxMessageChars = 4_000,
maxMessageChars = DEFAULT_WEIXIN_MAX_MESSAGE_CHARS,
signal,
}) {
if (!api || typeof api.sendText !== 'function') throw new TypeError('Weixin API is required');

View file

@ -1,4 +1,4 @@
import { WeixinApiError } from './weixin-api.mjs';
import { DEFAULT_WEIXIN_MAX_MESSAGE_CHARS, WeixinApiError } from './weixin-api.mjs';
import { createWeixinBridgeStatus, WeixinHarnessBridge } from './weixin-bridge.mjs';
import {
connectionTestTarget,
@ -109,7 +109,7 @@ export class WeixinRuntime {
state,
logger = console,
replyTimeoutMs = 600_000,
maxMessageChars = 4_000,
maxMessageChars = DEFAULT_WEIXIN_MAX_MESSAGE_CHARS,
startRetryDelaysMs,
}) {
if (!api || !config || !token || !harness || !state) {