Name

global.NLUStudioPublisher

Description

Utilities releated to publishing NLU Model from NLU Workbench

Script

var NLUStudioPublisher = Class.create();

(function() {

  var constants = NLUConstants.constants;

  NLUStudioPublisher.canPublish = function(modelId) {
      var nluModel = new NLUModel(modelId);
      var modelStatusGr = nluModel.getStatus();
      if (modelStatusGr) {
          var trainedVersion = NLUHelper.getIntValue(modelStatusGr.getValue('trained_version'));
          var publishedVersion = NLUHelper.getIntValue(modelStatusGr.getValue('published_version'));
          return trainedVersion > 0 && trainedVersion > publishedVersion;
      }
      return false;
  };

  NLUStudioPublisher.publishModel = function(modelId) {
      var nluModel, modelGr, parloIntegrator,
          statusGr, output, trainedVersion, publishedVersion;
      var result = {};

      try {

          nluModel = new NLUModel(modelId);
          modelGr = nluModel.getGR();
          if (!modelGr) throw new Error(gs.getMessage('Model id does not exist'));

          statusGr = nluModel.getStatus();
          trainedVersion = statusGr.getValue('trained_version') ? parseInt(statusGr.getValue('trained_version')) : 0;
          publishedVersion = statusGr.getValue('published_version') ? parseInt(statusGr.getValue('published_version')) : 0;

          if (trainedVersion > 0) {
              if (publishedVersion > 0 && (trainedVersion <= publishedVersion)) {
                  result.status = 'failure';
                  result.message = gs.getMessage('Invalid trained version.');
                  return result;
              }

              parloIntegrator = new NLUParloIntegrator(modelGr);
              output = parloIntegrator.publish(trainedVersion);
              result.status = output.status;
              if (output.status === 'success') {
                  publishedVersion = output.response.solutionVersion;
                  result.publishedVersion = publishedVersion;

                  nluModel.updateStatus({
                      published_version: publishedVersion,
                      state: 'published',
                      last_published_on: (new GlideDateTime())
                  });
              } else if (output.status === 'failure') {
                  result.errors = NLUHelper.getErrorsFromResponse(output.response);
              }
          } else {
              result.status = 'failure';
              result.message = gs.getMessage('Invalid trained version.');
          }
      } catch (e) {
          result.status = 'failure';
          result.message = e.message;
      }
      return result;
  };

  NLUStudioPublisher.prototype = {
      type: 'NLUStudioPublisher',
      initialize: function() {}
  };
})();

Sys ID

2fad362d07d11010220b0a701ad30069

Offical Documentation

Official Docs: