@@ -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+
249253function 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