Built motion from commit (unavailable).|2.5.19
[motion2.git] / server / services / ami / trigger / cmContact / index.js
index c833611..5d9fab0 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 _0xc003=['redis','localhost','socket.io-emitter','info','[CM][%s][%s]','stringify','emit','exec','data1','data2','xmd-contactid','ListId','split','$or','map','calleridnum','firstName','lastName','mobile','fax','createdAt','scheduledAt','updatedAt','union','then','[CM][%s][%s]\x20Contact\x20found:%s','uniqueid','[CM][%s][%s]\x20Multiple\x20contacts\x20found:[%s]','join','data4','[CM][%s][%s]\x20Autocreate\x20enabled','isNil','routeId','destcalleridnum','<unknown>','calleridname','Unknown','destcalleridname','createContact','push','[CM][%s][%s]\x20Contact\x20created:%s','[CM][%s][%s]\x20Autocreate\x20disabled','format','user:%s','name','trigger:%s','action','toLowerCase','length','lodash','bluebird','ioredis','util','../../../../config/environment','../../../../config/logger','../../rpc/cmContact'];(function(_0x5f2c46,_0x20e8c1){var _0x3101e5=function(_0x1aa370){while(--_0x1aa370){_0x5f2c46['push'](_0x5f2c46['shift']());}};_0x3101e5(++_0x20e8c1);}(_0xc003,0x69));var _0x3c00=function(_0x4c29d3,_0x2af4af){_0x4c29d3=_0x4c29d3-0x0;var _0x2c35b4=_0xc003[_0x4c29d3];return _0x2c35b4;};'use strict';var _=require(_0x3c00('0x0'));var BPromise=require(_0x3c00('0x1'));var Redis=require(_0x3c00('0x2'));var util=require(_0x3c00('0x3'));var config=require(_0x3c00('0x4'));var logger=require(_0x3c00('0x5'))('trigger');var cmContactRpc=require(_0x3c00('0x6'));config[_0x3c00('0x7')]=_['defaults'](config[_0x3c00('0x7')],{'host':_0x3c00('0x8'),'port':0x18eb});var io=require(_0x3c00('0x9'))(new Redis(config[_0x3c00('0x7')]));function emit(_0x52a7bc,_0x54c0a5,_0x46465c,_0x1df5b4,_0x441479){logger[_0x3c00('0xa')](_0x3c00('0xb'),_0x52a7bc,_0x54c0a5['id'],_0x46465c,_0x1df5b4,JSON[_0x3c00('0xc')](_0x441479));io['to'](_0x46465c)[_0x3c00('0xd')](_0x1df5b4,_0x441479);}exports[_0x3c00('0xe')]=function(_0x5422fa,_0x20c5a3,_0x57c0c8,_0x65ee4e){var _0x9d1c08,_0x344ed9;var _0x14c9e4={};var _0x4e5388=Number(_0x57c0c8[_0x3c00('0xf')]);var _0x56e99d=_0x57c0c8['data2']?Boolean(Number(_0x57c0c8[_0x3c00('0x10')])):![];var _0x14dbb3;if(_0x65ee4e[_0x3c00('0x11')]){_0x14c9e4['id']=_0x65ee4e[_0x3c00('0x11')];}if(!_0x14c9e4['id']){_0x14c9e4[_0x3c00('0x12')]=_0x4e5388;_0x14dbb3=_0x57c0c8['data3']&&_0x57c0c8['data3']!=='0'?_0x57c0c8['data3'][_0x3c00('0x13')](','):['phone'];_0x14c9e4[_0x3c00('0x14')]=_[_0x3c00('0x15')](_0x14dbb3,function(_0x5651cd){var _0x407484={};_0x407484[_0x5651cd]=_0x65ee4e['routeId']?_0x65ee4e['destcalleridnum']:_0x65ee4e[_0x3c00('0x16')];return _0x407484;});}var _0x15dea1=['id',_0x3c00('0x17'),_0x3c00('0x18'),'phone',_0x3c00('0x19'),_0x3c00('0x1a'),'ListId',_0x3c00('0x1b'),_0x3c00('0x1c'),_0x3c00('0x1d')];var _0x1bf9e1=_[_0x3c00('0x1e')](_0x15dea1,_0x14dbb3);BPromise['resolve']()[_0x3c00('0x1f')](cmContactRpc['getContacts']({'attributes':_0x1bf9e1,'where':_0x14c9e4}))['then'](function(_0x4208f1){_0x344ed9=_0x4208f1;if(!_['isEmpty'](_0x344ed9)){if(_0x344ed9['length']===0x1){_0x9d1c08=_0x344ed9[0x0];logger[_0x3c00('0xa')](_0x3c00('0x20'),_0x65ee4e[_0x3c00('0x21')],_0x20c5a3['id'],_0x9d1c08['id']);}else{logger[_0x3c00('0xa')](_0x3c00('0x22'),_0x65ee4e['uniqueid'],_0x20c5a3['id'],_['map'](_0x344ed9,'id')[_0x3c00('0x23')](','));}return;}else{logger[_0x3c00('0xa')]('[CM][%s][%s]\x20Contact\x20not\x20found',_0x65ee4e[_0x3c00('0x21')],_0x20c5a3['id']);var _0x4a058b={'ListId':_0x4e5388};var _0x227f7c=_0x57c0c8[_0x3c00('0x24')]&&_0x57c0c8['data4']!=='0'?_0x57c0c8['data4']:'phone';if(_0x56e99d){logger[_0x3c00('0xa')](_0x3c00('0x25'),_0x65ee4e['uniqueid'],_0x20c5a3['id']);_0x4a058b[_0x227f7c]=_[_0x3c00('0x26')](_0x65ee4e[_0x3c00('0x27')])?_0x65ee4e[_0x3c00('0x16')]:_0x65ee4e[_0x3c00('0x28')];if(_[_0x3c00('0x26')](_0x65ee4e[_0x3c00('0x27')])){_0x4a058b['firstName']=_0x65ee4e['calleridname']&&_0x65ee4e['calleridname']!==_0x3c00('0x29')?_0x65ee4e[_0x3c00('0x2a')]:_0x3c00('0x2b');}else{_0x4a058b[_0x3c00('0x17')]=_0x65ee4e['destcalleridname']&&_0x65ee4e[_0x3c00('0x2c')]!==_0x3c00('0x29')?_0x65ee4e['destcalleridname']:'Unknown';}return BPromise['resolve']()[_0x3c00('0x1f')](cmContactRpc[_0x3c00('0x2d')](_0x4a058b))[_0x3c00('0x1f')](function(_0xd51a39){_0x9d1c08=_0xd51a39;_0x344ed9[_0x3c00('0x2e')](_0xd51a39);if(_0x9d1c08){logger['info'](_0x3c00('0x2f'),_0x65ee4e[_0x3c00('0x21')],_0x20c5a3['id'],_0x9d1c08['id']);}return;});}else{logger[_0x3c00('0xa')](_0x3c00('0x30'),_0x65ee4e['uniqueid'],_0x20c5a3['id']);_0x4a058b[_0x227f7c]=_[_0x3c00('0x26')](_0x65ee4e[_0x3c00('0x27')])?_0x65ee4e['calleridnum']:_0x65ee4e[_0x3c00('0x28')];if(_[_0x3c00('0x26')](_0x65ee4e['routeId'])){_0x4a058b[_0x3c00('0x17')]=_0x65ee4e[_0x3c00('0x2a')]&&_0x65ee4e[_0x3c00('0x2a')]!==_0x3c00('0x29')?_0x65ee4e[_0x3c00('0x2a')]:'Unknown';}else{_0x4a058b[_0x3c00('0x17')]=_0x65ee4e[_0x3c00('0x2c')]&&_0x65ee4e[_0x3c00('0x2c')]!==_0x3c00('0x29')?_0x65ee4e['destcalleridname']:_0x3c00('0x2b');}_0x9d1c08=_0x4a058b;_0x344ed9['push'](_0x4a058b);return;}}})[_0x3c00('0x1f')](function(){if(_0x5422fa){emit(_0x65ee4e[_0x3c00('0x21')],_0x20c5a3,util[_0x3c00('0x31')](_0x3c00('0x32'),_0x5422fa[_0x3c00('0x33')]),util['format'](_0x3c00('0x34'),_0x57c0c8[_0x3c00('0x35')][_0x3c00('0x36')]()),{'evt':_['merge'](_0x65ee4e,{'autoCreate':_0x56e99d}),'contact':_0x9d1c08===undefined?{}:_0x9d1c08,'contacts':_0x344ed9[_0x3c00('0x37')]===0x0?undefined:_0x344ed9});}});};
\ No newline at end of file