Built motion from commit (unavailable).|2.5.5
[motion2.git] / server / services / ami / trigger / cmContact / index.js
index c833611..818f2ec 100644 (file)
-'use strict';
-
-var _ = require('lodash');
-var BPromise = require('bluebird');
-var Redis = require('ioredis');
-var util = require('util');
-
-var config = require('../../../../config/environment');
-var logger = require('../../../../config/logger')('trigger');
-var cmContactRpc = require('../../rpc/cmContact');
-
-config.redis = _.defaults(config.redis, {
-  host: 'localhost',
-  port: 6379
-});
-
-var io = require('socket.io-emitter')(new Redis(config.redis));
-
-function emit(uniqueid, trigger, room, evt, obj) {
-  logger.info('[CM][%s][%s]', uniqueid, trigger.id, room, evt, JSON.stringify(obj));
-  io.to(room).emit(evt, obj);
-}
-
-exports.exec = function (agent, trigger, action, evt) {
-  var contact, contacts;
-  var options = {};
-  var listId = Number(action.data1);
-  var autoCreate = action.data2 ? Boolean(Number(action.data2)) : false;
-
-  // Checking if the contact's id is defined
-  if (evt['xmd-contactid2'] && !_.isEmpty(evt['xmd-contactid2'])) options.id = evt['xmd-contactid2'];
-
-  if (!options.id) {
-    options.ListId = listId;
-    // Retrieves the fields selected for searching the contact
-    var searchFields = action.data3 && action.data3 !== '0' ? action.data3.split(',') : ['phone'];
-    options.$or = _.map(searchFields, function (field) {
-      return {
-        [field]: evt.routeId ? evt.destcalleridnum : evt.calleridnum
-      };
-    });
-  }
-
-  // Searching the contact
-  BPromise.resolve()
-    .then(
-      cmContactRpc.getContacts({
-        where: options
-      })
-    )
-    .then(function (result) {
-      contacts = result;
-      if (!_.isEmpty(contacts)) {
-        if (contacts.length === 1) {
-          contact = contacts[0];
-          logger.info('[CM][%s][%s] Contact found:%s', evt.uniqueid, trigger.id, contact.id);
-        } else {
-          logger.info('[CM][%s][%s] Multiple contacts found:[%s]', evt.uniqueid, trigger.id, _.map(contacts, 'id').join(','));
-        }
-        return;
-      } else {
-        logger.info('[CM][%s][%s] Contact not found', evt.uniqueid, trigger.id);
-        if (autoCreate) {
-          logger.info('[CM][%s][%s] Autocreate enabled', evt.uniqueid, trigger.id);
-          var creationField = action.data4 && action.data4 !== '0' ? action.data4 : 'phone';
-          var newContact = {
-            ListId: listId,
-            [creationField]: _.isNil(evt.routeId) ? evt.calleridnum : evt.destcalleridnum
-          };
-
-          if (_.isNil(evt.routeId)) {
-            newContact.firstName = evt.calleridname && evt.calleridname !== '<unknown>' ? evt.calleridname : 'Unknown';
-          } else {
-            newContact.firstName = evt.destcalleridname && evt.destcalleridname !== '<unknown>' ? evt.destcalleridname : 'Unknown';
-          }
-
-          return BPromise.resolve()
-            .then(cmContactRpc.createContact(newContact))
-            .then(function (result) {
-              contact = result;
-              if (contact) {
-                logger.info('[CM][%s][%s] Contact created:%s', evt.uniqueid, trigger.id, contact.id);
-              }
-              return;
-            });
-        } else {
-          logger.info('[CM][%s][%s] Autocreate disabled', evt.uniqueid, trigger.id);
-          return;
-        }
-      }
-    })
-    .then(function () {
-      // Emitting the event
-      if (agent) {
-        emit(evt.uniqueid, trigger, util.format('user:%s', agent.name), util.format('trigger:%s', action.action.toLowerCase()), {
-          evt: _.merge(evt, { autoCreate: autoCreate }),
-          contact: contact,
-          contacts: !contact ? contacts : undefined
-        });
-      }
-    });
-};
+// *************************************************************************
+// *                                                                       *
+// * xCALLY Motion -  The Omnichannel Contact Center                       *
+// * Copyright (c) Xenialab s.r.l. All Rights Reserved                     *
+// *                                                                       *
+// *************************************************************************
+// *                                                                       *
+// * Email: info@xcally.com                                                *
+// * Website: https://www.xcally.com                                       *
+// *                                                                       *
+// *************************************************************************
+// *                                                                       *
+// * The SOFTWARE PRODUCT is protected by copyright laws and international *
+// * copyright treaties, as well as other intellectual property laws and   *
+// * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
+// *                                                                       *
+// *************************************************************************
+var _0x9977=['redis','defaults','localhost','[CM][%s][%s]','stringify','emit','exec','data2','xmd-contactid2','data3','split','phone','$or','map','routeId','calleridnum','lastName','mobile','fax','ListId','updatedAt','union','resolve','getContacts','isEmpty','length','info','[CM][%s][%s]\x20Contact\x20found:%s','[CM][%s][%s]\x20Multiple\x20contacts\x20found:[%s]','join','uniqueid','data4','isNil','calleridname','firstName','<unknown>','destcalleridname','Unknown','then','[CM][%s][%s]\x20Contact\x20created:%s','[CM][%s][%s]\x20Autocreate\x20disabled','format','name','trigger:%s','action','merge','bluebird','ioredis','util','../../../../config/environment','../../../../config/logger','trigger','../../rpc/cmContact'];(function(_0x470939,_0x2f455e){var _0x10d2d9=function(_0x6d4874){while(--_0x6d4874){_0x470939['push'](_0x470939['shift']());}};_0x10d2d9(++_0x2f455e);}(_0x9977,0x1d6));var _0x7997=function(_0xb0de07,_0x3ca2a0){_0xb0de07=_0xb0de07-0x0;var _0x4633d8=_0x9977[_0xb0de07];return _0x4633d8;};'use strict';var _=require('lodash');var BPromise=require(_0x7997('0x0'));var Redis=require(_0x7997('0x1'));var util=require(_0x7997('0x2'));var config=require(_0x7997('0x3'));var logger=require(_0x7997('0x4'))(_0x7997('0x5'));var cmContactRpc=require(_0x7997('0x6'));config[_0x7997('0x7')]=_[_0x7997('0x8')](config['redis'],{'host':_0x7997('0x9'),'port':0x18eb});var io=require('socket.io-emitter')(new Redis(config['redis']));function emit(_0x16d79f,_0x39e0e5,_0x3825f4,_0x3ade61,_0x5b10e1){logger['info'](_0x7997('0xa'),_0x16d79f,_0x39e0e5['id'],_0x3825f4,_0x3ade61,JSON[_0x7997('0xb')](_0x5b10e1));io['to'](_0x3825f4)[_0x7997('0xc')](_0x3ade61,_0x5b10e1);}exports[_0x7997('0xd')]=function(_0x5f01bb,_0x5d489b,_0x40dcf4,_0x824aaf){var _0xd650d7,_0x527daa;var _0x21cff0={};var _0x1e5785=Number(_0x40dcf4['data1']);var _0x184f80=_0x40dcf4[_0x7997('0xe')]?Boolean(Number(_0x40dcf4[_0x7997('0xe')])):![];if(_0x824aaf[_0x7997('0xf')]&&!_['isEmpty'](_0x824aaf[_0x7997('0xf')]))_0x21cff0['id']=_0x824aaf[_0x7997('0xf')];if(!_0x21cff0['id']){_0x21cff0['ListId']=_0x1e5785;var _0x48b4d8=_0x40dcf4[_0x7997('0x10')]&&_0x40dcf4[_0x7997('0x10')]!=='0'?_0x40dcf4['data3'][_0x7997('0x11')](','):[_0x7997('0x12')];_0x21cff0[_0x7997('0x13')]=_[_0x7997('0x14')](_0x48b4d8,function(_0x14927f){var _0x528937={};_0x528937[_0x14927f]=_0x824aaf[_0x7997('0x15')]?_0x824aaf['destcalleridnum']:_0x824aaf[_0x7997('0x16')];return _0x528937;});}var _0x398dd0=['id','firstName',_0x7997('0x17'),'phone',_0x7997('0x18'),_0x7997('0x19'),_0x7997('0x1a'),'createdAt','scheduledAt',_0x7997('0x1b')];var _0x2d9ad5=_[_0x7997('0x1c')](_0x398dd0,_0x48b4d8);BPromise[_0x7997('0x1d')]()['then'](cmContactRpc[_0x7997('0x1e')]({'attributes':_0x2d9ad5,'where':_0x21cff0}))['then'](function(_0x3358de){_0x527daa=_0x3358de;if(!_[_0x7997('0x1f')](_0x527daa)){if(_0x527daa[_0x7997('0x20')]===0x1){_0xd650d7=_0x527daa[0x0];logger[_0x7997('0x21')](_0x7997('0x22'),_0x824aaf['uniqueid'],_0x5d489b['id'],_0xd650d7['id']);}else{logger[_0x7997('0x21')](_0x7997('0x23'),_0x824aaf['uniqueid'],_0x5d489b['id'],_['map'](_0x527daa,'id')[_0x7997('0x24')](','));}return;}else{logger[_0x7997('0x21')]('[CM][%s][%s]\x20Contact\x20not\x20found',_0x824aaf[_0x7997('0x25')],_0x5d489b['id']);if(_0x184f80){logger[_0x7997('0x21')]('[CM][%s][%s]\x20Autocreate\x20enabled',_0x824aaf['uniqueid'],_0x5d489b['id']);var _0x65c122=_0x40dcf4[_0x7997('0x26')]&&_0x40dcf4[_0x7997('0x26')]!=='0'?_0x40dcf4[_0x7997('0x26')]:'phone';var _0x2fdea3={'ListId':_0x1e5785};_0x2fdea3[_0x65c122]=_[_0x7997('0x27')](_0x824aaf[_0x7997('0x15')])?_0x824aaf[_0x7997('0x16')]:_0x824aaf['destcalleridnum'];if(_[_0x7997('0x27')](_0x824aaf[_0x7997('0x15')])){_0x2fdea3['firstName']=_0x824aaf['calleridname']&&_0x824aaf[_0x7997('0x28')]!=='<unknown>'?_0x824aaf[_0x7997('0x28')]:'Unknown';}else{_0x2fdea3[_0x7997('0x29')]=_0x824aaf['destcalleridname']&&_0x824aaf['destcalleridname']!==_0x7997('0x2a')?_0x824aaf[_0x7997('0x2b')]:_0x7997('0x2c');}return BPromise[_0x7997('0x1d')]()[_0x7997('0x2d')](cmContactRpc['createContact'](_0x2fdea3))['then'](function(_0x12dd48){_0xd650d7=_0x12dd48;if(_0xd650d7){logger[_0x7997('0x21')](_0x7997('0x2e'),_0x824aaf[_0x7997('0x25')],_0x5d489b['id'],_0xd650d7['id']);}return;});}else{logger[_0x7997('0x21')](_0x7997('0x2f'),_0x824aaf[_0x7997('0x25')],_0x5d489b['id']);return;}}})[_0x7997('0x2d')](function(){if(_0x5f01bb){emit(_0x824aaf[_0x7997('0x25')],_0x5d489b,util[_0x7997('0x30')]('user:%s',_0x5f01bb[_0x7997('0x31')]),util[_0x7997('0x30')](_0x7997('0x32'),_0x40dcf4[_0x7997('0x33')]['toLowerCase']()),{'evt':_[_0x7997('0x34')](_0x824aaf,{'autoCreate':_0x184f80}),'contact':_0xd650d7,'contacts':!_0xd650d7?_0x527daa:undefined});}});};
\ No newline at end of file