Name
sn_nlu_workbench.NLUCoreUtils
Description
Helper functions / utilities to access NLU Workbench code tables / data
Script
var NLUCoreUtils = Class.create();
(function() {
var coreTables = global.NLUConstants.tables;
var DEFAULT_VERSION = 'latest';
NLUCoreUtils.toLower = function(x) {
return x.trim().toLowerCase();
};
NLUCoreUtils.getIntentGrByName = function(name, filter) {
var intentGr = new GlideRecord(coreTables.SYS_NLU_INTENT);
intentGr.addQuery('name', 'IN', name);
if (filter) intentGr.addEncodedQuery(filter);
intentGr.query();
return intentGr;
};
NLUCoreUtils.getTrainedIntentNamesMap = function(modelIds, transformer) {
if (!modelIds) return [];
var intentNamesMap = {};
var gr = new GlideRecord(coreTables.SYS_NLU_MODEL);
if (Array.isArray(modelIds))
gr.addQuery('sys_id', 'IN', modelIds.join());
else
gr.addQuery('sys_id', 'IN', modelIds);
gr.query();
while (gr.next()) {
var intentNames = [];
try {
var parlo = new global.NLUParloIntegrator(gr);
var trainedSolution = global.NLUParloIntegrator.getLastTrainedVersion(parlo.getSolution());
var propsJson = JSON.parse(trainedSolution.getProperties());
propsJson.authoringModel.intents.forEach(function(intentData) {
intentNames.push(
transformer ? transformer(intentData.name) : intentData.name
);
});
} catch (ex) {
gs.error('Failed to get trained intents for model: ' + gr.getUniqueValue());
}
intentNamesMap[gr.getUniqueValue()] = {
name: gr.getValue('name'),
intents: intentNames.filter(function(intent) {
return intent != 'no_intent';
})
};
}
return intentNamesMap;
};
NLUCoreUtils.getIntentIdsFromModelName = function(modelName) {
var intentIds = [];
var intentGr = new GlideRecord(coreTables.SYS_NLU_INTENT);
intentGr.addEncodedQuery('enableISEMPTY^ORenable=true');
intentGr.addQuery('model.name', modelName);
intentGr.query();
while (intentGr.next()) {
intentIds.push(intentGr.getUniqueValue());
}
return intentIds;
};
NLUCoreUtils.getIntentCount = function(filter) {
var intentGa = new GlideAggregate(coreTables.SYS_NLU_INTENT);
intentGa.addAggregate('COUNT');
if (filter) intentGa.addEncodedQuery(filter);
intentGa.query();
return intentGa.next() ? intentGa.getAggregate('COUNT') : 0;
};
NLUCoreUtils.getPercentage = function(score) {
var num = (score || 0) * 100;
var decimalFraction = Math.pow(10, 2);
return (Math.round(num * decimalFraction) / decimalFraction).toString();
};
NLUCoreUtils.getFamilyVersion = function() {
var version;
if (gs.getProperty('com.glide.embedded_help.version')) {
version = gs.getProperty('com.glide.embedded_help.version').toLowerCase();
} else {
var gr = new GlideRecord('sys_upgrade_history');
gr.addEncodedQuery('from_version!=n/a');
gr.setLimit('1');
gr.orderByDesc('upgrade_finished');
gr.query();
if (gr.next() && gr.to_version.split("-").length > 1) {
version = gr.to_version.split("-")[1];
}
}
return version || DEFAULT_VERSION;
};
NLUCoreUtils.getSuportedLanguages = function(releaseFeature) {
var data = [];
if (releaseFeature === 'optimize') {
var supportedLanguages = NLUBatchTestIntegrator.getOptimizeSupportedLanguages();
data = Object.keys(supportedLanguages && supportedLanguages.optimizeSupportMap || {});
}
return data;
};
NLUCoreUtils.prototype = {
initialize: function() {},
type: 'NLUCoreUtils'
};
})();
Sys ID
66d7724707fc301028ef0a701ad3005a