fc8b3e3e85f1941e07c7de345b175b9b777f0c49
[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 _0xceee=['Queues','format','Unable\x20to\x20retrieve\x20RPC\x20%s\x20queues','VoiceQueuesChannels','Unable\x20to\x20retrieve\x20voice\x20queues\x20channels','loggedIn','available','waiting','talking','paused','outbound','push','pTalking','originated','message','dialActive','dialMethod','Trunk','startPredictive','startProgressive','erlangCalls','erlangCallToSecond','erlangAbandonmentRate','dialPredictiveInterval','dialPredictiveIntervalMaxThreshold','dialPredictiveIntervalMinThreshold','predictiveIntervalAvailable','predictiveIntervalAnsweredCalls','predictiveIntervalDroppedCallsTimeout','predictiveIntervalDroppedCallsCallersExit','predictiveIntervalAvgTalktime','map','agents','loggedInDb','busy','queue','some','connectedlinenum','toString','find','getMembers','length','accountcode','voiceStatus','online','User','Pause','findAll','QueueId','UserId','unavailable','ringing','isNil','chatPause','faxPause','openchannelPause','smsPause','voicePause','whatsappPause','every','idle','pause','chatStatus','faxStatus','mailStatus','openchannelStatus','smsStatus','whatsappStatus','unknown','*pause','getAgents','lastLoginAt','lastPauseAt','pauseType','address','mailPause','chatCapacity','openchannelCapacity','mailCapacity','smsCapacity','whatsappCapacity','faxCapacity','chatCurrentCapacity','openchannelCurrentCapacity','mailCurrentCapacity','faxCurrentCapacity','chatStatusTime','openchannelStatusTime','mailStatusTime','smsStatusTime','whatsappStatusTime','voiceStatusTime','destconnectedlinenum','screenrecording','phoneBarEnableScreenRecordingByAgent','routealias','resolve','fieldName','type','key','query','role','agent','getOptions','raw','userProfileId','sort','filter','UserProfile','getResources','findAndCountAll','count','rows','omit','globalStatusFilter','globalStatus','pauseTypeFilter','getQueues','mail','chat','sms','openchannel','fax','whatsapp','channel','includes','Invalid\x20channel','toLowerCase','Queue','user','QueueCampaigns','util','jayson/promise','../../components/parsers/qs','../../config/logger','api','client','http','undefined','offset','limit','status','set','json','error','stack','name','send','request','Agents','then','Unable\x20to\x20retrieve\x20RPC\x20agents\x20(AMI)','result','Unable\x20to\x20retrieve\x20RPC\x20agents\x20(Routing)','merge','catch','voice','startCase'];(function(_0x3c8790,_0x2d776f){var _0x4d9e38=function(_0x5632d3){while(--_0x5632d3){_0x3c8790['push'](_0x3c8790['shift']());}};_0x4d9e38(++_0x2d776f);}(_0xceee,0x1bf));var _0xecee=function(_0x42655e,_0x52eb2){_0x42655e=_0x42655e-0x0;var _0x3d3300=_0xceee[_0x42655e];return _0x3d3300;};'use strict';var util=require(_0xecee('0x0'));var _=require('lodash');var jayson=require(_0xecee('0x1'));var qs=require(_0xecee('0x2'));var logger=require(_0xecee('0x3'))(_0xecee('0x4'));var db=require('../../mysqldb')['db'];var amiClient=jayson[_0xecee('0x5')]['http']({'port':0x232a});var routingClient=jayson[_0xecee('0x5')][_0xecee('0x6')]({'port':0x232c});function respondWithFilteredResult(_0x32f549,_0x397e61){return function(_0xf11835){if(_0xf11835){var _0x4e384a=typeof _0x397e61['offset']===_0xecee('0x7')&&typeof _0x397e61['limit']===_0xecee('0x7');var _0x3014e4=_0xf11835['count'];var _0xc6f7d8=_0x4e384a?0x0:_0x397e61[_0xecee('0x8')];var _0x2fbfaa=_0x4e384a?_0xf11835['count']:_0x397e61['offset']+_0x397e61[_0xecee('0x9')];var _0x56ff00;if(_0x2fbfaa>=_0x3014e4){_0x2fbfaa=_0x3014e4;_0x56ff00=0xc8;}else{_0x56ff00=0xce;}_0x32f549[_0xecee('0xa')](_0x56ff00);return _0x32f549[_0xecee('0xb')]('Content-Range',_0xc6f7d8+'-'+_0x2fbfaa+'/'+_0x3014e4)[_0xecee('0xc')](_0xf11835);}return null;};}function handleError(_0x2b263,_0x5a33bf){_0x5a33bf=_0x5a33bf||0x1f4;return function(_0x38de11){logger[_0xecee('0xd')](_0x38de11[_0xecee('0xe')]);if(_0x38de11[_0xecee('0xf')]){delete _0x38de11[_0xecee('0xf')];}_0x2b263['status'](_0x5a33bf)[_0xecee('0x10')](_0x38de11);};}function getRealtimeAgents(){return new Promise(function(_0x44b58e,_0x53288a){return amiClient[_0xecee('0x11')](_0xecee('0x12'),{})[_0xecee('0x13')](function(_0x2d432d){if(_0x2d432d['error'])throw new Error(_0xecee('0x14'));var _0x8ef31=_0x2d432d[_0xecee('0x15')];return routingClient[_0xecee('0x11')](_0xecee('0x12'),{})[_0xecee('0x13')](function(_0x3ac8ba){if(_0x3ac8ba[_0xecee('0xd')])throw new Error(_0xecee('0x16'));var _0x5b419c=_0x3ac8ba[_0xecee('0x15')];return _0x44b58e(_[_0xecee('0x17')]({},_0x8ef31,_0x5b419c));});})[_0xecee('0x18')](function(_0x5d5a26){_0x53288a(_0x5d5a26);});});}function getRealtimeQueues(_0x57781b,_0x15ac49){return new Promise(function(_0x31cf13,_0x50ab31){var _0x54e139=_0x15ac49===_0xecee('0x19')?amiClient:routingClient;return _0x54e139[_0xecee('0x11')](_[_0xecee('0x1a')](_0x15ac49)+_0xecee('0x1b'),_0x57781b)[_0xecee('0x13')](function(_0x18ed86){if(_0x18ed86[_0xecee('0xd')])throw new Error(util[_0xecee('0x1c')](_0xecee('0x1d'),_0x15ac49));return _0x31cf13(_0x18ed86['result']);})[_0xecee('0x18')](function(_0x1903ad){_0x50ab31(_0x1903ad);});});}function getRealtimeVoiceQueueChannels(){return new Promise(function(_0x1b8e07,_0x350989){return amiClient[_0xecee('0x11')](_0xecee('0x1e'),{})[_0xecee('0x13')](function(_0x72bed7){if(_0x72bed7[_0xecee('0xd')])throw new Error(_0xecee('0x1f'));return _0x1b8e07(_0x72bed7[_0xecee('0x15')]);})[_0xecee('0x18')](function(_0x1dfa6f){_0x350989(_0x1dfa6f);});});}function initializeQueues(_0xd5ff5d,_0x47caff,_0x4470b5,_0x3e38e8){var _0x4fe36f=[_0xecee('0x20'),_0xecee('0x21'),_0xecee('0x22'),_0xecee('0x23'),_0xecee('0x24')];if(_0x4470b5===_0xecee('0x19')&&_0x3e38e8===_0xecee('0x25')){_0x4fe36f[_0xecee('0x26')](_0xecee('0x27'),_0xecee('0x28'),_0xecee('0x29'),_0xecee('0x2a'),_0xecee('0x2b'),_0xecee('0x2c'),_0xecee('0x2d'),_0xecee('0x2e'),_0xecee('0x2f'),_0xecee('0x30'),_0xecee('0x31'),'erlangBusyFactor',_0xecee('0x32'),_0xecee('0x33'),_0xecee('0x34'),_0xecee('0x35'),'predictiveIntervalTotalCalls',_0xecee('0x36'),_0xecee('0x37'),_0xecee('0x38'),'predictiveIntervalAvgHoldtime',_0xecee('0x39'));}return _0xd5ff5d[_0xecee('0x3a')](function(_0x135586){var _0x35b2ad=_0x135586['get']({'plain':!![]});_0x35b2ad[_0xecee('0x3b')]=[];_0x35b2ad[_0xecee('0x24')]=0x0;_0x35b2ad[_0xecee('0x3c')]=0x0;_0x35b2ad[_0xecee('0x20')]=0x0;_0x35b2ad[_0xecee('0x21')]=0x0;_0x35b2ad['waiting']=0x0;if(_0x4470b5===_0xecee('0x19')){_0x35b2ad[_0xecee('0x23')]=0x0;_0x35b2ad[_0xecee('0x3d')]=0x0;if(_0x3e38e8==='outbound'){_0x35b2ad[_0xecee('0x27')]=0x0;_0x35b2ad[_0xecee('0x28')]=0x0;}}var _0x1f0c66=_['find'](_0x47caff,['id',_0x35b2ad['id']]);if(_0x1f0c66)_[_0xecee('0x17')](_0x35b2ad,_['pick'](_0x1f0c66,_0x4fe36f));return _0x35b2ad;});}function updateAgentVoiceStatus(_0x1087f3,_0xf17792,_0x4d0ba8){var _0x1dc985=_['filter'](_0x4d0ba8,[_0xecee('0x3e'),_0xf17792['name']]);if(_0x1dc985['length']===0x0)return _0x1087f3[_0xecee('0x3d')]=!![];if(_[_0xecee('0x3f')](_0x1dc985,[_0xecee('0x40'),_0x1087f3['internal'][_0xecee('0x41')]()]))return _0x1087f3[_0xecee('0x23')]=!![];if(!_0x1087f3[_0xecee('0x23')])return _0x1087f3[_0xecee('0x3d')]=!![];}function getVoiceQueueAgents(_0x385b91,_0x30b43b,_0x4945db,_0x5ef0d4){var _0x475124=_[_0xecee('0x42')](_0x30b43b,['id',_0x385b91['id']]);if(!_0x475124)return _0x385b91;return _0x475124[_0xecee('0x43')]({'raw':!![]})['then'](function(_0x24621c){for(var _0x599c8a=0x0;_0x599c8a<_0x24621c[_0xecee('0x44')];_0x599c8a++){var _0x59edf8=_[_0xecee('0x42')](_0x4945db,['id',_0x24621c[_0x599c8a]['UserId']]);if(!_0x59edf8){_0x59edf8={'id':_0x24621c[_0x599c8a]['UserId'],'name':_0x24621c[_0x599c8a]['UserId'],'accountcode':'','online':![]};}var _0x3d2591={'id':_0x59edf8['id'],'name':_0x59edf8[_0xecee('0xf')],'internal':_0x59edf8[_0xecee('0x45')],'online':Boolean(_0x59edf8['online']),'paused':Boolean(_0x24621c[_0x599c8a][_0xecee('0x24')])};if(_0x59edf8[_0xecee('0x46')]==='talking')updateAgentVoiceStatus(_0x3d2591,_0x385b91,_0x5ef0d4);if(_0x3d2591[_0xecee('0x47')])_0x385b91['loggedInDb']++;if(_0x3d2591[_0xecee('0x3d')])_0x385b91[_0xecee('0x3d')]++;if(_0x3d2591[_0xecee('0x24')]&&!_0x3d2591[_0xecee('0x3d')]&&!_0x3d2591[_0xecee('0x23')])_0x385b91[_0xecee('0x24')]++;_0x385b91[_0xecee('0x3b')][_0xecee('0x26')](_0x3d2591);}return _0x385b91;});}function getQueueAgents(_0xe5e526,_0x3a7034,_0xb2e642){var _0x3119f4=_0xecee('0x48')+_[_0xecee('0x1a')](_0xb2e642)+'Queue';var _0xb69ffc=_0xb2e642+_0xecee('0x49');return db[_0x3119f4][_0xecee('0x4a')]({'where':{[_['startCase'](_0xb2e642)+_0xecee('0x4b')]:_0xe5e526['id']},'raw':!![]})[_0xecee('0x13')](function(_0x11f744){for(var _0x228a96=0x0;_0x228a96<_0x11f744[_0xecee('0x44')];_0x228a96++){var _0x549028=_['find'](_0x3a7034,['id',_0x11f744[_0x228a96][_0xecee('0x4c')]]);if(!_0x549028){_0x549028={'id':_0x11f744[_0x228a96][_0xecee('0x4c')],'name':_0x11f744[_0x228a96]['UserId'],'online':![],['pauseField']:![]};}var _0x4812d7={'id':_0x549028['id'],'name':_0x549028[_0xecee('0xf')],'online':Boolean(_0x549028['online']),'paused':Boolean(_0x549028[_0xb69ffc])};if(_0x4812d7[_0xecee('0x47')])_0xe5e526['loggedInDb']++;_0xe5e526[_0xecee('0x3b')]['push'](_0x4812d7);}return _0xe5e526;});}function isIdle(_0x8d4f29){return _0x8d4f29==='idle'||_0x8d4f29==='unknown'||_0x8d4f29===_0xecee('0x4d')||_0x8d4f29===_0xecee('0x4e')||_[_0xecee('0x4f')](_0x8d4f29);}function isAgentPaused(_0x41cdbf,_0x2a1018){var _0x2e1ac3=[_0x41cdbf[_0xecee('0x50')],_0x41cdbf[_0xecee('0x51')],_0x41cdbf['mailPause'],_0x41cdbf[_0xecee('0x52')],_0x41cdbf[_0xecee('0x53')],_0x41cdbf[_0xecee('0x54')],_0x41cdbf[_0xecee('0x55')]];if(!_0x2a1018)return _[_0xecee('0x56')](_0x2e1ac3);var _0x22cd39=_['filter'](_0x2e1ac3);return _0x22cd39[_0xecee('0x44')]>0x0&&_0x22cd39[_0xecee('0x44')]<_0x2e1ac3[_0xecee('0x44')]?!![]:![];}function isAgentIdle(_0x2458f2){if(_0x2458f2['voiceStatus']!==_0xecee('0x57')&&_0x2458f2['voicePause']){_0x2458f2[_0xecee('0x46')]=_0xecee('0x58');return![];}return _['every']([_0x2458f2[_0xecee('0x59')],_0x2458f2[_0xecee('0x5a')],_0x2458f2[_0xecee('0x5b')],_0x2458f2[_0xecee('0x5c')],_0x2458f2[_0xecee('0x5d')],_0x2458f2[_0xecee('0x46')],_0x2458f2[_0xecee('0x5e')]],isIdle);}function getAgentStatus(_0x4a333f){var _0x4fa89d=_0xecee('0x5f');if(isAgentPaused(_0x4a333f))_0x4fa89d=_0xecee('0x58');else if(isAgentPaused(_0x4a333f,!![]))_0x4fa89d=_0xecee('0x60');else if(isAgentIdle(_0x4a333f))_0x4fa89d=_0xecee('0x57');else _0x4fa89d=_0xecee('0x3d');return _0x4fa89d;}exports[_0xecee('0x61')]=function(_0x5132a7,_0x5c22f7){var _0x49ca1f={'count':0x0,'rows':[]},_0x2d833e={},_0x267702,_0x19c42c,_0x85f84e=['userpic',_0xecee('0x47'),_0xecee('0x62'),_0xecee('0x63'),_0xecee('0x64'),'lastPauseAt','internal',_0xecee('0x65'),_0xecee('0x50'),_0xecee('0x52'),_0xecee('0x66'),_0xecee('0x53'),'whatsappPause',_0xecee('0x51'),_0xecee('0x54'),_0xecee('0x67'),_0xecee('0x68'),_0xecee('0x69'),_0xecee('0x6a'),_0xecee('0x6b'),_0xecee('0x6c'),_0xecee('0x6d'),_0xecee('0x6e'),_0xecee('0x6f'),'smsCurrentCapacity','whatsappCurrentCapacity',_0xecee('0x70'),_0xecee('0x59'),_0xecee('0x5c'),_0xecee('0x5b'),'smsStatus','whatsappStatus',_0xecee('0x5a'),'voiceStatus',_0xecee('0x71'),_0xecee('0x72'),_0xecee('0x73'),_0xecee('0x74'),_0xecee('0x75'),'faxStatusTime',_0xecee('0x76'),_0xecee('0x3e'),_0xecee('0x77'),_0xecee('0x78'),_0xecee('0x79'),'phoneBarEnableAutomaticScreenRecording',_0xecee('0x7a')],_0x5b5947=[_0xecee('0x50'),_0xecee('0x52'),_0xecee('0x66'),_0xecee('0x53'),_0xecee('0x55'),_0xecee('0x51'),_0xecee('0x54'),_0xecee('0x47')];Promise[_0xecee('0x7b')]()[_0xecee('0x13')](function(){var _0x164d1a=_[_0xecee('0x3a')](db[_0xecee('0x48')]['rawAttributes'],function(_0x3f6b8f){return{'name':_0x3f6b8f[_0xecee('0x7c')],'type':_0x3f6b8f[_0xecee('0x7d')][_0xecee('0x7e')]};});_0x5132a7[_0xecee('0x7f')][_0xecee('0x80')]=_0xecee('0x81');_0x5132a7['query'][_0xecee('0x47')]=!![];_0x2d833e=qs[_0xecee('0x82')](_0x164d1a,_0x5132a7);_0x2d833e[_0xecee('0x83')]=!![];if(_0x5132a7['user']['role']==='user'){var _0x5e7f41={'params':{'id':_0x5132a7['user'][_0xecee('0x84')]},'query':{'section':'Agents','role':'agent','online':!![],'nolimit':_0x5132a7[_0xecee('0x7f')]['nolimit'],'sort':_0x5132a7['query'][_0xecee('0x85')],'filter':_0x5132a7['query'][_0xecee('0x86')]},'raw':!![]};return db[_0xecee('0x87')][_0xecee('0x88')](_0x5e7f41);}return db[_0xecee('0x48')][_0xecee('0x89')](_0x2d833e);})[_0xecee('0x13')](function(_0x11e3a0){_0x49ca1f[_0xecee('0x8a')]=_0x11e3a0[_0xecee('0x8a')];_0x267702=_0x11e3a0[_0xecee('0x8b')];return getRealtimeAgents();})[_0xecee('0x13')](function(_0xc6426d){_0x19c42c=_0xc6426d[_0xecee('0x8b')];return _0x267702[_0xecee('0x3a')](function(_0x39629f){var _0x2ef542=_[_0xecee('0x42')](_0x19c42c,['id',_0x39629f['id']]);if(_0x2ef542)_[_0xecee('0x17')](_0x39629f,_['pick'](_[_0xecee('0x8c')](_0x2ef542,_0x5b5947),_0x85f84e));_0x39629f['globalStatus']=getAgentStatus(_0x39629f);return _0x39629f;});})['then'](function(_0x67708d){if(_0x5132a7[_0xecee('0x7f')][_0xecee('0x8d')]){var _0x337bad=_[_0xecee('0x86')](_0x67708d,[_0xecee('0x8e'),_0x5132a7[_0xecee('0x7f')]['globalStatusFilter']]);if(_0x5132a7[_0xecee('0x7f')][_0xecee('0x8f')]){_0x337bad=_[_0xecee('0x86')](_0x337bad,[_0xecee('0x64'),_0x5132a7[_0xecee('0x7f')][_0xecee('0x8f')]]);}}_0x49ca1f[_0xecee('0x8b')]=_0x337bad||_0x67708d;return _0x49ca1f;})[_0xecee('0x13')](respondWithFilteredResult(_0x5c22f7,_0x2d833e))['catch'](handleError(_0x5c22f7,null));};exports[_0xecee('0x90')]=function(_0x3c37f6,_0x33a734){var _0x1a7a7f=[_0xecee('0x91'),_0xecee('0x92'),_0xecee('0x93'),_0xecee('0x94'),_0xecee('0x95'),_0xecee('0x96'),_0xecee('0x19')];var _0x2bc760={'count':0x0,'rows':[]},_0x3bb68a={},_0x394b17,_0x5473f0,_0x1f5a2b,_0x3fb3be,_0x91eb28;Promise[_0xecee('0x7b')]()['then'](function(){if(_0x3c37f6[_0xecee('0x7f')][_0xecee('0x97')]){if(!_[_0xecee('0x98')](_0x1a7a7f,_0x3c37f6[_0xecee('0x7f')][_0xecee('0x97')]['toLowerCase']()))throw new Error(_0xecee('0x99'));_0x394b17=_0x3c37f6[_0xecee('0x7f')][_0xecee('0x97')][_0xecee('0x9a')]();}var _0x3dc203=_[_0xecee('0x1a')](_0x394b17)+_0xecee('0x9b');var _0x1b9adc=_[_0xecee('0x3a')](db[_0x3dc203]['rawAttributes'],function(_0x19a190){return{'name':_0x19a190['fieldName'],'type':_0x19a190[_0xecee('0x7d')][_0xecee('0x7e')]};});_0x3bb68a=qs[_0xecee('0x82')](_0x1b9adc,_0x3c37f6);if(_0x3c37f6[_0xecee('0x9c')][_0xecee('0x80')]==='user'){var _0x5c2c2a={'params':{'id':_0x3c37f6['user'][_0xecee('0x84')]},'query':{'section':_0x394b17===_0xecee('0x19')&&_0x3c37f6['query'][_0xecee('0x7d')]===_0xecee('0x25')?_0xecee('0x9d'):_[_0xecee('0x1a')](_0x394b17)+_0xecee('0x1b'),'type':_0x3c37f6[_0xecee('0x7f')][_0xecee('0x7d')],'nolimit':!![],'sort':'name','filter':_0x3c37f6['query'][_0xecee('0x86')]}};return db[_0xecee('0x87')]['getResources'](_0x5c2c2a);}return db[_0x3dc203][_0xecee('0x89')](_0x3bb68a);})[_0xecee('0x13')](function(_0x237f76){_0x2bc760['count']=_0x237f76['count'];_0x5473f0=_0x237f76[_0xecee('0x8b')];return getRealtimeQueues(_0x3c37f6,_0x394b17);})[_0xecee('0x13')](function(_0x4cc4e9){_0x3fb3be=_0x4cc4e9[_0xecee('0x8b')];return getRealtimeAgents();})[_0xecee('0x13')](function(_0x27bca0){_0x1f5a2b=_0x27bca0['rows'];if(_0x394b17!=_0xecee('0x19'))return;return getRealtimeVoiceQueueChannels();})['then'](function(_0xe2c29a){_0x91eb28=_0xe2c29a?_0xe2c29a[_0xecee('0x8b')]:[];return initializeQueues(_0x5473f0,_0x3fb3be,_0x394b17,_0x3c37f6[_0xecee('0x7f')][_0xecee('0x7d')]);})[_0xecee('0x13')](function(_0x1eccc7){var _0x8f19d5=_0x1eccc7[_0xecee('0x3a')](function(_0x372775){if(_0x394b17===_0xecee('0x19'))return getVoiceQueueAgents(_0x372775,_0x5473f0,_0x1f5a2b,_0x91eb28);else return getQueueAgents(_0x372775,_0x1f5a2b,_0x394b17);});return Promise['all'](_0x8f19d5);})['then'](function(_0x2f0ac1){_0x2bc760[_0xecee('0x8b')]=_0x2f0ac1;return _0x2bc760;})[_0xecee('0x13')](respondWithFilteredResult(_0x33a734,_0x3bb68a))[_0xecee('0x18')](handleError(_0x33a734,null));};