Built motion from commit b0a9a629.|2.6.33
[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 _0xf470=['split','order','startsWith','ASC','getUpdatedSortOptions','fullname,internal','fullname','internal','substring','indexOf','validateSortParameter','DESC','toLowerCase','sortAgentsByStatus','userpic','online','lastLoginAt','lastPauseAt','openchannelCapacity','mailCapacity','smsCapacity','whatsappCapacity','faxCapacity','chatCurrentCapacity','openchannelCurrentCapacity','smsCurrentCapacity','whatsappCurrentCapacity','faxCurrentCapacity','chatStatus','whatsappStatus','chatStatusTime','openchannelStatusTime','mailStatusTime','smsStatusTime','faxStatusTime','voiceStatusTime','queue','destconnectedlinenum','screenrecording','phoneBarEnableScreenRecordingByAgent','phoneBarEnableAutomaticScreenRecording','pick','filterAgentAttributes','name','whatsappStatusTime','chatCapacity','mailCurrentCapacity','onhold','getRealtimeAgentsQueryFields','lodash','jayson/promise','../../mysqldb','client','http','chatPause','faxPause','mailPause','openchannelPause','smsPause','voicePause','whatsappPause','every','filter','length','idle','unknown','unavailable','ringing','isNil','voiceStatus','pause','faxStatus','mailStatus','openchannelStatus','smsStatus','request','error','Unable\x20to\x20retrieve\x20RPC\x20agents\x20(AMI)','result','Agents','merge','catch','getRealtimeAgents','*pause','isArray','startCase','Queue','map','getAgents','all','flatten','value','getAgentIdsByQueues','includes','busy','getAgentIdsByStatus','resolve','then','User','pauseType','globalStatus','getSortedAgentsIdsByStatus'];(function(_0x71cc1,_0x252833){var _0x16d5a4=function(_0x2c36fe){while(--_0x2c36fe){_0x71cc1['push'](_0x71cc1['shift']());}};_0x16d5a4(++_0x252833);}(_0xf470,0xfd));var _0x0f47=function(_0x36c5b0,_0x5001da){_0x36c5b0=_0x36c5b0-0x0;var _0xf19333=_0xf470[_0x36c5b0];return _0xf19333;};'use strict';var _=require(_0x0f47('0x0'));var jayson=require(_0x0f47('0x1'));var db=require(_0x0f47('0x2'))['db'];var amiClient=jayson[_0x0f47('0x3')][_0x0f47('0x4')]({'port':0x232a});var routingClient=jayson[_0x0f47('0x3')]['http']({'port':0x232c});function isAgentPaused(_0x8fd765,_0x3e20a3){var _0x493828=[_0x8fd765[_0x0f47('0x5')],_0x8fd765[_0x0f47('0x6')],_0x8fd765[_0x0f47('0x7')],_0x8fd765[_0x0f47('0x8')],_0x8fd765[_0x0f47('0x9')],_0x8fd765[_0x0f47('0xa')],_0x8fd765[_0x0f47('0xb')]];if(!_0x3e20a3)return _[_0x0f47('0xc')](_0x493828);var _0x145344=_[_0x0f47('0xd')](_0x493828);return _0x145344[_0x0f47('0xe')]>0x0&&_0x145344[_0x0f47('0xe')]<_0x493828[_0x0f47('0xe')]?!![]:![];}function isIdle(_0x2256e5){return _0x2256e5===_0x0f47('0xf')||_0x2256e5===_0x0f47('0x10')||_0x2256e5===_0x0f47('0x11')||_0x2256e5===_0x0f47('0x12')||_[_0x0f47('0x13')](_0x2256e5);}function isAgentIdle(_0x4bfa8f){if(_0x4bfa8f[_0x0f47('0x14')]!==_0x0f47('0xf')&&_0x4bfa8f[_0x0f47('0xa')]){_0x4bfa8f[_0x0f47('0x14')]=_0x0f47('0x15');return![];}return _['every']([_0x4bfa8f['chatStatus'],_0x4bfa8f[_0x0f47('0x16')],_0x4bfa8f[_0x0f47('0x17')],_0x4bfa8f[_0x0f47('0x18')],_0x4bfa8f[_0x0f47('0x19')],_0x4bfa8f[_0x0f47('0x14')],_0x4bfa8f['whatsappStatus']],isIdle);}function getRealtimeAgents(){return amiClient[_0x0f47('0x1a')]('Agents',{})['then'](function(_0x1e08f6){if(_0x1e08f6[_0x0f47('0x1b')]){throw new Error(_0x0f47('0x1c'));}var _0x1e84eb=_0x1e08f6[_0x0f47('0x1d')];return routingClient[_0x0f47('0x1a')](_0x0f47('0x1e'),{})['then'](function(_0x1d8fe5){if(_0x1d8fe5[_0x0f47('0x1b')]){throw new Error('Unable\x20to\x20retrieve\x20RPC\x20agents\x20(Routing)');}var _0x22c861=_0x1d8fe5[_0x0f47('0x1d')];return _[_0x0f47('0x1f')]({},_0x1e84eb,_0x22c861);});})[_0x0f47('0x20')](function(_0x22615b){throw _0x22615b;});}exports[_0x0f47('0x21')]=getRealtimeAgents;function getAgentStatus(_0x222831){var _0x160283=_0x0f47('0x10');if(isAgentPaused(_0x222831))_0x160283=_0x0f47('0x15');else if(isAgentPaused(_0x222831,!![]))_0x160283=_0x0f47('0x22');else if(isAgentIdle(_0x222831))_0x160283='idle';else _0x160283='busy';return _0x160283;}exports['getAgentStatus']=getAgentStatus;function getAgentIdsByQueues(_0x1fe6ea,_0x5a0c8c){var _0x5f1830=_[_0x0f47('0x23')](_0x1fe6ea)?_0x1fe6ea:[_0x1fe6ea];var _0x19d346=_[_0x0f47('0x24')](_0x5a0c8c)+_0x0f47('0x25');var _0x28edc5=_[_0x0f47('0x26')](_0x5f1830,function(_0x2a7f9e){return db[_0x19d346]['findOne']({'where':{'id':_0x2a7f9e}})['then'](function(_0x165f4f){if(!_0x165f4f)return[];return _0x165f4f[_0x0f47('0x27')]({'attributes':['id'],'raw':!![]});});});return Promise[_0x0f47('0x28')](_0x28edc5)['then'](function(_0x365482){var _0x41a31e=_(_0x365482)[_0x0f47('0x29')]()[_0x0f47('0x26')]('id')['uniq']()[_0x0f47('0x2a')]();return _0x41a31e;});}exports[_0x0f47('0x2b')]=getAgentIdsByQueues;function getAgentIdsByStatus(_0x44c56d,_0x401aea,_0x19e916){try{if(_0x401aea[_0x0f47('0xe')]>0x0){_0x44c56d=_0x44c56d[_0x0f47('0xd')](function(_0xd47c98){return _0x401aea[_0x0f47('0x2c')](_0xd47c98['id']);});}var _0x2648f1=_0x44c56d[_0x0f47('0xd')](function(_0x3a3687){var _0x4ff1ef=_0x0f47('0x2d');if(isAgentIdle(_0x3a3687)){_0x4ff1ef=_0x0f47('0xf');}return _0x4ff1ef===_0x19e916;});return _[_0x0f47('0x26')](_0x2648f1,'id');}catch(_0x1a0d44){throw _0x1a0d44;}}exports[_0x0f47('0x2e')]=getAgentIdsByStatus;function getSortedAgentsIdsByStatus(_0x49c679,_0x9970a5,_0x3e62a4){return Promise[_0x0f47('0x2f')]()['then'](function(){if(_0x9970a5[_0x0f47('0xe')]>0x0){_0x49c679=_0x49c679[_0x0f47('0xd')](function(_0x465b62){return _0x9970a5[_0x0f47('0x2c')](_0x465b62['id']);});}return _0x49c679;})[_0x0f47('0x30')](function(){return db[_0x0f47('0x31')]['findAll']({'attributes':['id','name','fullname',_0x0f47('0x5'),'faxPause',_0x0f47('0x7'),'openchannelPause',_0x0f47('0x9'),_0x0f47('0xa'),_0x0f47('0xb'),_0x0f47('0x32')],'where':{'id':{'$in':_['map'](_0x49c679,'id')}},'raw':!![]});})[_0x0f47('0x30')](function(_0xee9cd){return _0xee9cd[_0x0f47('0x26')](function(_0x164175){var _0x38a3ce=_['find'](_0x49c679,['id',_0x164175['id']]);var _0x1c4e1a=filterAgentAttributes(_0x38a3ce);_[_0x0f47('0x1f')](_0x164175,_0x1c4e1a);_0x164175[_0x0f47('0x33')]=getAgentStatus(_0x164175);return _0x164175;});})[_0x0f47('0x30')](function(_0x2fc8a3){var _0x47cf68=sortAgentsByStatus(_0x2fc8a3,_0x3e62a4);return _['map'](_0x47cf68,'id');})['catch'](function(_0x4081d2){throw _0x4081d2;});}exports[_0x0f47('0x34')]=getSortedAgentsIdsByStatus;function getUpdatedSortOptions(_0x419e5c){var _0x58c7bc={'fields':[],'order':null};var _0x124289=_0x419e5c[_0x0f47('0x35')](',');_0x58c7bc['fields']=_['filter'](_0x124289,function(_0x497833){if(!_0x497833[_0x0f47('0x2c')]('globalStatus')){return!![];}_0x58c7bc[_0x0f47('0x36')]=_[_0x0f47('0x37')](_0x497833,'-')?'DESC':_0x0f47('0x38');return![];});return _0x58c7bc;}exports[_0x0f47('0x39')]=getUpdatedSortOptions;function validateSortParameter(_0x13e77b){if(!_0x13e77b){_0x13e77b=_0x0f47('0x3a');}if(_0x13e77b[_0x0f47('0x2c')](_0x0f47('0x3b'))&&!_0x13e77b[_0x0f47('0x2c')](_0x0f47('0x3c'))){var _0x524ee3=_0x13e77b[_0x0f47('0x3d')](0x0,_0x13e77b[_0x0f47('0x3e')](_0x0f47('0x3b')));_0x13e77b+=','+_0x524ee3+_0x0f47('0x3c');}return _0x13e77b;}exports[_0x0f47('0x3f')]=validateSortParameter;function sortAgentsByStatus(_0x266e16,_0x5c85a7){var _0x339282=_0x266e16['sort'](function(_0x32eb09,_0x1753be){if(_0x32eb09['globalStatus']===_0x1753be[_0x0f47('0x33')]){if(_0x32eb09[_0x0f47('0x33')]===_0x0f47('0x15')){if(_0x5c85a7===_0x0f47('0x40')){return(_0x32eb09[_0x0f47('0x32')]||'')<(_0x1753be['pauseType']||'')||_0x32eb09['fullname'][_0x0f47('0x41')]()>_0x1753be[_0x0f47('0x3b')][_0x0f47('0x41')]()?0x1:-0x1;}else{return(_0x32eb09[_0x0f47('0x32')]||'')<(_0x1753be[_0x0f47('0x32')]||'')||_0x32eb09[_0x0f47('0x3b')][_0x0f47('0x41')]()>_0x1753be['fullname']['toLowerCase']()?-0x1:0x1;}}else{if(_0x5c85a7===_0x0f47('0x40')){return _0x32eb09[_0x0f47('0x3b')][_0x0f47('0x41')]()<_0x1753be['fullname'][_0x0f47('0x41')]()?0x1:-0x1;}else{return _0x32eb09[_0x0f47('0x3b')][_0x0f47('0x41')]()<_0x1753be[_0x0f47('0x3b')][_0x0f47('0x41')]()?-0x1:0x1;}}}else{if(_0x5c85a7===_0x0f47('0x40')){return _0x32eb09[_0x0f47('0x33')]<_0x1753be[_0x0f47('0x33')]?0x1:-0x1;}else{return _0x32eb09[_0x0f47('0x33')]<_0x1753be['globalStatus']?-0x1:0x1;}}});return _0x339282;}exports[_0x0f47('0x42')]=sortAgentsByStatus;function filterAgentAttributes(_0x2e975c){var _0x2bddb2=[_0x0f47('0x43'),_0x0f47('0x44'),_0x0f47('0x45'),_0x0f47('0x46'),_0x0f47('0x32'),_0x0f47('0x46'),'internal','address',_0x0f47('0x5'),_0x0f47('0x8'),_0x0f47('0x7'),_0x0f47('0x9'),_0x0f47('0xb'),_0x0f47('0x6'),_0x0f47('0xa'),'chatCapacity',_0x0f47('0x47'),_0x0f47('0x48'),_0x0f47('0x49'),_0x0f47('0x4a'),_0x0f47('0x4b'),_0x0f47('0x4c'),_0x0f47('0x4d'),'mailCurrentCapacity',_0x0f47('0x4e'),_0x0f47('0x4f'),_0x0f47('0x50'),_0x0f47('0x51'),'openchannelStatus',_0x0f47('0x17'),_0x0f47('0x19'),_0x0f47('0x52'),_0x0f47('0x16'),_0x0f47('0x14'),_0x0f47('0x53'),_0x0f47('0x54'),_0x0f47('0x55'),_0x0f47('0x56'),'whatsappStatusTime',_0x0f47('0x57'),_0x0f47('0x58'),_0x0f47('0x59'),_0x0f47('0x5a'),_0x0f47('0x5b'),_0x0f47('0x5c'),_0x0f47('0x5d')];var _0x40eef6=[_0x0f47('0x5'),_0x0f47('0x8'),_0x0f47('0x7'),_0x0f47('0x9'),_0x0f47('0xb'),'faxPause',_0x0f47('0xa'),_0x0f47('0x44')];var _0x16f210=_(_0x2e975c)['omit'](_0x40eef6)[_0x0f47('0x5e')](_0x2bddb2)[_0x0f47('0x2a')]();return _0x16f210;}exports[_0x0f47('0x5f')]=filterAgentAttributes;function getRealtimeAgentsQueryFields(){return['id',_0x0f47('0x60'),_0x0f47('0x3b'),'role',_0x0f47('0x3c'),'online',_0x0f47('0x33'),_0x0f47('0x43'),_0x0f47('0x45'),_0x0f47('0x32'),_0x0f47('0x46'),_0x0f47('0x6'),'chatPause','mailPause',_0x0f47('0x8'),'smsPause',_0x0f47('0xa'),_0x0f47('0xb'),_0x0f47('0x51'),'faxStatus','mailStatus','openchannelStatus','smsStatus','voiceStatus',_0x0f47('0x52'),_0x0f47('0x53'),_0x0f47('0x57'),_0x0f47('0x55'),'openchannelStatusTime',_0x0f47('0x56'),'voiceStatusTime',_0x0f47('0x61'),_0x0f47('0x62'),_0x0f47('0x4b'),_0x0f47('0x48'),_0x0f47('0x47'),_0x0f47('0x49'),_0x0f47('0x4a'),_0x0f47('0x4c'),_0x0f47('0x50'),_0x0f47('0x63'),_0x0f47('0x4d'),_0x0f47('0x4e'),_0x0f47('0x4f'),_0x0f47('0x5c'),'phoneBarEnableAutomaticScreenRecording',_0x0f47('0x5a'),_0x0f47('0x64'),_0x0f47('0x59'),_0x0f47('0x5b')];}exports[_0x0f47('0x65')]=getRealtimeAgentsQueryFields;