Built motion from commit bbec7235.|2.6.20
[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 _0x99d4=['all','map','value','includes','filter','getAgentIdsByStatus','resolve','findAll','smsPause','globalStatus','getSortedAgentsIdsByStatus','split','fields','order','startsWith','DESC','fullname,internal','fullname','substring','indexOf','internal','validateSortParameter','sort','pauseType','toLowerCase','sortAgentsByStatus','userpic','online','lastLoginAt','lastPauseAt','address','chatCapacity','mailCapacity','smsCapacity','faxCapacity','chatCurrentCapacity','mailCurrentCapacity','smsCurrentCapacity','faxCurrentCapacity','openchannelStatusTime','mailStatusTime','smsStatusTime','faxStatusTime','queue','destconnectedlinenum','screenrecording','phoneBarEnableScreenRecordingByAgent','phoneBarEnableAutomaticScreenRecording','omit','pick','filterAgentAttributes','lodash','../../mysqldb','client','http','chatPause','faxPause','mailPause','openchannelPause','voicePause','whatsappPause','every','length','idle','unknown','unavailable','ringing','isNil','voiceStatus','pause','chatStatus','faxStatus','mailStatus','openchannelStatus','smsStatus','whatsappStatus','request','Agents','then','Unable\x20to\x20retrieve\x20RPC\x20agents\x20(AMI)','result','Unable\x20to\x20retrieve\x20RPC\x20agents\x20(Routing)','merge','catch','*pause','getAgentStatus','startCase','Queue','findOne'];(function(_0xc99e78,_0x26f9cf){var _0x533ee5=function(_0x49aa78){while(--_0x49aa78){_0xc99e78['push'](_0xc99e78['shift']());}};_0x533ee5(++_0x26f9cf);}(_0x99d4,0x13e));var _0x499d=function(_0x1ea84a,_0x31a991){_0x1ea84a=_0x1ea84a-0x0;var _0x39590f=_0x99d4[_0x1ea84a];return _0x39590f;};'use strict';var _=require(_0x499d('0x0'));var jayson=require('jayson/promise');var db=require(_0x499d('0x1'))['db'];var amiClient=jayson[_0x499d('0x2')][_0x499d('0x3')]({'port':0x232a});var routingClient=jayson['client'][_0x499d('0x3')]({'port':0x232c});function isAgentPaused(_0x4c011c,_0x1d1a34){var _0x4d083c=[_0x4c011c[_0x499d('0x4')],_0x4c011c[_0x499d('0x5')],_0x4c011c[_0x499d('0x6')],_0x4c011c[_0x499d('0x7')],_0x4c011c['smsPause'],_0x4c011c[_0x499d('0x8')],_0x4c011c[_0x499d('0x9')]];if(!_0x1d1a34)return _[_0x499d('0xa')](_0x4d083c);var _0x437843=_['filter'](_0x4d083c);return _0x437843[_0x499d('0xb')]>0x0&&_0x437843[_0x499d('0xb')]<_0x4d083c[_0x499d('0xb')]?!![]:![];}function isIdle(_0x27d820){return _0x27d820===_0x499d('0xc')||_0x27d820===_0x499d('0xd')||_0x27d820===_0x499d('0xe')||_0x27d820===_0x499d('0xf')||_[_0x499d('0x10')](_0x27d820);}function isAgentIdle(_0xe03ae0){if(_0xe03ae0[_0x499d('0x11')]!==_0x499d('0xc')&&_0xe03ae0[_0x499d('0x8')]){_0xe03ae0[_0x499d('0x11')]=_0x499d('0x12');return![];}return _[_0x499d('0xa')]([_0xe03ae0[_0x499d('0x13')],_0xe03ae0[_0x499d('0x14')],_0xe03ae0[_0x499d('0x15')],_0xe03ae0[_0x499d('0x16')],_0xe03ae0[_0x499d('0x17')],_0xe03ae0[_0x499d('0x11')],_0xe03ae0[_0x499d('0x18')]],isIdle);}function getRealtimeAgents(){return amiClient[_0x499d('0x19')](_0x499d('0x1a'),{})[_0x499d('0x1b')](function(_0x40e679){if(_0x40e679['error']){throw new Error(_0x499d('0x1c'));}var _0x1d12d5=_0x40e679[_0x499d('0x1d')];return routingClient['request'](_0x499d('0x1a'),{})[_0x499d('0x1b')](function(_0xd8b7a){if(_0xd8b7a['error']){throw new Error(_0x499d('0x1e'));}var _0x1adbf8=_0xd8b7a[_0x499d('0x1d')];return _[_0x499d('0x1f')]({},_0x1d12d5,_0x1adbf8);});})[_0x499d('0x20')](function(_0x15d9d0){throw _0x15d9d0;});}exports['getRealtimeAgents']=getRealtimeAgents;function getAgentStatus(_0xaba16d){var _0x4d669a=_0x499d('0xd');if(isAgentPaused(_0xaba16d))_0x4d669a='pause';else if(isAgentPaused(_0xaba16d,!![]))_0x4d669a=_0x499d('0x21');else if(isAgentIdle(_0xaba16d))_0x4d669a='idle';else _0x4d669a='busy';return _0x4d669a;}exports[_0x499d('0x22')]=getAgentStatus;function getAgentIdsByQueues(_0x2d56d5,_0x4a06a9){var _0x59a03a=_['isArray'](_0x2d56d5)?_0x2d56d5:[_0x2d56d5];var _0x4a81ca=_[_0x499d('0x23')](_0x4a06a9)+_0x499d('0x24');var _0x594400=_['map'](_0x59a03a,function(_0x15fbdd){return db[_0x4a81ca][_0x499d('0x25')]({'where':{'id':_0x15fbdd}})[_0x499d('0x1b')](function(_0x235003){if(!_0x235003)return[];return _0x235003['getAgents']({'attributes':['id'],'raw':!![]});});});return Promise[_0x499d('0x26')](_0x594400)[_0x499d('0x1b')](function(_0x4a8591){var _0x330fcc=_(_0x4a8591)['flatten']()[_0x499d('0x27')]('id')['uniq']()[_0x499d('0x28')]();return _0x330fcc;});}exports['getAgentIdsByQueues']=getAgentIdsByQueues;function getAgentIdsByStatus(_0x4d3417,_0x125df8,_0x3ff4e2){try{if(_0x125df8[_0x499d('0xb')]>0x0){_0x4d3417=_0x4d3417['filter'](function(_0x28c6f6){return _0x125df8[_0x499d('0x29')](_0x28c6f6['id']);});}var _0xc1cf9c=_0x4d3417[_0x499d('0x2a')](function(_0x44c595){var _0x418380='busy';if(isAgentIdle(_0x44c595)){_0x418380=_0x499d('0xc');}return _0x418380===_0x3ff4e2;});return _[_0x499d('0x27')](_0xc1cf9c,'id');}catch(_0x544734){throw _0x544734;}}exports[_0x499d('0x2b')]=getAgentIdsByStatus;function getSortedAgentsIdsByStatus(_0x222fc0,_0x144731,_0x30471d){return Promise[_0x499d('0x2c')]()[_0x499d('0x1b')](function(){if(_0x144731[_0x499d('0xb')]>0x0){_0x222fc0=_0x222fc0[_0x499d('0x2a')](function(_0x2f4073){return _0x144731['includes'](_0x2f4073['id']);});}return _0x222fc0;})[_0x499d('0x1b')](function(){return db['User'][_0x499d('0x2d')]({'attributes':['id','name','fullname','chatPause',_0x499d('0x5'),_0x499d('0x6'),_0x499d('0x7'),_0x499d('0x2e'),_0x499d('0x8'),'whatsappPause','pauseType'],'where':{'id':{'$in':_['map'](_0x222fc0,'id')}},'raw':!![]});})[_0x499d('0x1b')](function(_0x2f028a){return _0x2f028a[_0x499d('0x27')](function(_0xe94edf){var _0x4305bd=_['find'](_0x222fc0,['id',_0xe94edf['id']]);var _0x58fb22=filterAgentAttributes(_0x4305bd);_[_0x499d('0x1f')](_0xe94edf,_0x58fb22);_0xe94edf[_0x499d('0x2f')]=getAgentStatus(_0xe94edf);return _0xe94edf;});})[_0x499d('0x1b')](function(_0x850350){var _0x1d3d5a=sortAgentsByStatus(_0x850350,_0x30471d);return _[_0x499d('0x27')](_0x1d3d5a,'id');})['catch'](function(_0x94344){throw _0x94344;});}exports[_0x499d('0x30')]=getSortedAgentsIdsByStatus;function getUpdatedSortOptions(_0x424920){var _0xdd5812={'fields':[],'order':null};var _0x4b39f4=_0x424920[_0x499d('0x31')](',');_0xdd5812[_0x499d('0x32')]=_[_0x499d('0x2a')](_0x4b39f4,function(_0x516194){if(!_0x516194[_0x499d('0x29')](_0x499d('0x2f'))){return!![];}_0xdd5812[_0x499d('0x33')]=_[_0x499d('0x34')](_0x516194,'-')?_0x499d('0x35'):'ASC';return![];});return _0xdd5812;}exports['getUpdatedSortOptions']=getUpdatedSortOptions;function validateSortParameter(_0x20e336){if(!_0x20e336){_0x20e336=_0x499d('0x36');}if(_0x20e336[_0x499d('0x29')](_0x499d('0x37'))&&!_0x20e336[_0x499d('0x29')]('internal')){var _0x1b40e5=_0x20e336[_0x499d('0x38')](0x0,_0x20e336[_0x499d('0x39')](_0x499d('0x37')));_0x20e336+=','+_0x1b40e5+_0x499d('0x3a');}return _0x20e336;}exports[_0x499d('0x3b')]=validateSortParameter;function sortAgentsByStatus(_0x5ebeb5,_0x393bfa){var _0x5a7d0d=_0x5ebeb5[_0x499d('0x3c')](function(_0x189a6b,_0x2b9cb9){if(_0x189a6b[_0x499d('0x2f')]===_0x2b9cb9[_0x499d('0x2f')]){if(_0x189a6b['globalStatus']===_0x499d('0x12')){if(_0x393bfa===_0x499d('0x35')){return(_0x189a6b[_0x499d('0x3d')]||'')<(_0x2b9cb9[_0x499d('0x3d')]||'')||_0x189a6b[_0x499d('0x37')][_0x499d('0x3e')]()>_0x2b9cb9[_0x499d('0x37')][_0x499d('0x3e')]()?0x1:-0x1;}else{return(_0x189a6b[_0x499d('0x3d')]||'')<(_0x2b9cb9['pauseType']||'')||_0x189a6b[_0x499d('0x37')][_0x499d('0x3e')]()>_0x2b9cb9[_0x499d('0x37')][_0x499d('0x3e')]()?-0x1:0x1;}}else{if(_0x393bfa===_0x499d('0x35')){return _0x189a6b[_0x499d('0x37')][_0x499d('0x3e')]()<_0x2b9cb9[_0x499d('0x37')]['toLowerCase']()?0x1:-0x1;}else{return _0x189a6b[_0x499d('0x37')][_0x499d('0x3e')]()<_0x2b9cb9[_0x499d('0x37')]['toLowerCase']()?-0x1:0x1;}}}else{if(_0x393bfa===_0x499d('0x35')){return _0x189a6b[_0x499d('0x2f')]<_0x2b9cb9[_0x499d('0x2f')]?0x1:-0x1;}else{return _0x189a6b[_0x499d('0x2f')]<_0x2b9cb9[_0x499d('0x2f')]?-0x1:0x1;}}});return _0x5a7d0d;}exports[_0x499d('0x3f')]=sortAgentsByStatus;function filterAgentAttributes(_0x51f956){var _0x4dc763=[_0x499d('0x40'),_0x499d('0x41'),_0x499d('0x42'),_0x499d('0x43'),'pauseType','lastPauseAt','internal',_0x499d('0x44'),_0x499d('0x4'),_0x499d('0x7'),_0x499d('0x6'),_0x499d('0x2e'),_0x499d('0x9'),'faxPause','voicePause',_0x499d('0x45'),'openchannelCapacity',_0x499d('0x46'),_0x499d('0x47'),'whatsappCapacity',_0x499d('0x48'),_0x499d('0x49'),'openchannelCurrentCapacity',_0x499d('0x4a'),_0x499d('0x4b'),'whatsappCurrentCapacity',_0x499d('0x4c'),_0x499d('0x13'),_0x499d('0x16'),_0x499d('0x15'),_0x499d('0x17'),_0x499d('0x18'),_0x499d('0x14'),'voiceStatus','chatStatusTime',_0x499d('0x4d'),_0x499d('0x4e'),_0x499d('0x4f'),'whatsappStatusTime',_0x499d('0x50'),'voiceStatusTime',_0x499d('0x51'),_0x499d('0x52'),_0x499d('0x53'),_0x499d('0x54'),_0x499d('0x55'),'routealias'];var _0x7c0538=[_0x499d('0x4'),'openchannelPause',_0x499d('0x6'),_0x499d('0x2e'),_0x499d('0x9'),_0x499d('0x5'),_0x499d('0x8'),'online'];var _0x3c87e0=_(_0x51f956)[_0x499d('0x56')](_0x7c0538)[_0x499d('0x57')](_0x4dc763)[_0x499d('0x28')]();return _0x3c87e0;}exports[_0x499d('0x58')]=filterAgentAttributes;