import { type ChannelOutboundAdapter } from "openclaw/plugin-sdk/channel-send-result" ;
import { chunkText } from "openclaw/plugin-sdk/reply-chunking" ;
import { shouldLogVerbose } from "openclaw/plugin-sdk/runtime-env" ;
import { createWhatsAppOutboundBase } from "./outbound-base.js" ;
import { resolveWhatsAppOutboundTarget } from "./resolve-outbound-target.js" ;
type WhatsAppSendModule = typeof import ("./send.js" );
let whatsAppSendModulePromise: Promise<WhatsAppSendModule> | undefined;
function loadWhatsAppSendModule(): Promise<WhatsAppSendModule> {
whatsAppSendModulePromise ??= import ("./send.js" );
return whatsAppSendModulePromise;
}
function trimLeadingWhitespace(text: string | undefined): string {
return text?.trimStart() ?? "" ;
}
export const whatsappOutbound: ChannelOutboundAdapter = createWhatsAppOutboundBase({
chunker: chunkText,
sendMessageWhatsApp: async (to, text, options) =>
await (
await loadWhatsAppSendModule()
).sendMessageWhatsApp(to, trimLeadingWhitespace(text), {
...options,
}),
sendPollWhatsApp: async (to, poll, options) =>
await (await loadWhatsAppSendModule()).sendPollWhatsApp(to, poll, options),
shouldLogVerbose: () => shouldLogVerbose(),
resolveTarget: ({ to, allowFrom, mode }) =>
resolveWhatsAppOutboundTarget({ to, allowFrom, mode }),
normalizeText: trimLeadingWhitespace,
skipEmptyText: true ,
});
Messung V0.5 in Prozent C=98 H=100 G=98
¤ Dauer der Verarbeitung: 0.1 Sekunden
(vorverarbeitet am 2026-05-26)
¤
*© Formatika GbR, Deutschland