@@ -48,7 +48,7 @@ declare global {
4848}
4949
5050/**
51- * Adds Opimizely X context to events
51+ * Adds Optimizely X context to events
5252 */
5353export function OptimizelyXPlugin ( ) : BrowserPlugin {
5454 /**
@@ -66,24 +66,32 @@ export function OptimizelyXPlugin(): BrowserPlugin {
6666 }
6767
6868 /**
69- * Get data for OptimizelyX contexts - active experiments on current page
69+ * Get data for OptimizelyX contexts - active campaigns on current page.
70+ * Uses getCampaignStates() instead of getActiveExperimentIds() to correctly
71+ * capture campaignId (layerId) for both Web Experimentation and Personalization
72+ * campaigns. For Personalization campaigns, experimentId will reflect the
73+ * experience ID (the sub-unit within the campaign).
7074 *
71- * @returns Array content of lite optimizely lite context
75+ * @returns Array content of optimizely summary context
7276 */
7377 function getOptimizelyXSummary ( ) : OptimizelyxSummary [ ] {
7478 const state = getOptimizelyXData ( 'state' ) ;
7579 if ( state == null ) return [ ] ;
76- var experiment_ids = state . getActiveExperimentIds ( ) || [ ] ;
77- var variationMap = state . getVariationMap ( ) ;
78- var visitor = getOptimizelyXData ( 'visitor' ) ;
7980
80- return experiment_ids . map ( ( activeExperiment : string ) => {
81- var variation = variationMap [ activeExperiment ] ;
82- var variationName = ( variation && variation . name && variation . name . toString ( ) ) || null ;
83- var variationId = variation && variation . id ;
84- var visitorId = ( visitor && visitor . visitorId && visitor . visitorId . toString ( ) ) || null ;
81+ const campaignStates = state . getCampaignStates ( { isActive : true } ) || { } ;
82+ const visitor = getOptimizelyXData ( 'visitor' ) ;
83+ const visitorId = ( visitor && visitor . visitorId && visitor . visitorId . toString ( ) ) || null ;
84+
85+ return Object . keys ( campaignStates ) . map ( ( campaignId : string ) => {
86+ const campaign = campaignStates [ campaignId ] ;
87+ const experimentId = campaign . experiment && campaign . experiment . id ;
88+ const variationId = campaign . variation && campaign . variation . id ;
89+ const variationName =
90+ ( campaign . variation && campaign . variation . name && campaign . variation . name . toString ( ) ) || null ;
91+
8592 return {
86- experimentId : parseAndValidateInt ( activeExperiment ) || null ,
93+ campaignId : parseAndValidateInt ( campaignId ) || null ,
94+ experimentId : parseAndValidateInt ( experimentId ) || null ,
8795 variationName : variationName ,
8896 variation : parseAndValidateInt ( variationId ) || null ,
8997 visitorId : visitorId ,
@@ -100,7 +108,7 @@ export function OptimizelyXPlugin(): BrowserPlugin {
100108 function getOptimizelyXSummaryContexts ( ) {
101109 return getOptimizelyXSummary ( ) . map ( function ( experiment ) {
102110 return {
103- schema : 'iglu:com.optimizely.optimizelyx/summary/jsonschema/1-0 -0' ,
111+ schema : 'iglu:com.optimizely.optimizelyx/summary/jsonschema/1-1 -0' ,
104112 data : experiment ,
105113 } ;
106114 } ) ;
@@ -116,4 +124,4 @@ export function OptimizelyXPlugin(): BrowserPlugin {
116124 return [ ] ;
117125 } ,
118126 } ;
119- }
127+ }
0 commit comments