Skip to content

Commit 0feb939

Browse files
vincentkocsteipete
authored andcommitted
Outbound: deliver shared interactive payloads
1 parent 8f41001 commit 0feb939

1 file changed

Lines changed: 11 additions & 2 deletions

File tree

src/infra/outbound/deliver.ts

Lines changed: 11 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -246,17 +246,22 @@ function hasChannelDataPayload(payload: ReplyPayload): boolean {
246246
return Boolean(payload.channelData && Object.keys(payload.channelData).length > 0);
247247
}
248248

249+
function hasInteractivePayload(payload: ReplyPayload): boolean {
250+
return (payload.interactive?.blocks.length ?? 0) > 0;
251+
}
252+
249253
function normalizePayloadForChannelDelivery(
250254
payload: ReplyPayload,
251255
channelId: string,
252256
): ReplyPayload | null {
253257
const hasMedia = hasMediaPayload(payload);
254258
const hasChannelData = hasChannelDataPayload(payload);
259+
const hasInteractive = hasInteractivePayload(payload);
255260
const rawText = typeof payload.text === "string" ? payload.text : "";
256261
const normalizedText =
257262
channelId === "whatsapp" ? rawText.replace(/^(?:[ \t]*\r?\n)+/, "") : rawText;
258263
if (!normalizedText.trim()) {
259-
if (!hasMedia && !hasChannelData) {
264+
if (!hasMedia && !hasInteractive && !hasChannelData) {
260265
return null;
261266
}
262267
return {
@@ -307,6 +312,7 @@ function buildPayloadSummary(payload: ReplyPayload): NormalizedOutboundPayload {
307312
return {
308313
text: payload.text ?? "",
309314
mediaUrls: payload.mediaUrls ?? (payload.mediaUrl ? [payload.mediaUrl] : []),
315+
interactive: payload.interactive,
310316
channelData: payload.channelData,
311317
};
312318
}
@@ -705,7 +711,10 @@ async function deliverOutboundPayloadsCore(
705711
threadId: params.threadId ?? undefined,
706712
forceDocument: params.forceDocument,
707713
};
708-
if (handler.sendPayload && effectivePayload.channelData) {
714+
if (
715+
handler.sendPayload &&
716+
(effectivePayload.channelData || hasInteractivePayload(effectivePayload))
717+
) {
709718
const delivery = await handler.sendPayload(effectivePayload, sendOverrides);
710719
results.push(delivery);
711720
emitMessageSent({

0 commit comments

Comments
 (0)