diff --git a/modules/pubmaticBidAdapter.js b/modules/pubmaticBidAdapter.js index 83e5efea171..2326d760e80 100644 --- a/modules/pubmaticBidAdapter.js +++ b/modules/pubmaticBidAdapter.js @@ -62,10 +62,12 @@ const converter = ortbConverter({ }, imp(buildImp, bidRequest, context) { const { kadfloor, currency, adSlot = '', deals, dctr, pmzoneid, hashedKey } = bidRequest.params; - const { adUnitCode, mediaTypes, rtd } = bidRequest; + const { adUnitCode, mediaTypes, rtd, ortb2 } = bidRequest; const imp = buildImp(bidRequest, context); + const imSegments = deepAccess(ortb2, 'user.ext.data.im_segments'); if (deals) addPMPDeals(imp, deals); if (dctr) addDealCustomTargetings(imp, dctr); + if (imSegments) addImSegmentData(imp, imSegments); if (rtd?.jwplayer) addJWPlayerSegmentData(imp, rtd.jwplayer); imp.bidfloor = _parseSlotParam('kadfloor', kadfloor); imp.bidfloorcur = currency ? _parseSlotParam('currency', currency) : DEFAULT_CURRENCY; @@ -353,6 +355,13 @@ const updateVideoImp = (videoImp, videoParams, adUnitCode, imp) => { } } +const addImSegmentData = (imp, imSegments) => { + if (!imSegments || !isArray(imSegments) || imSegments.length === 0) return; + const imSegData = `im_segments=${imSegments.join(',')}`; + imp.ext = imp.ext || {}; + imp.ext.key_val = imp.ext.key_val ? `${imp.ext.key_val}|${imSegData}` : imSegData; +}; + const addJWPlayerSegmentData = (imp, jwplayer) => { const jwSegData = jwplayer?.targeting; if (!jwSegData || !jwSegData.segments?.length) return;