Name

global.VAFBMessengerCustomBot

Description

Glide Record helper class for sn_va_fb_messenger.VAFBMessengerCustomBotInstall.

Script

var VAFBMessengerCustomBot = Class.create();

var PROVIDER_APPLICATION_TABLE = 'sys_cs_provider_application';
var HASH_MESSAGE_VERIFICATION_TABLE = 'hash_message_verification';
var TOKEN_VERIFICATION_TABLE = 'token_verification';
var MESSAGE_AUTH_TABLE = 'message_auth';

var FB_MESSENGER_PROVIDER_ID = '4dd0298d0f9310105375001ea8767e73';
var FB_MESSENGER_PROVIDER_NAME = 'FB Messenger Provider';

VAFBMessengerCustomBot.prototype = {
  initialize: function() {},


  insertHashMessageVerificationRecord: function(botName, hashSecret) {
      var hsFieldValueMap = {};
      hsFieldValueMap['name'] = 'hash-secret-for-' + botName;
      hsFieldValueMap['description'] = 'fb-messenger-inbound-hash-token-for-' + botName;
      hsFieldValueMap['secret'] = hashSecret;

      return this.insertRecord(HASH_MESSAGE_VERIFICATION_TABLE, hsFieldValueMap);

  },

  insertOutboundTokenRecord: function(botName, token) {
      var tokenFieldValueMap = {};
      tokenFieldValueMap['name'] = 'outbound-token-for-' + botName;
      tokenFieldValueMap['description'] = 'fb-messenger-outbound-token-for-' + botName;
      tokenFieldValueMap['token'] = token;

      return this.insertRecord(TOKEN_VERIFICATION_TABLE, tokenFieldValueMap);
  },

  insertMessageAuthRecord: function(botName, hashMessageVerification, tokenVerification, appID) {

      var authFieldValueMap = {};
      authFieldValueMap['name'] = 'message-auth-for-' + botName;
      authFieldValueMap['provider_name'] = FB_MESSENGER_PROVIDER_NAME;
      authFieldValueMap['group_name'] = appID;
      authFieldValueMap['outbound_message_creation'] = tokenVerification;
      authFieldValueMap['inbound_message_verification'] = hashMessageVerification;

      return this.insertRecord(MESSAGE_AUTH_TABLE, authFieldValueMap);

  },

  insertAdapterConfigurationRecord: function(botName, messageAuth, inboundId) {
      var providerFieldValueMap = {};
      providerFieldValueMap['name'] = botName;
      providerFieldValueMap['short_description'] = '';
      providerFieldValueMap['message_auth'] = messageAuth;
      providerFieldValueMap['provider'] = FB_MESSENGER_PROVIDER_ID;
      providerFieldValueMap['inbound_id'] = inboundId;

      return this.insertRecord(PROVIDER_APPLICATION_TABLE, providerFieldValueMap);

  },


  insertRecord: function(tableName, fieldValueMap) {
      try {
          var _gr = new GlideRecord(tableName);
          _gr.initialize();

          for (var fieldName in fieldValueMap) {
              var fieldValue = fieldValueMap[fieldName];
              _gr.setValue(fieldName, fieldValue);
          }

          _gr.insert();
          gs.info("VAFBMessengerCustomBot::insertRecord - Successfully inserted record with into {0} [ {1} ] \n Value: {3} \n", [tableName, _gr.sys_id, JSON.stringify(fieldValueMap)]);

          return _gr.sys_id;

      } catch (error) {
          gs.error("VAFBMessengerCustomBot::insertRecord - Failed to insert record in :" + tableName + ':' + error.message);

          return -1;
      }
  },

  getRecords: function(tableName, encodedQString) {
      var _getGR = new GlideRecord(tableName);
      _getGR.addEncodedQuery(encodedQString);
      _getGR.query();

      return _getGR;

  },

  updateCustomBot: function(botName, hashRecordSysId, hashSecret, tokenRecordSysId, token) {

      var result = {
          'error': false,
          'message': gs.getMessage('You have successfully updated the custom bot integration for Facebook Messenger - {0}', botName)
      };

      var tokenRecord = this.updateRecordBySysId(TOKEN_VERIFICATION_TABLE, tokenRecordSysId, {
          'token': token
      });
      if (!this.isSuccess(tokenRecord)) {
          result.error = true;
          result.message = gs.getMessage('Failed to update Token Verification Record. Check logs for more information.');
      }

      var hashRecord = this.updateRecordBySysId(HASH_MESSAGE_VERIFICATION_TABLE, hashRecordSysId, {
          'secret': hashSecret
      });
      if (!this.isSuccess(hashRecord)) {
          result.error = true;
          result.message = gs.getMessage('Failed to update Hash Message Verification Record. Check logs for more information.');
      }

      gs.info('VAFBMessengerCustomBot:: You have successfully updated the custom bot integration for Facebook Messenger - ' + botName);

      return result;
  },

  updateRecordBySysId: function(tableName, sysId, fieldValueMap) {

      try {
          var _upGR = new GlideRecord(tableName);
          _upGR.get(sysId);

          for (var fieldName in fieldValueMap) {
              var fieldVal = fieldValueMap[fieldName];
              _upGR.setValue(fieldName, fieldVal);
          }
          var _sysId = _upGR.update();

          return _sysId;
      } catch (error) {
          gs.error("VAFBMessengerCustomBot::updateRecordBySysId - Failed to update record:" + error.message);
          return -1;
      }

  },
  isSuccess: function(sysId) {
      return sysId !== null && sysId !== undefined && sysId !== -1;
  },

  type: 'VAFBMessengerCustomBot'

}

Sys ID

20daed2453202110dff1ddeeff7b12c7

Offical Documentation

Official Docs: