@@ -200,19 +200,25 @@ function createPluginHandler(
200200 mediaUrl,
201201 payload : { text : caption , mediaUrl, mediaUrls : [ mediaUrl ] } ,
202202 } ) ;
203+ // Only enable sendPayload for native v2 adapters. Inferred sendFinal (from
204+ // v1 sendText/sendMedia) doesn't handle multi-media fan-out or text chunking,
205+ // so letting it take the sendPayload fast path would drop attachments and skip
206+ // chunking for channelData payloads.
207+ const isNativeV2 = normalized . contract === "v2" ;
203208 return {
204209 chunker,
205210 chunkerMode,
206211 textChunkLimit : outbound . textChunkLimit ,
207- sendPayload : outbound . sendFinal
208- ? async ( payload , overrides ) =>
209- outbound . sendFinal ( {
210- ...resolveCtx ( overrides ) ,
211- text : payload . text ?? "" ,
212- mediaUrl : payload . mediaUrl ,
213- payload,
214- } )
215- : undefined ,
212+ sendPayload :
213+ isNativeV2 && outbound . sendFinal
214+ ? async ( payload , overrides ) =>
215+ outbound . sendFinal ( {
216+ ...resolveCtx ( overrides ) ,
217+ text : payload . text ?? "" ,
218+ mediaUrl : payload . mediaUrl ,
219+ payload,
220+ } )
221+ : undefined ,
216222 sendText : async ( text , overrides ) => sendText ( text , overrides ) ,
217223 sendMedia : async ( caption , mediaUrl , overrides ) => sendMedia ( caption , mediaUrl , overrides ) ,
218224 } ;
0 commit comments