9142ee804f31e041ee13621709e741898d0b8866
[motion2.git] / server / api / realtime / realtime.controller.js
1 // *************************************************************************
2 // *                                                                       *
3 // * xCALLY Motion -  The Omnichannel Contact Center                       *
4 // * Copyright (c) Xenialab s.r.l. All Rights Reserved                     *
5 // *                                                                       *
6 // *************************************************************************
7 // *                                                                       *
8 // * Email: info@xcally.com                                                *
9 // * Website: https://www.xcally.com                                       *
10 // *                                                                       *
11 // *************************************************************************
12 // *                                                                       *
13 // * The SOFTWARE PRODUCT is protected by copyright laws and international *
14 // * copyright treaties, as well as other intellectual property laws and   *
15 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                         *
16 // *                                                                       *
17 // *************************************************************************
18 var _0x5d58=['erlangCalls','erlangAbandonmentRate','erlangBusyFactor','dialPredictiveIntervalMinThreshold','predictiveIntervalAvailable','predictiveIntervalAnsweredCalls','predictiveIntervalDroppedCallsCallersExit','predictiveIntervalAvgHoldtime','map','get','loggedInDb','busy','find','pick','filter','length','some','internal','toString','UserId','accountcode','online','paused','User','startCase','Queue','Pause','findAll','QueueId','idle','unknown','unavailable','ringing','chatPause','faxPause','voicePause','whatsappPause','every','voiceStatus','pause','chatStatus','faxStatus','mailStatus','openchannelStatus','smsStatus','whatsappStatus','*pause','getAgents','userpic','pauseType','lastPauseAt','address','smsPause','openchannelCapacity','mailCapacity','smsCapacity','chatCurrentCapacity','openchannelCurrentCapacity','mailCurrentCapacity','whatsappCurrentCapacity','faxCurrentCapacity','chatStatusTime','openchannelStatusTime','mailStatusTime','whatsappStatusTime','faxStatusTime','queue','screenrecording','phoneBarEnableAutomaticScreenRecording','routealias','openchannelPause','resolve','rawAttributes','fieldName','type','role','agent','query','getOptions','raw','user','nolimit','UserProfile','findAndCountAll','count','rows','globalStatus','globalStatusFilter','pauseTypeFilter','getQueues','mail','chat','sms','openchannel','fax','whatsapp','channel','includes','toLowerCase','Invalid\x20channel','userProfileId','QueueCampaigns','Queues','getResources','all','api','../../mysqldb','http','client','undefined','limit','offset','status','set','Content-Range','json','name','send','request','then','error','Unable\x20to\x20retrieve\x20RPC\x20agents\x20(AMI)','result','Agents','Unable\x20to\x20retrieve\x20RPC\x20agents\x20(Routing)','merge','catch','voice','Unable\x20to\x20retrieve\x20RPC\x20%s\x20queues','VoiceQueuesChannels','Unable\x20to\x20retrieve\x20voice\x20queues\x20channels','loggedIn','available','waiting','talking','outbound','push','pTalking','originated','dialMethod','Trunk','startPredictive','startProgressive'];(function(_0x44745f,_0x432d7e){var _0xac7f24=function(_0x53038f){while(--_0x53038f){_0x44745f['push'](_0x44745f['shift']());}};_0xac7f24(++_0x432d7e);}(_0x5d58,0x187));var _0x85d5=function(_0x466aa3,_0x1ee653){_0x466aa3=_0x466aa3-0x0;var _0x30fbf2=_0x5d58[_0x466aa3];return _0x30fbf2;};'use strict';var util=require('util');var _=require('lodash');var jayson=require('jayson/promise');var qs=require('../../components/parsers/qs');var logger=require('../../config/logger')(_0x85d5('0x0'));var db=require(_0x85d5('0x1'))['db'];var amiClient=jayson['client'][_0x85d5('0x2')]({'port':0x232a});var routingClient=jayson[_0x85d5('0x3')]['http']({'port':0x232c});function respondWithFilteredResult(_0x1eb211,_0x2d457a){return function(_0x578fad){if(_0x578fad){var _0x46e7b4=typeof _0x2d457a['offset']===_0x85d5('0x4')&&typeof _0x2d457a[_0x85d5('0x5')]==='undefined';var _0x4326a8=_0x578fad['count'];var _0x1098be=_0x46e7b4?0x0:_0x2d457a[_0x85d5('0x6')];var _0x258f0c=_0x46e7b4?_0x578fad['count']:_0x2d457a['offset']+_0x2d457a['limit'];var _0x1a2b82;if(_0x258f0c>=_0x4326a8){_0x258f0c=_0x4326a8;_0x1a2b82=0xc8;}else{_0x1a2b82=0xce;}_0x1eb211[_0x85d5('0x7')](_0x1a2b82);return _0x1eb211[_0x85d5('0x8')](_0x85d5('0x9'),_0x1098be+'-'+_0x258f0c+'/'+_0x4326a8)[_0x85d5('0xa')](_0x578fad);}return null;};}function handleError(_0x18331f,_0x31409d){_0x31409d=_0x31409d||0x1f4;return function(_0x5897af){logger['error'](_0x5897af['stack']);if(_0x5897af[_0x85d5('0xb')]){delete _0x5897af[_0x85d5('0xb')];}_0x18331f[_0x85d5('0x7')](_0x31409d)[_0x85d5('0xc')](_0x5897af);};}function getRealtimeAgents(){return new Promise(function(_0x18a20c,_0x44f702){return amiClient[_0x85d5('0xd')]('Agents',{})[_0x85d5('0xe')](function(_0x2d7c95){if(_0x2d7c95[_0x85d5('0xf')])throw new Error(_0x85d5('0x10'));var _0x19f7d5=_0x2d7c95[_0x85d5('0x11')];return routingClient[_0x85d5('0xd')](_0x85d5('0x12'),{})[_0x85d5('0xe')](function(_0x17acb0){if(_0x17acb0[_0x85d5('0xf')])throw new Error(_0x85d5('0x13'));var _0x34b981=_0x17acb0[_0x85d5('0x11')];return _0x18a20c(_[_0x85d5('0x14')]({},_0x19f7d5,_0x34b981));});})[_0x85d5('0x15')](function(_0x54e991){_0x44f702(_0x54e991);});});}function getRealtimeQueues(_0x1d6134,_0x53bd11){return new Promise(function(_0xc56ad1,_0x133fa9){var _0x5f5755=_0x53bd11===_0x85d5('0x16')?amiClient:routingClient;return _0x5f5755[_0x85d5('0xd')](_['startCase'](_0x53bd11)+'Queues',_0x1d6134)[_0x85d5('0xe')](function(_0x5a1b9a){if(_0x5a1b9a[_0x85d5('0xf')])throw new Error(util['format'](_0x85d5('0x17'),_0x53bd11));return _0xc56ad1(_0x5a1b9a[_0x85d5('0x11')]);})['catch'](function(_0x4e11c4){_0x133fa9(_0x4e11c4);});});}function getRealtimeVoiceQueueChannels(){return new Promise(function(_0x4da71b,_0x5f0268){return amiClient[_0x85d5('0xd')](_0x85d5('0x18'),{})[_0x85d5('0xe')](function(_0x466bbd){if(_0x466bbd[_0x85d5('0xf')])throw new Error(_0x85d5('0x19'));return _0x4da71b(_0x466bbd['result']);})[_0x85d5('0x15')](function(_0x4f8c66){_0x5f0268(_0x4f8c66);});});}function initializeQueues(_0x1b3fae,_0x1ed432,_0x233ccd,_0x5cc2cf){var _0x2d0497=[_0x85d5('0x1a'),_0x85d5('0x1b'),_0x85d5('0x1c'),_0x85d5('0x1d'),'paused'];if(_0x233ccd===_0x85d5('0x16')&&_0x5cc2cf===_0x85d5('0x1e')){_0x2d0497[_0x85d5('0x1f')](_0x85d5('0x20'),_0x85d5('0x21'),'message','dialActive',_0x85d5('0x22'),_0x85d5('0x23'),_0x85d5('0x24'),_0x85d5('0x25'),_0x85d5('0x26'),'erlangCallToSecond',_0x85d5('0x27'),_0x85d5('0x28'),'dialPredictiveInterval','dialPredictiveIntervalMaxThreshold',_0x85d5('0x29'),_0x85d5('0x2a'),'predictiveIntervalTotalCalls',_0x85d5('0x2b'),'predictiveIntervalDroppedCallsTimeout',_0x85d5('0x2c'),_0x85d5('0x2d'),'predictiveIntervalAvgTalktime');}return _0x1b3fae[_0x85d5('0x2e')](function(_0x10449e){var _0x22e213=_0x10449e[_0x85d5('0x2f')]({'plain':!![]});_0x22e213['agents']=[];_0x22e213['paused']=0x0;_0x22e213[_0x85d5('0x30')]=0x0;_0x22e213[_0x85d5('0x1a')]=0x0;_0x22e213[_0x85d5('0x1b')]=0x0;_0x22e213[_0x85d5('0x1c')]=0x0;if(_0x233ccd===_0x85d5('0x16')){_0x22e213[_0x85d5('0x1d')]=0x0;_0x22e213[_0x85d5('0x31')]=0x0;if(_0x5cc2cf===_0x85d5('0x1e')){_0x22e213[_0x85d5('0x20')]=0x0;_0x22e213['originated']=0x0;}}var _0x5a15fd=_[_0x85d5('0x32')](_0x1ed432,['id',_0x22e213['id']]);if(_0x5a15fd)_[_0x85d5('0x14')](_0x22e213,_[_0x85d5('0x33')](_0x5a15fd,_0x2d0497));return _0x22e213;});}function updateAgentVoiceStatus(_0x416766,_0x36143d,_0x2a0ff0){var _0x118a02=_[_0x85d5('0x34')](_0x2a0ff0,['queue',_0x36143d[_0x85d5('0xb')]]);if(_0x118a02[_0x85d5('0x35')]===0x0)return _0x416766[_0x85d5('0x31')]=!![];if(_[_0x85d5('0x36')](_0x118a02,['connectedlinenum',_0x416766[_0x85d5('0x37')][_0x85d5('0x38')]()]))return _0x416766[_0x85d5('0x1d')]=!![];if(!_0x416766[_0x85d5('0x1d')])return _0x416766['busy']=!![];}function getVoiceQueueAgents(_0x34caed,_0x5bb970,_0x484a4d,_0x17571a){var _0x5b413d=_[_0x85d5('0x32')](_0x5bb970,['id',_0x34caed['id']]);if(!_0x5b413d)return _0x34caed;return _0x5b413d['getMembers']({'raw':!![]})['then'](function(_0x1d17e9){for(var _0x28e93b=0x0;_0x28e93b<_0x1d17e9[_0x85d5('0x35')];_0x28e93b++){var _0x1beffc=_[_0x85d5('0x32')](_0x484a4d,['id',_0x1d17e9[_0x28e93b]['UserId']]);if(!_0x1beffc){_0x1beffc={'id':_0x1d17e9[_0x28e93b]['UserId'],'name':_0x1d17e9[_0x28e93b][_0x85d5('0x39')],'accountcode':'','online':![]};}var _0x173717={'id':_0x1beffc['id'],'name':_0x1beffc[_0x85d5('0xb')],'internal':_0x1beffc[_0x85d5('0x3a')],'online':Boolean(_0x1beffc[_0x85d5('0x3b')]),'paused':Boolean(_0x1d17e9[_0x28e93b][_0x85d5('0x3c')])};if(_0x1beffc['voiceStatus']==='talking')updateAgentVoiceStatus(_0x173717,_0x34caed,_0x17571a);if(_0x173717[_0x85d5('0x3b')])_0x34caed['loggedInDb']++;if(_0x173717[_0x85d5('0x31')])_0x34caed[_0x85d5('0x31')]++;if(_0x173717[_0x85d5('0x3c')]&&!_0x173717[_0x85d5('0x31')]&&!_0x173717[_0x85d5('0x1d')])_0x34caed['paused']++;_0x34caed['agents'][_0x85d5('0x1f')](_0x173717);}return _0x34caed;});}function getQueueAgents(_0x3325aa,_0x1f699e,_0x45a6cc){var _0x2fe3e0=_0x85d5('0x3d')+_[_0x85d5('0x3e')](_0x45a6cc)+_0x85d5('0x3f');var _0x43f4c4=_0x45a6cc+_0x85d5('0x40');return db[_0x2fe3e0][_0x85d5('0x41')]({'where':{[_[_0x85d5('0x3e')](_0x45a6cc)+_0x85d5('0x42')]:_0x3325aa['id']},'raw':!![]})[_0x85d5('0xe')](function(_0x344927){for(var _0x26fc66=0x0;_0x26fc66<_0x344927[_0x85d5('0x35')];_0x26fc66++){var _0x54e91b=_['find'](_0x1f699e,['id',_0x344927[_0x26fc66][_0x85d5('0x39')]]);if(!_0x54e91b){_0x54e91b={'id':_0x344927[_0x26fc66][_0x85d5('0x39')],'name':_0x344927[_0x26fc66][_0x85d5('0x39')],'online':![],['pauseField']:![]};}var _0x22cffd={'id':_0x54e91b['id'],'name':_0x54e91b[_0x85d5('0xb')],'online':Boolean(_0x54e91b[_0x85d5('0x3b')]),'paused':Boolean(_0x54e91b[_0x43f4c4])};if(_0x22cffd['online'])_0x3325aa[_0x85d5('0x30')]++;_0x3325aa['agents']['push'](_0x22cffd);}return _0x3325aa;});}function isIdle(_0x1cc44b){return _0x1cc44b===_0x85d5('0x43')||_0x1cc44b===_0x85d5('0x44')||_0x1cc44b===_0x85d5('0x45')||_0x1cc44b===_0x85d5('0x46')||_['isNil'](_0x1cc44b);}function isAgentPaused(_0x26adc5,_0x4d3e06){var _0x1f2ef9=[_0x26adc5[_0x85d5('0x47')],_0x26adc5[_0x85d5('0x48')],_0x26adc5['mailPause'],_0x26adc5['openchannelPause'],_0x26adc5['smsPause'],_0x26adc5[_0x85d5('0x49')],_0x26adc5[_0x85d5('0x4a')]];if(!_0x4d3e06)return _[_0x85d5('0x4b')](_0x1f2ef9);var _0x520d66=_['filter'](_0x1f2ef9);return _0x520d66[_0x85d5('0x35')]>0x0&&_0x520d66[_0x85d5('0x35')]<_0x1f2ef9[_0x85d5('0x35')]?!![]:![];}function isAgentIdle(_0x288b56){if(_0x288b56['voiceStatus']!==_0x85d5('0x43')&&_0x288b56[_0x85d5('0x49')]){_0x288b56[_0x85d5('0x4c')]=_0x85d5('0x4d');return![];}return _[_0x85d5('0x4b')]([_0x288b56[_0x85d5('0x4e')],_0x288b56[_0x85d5('0x4f')],_0x288b56[_0x85d5('0x50')],_0x288b56[_0x85d5('0x51')],_0x288b56[_0x85d5('0x52')],_0x288b56[_0x85d5('0x4c')],_0x288b56[_0x85d5('0x53')]],isIdle);}function getAgentStatus(_0x408b6a){var _0x2eb083=_0x85d5('0x44');if(isAgentPaused(_0x408b6a))_0x2eb083='pause';else if(isAgentPaused(_0x408b6a,!![]))_0x2eb083=_0x85d5('0x54');else if(isAgentIdle(_0x408b6a))_0x2eb083=_0x85d5('0x43');else _0x2eb083=_0x85d5('0x31');return _0x2eb083;}exports[_0x85d5('0x55')]=function(_0x548b37,_0x32cd99){var _0x5ef026={'count':0x0,'rows':[]},_0xf9ba48={},_0x363aeb,_0x2755cc,_0x261007=[_0x85d5('0x56'),'online','lastLoginAt','lastPauseAt',_0x85d5('0x57'),_0x85d5('0x58'),_0x85d5('0x37'),_0x85d5('0x59'),_0x85d5('0x47'),'openchannelPause','mailPause',_0x85d5('0x5a'),_0x85d5('0x4a'),_0x85d5('0x48'),_0x85d5('0x49'),'chatCapacity',_0x85d5('0x5b'),_0x85d5('0x5c'),_0x85d5('0x5d'),'whatsappCapacity','faxCapacity',_0x85d5('0x5e'),_0x85d5('0x5f'),_0x85d5('0x60'),'smsCurrentCapacity',_0x85d5('0x61'),_0x85d5('0x62'),_0x85d5('0x4e'),_0x85d5('0x51'),'mailStatus',_0x85d5('0x52'),_0x85d5('0x53'),_0x85d5('0x4f'),'voiceStatus',_0x85d5('0x63'),_0x85d5('0x64'),_0x85d5('0x65'),'smsStatusTime',_0x85d5('0x66'),_0x85d5('0x67'),'voiceStatusTime',_0x85d5('0x68'),'destconnectedlinenum',_0x85d5('0x69'),'phoneBarEnableScreenRecordingByAgent',_0x85d5('0x6a'),_0x85d5('0x6b')],_0x490d3a=[_0x85d5('0x47'),_0x85d5('0x6c'),'mailPause',_0x85d5('0x5a'),_0x85d5('0x4a'),_0x85d5('0x48'),_0x85d5('0x49'),_0x85d5('0x3b')];Promise[_0x85d5('0x6d')]()[_0x85d5('0xe')](function(){var _0x390c3a=_['map'](db['User'][_0x85d5('0x6e')],function(_0x5e326a){return{'name':_0x5e326a[_0x85d5('0x6f')],'type':_0x5e326a[_0x85d5('0x70')]['key']};});_0x548b37['query'][_0x85d5('0x71')]=_0x85d5('0x72');_0x548b37[_0x85d5('0x73')]['online']=!![];_0xf9ba48=qs[_0x85d5('0x74')](_0x390c3a,_0x548b37);_0xf9ba48[_0x85d5('0x75')]=!![];if(_0x548b37[_0x85d5('0x76')][_0x85d5('0x71')]==='user'){var _0x51f429={'params':{'id':_0x548b37[_0x85d5('0x76')]['userProfileId']},'query':{'section':'Agents','role':_0x85d5('0x72'),'online':!![],'nolimit':_0x548b37[_0x85d5('0x73')][_0x85d5('0x77')],'sort':_0x548b37['query']['sort'],'filter':_0x548b37[_0x85d5('0x73')][_0x85d5('0x34')],'raw':!![]}};return db[_0x85d5('0x78')]['getResources'](_0x51f429);}return db[_0x85d5('0x3d')][_0x85d5('0x79')](_0xf9ba48);})[_0x85d5('0xe')](function(_0x3e7e89){_0x5ef026[_0x85d5('0x7a')]=_0x3e7e89[_0x85d5('0x7a')];_0x363aeb=_0x3e7e89[_0x85d5('0x7b')];return getRealtimeAgents();})[_0x85d5('0xe')](function(_0x4f80dd){_0x2755cc=_0x4f80dd['rows'];return _0x363aeb[_0x85d5('0x2e')](function(_0x176632){var _0x167918=_['find'](_0x2755cc,['id',_0x176632['id']]);if(_0x167918)_[_0x85d5('0x14')](_0x176632,_[_0x85d5('0x33')](_['omit'](_0x167918,_0x490d3a),_0x261007));_0x176632[_0x85d5('0x7c')]=getAgentStatus(_0x176632);return _0x176632;});})[_0x85d5('0xe')](function(_0x39bcea){if(_0x548b37[_0x85d5('0x73')][_0x85d5('0x7d')]){var _0x4bda2b=_[_0x85d5('0x34')](_0x39bcea,[_0x85d5('0x7c'),_0x548b37[_0x85d5('0x73')][_0x85d5('0x7d')]]);if(_0x548b37[_0x85d5('0x73')]['pauseTypeFilter']){_0x4bda2b=_[_0x85d5('0x34')](_0x4bda2b,[_0x85d5('0x57'),_0x548b37[_0x85d5('0x73')][_0x85d5('0x7e')]]);}}_0x5ef026[_0x85d5('0x7b')]=_0x4bda2b||_0x39bcea;return _0x5ef026;})[_0x85d5('0xe')](respondWithFilteredResult(_0x32cd99,_0xf9ba48))[_0x85d5('0x15')](handleError(_0x32cd99,null));};exports[_0x85d5('0x7f')]=function(_0x3166ce,_0x2ed09d){var _0x59b3d8=[_0x85d5('0x80'),_0x85d5('0x81'),_0x85d5('0x82'),_0x85d5('0x83'),_0x85d5('0x84'),_0x85d5('0x85'),'voice'];var _0x3da8b0={'count':0x0,'rows':[]},_0x55f93a={},_0x488326,_0x296d6e,_0x1d65f9,_0x355187,_0x140e06;Promise[_0x85d5('0x6d')]()[_0x85d5('0xe')](function(){if(_0x3166ce[_0x85d5('0x73')][_0x85d5('0x86')]){if(!_[_0x85d5('0x87')](_0x59b3d8,_0x3166ce['query'][_0x85d5('0x86')][_0x85d5('0x88')]()))throw new Error(_0x85d5('0x89'));_0x488326=_0x3166ce[_0x85d5('0x73')][_0x85d5('0x86')][_0x85d5('0x88')]();}var _0x27a6f4=_[_0x85d5('0x3e')](_0x488326)+_0x85d5('0x3f');var _0x22c352=_[_0x85d5('0x2e')](db[_0x27a6f4][_0x85d5('0x6e')],function(_0x3fe710){return{'name':_0x3fe710[_0x85d5('0x6f')],'type':_0x3fe710[_0x85d5('0x70')]['key']};});_0x55f93a=qs['getOptions'](_0x22c352,_0x3166ce);if(_0x3166ce[_0x85d5('0x76')]['role']===_0x85d5('0x76')){var _0xa18a5e={'params':{'id':_0x3166ce[_0x85d5('0x76')][_0x85d5('0x8a')]},'query':{'section':_0x488326===_0x85d5('0x16')&&_0x3166ce[_0x85d5('0x73')][_0x85d5('0x70')]===_0x85d5('0x1e')?_0x85d5('0x8b'):_['startCase'](_0x488326)+_0x85d5('0x8c'),'type':_0x3166ce[_0x85d5('0x73')]['type'],'nolimit':!![],'sort':_0x85d5('0xb'),'filter':_0x3166ce['query'][_0x85d5('0x34')]}};return db[_0x85d5('0x78')][_0x85d5('0x8d')](_0xa18a5e);}return db[_0x27a6f4][_0x85d5('0x79')](_0x55f93a);})['then'](function(_0x2eecbe){_0x3da8b0[_0x85d5('0x7a')]=_0x2eecbe['count'];_0x296d6e=_0x2eecbe[_0x85d5('0x7b')];return getRealtimeQueues(_0x3166ce,_0x488326);})[_0x85d5('0xe')](function(_0x57f26b){_0x355187=_0x57f26b[_0x85d5('0x7b')];return getRealtimeAgents();})[_0x85d5('0xe')](function(_0x1ab1eb){_0x1d65f9=_0x1ab1eb['rows'];if(_0x488326!=_0x85d5('0x16'))return;return getRealtimeVoiceQueueChannels();})[_0x85d5('0xe')](function(_0x2dacf7){_0x140e06=_0x2dacf7?_0x2dacf7[_0x85d5('0x7b')]:[];return initializeQueues(_0x296d6e,_0x355187,_0x488326,_0x3166ce[_0x85d5('0x73')][_0x85d5('0x70')]);})['then'](function(_0x29754d){var _0x3f604a=_0x29754d['map'](function(_0x342d7d){if(_0x488326==='voice')return getVoiceQueueAgents(_0x342d7d,_0x296d6e,_0x1d65f9,_0x140e06);else return getQueueAgents(_0x342d7d,_0x1d65f9,_0x488326);});return Promise[_0x85d5('0x8e')](_0x3f604a);})[_0x85d5('0xe')](function(_0x36432f){_0x3da8b0['rows']=_0x36432f;return _0x3da8b0;})[_0x85d5('0xe')](respondWithFilteredResult(_0x2ed09d,_0x55f93a))[_0x85d5('0x15')](handleError(_0x2ed09d,null));};