Built motion from commit da617fac.|2.6.6
[motion2.git] / server / components / realtime / agents.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 _0x41df=['Unable\x20to\x20retrieve\x20RPC\x20agents\x20(Routing)','merge','getRealtimeAgents','*pause','busy','getAgentStatus','isArray','startCase','map','findOne','all','flatten','uniq','value','filter','getAgentIdsByStatus','resolve','includes','User','findAll','name','fullname','faxPause','find','globalStatus','catch','getSortedAgentsIdsByStatus','fields','order','startsWith','DESC','getUpdatedSortOptions','internal','indexOf','validateSortParameter','sort','pauseType','toLowerCase','sortAgentsByStatus','online','lastLoginAt','lastPauseAt','chatCapacity','openchannelCapacity','smsCapacity','whatsappCapacity','faxCapacity','chatCurrentCapacity','smsCurrentCapacity','whatsappCurrentCapacity','faxCurrentCapacity','whatsappStatus','openchannelStatusTime','mailStatusTime','smsStatusTime','whatsappStatusTime','faxStatusTime','voiceStatusTime','queue','screenrecording','phoneBarEnableScreenRecordingByAgent','phoneBarEnableAutomaticScreenRecording','routealias','lodash','jayson/promise','client','http','chatPause','mailPause','openchannelPause','smsPause','whatsappPause','every','length','idle','isNil','voiceStatus','voicePause','pause','chatStatus','faxStatus','mailStatus','openchannelStatus','smsStatus','request','then','error','Unable\x20to\x20retrieve\x20RPC\x20agents\x20(AMI)','result'];(function(_0x3dc06d,_0x34ec1b){var _0x560f2b=function(_0x22a3d7){while(--_0x22a3d7){_0x3dc06d['push'](_0x3dc06d['shift']());}};_0x560f2b(++_0x34ec1b);}(_0x41df,0x14a));var _0xf41d=function(_0x4c7fb5,_0x2548ef){_0x4c7fb5=_0x4c7fb5-0x0;var _0x2e10ac=_0x41df[_0x4c7fb5];return _0x2e10ac;};'use strict';var _=require(_0xf41d('0x0'));var jayson=require(_0xf41d('0x1'));var db=require('../../mysqldb')['db'];var amiClient=jayson[_0xf41d('0x2')]['http']({'port':0x232a});var routingClient=jayson[_0xf41d('0x2')][_0xf41d('0x3')]({'port':0x232c});function isAgentPaused(_0x2dc4a3,_0x3149d6){var _0x33fad3=[_0x2dc4a3[_0xf41d('0x4')],_0x2dc4a3['faxPause'],_0x2dc4a3[_0xf41d('0x5')],_0x2dc4a3[_0xf41d('0x6')],_0x2dc4a3[_0xf41d('0x7')],_0x2dc4a3['voicePause'],_0x2dc4a3[_0xf41d('0x8')]];if(!_0x3149d6)return _[_0xf41d('0x9')](_0x33fad3);var _0x5e9546=_['filter'](_0x33fad3);return _0x5e9546[_0xf41d('0xa')]>0x0&&_0x5e9546[_0xf41d('0xa')]<_0x33fad3[_0xf41d('0xa')]?!![]:![];}function isIdle(_0x50e303){return _0x50e303===_0xf41d('0xb')||_0x50e303==='unknown'||_0x50e303==='unavailable'||_0x50e303==='ringing'||_[_0xf41d('0xc')](_0x50e303);}function isAgentIdle(_0x4b53d9){if(_0x4b53d9[_0xf41d('0xd')]!==_0xf41d('0xb')&&_0x4b53d9[_0xf41d('0xe')]){_0x4b53d9[_0xf41d('0xd')]=_0xf41d('0xf');return![];}return _['every']([_0x4b53d9[_0xf41d('0x10')],_0x4b53d9[_0xf41d('0x11')],_0x4b53d9[_0xf41d('0x12')],_0x4b53d9[_0xf41d('0x13')],_0x4b53d9[_0xf41d('0x14')],_0x4b53d9['voiceStatus'],_0x4b53d9['whatsappStatus']],isIdle);}function getRealtimeAgents(){return amiClient[_0xf41d('0x15')]('Agents',{})[_0xf41d('0x16')](function(_0x4b32da){if(_0x4b32da[_0xf41d('0x17')]){throw new Error(_0xf41d('0x18'));}var _0x165c3d=_0x4b32da[_0xf41d('0x19')];return routingClient[_0xf41d('0x15')]('Agents',{})['then'](function(_0xf22aff){if(_0xf22aff[_0xf41d('0x17')]){throw new Error(_0xf41d('0x1a'));}var _0x2b0a91=_0xf22aff[_0xf41d('0x19')];return _[_0xf41d('0x1b')]({},_0x165c3d,_0x2b0a91);});})['catch'](function(_0x58e4f6){throw _0x58e4f6;});}exports[_0xf41d('0x1c')]=getRealtimeAgents;function getAgentStatus(_0xa8f7ee){var _0x49be93='unknown';if(isAgentPaused(_0xa8f7ee))_0x49be93=_0xf41d('0xf');else if(isAgentPaused(_0xa8f7ee,!![]))_0x49be93=_0xf41d('0x1d');else if(isAgentIdle(_0xa8f7ee))_0x49be93='idle';else _0x49be93=_0xf41d('0x1e');return _0x49be93;}exports[_0xf41d('0x1f')]=getAgentStatus;function getAgentIdsByQueues(_0x19a2bb,_0x558b13){var _0x15647d=_[_0xf41d('0x20')](_0x19a2bb)?_0x19a2bb:[_0x19a2bb];var _0x5818c9=_[_0xf41d('0x21')](_0x558b13)+'Queue';var _0x33601c=_[_0xf41d('0x22')](_0x15647d,function(_0x5ea24f){return db[_0x5818c9][_0xf41d('0x23')]({'where':{'id':_0x5ea24f}})[_0xf41d('0x16')](function(_0x7e0418){if(!_0x7e0418)return[];return _0x7e0418['getAgents']({'attributes':['id'],'raw':!![]});});});return Promise[_0xf41d('0x24')](_0x33601c)['then'](function(_0x414a38){var _0x399029=_(_0x414a38)[_0xf41d('0x25')]()[_0xf41d('0x22')]('id')[_0xf41d('0x26')]()[_0xf41d('0x27')]();return _0x399029;});}exports['getAgentIdsByQueues']=getAgentIdsByQueues;function getAgentIdsByStatus(_0x55166c,_0x31637c,_0x3a6a84){try{if(_0x31637c[_0xf41d('0xa')]>0x0){_0x55166c=_0x55166c[_0xf41d('0x28')](function(_0x38146e){return _0x31637c['includes'](_0x38146e['id']);});}var _0x3bedf1=_0x55166c[_0xf41d('0x28')](function(_0x43da87){var _0x38e479=_0xf41d('0x1e');if(isAgentIdle(_0x43da87)){_0x38e479=_0xf41d('0xb');}return _0x38e479===_0x3a6a84;});return _[_0xf41d('0x22')](_0x3bedf1,'id');}catch(_0x47ec05){throw _0x47ec05;}}exports[_0xf41d('0x29')]=getAgentIdsByStatus;function getSortedAgentsIdsByStatus(_0x4a5a6e,_0x5bcae4,_0x431942){return Promise[_0xf41d('0x2a')]()[_0xf41d('0x16')](function(){if(_0x5bcae4[_0xf41d('0xa')]>0x0){_0x4a5a6e=_0x4a5a6e['filter'](function(_0x4e96e5){return _0x5bcae4[_0xf41d('0x2b')](_0x4e96e5['id']);});}return _0x4a5a6e;})[_0xf41d('0x16')](function(){return db[_0xf41d('0x2c')][_0xf41d('0x2d')]({'attributes':['id',_0xf41d('0x2e'),_0xf41d('0x2f'),_0xf41d('0x4'),_0xf41d('0x30'),'mailPause','openchannelPause','smsPause',_0xf41d('0xe'),_0xf41d('0x8'),'pauseType'],'where':{'id':{'$in':_['map'](_0x4a5a6e,'id')}},'raw':!![]});})[_0xf41d('0x16')](function(_0x26c733){return _0x26c733[_0xf41d('0x22')](function(_0xc26ba8){var _0x593953=_[_0xf41d('0x31')](_0x4a5a6e,['id',_0xc26ba8['id']]);var _0x9e3be3=filterAgentAttributes(_0x593953);_[_0xf41d('0x1b')](_0xc26ba8,_0x9e3be3);_0xc26ba8[_0xf41d('0x32')]=getAgentStatus(_0xc26ba8);return _0xc26ba8;});})[_0xf41d('0x16')](function(_0x52d8d7){var _0x12ed67=sortAgentsByStatus(_0x52d8d7,_0x431942);return _[_0xf41d('0x22')](_0x12ed67,'id');})[_0xf41d('0x33')](function(_0x499eaf){throw _0x499eaf;});}exports[_0xf41d('0x34')]=getSortedAgentsIdsByStatus;function getUpdatedSortOptions(_0x101511){var _0x3ece78={'fields':[],'order':null};var _0x28a875=_0x101511['split'](',');_0x3ece78[_0xf41d('0x35')]=_[_0xf41d('0x28')](_0x28a875,function(_0x2b60bf){if(!_0x2b60bf[_0xf41d('0x2b')]('globalStatus')){return!![];}_0x3ece78[_0xf41d('0x36')]=_[_0xf41d('0x37')](_0x2b60bf,'-')?_0xf41d('0x38'):'ASC';return![];});return _0x3ece78;}exports[_0xf41d('0x39')]=getUpdatedSortOptions;function validateSortParameter(_0x26f9b9){if(_0x26f9b9[_0xf41d('0x2b')]('fullname')&&!_0x26f9b9[_0xf41d('0x2b')](_0xf41d('0x3a'))){var _0x9cadc4=_0x26f9b9['substring'](0x0,_0x26f9b9[_0xf41d('0x3b')](_0xf41d('0x2f')));_0x26f9b9+=','+_0x9cadc4+'internal';}return _0x26f9b9;}exports[_0xf41d('0x3c')]=validateSortParameter;function sortAgentsByStatus(_0x17fee3,_0x42d268){var _0x2d6bbc=_0x17fee3[_0xf41d('0x3d')](function(_0x4425b7,_0x45fb64){if(_0x4425b7['globalStatus']===_0x45fb64['globalStatus']){if(_0x4425b7['globalStatus']==='pause'){if(_0x42d268===_0xf41d('0x38')){return(_0x4425b7[_0xf41d('0x3e')]||'')<(_0x45fb64[_0xf41d('0x3e')]||'')||_0x4425b7[_0xf41d('0x2f')][_0xf41d('0x3f')]()>_0x45fb64[_0xf41d('0x2f')][_0xf41d('0x3f')]()?0x1:-0x1;}else{return(_0x4425b7[_0xf41d('0x3e')]||'')<(_0x45fb64['pauseType']||'')||_0x4425b7[_0xf41d('0x2f')]['toLowerCase']()>_0x45fb64[_0xf41d('0x2f')]['toLowerCase']()?-0x1:0x1;}}else{if(_0x42d268===_0xf41d('0x38')){return _0x4425b7[_0xf41d('0x2f')]['toLowerCase']()<_0x45fb64[_0xf41d('0x2f')][_0xf41d('0x3f')]()?0x1:-0x1;}else{return _0x4425b7[_0xf41d('0x2f')][_0xf41d('0x3f')]()<_0x45fb64[_0xf41d('0x2f')][_0xf41d('0x3f')]()?-0x1:0x1;}}}else{if(_0x42d268===_0xf41d('0x38')){return _0x4425b7[_0xf41d('0x32')]<_0x45fb64[_0xf41d('0x32')]?0x1:-0x1;}else{return _0x4425b7[_0xf41d('0x32')]<_0x45fb64[_0xf41d('0x32')]?-0x1:0x1;}}});return _0x2d6bbc;}exports[_0xf41d('0x40')]=sortAgentsByStatus;function filterAgentAttributes(_0x207154){var _0x142cda=['userpic',_0xf41d('0x41'),_0xf41d('0x42'),'lastPauseAt','pauseType',_0xf41d('0x43'),_0xf41d('0x3a'),'address',_0xf41d('0x4'),_0xf41d('0x6'),'mailPause',_0xf41d('0x7'),_0xf41d('0x8'),_0xf41d('0x30'),_0xf41d('0xe'),_0xf41d('0x44'),_0xf41d('0x45'),'mailCapacity',_0xf41d('0x46'),_0xf41d('0x47'),_0xf41d('0x48'),_0xf41d('0x49'),'openchannelCurrentCapacity','mailCurrentCapacity',_0xf41d('0x4a'),_0xf41d('0x4b'),_0xf41d('0x4c'),_0xf41d('0x10'),_0xf41d('0x13'),_0xf41d('0x12'),'smsStatus',_0xf41d('0x4d'),_0xf41d('0x11'),_0xf41d('0xd'),'chatStatusTime',_0xf41d('0x4e'),_0xf41d('0x4f'),_0xf41d('0x50'),_0xf41d('0x51'),_0xf41d('0x52'),_0xf41d('0x53'),_0xf41d('0x54'),'destconnectedlinenum',_0xf41d('0x55'),_0xf41d('0x56'),_0xf41d('0x57'),_0xf41d('0x58')];var _0x25a2d4=[_0xf41d('0x4'),'openchannelPause',_0xf41d('0x5'),_0xf41d('0x7'),_0xf41d('0x8'),_0xf41d('0x30'),_0xf41d('0xe'),_0xf41d('0x41')];var _0x709cbf=_(_0x207154)['omit'](_0x25a2d4)['pick'](_0x142cda)[_0xf41d('0x27')]();return _0x709cbf;}exports['filterAgentAttributes']=filterAgentAttributes;