Name

sn_ci_analytics.AnalyticsServiceInvoker

Description

No description available

Script

var AnalyticsServiceInvoker = {

  /**
   * @param {string} serviceType - Type of service which is invoked
   * @param {string} serviceName - Name of service which is invoked
   * @param {Object} serviceParams - The required parameters of service
   * @returns {Object} Result of service invocation
   */
  invoke: function(serviceType, serviceName, serviceParams) {

      var serviceObject = this.getService(serviceType);
      if (serviceObject && serviceObject[serviceName]) {
          var serviceApi = serviceObject[serviceName];
          try {
              var response = JSON.parse(serviceApi.call(serviceObject, this.prepareParams(serviceParams)));
              return response;
          } catch (e) {
              gs.error("Error while calling AnalyticsService: " + e);
              throw e;
          }
      }

      gs.info("Service Name " + serviceName + " does not exist inside " + serviceType + " type AnalyticsService.");

  },

  /**
   * @param {string} serviceType - Type of service i.e. Session, Event or User
   * @returns {Object} Service object which is used to invoke a service api
   */
  getService: function(serviceType) {
      var config = new CAConfig();
      var appTableName = config.getAppTableName();
      var appRecordId = config.getAppRecordSysId();
      var service = null;
      switch (serviceType) {
          case 'Session':
              service = new sn_analytics_api.AnalyticsSessionsApi(appTableName, appRecordId);
              break;
          case 'Event':
              service = new sn_analytics_api.AnalyticsEventsApi(appTableName, appRecordId);
              break;
          case 'User':
              service = new sn_analytics_api.AnalyticsUsersApi(appTableName, appRecordId);
              break;
          case 'Funnel':
              service = new sn_analytics_api.AnalyticsFunnelsApi(appTableName, appRecordId);
              break;
          case 'Screen':
              service = new sn_analytics_api.AnalyticsScreensApi(appTableName, appRecordId);
              break;
          default:
              throw new Error("Service type " + serviceType + " not identified in AnalyticsService");
      }
      return service;
  },

  /**
   * @param {Object} inputParams - The required parameters of service
   * @returns {Object} Service parameters
   */
  prepareParams: function(inputParams) {
      var paramsBuilder = sn_analytics_api.ParamsBuilder.addParams();
      paramsBuilder.withPlatform(this.getPlatform());
      for (var key in inputParams) {
          var param = inputParams[key];
          switch (key) {
              case 'from_date':
                  paramsBuilder.withFromDate(param);
                  break;
              case 'to_date':
                  paramsBuilder.withToDate(param);
                  break;
              case 'property_classifier':
                  paramsBuilder.withPropertyClassifier(param);
                  break;
              case 'date_bucket':
                  paramsBuilder.withDateBucket(param);
                  break;
              case 'event_type':
                  paramsBuilder.withEventType(param);
                  break;
              case 'event_type_filter':
                  paramsBuilder.withEventTypeFilter(param);
                  break;
              case 'event_name_filter':
                  paramsBuilder.withEventNameFilter(param);
                  break;
              case 'event_property_name':
                  paramsBuilder.withEventPropertyName(param);
                  break;
              case 'property_name':
                  paramsBuilder.withPropertyName(param);
                  break;
              case 'property_name_filter':
                  paramsBuilder.withPropertyNameFilter(param);
                  break;
              case 'property_value_filter':
                  paramsBuilder.withPropertyValueFilter(param);
                  break;
              case 'query':
                  paramsBuilder.withQuery(param);
                  break;
              case 'page_size':
                  paramsBuilder.withPageSize(param);
                  break;
              case 'page_num':
                  paramsBuilder.withPageNum(param);
                  break;
              case 'sort_field':
                  paramsBuilder.withSortField(param);
                  break;
              case 'sort_direction':
                  paramsBuilder.withSortDirection(param);
                  break;
              case 'user_id':
                  paramsBuilder.withUserId(param);
                  break;
              case 'include_deleted':
                  paramsBuilder.withIncludeDeleted(param);
                  break;
              case 'session_id':
                  paramsBuilder.withSessionId(param);
                  break;
              case 'is_favorite':
                  paramsBuilder.withIsFavorite(param);
                  break;
              case 'funnel_id':
                  paramsBuilder.withFunnelId(param);
                  break;
              case 'dynamic_property_name':
                  paramsBuilder.withDynamicPropertyName(param);
                  break;
              case 'screen_type':
                  paramsBuilder.withScreenType(param);
                  break;
              case 'event_name':
                  paramsBuilder.withEventName(param);
                  break;
              case 'funnel_id':
                  paramsBuilder.withFunnelId(param);
                  break;
              case 'funnel_name':
                  paramsBuilder.withFunnelName(param);
                  break;
              case 'date_interval':
                  paramsBuilder.withDateInterval(param);
                  break;
              case 'steps':
                  paramsBuilder.withSteps(param);
                  break;
          }
      }

      var params = paramsBuilder.build();
      return params;

  },

  getPlatform: function() {
      return 'chat';
  }

};

Sys ID

8e9650d0731820102f4a2cd2c4f6a7c7

Offical Documentation

Official Docs: