Built motion from commit (unavailable).|2.5.22
[motion2.git] / server / services / ami / trigger / cmContact / index.js
index c833611..1f7067d 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 _0xf147=['createdAt','scheduledAt','union','resolve','then','getContacts','isEmpty','[CM][%s][%s]\x20Contact\x20found:%s','[CM][%s][%s]\x20Multiple\x20contacts\x20found:[%s]','uniqueid','join','[CM][%s][%s]\x20Contact\x20not\x20found','data4','isNil','calleridname','<unknown>','destcalleridname','push','[CM][%s][%s]\x20Autocreate\x20disabled','Unknown','format','name','trigger:%s','action','toLowerCase','merge','length','lodash','bluebird','ioredis','util','../../../../config/environment','../../../../config/logger','trigger','../../rpc/cmContact','defaults','redis','socket.io-emitter','info','[CM][%s][%s]','stringify','emit','exec','data2','xmd-contactid','ListId','data3','phone','$or','map','routeId','destcalleridnum','calleridnum','firstName','lastName','mobile'];(function(_0x4ac0d5,_0x59e212){var _0x5d0a67=function(_0x455b1c){while(--_0x455b1c){_0x4ac0d5['push'](_0x4ac0d5['shift']());}};_0x5d0a67(++_0x59e212);}(_0xf147,0x1a3));var _0x7f14=function(_0x3b5a83,_0x1901d3){_0x3b5a83=_0x3b5a83-0x0;var _0x41fe42=_0xf147[_0x3b5a83];return _0x41fe42;};'use strict';var _=require(_0x7f14('0x0'));var BPromise=require(_0x7f14('0x1'));var Redis=require(_0x7f14('0x2'));var util=require(_0x7f14('0x3'));var config=require(_0x7f14('0x4'));var logger=require(_0x7f14('0x5'))(_0x7f14('0x6'));var cmContactRpc=require(_0x7f14('0x7'));config['redis']=_[_0x7f14('0x8')](config[_0x7f14('0x9')],{'host':'localhost','port':0x18eb});var io=require(_0x7f14('0xa'))(new Redis(config[_0x7f14('0x9')]));function emit(_0x45f1aa,_0x1d9daa,_0x41b912,_0x4705af,_0x5b3bf7){logger[_0x7f14('0xb')](_0x7f14('0xc'),_0x45f1aa,_0x1d9daa['id'],_0x41b912,_0x4705af,JSON[_0x7f14('0xd')](_0x5b3bf7));io['to'](_0x41b912)[_0x7f14('0xe')](_0x4705af,_0x5b3bf7);}exports[_0x7f14('0xf')]=function(_0x55c5cf,_0x39e0fe,_0x23c905,_0x5daacd){var _0x28a29b,_0x10a99b;var _0x439eaa={};var _0x2333aa=Number(_0x23c905['data1']);var _0x40f72b=_0x23c905[_0x7f14('0x10')]?Boolean(Number(_0x23c905[_0x7f14('0x10')])):![];var _0x56904c;if(_0x5daacd[_0x7f14('0x11')]){_0x439eaa['id']=_0x5daacd[_0x7f14('0x11')];}if(!_0x439eaa['id']){_0x439eaa[_0x7f14('0x12')]=_0x2333aa;_0x56904c=_0x23c905[_0x7f14('0x13')]&&_0x23c905[_0x7f14('0x13')]!=='0'?_0x23c905[_0x7f14('0x13')]['split'](','):[_0x7f14('0x14')];_0x439eaa[_0x7f14('0x15')]=_[_0x7f14('0x16')](_0x56904c,function(_0x1956a7){var _0x34a5ac={};_0x34a5ac[_0x1956a7]=_0x5daacd[_0x7f14('0x17')]?_0x5daacd[_0x7f14('0x18')]:_0x5daacd[_0x7f14('0x19')];return _0x34a5ac;});}var _0x530e10=['id',_0x7f14('0x1a'),_0x7f14('0x1b'),'phone',_0x7f14('0x1c'),'fax',_0x7f14('0x12'),_0x7f14('0x1d'),_0x7f14('0x1e'),'updatedAt'];var _0x5bfd9d=_[_0x7f14('0x1f')](_0x530e10,_0x56904c);BPromise[_0x7f14('0x20')]()[_0x7f14('0x21')](cmContactRpc[_0x7f14('0x22')]({'attributes':_0x5bfd9d,'where':_0x439eaa}))[_0x7f14('0x21')](function(_0x96c585){_0x10a99b=_0x96c585;if(!_[_0x7f14('0x23')](_0x10a99b)){if(_0x10a99b['length']===0x1){_0x28a29b=_0x10a99b[0x0];logger[_0x7f14('0xb')](_0x7f14('0x24'),_0x5daacd['uniqueid'],_0x39e0fe['id'],_0x28a29b['id']);}else{logger[_0x7f14('0xb')](_0x7f14('0x25'),_0x5daacd[_0x7f14('0x26')],_0x39e0fe['id'],_[_0x7f14('0x16')](_0x10a99b,'id')[_0x7f14('0x27')](','));}return;}else{logger[_0x7f14('0xb')](_0x7f14('0x28'),_0x5daacd[_0x7f14('0x26')],_0x39e0fe['id']);var _0x51102={'ListId':_0x2333aa};var _0x446ff8=_0x23c905['data4']&&_0x23c905[_0x7f14('0x29')]!=='0'?_0x23c905[_0x7f14('0x29')]:_0x7f14('0x14');if(_0x40f72b){logger[_0x7f14('0xb')]('[CM][%s][%s]\x20Autocreate\x20enabled',_0x5daacd[_0x7f14('0x26')],_0x39e0fe['id']);_0x51102[_0x446ff8]=_[_0x7f14('0x2a')](_0x5daacd[_0x7f14('0x17')])?_0x5daacd['calleridnum']:_0x5daacd['destcalleridnum'];if(_['isNil'](_0x5daacd[_0x7f14('0x17')])){_0x51102[_0x7f14('0x1a')]=_0x5daacd[_0x7f14('0x2b')]&&_0x5daacd[_0x7f14('0x2b')]!==_0x7f14('0x2c')?_0x5daacd[_0x7f14('0x2b')]:'Unknown';}else{_0x51102[_0x7f14('0x1a')]=_0x5daacd[_0x7f14('0x2d')]&&_0x5daacd[_0x7f14('0x2d')]!=='<unknown>'?_0x5daacd['destcalleridname']:'Unknown';}return BPromise[_0x7f14('0x20')]()[_0x7f14('0x21')](cmContactRpc['createContact'](_0x51102))[_0x7f14('0x21')](function(_0x3477e6){_0x28a29b=_0x3477e6;_0x10a99b[_0x7f14('0x2e')](_0x3477e6);if(_0x28a29b){logger[_0x7f14('0xb')]('[CM][%s][%s]\x20Contact\x20created:%s',_0x5daacd['uniqueid'],_0x39e0fe['id'],_0x28a29b['id']);}return;});}else{logger['info'](_0x7f14('0x2f'),_0x5daacd['uniqueid'],_0x39e0fe['id']);_0x51102[_0x446ff8]=_[_0x7f14('0x2a')](_0x5daacd['routeId'])?_0x5daacd['calleridnum']:_0x5daacd[_0x7f14('0x18')];if(_[_0x7f14('0x2a')](_0x5daacd[_0x7f14('0x17')])){_0x51102[_0x7f14('0x1a')]=_0x5daacd[_0x7f14('0x2b')]&&_0x5daacd['calleridname']!==_0x7f14('0x2c')?_0x5daacd[_0x7f14('0x2b')]:_0x7f14('0x30');}else{_0x51102[_0x7f14('0x1a')]=_0x5daacd[_0x7f14('0x2d')]&&_0x5daacd[_0x7f14('0x2d')]!=='<unknown>'?_0x5daacd['destcalleridname']:_0x7f14('0x30');}_0x28a29b=_0x51102;_0x10a99b['push'](_0x51102);return;}}})[_0x7f14('0x21')](function(){if(_0x55c5cf){emit(_0x5daacd[_0x7f14('0x26')],_0x39e0fe,util[_0x7f14('0x31')]('user:%s',_0x55c5cf[_0x7f14('0x32')]),util[_0x7f14('0x31')](_0x7f14('0x33'),_0x23c905[_0x7f14('0x34')][_0x7f14('0x35')]()),{'evt':_[_0x7f14('0x36')](_0x5daacd,{'autoCreate':_0x40f72b}),'contact':_0x28a29b===undefined?{}:_0x28a29b,'contacts':_0x10a99b[_0x7f14('0x37')]===0x0?undefined:_0x10a99b});}});};
\ No newline at end of file