Name

global.VALineMessengerCustomBot

Description

Glide Record helper class for sn_va_line.VALineMessengerCustomBotInstall.

Script

var VALineMessengerCustomBot = 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 LINE_MESSENGER_PROVIDER_NAME = 'Line';

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


  insertHashMessageVerificationRecord: function(botName, hashSecret) {
      var hsFieldValueMap = {};
      hsFieldValueMap['name'] = 'hash-secret-for-' + botName;
      hsFieldValueMap['description'] = 'line-messenger-inbound-hash-secret-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'] = 'line-messenger-outbound-token-for-' + botName;
      tokenFieldValueMap['token'] = token;

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

  insertMessageAuthRecord: function(botName, hashMessageVerification, tokenVerification) {

      var authFieldValueMap = {};
      authFieldValueMap['name'] = 'message-auth-for-line';//+ botName;
      authFieldValueMap['provider_name'] = LINE_MESSENGER_PROVIDER_NAME;
      //authFieldValueMap['group_name'] = channelID;
      authFieldValueMap['outbound_message_creation'] = tokenVerification;
      authFieldValueMap['inbound_message_verification'] = hashMessageVerification;

      return this.insertRecord(MESSAGE_AUTH_TABLE, authFieldValueMap);

  },

  updateAdapterConfigurationRecord: function(providerAppRecordSysId, botName, messageAuth) {

      return this.updateRecordBySysId(PROVIDER_APPLICATION_TABLE, providerAppRecordSysId, {'name': botName, 'message_auth': messageAuth});
  },

  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("VALineMessengerCustomBot::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("VALineMessengerCustomBot::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;

  },

  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("VALineMessengerCustomBot::updateRecordBySysId - Failed to update record:" + error.message);
          return -1;
      }

  },

  /* */

  updateCustomBot: function(botName,providerApplicationRecord, hashSecret, token) {

  	var tokenRecordSysId = providerApplicationRecord.message_auth.outbound_message_creation;
  	var hashRecordSysId = providerApplicationRecord.message_auth.inbound_message_verification;

  	var result = {
          'error': false,
          'message': gs.getMessage('You have successfully updated the bot configuration for LINE Messenger.')
      };

  	var tokenRecord = this.updateRecordBySysId(TOKEN_VERIFICATION_TABLE, tokenRecordSysId, {'token': token, 'name': 'outbound-token-for-' + botName, 'description' :'line-messenger-outbound-token-for-' + botName} );
  	if (!this.isSuccess(tokenRecord)) {
              result.error = true;
              result.message = gs.getMessage('Failed to update Token Verification Record.');
      }

  	var hashRecord = this.updateRecordBySysId(HASH_MESSAGE_VERIFICATION_TABLE, hashRecordSysId, {'secret': hashSecret, 'name': 'hash-secret-for-' + botName, 'description': 'line-messenger-inbound-hash-secret-for-' + botName} );
  	if (!this.isSuccess(hashRecord)) {
              result.error = true;
              result.message = gs.getMessage('Failed to update Hash Message Verification Record.');
      }
  	
  	var providerAppRecord = this.updateRecordBySysId(PROVIDER_APPLICATION_TABLE, providerApplicationRecord.sys_id, {'name': botName});
  	if (!this.isSuccess(providerAppRecord)) {
              result.error = true;
              result.message = gs.getMessage('Failed to update Provider Application Record.');
      }


  	gs.info('VALineMessengerCustomBot:: You have successfully updated the bot configuration for LINE Messenger - '+ botName);

  	return result;
  },

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

  type: 'VALineMessengerCustomBot'

}

Sys ID

f672db8053302110dff1ddeeff7b122f

Offical Documentation

Official Docs: