Built motion from commit c116dc8b.|2.6.30
[motion2.git] / server / services / ami / trigger / cmContact / index.js
index c833611..f9f8b51 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 _0xc713=['isNil','data5','xmd-contactid','ListId','data3','split','phone','map','destcalleridnum','calleridnum','routeId','firstName','createdAt','scheduledAt','resolve','getContacts','then','isEmpty','[CM][%s][%s]\x20Contact\x20found:%s','uniqueid','[CM][%s][%s]\x20Multiple\x20contacts\x20found:[%s]','data4','<unknown>','calleridname','Unknown','destcalleridname','createContact','push','[CM][%s][%s]\x20Contact\x20created:%s','format','user:%s','name','trigger:%s','action','toLowerCase','length','lodash','bluebird','ioredis','../../../../config/environment','../../../../config/logger','trigger','../../rpc/cmContact','redis','socket.io-emitter','info','[CM][%s][%s]','stringify','exec','data2'];(function(_0x374fab,_0x127953){var _0x470e8e=function(_0x52c489){while(--_0x52c489){_0x374fab['push'](_0x374fab['shift']());}};_0x470e8e(++_0x127953);}(_0xc713,0xec));var _0x3c71=function(_0x5f073a,_0xc5ac31){_0x5f073a=_0x5f073a-0x0;var _0x3c70a9=_0xc713[_0x5f073a];return _0x3c70a9;};'use strict';var _=require(_0x3c71('0x0'));var BPromise=require(_0x3c71('0x1'));var Redis=require(_0x3c71('0x2'));var util=require('util');var config=require(_0x3c71('0x3'));var logger=require(_0x3c71('0x4'))(_0x3c71('0x5'));var cmContactRpc=require(_0x3c71('0x6'));config[_0x3c71('0x7')]=_['defaults'](config['redis'],{'host':'localhost','port':0x18eb});var io=require(_0x3c71('0x8'))(new Redis(config['redis']));function emit(_0xe748f2,_0x4d7888,_0xce392b,_0x43a43f,_0x1bb2f8){logger[_0x3c71('0x9')](_0x3c71('0xa'),_0xe748f2,_0x4d7888['id'],_0xce392b,_0x43a43f,JSON[_0x3c71('0xb')](_0x1bb2f8));io['to'](_0xce392b)['emit'](_0x43a43f,_0x1bb2f8);}exports[_0x3c71('0xc')]=function(_0x34c918,_0x21bd38,_0x2cc25a,_0x33b157){var _0x1a2e5a,_0x1bf8f3;var _0x2b582f={};var _0x56ed4e;var _0x723870=Number(_0x2cc25a['data1']);var _0x54ace2=_0x2cc25a['data2']?Boolean(Number(_0x2cc25a[_0x3c71('0xd')])):![];var _0x4cdc84;var _0xa915b1=![];if(!_[_0x3c71('0xe')](_0x2cc25a[_0x3c71('0xf')])){if(_0x2cc25a[_0x3c71('0xf')]=='1')_0xa915b1=!![];}if(!_0xa915b1){if(_0x33b157['xmd-contactid']){_0x2b582f['id']=_0x33b157[_0x3c71('0x10')];}}if(!_0x2b582f['id']){_0x2b582f[_0x3c71('0x11')]=_0x723870;_0x4cdc84=_0x2cc25a['data3']&&_0x2cc25a[_0x3c71('0x12')]!=='0'?_0x2cc25a['data3'][_0x3c71('0x13')](','):[_0x3c71('0x14')];_0x2b582f['$or']=_[_0x3c71('0x15')](_0x4cdc84,function(_0x1473ec){var _0x4e71bc={};_0x4e71bc[_0x1473ec]=_0x33b157['routeId']?_0x33b157[_0x3c71('0x16')]:_0x33b157[_0x3c71('0x17')];return _0x4e71bc;});_0x56ed4e=_0x33b157[_0x3c71('0x18')]?_0x33b157[_0x3c71('0x16')]:_0x33b157[_0x3c71('0x17')];}var _0x2ee46f=['id',_0x3c71('0x19'),'lastName',_0x3c71('0x14'),'mobile','fax','ListId',_0x3c71('0x1a'),_0x3c71('0x1b'),'updatedAt'];var _0x333754=_['union'](_0x2ee46f,_0x4cdc84);BPromise[_0x3c71('0x1c')]()['then'](cmContactRpc[_0x3c71('0x1d')]({'attributes':_0x333754,'where':_0x2b582f,'phone':_0x56ed4e}))[_0x3c71('0x1e')](function(_0x394ca7){_0x1bf8f3=_0x394ca7;if(!_[_0x3c71('0x1f')](_0x1bf8f3)){if(_0x1bf8f3['length']===0x1){_0x1a2e5a=_0x1bf8f3[0x0];logger[_0x3c71('0x9')](_0x3c71('0x20'),_0x33b157[_0x3c71('0x21')],_0x21bd38['id'],_0x1a2e5a['id']);}else{logger[_0x3c71('0x9')](_0x3c71('0x22'),_0x33b157[_0x3c71('0x21')],_0x21bd38['id'],_[_0x3c71('0x15')](_0x1bf8f3,'id')['join'](','));}return;}else{logger[_0x3c71('0x9')]('[CM][%s][%s]\x20Contact\x20not\x20found',_0x33b157[_0x3c71('0x21')],_0x21bd38['id']);var _0x4f60f0={'ListId':_0x723870};var _0x15f33b=_0x2cc25a['data4']&&_0x2cc25a[_0x3c71('0x23')]!=='0'?_0x2cc25a['data4']:_0x3c71('0x14');if(_0x54ace2){logger['info']('[CM][%s][%s]\x20Autocreate\x20enabled',_0x33b157[_0x3c71('0x21')],_0x21bd38['id']);_0x4f60f0[_0x15f33b]=_[_0x3c71('0xe')](_0x33b157[_0x3c71('0x18')])?_0x33b157[_0x3c71('0x17')]:_0x33b157[_0x3c71('0x16')];if(_['isNil'](_0x33b157[_0x3c71('0x18')])){_0x4f60f0['firstName']=_0x33b157['calleridname']&&_0x33b157['calleridname']!==_0x3c71('0x24')?_0x33b157[_0x3c71('0x25')]:_0x3c71('0x26');}else{_0x4f60f0[_0x3c71('0x19')]=_0x33b157[_0x3c71('0x27')]&&_0x33b157[_0x3c71('0x27')]!==_0x3c71('0x24')?_0x33b157[_0x3c71('0x27')]:_0x3c71('0x26');}return BPromise[_0x3c71('0x1c')]()[_0x3c71('0x1e')](cmContactRpc[_0x3c71('0x28')](_0x4f60f0))[_0x3c71('0x1e')](function(_0xc2171b){_0x1a2e5a=_0xc2171b;_0x1bf8f3[_0x3c71('0x29')](_0xc2171b);if(_0x1a2e5a){logger[_0x3c71('0x9')](_0x3c71('0x2a'),_0x33b157[_0x3c71('0x21')],_0x21bd38['id'],_0x1a2e5a['id']);}return;});}else{logger[_0x3c71('0x9')]('[CM][%s][%s]\x20Autocreate\x20disabled',_0x33b157[_0x3c71('0x21')],_0x21bd38['id']);_0x4f60f0[_0x15f33b]=_[_0x3c71('0xe')](_0x33b157[_0x3c71('0x18')])?_0x33b157[_0x3c71('0x17')]:_0x33b157['destcalleridnum'];if(_[_0x3c71('0xe')](_0x33b157[_0x3c71('0x18')])){_0x4f60f0[_0x3c71('0x19')]=_0x33b157[_0x3c71('0x25')]&&_0x33b157[_0x3c71('0x25')]!==_0x3c71('0x24')?_0x33b157[_0x3c71('0x25')]:_0x3c71('0x26');}else{_0x4f60f0[_0x3c71('0x19')]=_0x33b157['destcalleridname']&&_0x33b157[_0x3c71('0x27')]!==_0x3c71('0x24')?_0x33b157['destcalleridname']:_0x3c71('0x26');}_0x1a2e5a=_0x4f60f0;_0x1bf8f3['push'](_0x4f60f0);return;}}})[_0x3c71('0x1e')](function(){if(_0x34c918){emit(_0x33b157[_0x3c71('0x21')],_0x21bd38,util[_0x3c71('0x2b')](_0x3c71('0x2c'),_0x34c918[_0x3c71('0x2d')]),util[_0x3c71('0x2b')](_0x3c71('0x2e'),_0x2cc25a[_0x3c71('0x2f')][_0x3c71('0x30')]()),{'evt':_['merge'](_0x33b157,{'autoCreate':_0x54ace2}),'contact':_0x1a2e5a===undefined?{}:_0x1a2e5a,'contacts':_0x1bf8f3[_0x3c71('0x31')]===0x0?undefined:_0x1bf8f3});}});};
\ No newline at end of file