Outbound: preserve shared interactive payloads
This commit is contained in:
parent
bb34721175
commit
b1ac4e1d8e
@ -5,10 +5,12 @@ import {
|
|||||||
shouldSuppressReasoningPayload,
|
shouldSuppressReasoningPayload,
|
||||||
} from "../../auto-reply/reply/reply-payloads.js";
|
} from "../../auto-reply/reply/reply-payloads.js";
|
||||||
import type { ReplyPayload } from "../../auto-reply/types.js";
|
import type { ReplyPayload } from "../../auto-reply/types.js";
|
||||||
|
import type { InteractiveReply } from "../../interactive/payload.js";
|
||||||
|
|
||||||
export type NormalizedOutboundPayload = {
|
export type NormalizedOutboundPayload = {
|
||||||
text: string;
|
text: string;
|
||||||
mediaUrls: string[];
|
mediaUrls: string[];
|
||||||
|
interactive?: InteractiveReply;
|
||||||
channelData?: Record<string, unknown>;
|
channelData?: Record<string, unknown>;
|
||||||
};
|
};
|
||||||
|
|
||||||
@ -16,6 +18,7 @@ export type OutboundPayloadJson = {
|
|||||||
text: string;
|
text: string;
|
||||||
mediaUrl: string | null;
|
mediaUrl: string | null;
|
||||||
mediaUrls?: string[];
|
mediaUrls?: string[];
|
||||||
|
interactive?: InteractiveReply;
|
||||||
channelData?: Record<string, unknown>;
|
channelData?: Record<string, unknown>;
|
||||||
};
|
};
|
||||||
|
|
||||||
@ -89,15 +92,18 @@ export function normalizeOutboundPayloads(
|
|||||||
const normalizedPayloads: NormalizedOutboundPayload[] = [];
|
const normalizedPayloads: NormalizedOutboundPayload[] = [];
|
||||||
for (const payload of normalizeReplyPayloadsForDelivery(payloads)) {
|
for (const payload of normalizeReplyPayloadsForDelivery(payloads)) {
|
||||||
const mediaUrls = payload.mediaUrls ?? (payload.mediaUrl ? [payload.mediaUrl] : []);
|
const mediaUrls = payload.mediaUrls ?? (payload.mediaUrl ? [payload.mediaUrl] : []);
|
||||||
|
const interactive = payload.interactive;
|
||||||
const channelData = payload.channelData;
|
const channelData = payload.channelData;
|
||||||
const hasChannelData = Boolean(channelData && Object.keys(channelData).length > 0);
|
const hasChannelData = Boolean(channelData && Object.keys(channelData).length > 0);
|
||||||
|
const hasInteractive = Boolean(interactive?.blocks.length);
|
||||||
const text = payload.text ?? "";
|
const text = payload.text ?? "";
|
||||||
if (!text && mediaUrls.length === 0 && !hasChannelData) {
|
if (!text && mediaUrls.length === 0 && !hasInteractive && !hasChannelData) {
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
normalizedPayloads.push({
|
normalizedPayloads.push({
|
||||||
text,
|
text,
|
||||||
mediaUrls,
|
mediaUrls,
|
||||||
|
...(hasInteractive ? { interactive } : {}),
|
||||||
...(hasChannelData ? { channelData } : {}),
|
...(hasChannelData ? { channelData } : {}),
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
@ -113,6 +119,7 @@ export function normalizeOutboundPayloadsForJson(
|
|||||||
text: payload.text ?? "",
|
text: payload.text ?? "",
|
||||||
mediaUrl: payload.mediaUrl ?? null,
|
mediaUrl: payload.mediaUrl ?? null,
|
||||||
mediaUrls: payload.mediaUrls ?? (payload.mediaUrl ? [payload.mediaUrl] : undefined),
|
mediaUrls: payload.mediaUrls ?? (payload.mediaUrl ? [payload.mediaUrl] : undefined),
|
||||||
|
interactive: payload.interactive,
|
||||||
channelData: payload.channelData,
|
channelData: payload.channelData,
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user