Built motion from commit (unavailable).|2.5.7
[motion2.git] / server / services / ami / trigger / cmContact / index.js
index c833611..debd6f1 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 _0x61a1=['xmd-contactid2','isEmpty','ListId','data3','$or','routeId','destcalleridnum','calleridnum','firstName','lastName','phone','mobile','fax','createdAt','updatedAt','union','resolve','then','getContacts','length','[CM][%s][%s]\x20Contact\x20found:%s','uniqueid','[CM][%s][%s]\x20Multiple\x20contacts\x20found:[%s]','map','join','[CM][%s][%s]\x20Contact\x20not\x20found','[CM][%s][%s]\x20Autocreate\x20enabled','data4','isNil','calleridname','<unknown>','Unknown','destcalleridname','[CM][%s][%s]\x20Contact\x20created:%s','[CM][%s][%s]\x20Autocreate\x20disabled','format','user:%s','name','trigger:%s','action','toLowerCase','merge','lodash','bluebird','ioredis','../../../../config/environment','trigger','../../rpc/cmContact','redis','socket.io-emitter','info','stringify','emit','data1','data2'];(function(_0x321bb2,_0x202794){var _0x9c12ed=function(_0x263dd3){while(--_0x263dd3){_0x321bb2['push'](_0x321bb2['shift']());}};_0x9c12ed(++_0x202794);}(_0x61a1,0x1ab));var _0x161a=function(_0x5a26f5,_0x196300){_0x5a26f5=_0x5a26f5-0x0;var _0x2e9ef7=_0x61a1[_0x5a26f5];return _0x2e9ef7;};'use strict';var _=require(_0x161a('0x0'));var BPromise=require(_0x161a('0x1'));var Redis=require(_0x161a('0x2'));var util=require('util');var config=require(_0x161a('0x3'));var logger=require('../../../../config/logger')(_0x161a('0x4'));var cmContactRpc=require(_0x161a('0x5'));config['redis']=_['defaults'](config[_0x161a('0x6')],{'host':'localhost','port':0x18eb});var io=require(_0x161a('0x7'))(new Redis(config[_0x161a('0x6')]));function emit(_0x4ec6af,_0x352991,_0x1163a3,_0x520075,_0x51b6fc){logger[_0x161a('0x8')]('[CM][%s][%s]',_0x4ec6af,_0x352991['id'],_0x1163a3,_0x520075,JSON[_0x161a('0x9')](_0x51b6fc));io['to'](_0x1163a3)[_0x161a('0xa')](_0x520075,_0x51b6fc);}exports['exec']=function(_0x54c343,_0x4438c6,_0x4720b7,_0x2c4821){var _0x50e92e,_0x41f590;var _0x3f49cf={};var _0x3a1edd=Number(_0x4720b7[_0x161a('0xb')]);var _0x19d854=_0x4720b7[_0x161a('0xc')]?Boolean(Number(_0x4720b7[_0x161a('0xc')])):![];if(_0x2c4821[_0x161a('0xd')]&&!_[_0x161a('0xe')](_0x2c4821['xmd-contactid2']))_0x3f49cf['id']=_0x2c4821[_0x161a('0xd')];if(!_0x3f49cf['id']){_0x3f49cf[_0x161a('0xf')]=_0x3a1edd;var _0x315dd2=_0x4720b7[_0x161a('0x10')]&&_0x4720b7[_0x161a('0x10')]!=='0'?_0x4720b7[_0x161a('0x10')]['split'](','):['phone'];_0x3f49cf[_0x161a('0x11')]=_['map'](_0x315dd2,function(_0x4a39df){var _0x59b865={};_0x59b865[_0x4a39df]=_0x2c4821[_0x161a('0x12')]?_0x2c4821[_0x161a('0x13')]:_0x2c4821[_0x161a('0x14')];return _0x59b865;});}var _0x285802=['id',_0x161a('0x15'),_0x161a('0x16'),_0x161a('0x17'),_0x161a('0x18'),_0x161a('0x19'),_0x161a('0xf'),_0x161a('0x1a'),'scheduledAt',_0x161a('0x1b')];var _0x207adf=_[_0x161a('0x1c')](_0x285802,_0x315dd2);BPromise[_0x161a('0x1d')]()[_0x161a('0x1e')](cmContactRpc[_0x161a('0x1f')]({'attributes':_0x207adf,'where':_0x3f49cf}))['then'](function(_0x519c6b){_0x41f590=_0x519c6b;if(!_[_0x161a('0xe')](_0x41f590)){if(_0x41f590[_0x161a('0x20')]===0x1){_0x50e92e=_0x41f590[0x0];logger[_0x161a('0x8')](_0x161a('0x21'),_0x2c4821[_0x161a('0x22')],_0x4438c6['id'],_0x50e92e['id']);}else{logger[_0x161a('0x8')](_0x161a('0x23'),_0x2c4821[_0x161a('0x22')],_0x4438c6['id'],_[_0x161a('0x24')](_0x41f590,'id')[_0x161a('0x25')](','));}return;}else{logger[_0x161a('0x8')](_0x161a('0x26'),_0x2c4821[_0x161a('0x22')],_0x4438c6['id']);if(_0x19d854){logger[_0x161a('0x8')](_0x161a('0x27'),_0x2c4821[_0x161a('0x22')],_0x4438c6['id']);var _0x258158=_0x4720b7['data4']&&_0x4720b7[_0x161a('0x28')]!=='0'?_0x4720b7[_0x161a('0x28')]:_0x161a('0x17');var _0x2827b9={'ListId':_0x3a1edd};_0x2827b9[_0x258158]=_[_0x161a('0x29')](_0x2c4821['routeId'])?_0x2c4821['calleridnum']:_0x2c4821[_0x161a('0x13')];if(_[_0x161a('0x29')](_0x2c4821['routeId'])){_0x2827b9['firstName']=_0x2c4821['calleridname']&&_0x2c4821[_0x161a('0x2a')]!==_0x161a('0x2b')?_0x2c4821[_0x161a('0x2a')]:_0x161a('0x2c');}else{_0x2827b9[_0x161a('0x15')]=_0x2c4821[_0x161a('0x2d')]&&_0x2c4821[_0x161a('0x2d')]!==_0x161a('0x2b')?_0x2c4821[_0x161a('0x2d')]:_0x161a('0x2c');}return BPromise[_0x161a('0x1d')]()[_0x161a('0x1e')](cmContactRpc['createContact'](_0x2827b9))[_0x161a('0x1e')](function(_0x54b578){_0x50e92e=_0x54b578;if(_0x50e92e){logger[_0x161a('0x8')](_0x161a('0x2e'),_0x2c4821['uniqueid'],_0x4438c6['id'],_0x50e92e['id']);}return;});}else{logger[_0x161a('0x8')](_0x161a('0x2f'),_0x2c4821[_0x161a('0x22')],_0x4438c6['id']);return;}}})[_0x161a('0x1e')](function(){if(_0x54c343){emit(_0x2c4821['uniqueid'],_0x4438c6,util[_0x161a('0x30')](_0x161a('0x31'),_0x54c343[_0x161a('0x32')]),util[_0x161a('0x30')](_0x161a('0x33'),_0x4720b7[_0x161a('0x34')][_0x161a('0x35')]()),{'evt':_[_0x161a('0x36')](_0x2c4821,{'autoCreate':_0x19d854}),'contact':_0x50e92e,'contacts':!_0x50e92e?_0x41f590:undefined});}});};
\ No newline at end of file