fix: correct whatsapp normalized reply typing

This commit is contained in:
Marcus Castro
2026-04-29 01:22:34 -03:00
parent 3415706416
commit 184d4a25e4
3 changed files with 24 additions and 7 deletions

View File

@@ -8,6 +8,7 @@ import {
import { logVerbose, shouldLogVerbose } from "openclaw/plugin-sdk/runtime-env";
import { loadWebMedia } from "../media.js";
import {
type DeliverableWhatsAppOutboundPayload,
normalizeWhatsAppOutboundPayload,
normalizeWhatsAppPayloadTextPreservingIndentation,
prepareWhatsAppOutboundMedia,
@@ -24,7 +25,7 @@ import { elide } from "./util.js";
export async function deliverWebReply(params: {
replyResult: ReplyPayload;
normalizedReplyResult?: ReturnType<typeof normalizeWhatsAppOutboundPayload<ReplyPayload>>;
normalizedReplyResult?: DeliverableWhatsAppOutboundPayload<ReplyPayload>;
msg: WebInboundMsg;
mediaLocalRoots?: readonly string[];
maxMediaBytes: number;
@@ -51,7 +52,9 @@ export async function deliverWebReply(params: {
normalizeWhatsAppOutboundPayload(replyResult, {
normalizeText: normalizeWhatsAppPayloadTextPreservingIndentation,
});
const convertedText = markdownToWhatsApp(convertMarkdownTables(normalizedReply.text, tableMode));
const convertedText = markdownToWhatsApp(
convertMarkdownTables(normalizedReply.text ?? "", tableMode),
);
const textChunks = chunkMarkdownTextWithMode(convertedText, textLimit, chunkMode);
const mediaList = normalizedReply.mediaUrls ?? [];

View File

@@ -1,5 +1,6 @@
import { resolveMergedWhatsAppAccountConfig } from "../../account-config.js";
import {
type DeliverableWhatsAppOutboundPayload,
normalizeWhatsAppOutboundPayload,
normalizeWhatsAppPayloadTextPreservingIndentation,
} from "../../outbound-media-contract.js";
@@ -250,6 +251,7 @@ export async function dispatchWhatsAppBufferedReply(params: {
conversationId: string;
deliverReply: (params: {
replyResult: ReplyPayload;
normalizedReplyResult?: DeliverableWhatsAppOutboundPayload<ReplyPayload>;
msg: WebInboundMsg;
mediaLocalRoots: readonly string[];
maxMediaBytes: number;

View File

@@ -24,6 +24,22 @@ type WhatsAppLoadedMediaLike = {
fileName?: string;
};
export type NormalizedWhatsAppOutboundPayload<T extends WhatsAppOutboundPayloadLike> = Omit<
T,
"text" | "mediaUrl" | "mediaUrls"
> & {
text: string;
mediaUrl?: string;
mediaUrls?: string[];
};
export type DeliverableWhatsAppOutboundPayload<T extends WhatsAppOutboundPayloadLike> = Omit<
NormalizedWhatsAppOutboundPayload<T>,
"text"
> & {
text?: string;
};
export type CanonicalWhatsAppLoadedMedia = {
buffer: Buffer;
kind: "image" | "audio" | "video" | "document";
@@ -82,11 +98,7 @@ export function normalizeWhatsAppOutboundPayload<T extends WhatsAppOutboundPaylo
options?: {
normalizeText?: (text: string | undefined) => string;
},
): Omit<T, "text" | "mediaUrl" | "mediaUrls"> & {
text: string;
mediaUrl?: string;
mediaUrls?: string[];
} {
): NormalizedWhatsAppOutboundPayload<T> {
const mediaUrls = resolveWhatsAppOutboundMediaUrls(payload);
const normalizeText = options?.normalizeText ?? normalizeWhatsAppPayloadText;
return {