Built motion from commit 85328c08.|2.5.50
[motion2.git] / server / services / ami / trigger / cmContact / index.js
index c833611..7ef0785 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 _0x425d=['map','routeId','destcalleridnum','calleridnum','fax','createdAt','updatedAt','resolve','then','getContacts','isEmpty','length','[CM][%s][%s]\x20Contact\x20found:%s','uniqueid','[CM][%s][%s]\x20Multiple\x20contacts\x20found:[%s]','join','[CM][%s][%s]\x20Contact\x20not\x20found','data4','[CM][%s][%s]\x20Autocreate\x20enabled','firstName','calleridname','<unknown>','Unknown','destcalleridname','push','[CM][%s][%s]\x20Contact\x20created:%s','[CM][%s][%s]\x20Autocreate\x20disabled','format','user:%s','name','action','toLowerCase','lodash','ioredis','util','../../../../config/environment','../../../../config/logger','trigger','../../rpc/cmContact','redis','localhost','socket.io-emitter','info','[CM][%s][%s]','stringify','emit','exec','data1','data2','isNil','data5','xmd-contactid','ListId','data3','phone','$or'];(function(_0x553864,_0x10491f){var _0x418ded=function(_0x118f92){while(--_0x118f92){_0x553864['push'](_0x553864['shift']());}};_0x418ded(++_0x10491f);}(_0x425d,0x1e0));var _0xd425=function(_0x244fab,_0x134fb1){_0x244fab=_0x244fab-0x0;var _0x3dfe22=_0x425d[_0x244fab];return _0x3dfe22;};'use strict';var _=require(_0xd425('0x0'));var BPromise=require('bluebird');var Redis=require(_0xd425('0x1'));var util=require(_0xd425('0x2'));var config=require(_0xd425('0x3'));var logger=require(_0xd425('0x4'))(_0xd425('0x5'));var cmContactRpc=require(_0xd425('0x6'));config[_0xd425('0x7')]=_['defaults'](config[_0xd425('0x7')],{'host':_0xd425('0x8'),'port':0x18eb});var io=require(_0xd425('0x9'))(new Redis(config[_0xd425('0x7')]));function emit(_0x1d97d9,_0x1d2ed0,_0x50b061,_0xb6ba8e,_0x374c3d){logger[_0xd425('0xa')](_0xd425('0xb'),_0x1d97d9,_0x1d2ed0['id'],_0x50b061,_0xb6ba8e,JSON[_0xd425('0xc')](_0x374c3d));io['to'](_0x50b061)[_0xd425('0xd')](_0xb6ba8e,_0x374c3d);}exports[_0xd425('0xe')]=function(_0x1969ba,_0x3a7a01,_0x35a7f4,_0x3d2bcf){var _0x10d463,_0x26f6d2;var _0x448149={};var _0x179742=Number(_0x35a7f4[_0xd425('0xf')]);var _0x9bb611=_0x35a7f4[_0xd425('0x10')]?Boolean(Number(_0x35a7f4[_0xd425('0x10')])):![];var _0x18eafb;var _0x51263f=![];if(!_[_0xd425('0x11')](_0x35a7f4[_0xd425('0x12')])){if(_0x35a7f4[_0xd425('0x12')]=='1')_0x51263f=!![];}if(!_0x51263f){if(_0x3d2bcf['xmd-contactid']){_0x448149['id']=_0x3d2bcf[_0xd425('0x13')];}}if(!_0x448149['id']){_0x448149[_0xd425('0x14')]=_0x179742;_0x18eafb=_0x35a7f4[_0xd425('0x15')]&&_0x35a7f4[_0xd425('0x15')]!=='0'?_0x35a7f4[_0xd425('0x15')]['split'](','):[_0xd425('0x16')];_0x448149[_0xd425('0x17')]=_[_0xd425('0x18')](_0x18eafb,function(_0x5dda0c){var _0x5d6585={};_0x5d6585[_0x5dda0c]=_0x3d2bcf[_0xd425('0x19')]?_0x3d2bcf[_0xd425('0x1a')]:_0x3d2bcf[_0xd425('0x1b')];return _0x5d6585;});}var _0x1155bc=['id','firstName','lastName','phone','mobile',_0xd425('0x1c'),_0xd425('0x14'),_0xd425('0x1d'),'scheduledAt',_0xd425('0x1e')];var _0x7e982e=_['union'](_0x1155bc,_0x18eafb);BPromise[_0xd425('0x1f')]()[_0xd425('0x20')](cmContactRpc[_0xd425('0x21')]({'attributes':_0x7e982e,'where':_0x448149}))[_0xd425('0x20')](function(_0x3e93db){_0x26f6d2=_0x3e93db;if(!_[_0xd425('0x22')](_0x26f6d2)){if(_0x26f6d2[_0xd425('0x23')]===0x1){_0x10d463=_0x26f6d2[0x0];logger[_0xd425('0xa')](_0xd425('0x24'),_0x3d2bcf[_0xd425('0x25')],_0x3a7a01['id'],_0x10d463['id']);}else{logger[_0xd425('0xa')](_0xd425('0x26'),_0x3d2bcf['uniqueid'],_0x3a7a01['id'],_[_0xd425('0x18')](_0x26f6d2,'id')[_0xd425('0x27')](','));}return;}else{logger[_0xd425('0xa')](_0xd425('0x28'),_0x3d2bcf[_0xd425('0x25')],_0x3a7a01['id']);var _0x400dd7={'ListId':_0x179742};var _0x3c3402=_0x35a7f4['data4']&&_0x35a7f4[_0xd425('0x29')]!=='0'?_0x35a7f4[_0xd425('0x29')]:_0xd425('0x16');if(_0x9bb611){logger['info'](_0xd425('0x2a'),_0x3d2bcf[_0xd425('0x25')],_0x3a7a01['id']);_0x400dd7[_0x3c3402]=_[_0xd425('0x11')](_0x3d2bcf[_0xd425('0x19')])?_0x3d2bcf[_0xd425('0x1b')]:_0x3d2bcf[_0xd425('0x1a')];if(_[_0xd425('0x11')](_0x3d2bcf[_0xd425('0x19')])){_0x400dd7[_0xd425('0x2b')]=_0x3d2bcf[_0xd425('0x2c')]&&_0x3d2bcf['calleridname']!==_0xd425('0x2d')?_0x3d2bcf[_0xd425('0x2c')]:_0xd425('0x2e');}else{_0x400dd7[_0xd425('0x2b')]=_0x3d2bcf[_0xd425('0x2f')]&&_0x3d2bcf[_0xd425('0x2f')]!==_0xd425('0x2d')?_0x3d2bcf[_0xd425('0x2f')]:_0xd425('0x2e');}return BPromise[_0xd425('0x1f')]()[_0xd425('0x20')](cmContactRpc['createContact'](_0x400dd7))[_0xd425('0x20')](function(_0x2a2a9b){_0x10d463=_0x2a2a9b;_0x26f6d2[_0xd425('0x30')](_0x2a2a9b);if(_0x10d463){logger[_0xd425('0xa')](_0xd425('0x31'),_0x3d2bcf['uniqueid'],_0x3a7a01['id'],_0x10d463['id']);}return;});}else{logger[_0xd425('0xa')](_0xd425('0x32'),_0x3d2bcf['uniqueid'],_0x3a7a01['id']);_0x400dd7[_0x3c3402]=_['isNil'](_0x3d2bcf['routeId'])?_0x3d2bcf[_0xd425('0x1b')]:_0x3d2bcf[_0xd425('0x1a')];if(_[_0xd425('0x11')](_0x3d2bcf[_0xd425('0x19')])){_0x400dd7['firstName']=_0x3d2bcf[_0xd425('0x2c')]&&_0x3d2bcf[_0xd425('0x2c')]!==_0xd425('0x2d')?_0x3d2bcf[_0xd425('0x2c')]:_0xd425('0x2e');}else{_0x400dd7[_0xd425('0x2b')]=_0x3d2bcf[_0xd425('0x2f')]&&_0x3d2bcf['destcalleridname']!==_0xd425('0x2d')?_0x3d2bcf['destcalleridname']:_0xd425('0x2e');}_0x10d463=_0x400dd7;_0x26f6d2[_0xd425('0x30')](_0x400dd7);return;}}})[_0xd425('0x20')](function(){if(_0x1969ba){emit(_0x3d2bcf['uniqueid'],_0x3a7a01,util[_0xd425('0x33')](_0xd425('0x34'),_0x1969ba[_0xd425('0x35')]),util[_0xd425('0x33')]('trigger:%s',_0x35a7f4[_0xd425('0x36')][_0xd425('0x37')]()),{'evt':_['merge'](_0x3d2bcf,{'autoCreate':_0x9bb611}),'contact':_0x10d463===undefined?{}:_0x10d463,'contacts':_0x26f6d2['length']===0x0?undefined:_0x26f6d2});}});};
\ No newline at end of file