Name

global.SentimentUtil

Description

No description available

Script

var SentimentUtil = Class.create();
SentimentUtil.prototype = {
  initialize: function() {},

  updateConversationSentiment: function(conversationId, sentimentScore, sentiment) {
      var gr = new GlideRecord('sys_cs_conversation');
      gr.addQuery('sys_id', conversationId);
      gr.query();
      if (gr.next()) {
          gr.setValue('sentiment_normalized', sentimentScore);
          gr.setValue('sentiment', sentiment);
          gr.update();
      }
      this._updateInteractionSentiment(conversationId, sentimentScore);
  },

  updateMessageSentiment: function(key, sentimentScore, sentiment) {
      var gr = new GlideRecord('sys_cs_message');
      gr.addQuery('sys_id', key);
      gr.query();
      if (gr.next()) {
          gr.setValue('sentiment_normalized', sentimentScore);
          gr.setValue('sentiment', sentiment);
          gr.update();
      }
  },

  _updateInteractionSentiment: function(conversationId, sentiment) {
      var gr = new GlideRecord('interaction');
      gr.addQuery('channel_metadata_document', conversationId);
      gr.addQuery('channel_metadata_table', 'sys_cs_conversation');
      gr.query();
      if (gr.next()) {
          gr.setValue('sentiment', sentiment);
          gr.update();
      }
  },

  createInteractionInsight: function(conversationId, interactionId, agent) {
      var agentSentiment = this._calculateAggregateSentimentForAgent(conversationId, agent);
      if (agentSentiment) {
          var interactionInsightGr = new GlideRecord('sys_cs_interaction_insight');
          interactionInsightGr.addQuery('interaction', interactionId);
          interactionInsightGr.addQuery('user', agent);
          interactionInsightGr.query();
          if (interactionInsightGr.next()) {
              interactionInsightGr.setValue('sentiment_normalized', agentSentiment.score);
              interactionInsightGr.setValue('sentiment', agentSentiment.sentiment);
              interactionInsightGr.update();
          } else {
              interactionInsightGr.initialize();
              interactionInsightGr.setValue('interaction', interactionId);
              interactionInsightGr.setValue('user', agent);
              interactionInsightGr.setValue('sentiment_normalized', agentSentiment.score);
              interactionInsightGr.setValue('sentiment', agentSentiment.sentiment);
              interactionInsightGr.setValue('type', 'sentiment');
              interactionInsightGr.setValue('user_type', 'agent');
              interactionInsightGr.insert();
          }
      }
  },

  _calculateAggregateSentimentForAgent: function(conversationId, recipient) {
      var messageGr = new GlideAggregate('sys_cs_message');
      messageGr.setGroup(false);
      messageGr.addQuery('conversation', conversationId);
      messageGr.addQuery('recipient', recipient);
      messageGr.addEncodedQuery("sentimentISNOTEMPTY");
      messageGr.addAggregate('AVG', 'sentiment_normalized');
      messageGr.query();

      if (messageGr.next() && recipient) {
          var conversationScore = messageGr.getAggregate('AVG', 'sentiment_normalized');
          var sentimentObject = sn_cs.VASystemObject.getSentimentNormalisedScore(1, conversationScore);
          if (sentimentObject) {
              return JSON.parse(sentimentObject);
          }
      }
      return null;
  },

  getInteractionAssignedToAndId: function(conversationId) {
      var interactionGr = new GlideRecord('interaction');
      interactionGr.query('channel_metadata_document', conversationId);
      if (interactionGr.next()) {
          return {
              "interactionId": interactionGr.getUniqueValue(),
              "agent": interactionGr.getValue('assigned_to')
          };
      }
  },

  type: 'SentimentUtil'
};

Sys ID

9a0d603d8722411056a07406dabb3505

Offical Documentation

Official Docs: