Name
global.VAAISearchClickMetricsURLHelper
Description
A helper class for click-metrics URL for VA
Script
var VAAISearchClickMetricsURLHelper = Class.create();
/**
* Creates a URL that contains metrics and target URL for Genius Search Result.
* This URL will be clicked by the User and sent to the processor for signal processing.
* @return a fully qalified URL . eg: contain https://instance/va_link_processor.do?metrics=<metrics>&target_url=<target_url>
*/
VAAISearchClickMetricsURLHelper.createGeniusSearchEventMetricsURL = function(searchMetadata, geniusSearchResults, vaSystem, vaInputs, vaVars, url, index) {
// If click metrics is not allowed, don't need to create a special URL.
if (!global.VAClickMetrics.isAISearchClickMetricsAllowed())
return global.VAClickMetrics.createClickMetricsURL(vaSystem, url, {}, global.VAClickMetricsConstants.EVENT_TYPE_AI_SEARCH);
// if click-metrics is allowed, collect metrics.
var collector = new global.VAAIGeniusResultEventMetricCollector(searchMetadata, vaSystem, vaInputs, vaVars);
collector.collect(geniusSearchResults, index);
collector.sendOutMetrics();
return VAClickMetrics.createClickMetricsURL(vaSystem, url, collector.getPayload(), global.VAClickMetricsConstants.EVENT_TYPE_AI_SEARCH);
};
/**
* Creates a URL that contains metrics and target URL for regular search results.
* This URL will be clicked by the User and sent to the processor for signal processing.
* @return a fully qualified URL. eg: contain https://instance/va_link_processor.do?metrics=<metrics>&target_url=<target_url>
*/
VAAISearchClickMetricsURLHelper.createSearchResultEventMetricsURL = function(searchMetadata, searchResult, vaSystem, vaInputs, vaVars, url, index) {
// If the signal operation is not allowed, don't need to create a special URL
if (!global.VAClickMetrics.isAISearchClickMetricsAllowed())
return global.VAClickMetrics.createClickMetricsURL(vaSystem, url, {}, global.VAClickMetricsConstants.EVENT_TYPE_AI_SEARCH);
var collector = new global.VAAISearchResultEventMetricCollector(searchMetadata, vaSystem, vaInputs, vaVars);
collector.collect(searchResult, index);
// Be aware that SEARCH_RESULT_DISPLAYED event is not getting sent here. It's already sent via VAAISearchHelperUtah.createResultMap
return global.VAClickMetrics.createClickMetricsURL(vaSystem, url, collector.getPayload(), global.VAClickMetricsConstants.EVENT_TYPE_AI_SEARCH);
};
/**
* Creates a URL that contains metrics and target URL for the provided resultType.
* This URL will be clicked by the User and sent to the processor for signal processing.
* @return a fully qualified URL. eg: contain https://instance/va_link_processor.do?metrics=<metrics>&target_url=<target_url>
*/
VAAISearchClickMetricsURLHelper.createResultEventMetricsURL = function(resultType, searchMetadata, searchResult, vaSystem, vaInputs, vaVars, url , index) {
if (gs.nill(resultType))
throw 'Result type must exist';
if (resultType == global.AISearchConstants.RESULT_TYPE_GENIUS) {
return global.VAAISearchClickMetricsURLHelper.createGeniusSearchEventMetricsURL(
searchMetadata, searchResult, vaSystem, vaInputs, vaVars, url, index);
}
else if(resultType == global.AISearchConstants.RESULT_TYPE_SEARCH) {
return global.VAAISearchClickMetricsURLHelper.createSearchResultEventMetricsURL(
searchMetadata, searchResult, vaSystem, vaInputs, vaVars, url, index);
}
throw 'The provided result type:'+ resultType +' is not supported';
};
/**
* Send SEARCH_RESULT_DISPLAYED event
*/
VAAISearchClickMetricsURLHelper.createDisplayedSearchResultEventMetrics = function(searchMetadata, searchResult, vaSystem, vaInputs, vaVars, index) {
// If the signal operation is not allowed, don't need to create a special URL
if (!global.VAClickMetrics.isAISearchClickMetricsAllowed())
return {};
var collector = new global.VAAISearchResultEventMetricCollector(searchMetadata, vaSystem, vaInputs, vaVars);
collector.collect(searchResult, index);
collector.sendOutMetrics();
return collector.getPayload();
};
Sys ID
dd5c765153362010c440ddeeff7b128b