Files
memind/wechat/ack/ack-provider.mjs
john 9b4a25799f Add smart ACK provider for WeChat MP replies
Replace fixed ackText with a rule-based AckProvider that picks
response templates by message type and intent (translate, summary,
rewrite, poster, ppt, mindmap, code, search, schedule). Pure sync,
zero I/O, auto-falls back to config.ackText on any error.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-26 15:19:03 +08:00

30 lines
1.1 KiB
JavaScript

import { resolveIntent } from './ack-intent.mjs';
import { selectBuilder } from './ack-builders.mjs';
function readConfig(config) {
return {
randomEnabled: config?.ackRandomEnabled !== false,
nicknameEnabled: config?.ackNicknameEnabled !== false,
};
}
// intent: normalizeWechatInboundIntent output ({ msgType, agentText, ... })
// nickname: resolved display name string (empty string if unavailable)
// config: loadWechatMpConfig output (plus ackRandomEnabled, ackNicknameEnabled)
// fallbackText: config.ackText — returned on any error
export function buildAckText({ intent, nickname, config, fallbackText }) {
try {
const cfg = readConfig(config);
const ctx = {
msgType: String(intent?.msgType ?? 'text'),
nickname: String(nickname ?? ''),
intent: resolveIntent(intent?.msgType, intent?.agentText),
randomEnabled: cfg.randomEnabled,
nicknameEnabled: cfg.nicknameEnabled,
};
return selectBuilder(ctx).build(ctx);
} catch {
return fallbackText ?? '已收到,正在处理,完成后发到这里。';
}
}