Built motion from commit 52c8a02d.|2.6.29
[motion2.git] / server / services / ami / trigger / cmContact / index.js
index c833611..272e27c 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 _0x91a1=['info','[CM][%s][%s]','emit','exec','data1','data2','data5','xmd-contactid','ListId','data3','split','phone','$or','routeId','destcalleridnum','calleridnum','createdAt','scheduledAt','union','resolve','then','getContacts','isEmpty','length','[CM][%s][%s]\x20Contact\x20found:%s','uniqueid','[CM][%s][%s]\x20Multiple\x20contacts\x20found:[%s]','map','join','[CM][%s][%s]\x20Contact\x20not\x20found','data4','[CM][%s][%s]\x20Autocreate\x20enabled','isNil','calleridname','<unknown>','destcalleridname','Unknown','createContact','[CM][%s][%s]\x20Contact\x20created:%s','[CM][%s][%s]\x20Autocreate\x20disabled','firstName','push','format','user:%s','name','action','merge','lodash','bluebird','ioredis','util','../../../../config/environment','../../../../config/logger','trigger','../../rpc/cmContact','redis','defaults','localhost'];(function(_0x2686f5,_0x2c84b7){var _0x40b2b6=function(_0x29ef6d){while(--_0x29ef6d){_0x2686f5['push'](_0x2686f5['shift']());}};_0x40b2b6(++_0x2c84b7);}(_0x91a1,0x151));var _0x191a=function(_0x14add3,_0x13ce8d){_0x14add3=_0x14add3-0x0;var _0x4a174f=_0x91a1[_0x14add3];return _0x4a174f;};'use strict';var _=require(_0x191a('0x0'));var BPromise=require(_0x191a('0x1'));var Redis=require(_0x191a('0x2'));var util=require(_0x191a('0x3'));var config=require(_0x191a('0x4'));var logger=require(_0x191a('0x5'))(_0x191a('0x6'));var cmContactRpc=require(_0x191a('0x7'));config[_0x191a('0x8')]=_[_0x191a('0x9')](config[_0x191a('0x8')],{'host':_0x191a('0xa'),'port':0x18eb});var io=require('socket.io-emitter')(new Redis(config[_0x191a('0x8')]));function emit(_0x263a0e,_0x5e687b,_0x344203,_0x4275d1,_0xf7ece6){logger[_0x191a('0xb')](_0x191a('0xc'),_0x263a0e,_0x5e687b['id'],_0x344203,_0x4275d1,JSON['stringify'](_0xf7ece6));io['to'](_0x344203)[_0x191a('0xd')](_0x4275d1,_0xf7ece6);}exports[_0x191a('0xe')]=function(_0x9680fe,_0x527453,_0x26a858,_0x26b127){var _0x3af266,_0x513032;var _0x398fa4={};var _0x2158b4;var _0x5b91e5=Number(_0x26a858[_0x191a('0xf')]);var _0x414e39=_0x26a858[_0x191a('0x10')]?Boolean(Number(_0x26a858[_0x191a('0x10')])):![];var _0x5a2ce1;var _0x2e7650=![];if(!_['isNil'](_0x26a858[_0x191a('0x11')])){if(_0x26a858[_0x191a('0x11')]=='1')_0x2e7650=!![];}if(!_0x2e7650){if(_0x26b127['xmd-contactid']){_0x398fa4['id']=_0x26b127[_0x191a('0x12')];}}if(!_0x398fa4['id']){_0x398fa4[_0x191a('0x13')]=_0x5b91e5;_0x5a2ce1=_0x26a858[_0x191a('0x14')]&&_0x26a858[_0x191a('0x14')]!=='0'?_0x26a858['data3'][_0x191a('0x15')](','):[_0x191a('0x16')];_0x398fa4[_0x191a('0x17')]=_['map'](_0x5a2ce1,function(_0xba4c87){var _0x290840={};_0x290840[_0xba4c87]=_0x26b127[_0x191a('0x18')]?_0x26b127[_0x191a('0x19')]:_0x26b127[_0x191a('0x1a')];return _0x290840;});_0x2158b4=_0x26b127['routeId']?_0x26b127[_0x191a('0x19')]:_0x26b127[_0x191a('0x1a')];}var _0x3eb233=['id','firstName','lastName',_0x191a('0x16'),'mobile','fax',_0x191a('0x13'),_0x191a('0x1b'),_0x191a('0x1c'),'updatedAt'];var _0x3ee6b0=_[_0x191a('0x1d')](_0x3eb233,_0x5a2ce1);BPromise[_0x191a('0x1e')]()[_0x191a('0x1f')](cmContactRpc[_0x191a('0x20')]({'attributes':_0x3ee6b0,'where':_0x398fa4,'phone':_0x2158b4}))['then'](function(_0x3377a7){_0x513032=_0x3377a7;if(!_[_0x191a('0x21')](_0x513032)){if(_0x513032[_0x191a('0x22')]===0x1){_0x3af266=_0x513032[0x0];logger[_0x191a('0xb')](_0x191a('0x23'),_0x26b127[_0x191a('0x24')],_0x527453['id'],_0x3af266['id']);}else{logger['info'](_0x191a('0x25'),_0x26b127['uniqueid'],_0x527453['id'],_[_0x191a('0x26')](_0x513032,'id')[_0x191a('0x27')](','));}return;}else{logger[_0x191a('0xb')](_0x191a('0x28'),_0x26b127['uniqueid'],_0x527453['id']);var _0x44cba9={'ListId':_0x5b91e5};var _0x34cbc1=_0x26a858[_0x191a('0x29')]&&_0x26a858[_0x191a('0x29')]!=='0'?_0x26a858[_0x191a('0x29')]:'phone';if(_0x414e39){logger['info'](_0x191a('0x2a'),_0x26b127[_0x191a('0x24')],_0x527453['id']);_0x44cba9[_0x34cbc1]=_[_0x191a('0x2b')](_0x26b127['routeId'])?_0x26b127[_0x191a('0x1a')]:_0x26b127[_0x191a('0x19')];if(_[_0x191a('0x2b')](_0x26b127[_0x191a('0x18')])){_0x44cba9['firstName']=_0x26b127[_0x191a('0x2c')]&&_0x26b127[_0x191a('0x2c')]!==_0x191a('0x2d')?_0x26b127['calleridname']:'Unknown';}else{_0x44cba9['firstName']=_0x26b127[_0x191a('0x2e')]&&_0x26b127[_0x191a('0x2e')]!==_0x191a('0x2d')?_0x26b127[_0x191a('0x2e')]:_0x191a('0x2f');}return BPromise[_0x191a('0x1e')]()[_0x191a('0x1f')](cmContactRpc[_0x191a('0x30')](_0x44cba9))[_0x191a('0x1f')](function(_0x2a4738){_0x3af266=_0x2a4738;_0x513032['push'](_0x2a4738);if(_0x3af266){logger['info'](_0x191a('0x31'),_0x26b127['uniqueid'],_0x527453['id'],_0x3af266['id']);}return;});}else{logger[_0x191a('0xb')](_0x191a('0x32'),_0x26b127[_0x191a('0x24')],_0x527453['id']);_0x44cba9[_0x34cbc1]=_[_0x191a('0x2b')](_0x26b127[_0x191a('0x18')])?_0x26b127['calleridnum']:_0x26b127['destcalleridnum'];if(_[_0x191a('0x2b')](_0x26b127['routeId'])){_0x44cba9[_0x191a('0x33')]=_0x26b127['calleridname']&&_0x26b127[_0x191a('0x2c')]!==_0x191a('0x2d')?_0x26b127[_0x191a('0x2c')]:'Unknown';}else{_0x44cba9[_0x191a('0x33')]=_0x26b127[_0x191a('0x2e')]&&_0x26b127[_0x191a('0x2e')]!==_0x191a('0x2d')?_0x26b127[_0x191a('0x2e')]:_0x191a('0x2f');}_0x3af266=_0x44cba9;_0x513032[_0x191a('0x34')](_0x44cba9);return;}}})['then'](function(){if(_0x9680fe){emit(_0x26b127[_0x191a('0x24')],_0x527453,util[_0x191a('0x35')](_0x191a('0x36'),_0x9680fe[_0x191a('0x37')]),util['format']('trigger:%s',_0x26a858[_0x191a('0x38')]['toLowerCase']()),{'evt':_[_0x191a('0x39')](_0x26b127,{'autoCreate':_0x414e39}),'contact':_0x3af266===undefined?{}:_0x3af266,'contacts':_0x513032['length']===0x0?undefined:_0x513032});}});};
\ No newline at end of file