mirror of
https://github.com/openclaw/openclaw.git
synced 2026-03-22 07:20:59 +00:00
Outbound: preserve shared interactive payloads
This commit is contained in:
committed by
Peter Steinberger
parent
7018412102
commit
f3f0bdcb07
@@ -5,10 +5,12 @@ import {
|
||||
shouldSuppressReasoningPayload,
|
||||
} from "../../auto-reply/reply/reply-payloads.js";
|
||||
import type { ReplyPayload } from "../../auto-reply/types.js";
|
||||
import type { InteractiveReply } from "../../interactive/payload.js";
|
||||
|
||||
export type NormalizedOutboundPayload = {
|
||||
text: string;
|
||||
mediaUrls: string[];
|
||||
interactive?: InteractiveReply;
|
||||
channelData?: Record<string, unknown>;
|
||||
};
|
||||
|
||||
@@ -16,6 +18,7 @@ export type OutboundPayloadJson = {
|
||||
text: string;
|
||||
mediaUrl: string | null;
|
||||
mediaUrls?: string[];
|
||||
interactive?: InteractiveReply;
|
||||
channelData?: Record<string, unknown>;
|
||||
};
|
||||
|
||||
@@ -89,15 +92,18 @@ export function normalizeOutboundPayloads(
|
||||
const normalizedPayloads: NormalizedOutboundPayload[] = [];
|
||||
for (const payload of normalizeReplyPayloadsForDelivery(payloads)) {
|
||||
const mediaUrls = payload.mediaUrls ?? (payload.mediaUrl ? [payload.mediaUrl] : []);
|
||||
const interactive = payload.interactive;
|
||||
const channelData = payload.channelData;
|
||||
const hasChannelData = Boolean(channelData && Object.keys(channelData).length > 0);
|
||||
const hasInteractive = Boolean(interactive?.blocks.length);
|
||||
const text = payload.text ?? "";
|
||||
if (!text && mediaUrls.length === 0 && !hasChannelData) {
|
||||
if (!text && mediaUrls.length === 0 && !hasInteractive && !hasChannelData) {
|
||||
continue;
|
||||
}
|
||||
normalizedPayloads.push({
|
||||
text,
|
||||
mediaUrls,
|
||||
...(hasInteractive ? { interactive } : {}),
|
||||
...(hasChannelData ? { channelData } : {}),
|
||||
});
|
||||
}
|
||||
@@ -113,6 +119,7 @@ export function normalizeOutboundPayloadsForJson(
|
||||
text: payload.text ?? "",
|
||||
mediaUrl: payload.mediaUrl ?? null,
|
||||
mediaUrls: payload.mediaUrls ?? (payload.mediaUrl ? [payload.mediaUrl] : undefined),
|
||||
interactive: payload.interactive,
|
||||
channelData: payload.channelData,
|
||||
});
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user