Built motion from commit fe909640.|2.6.8
[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 _0x7318=['globalStatus','getSortedAgentsIdsByStatus','order','startsWith','DESC','internal','substring','indexOf','validateSortParameter','sort','toLowerCase','sortAgentsByStatus','userpic','lastPauseAt','address','faxPause','chatCapacity','openchannelCapacity','mailCapacity','whatsappCapacity','faxCapacity','chatCurrentCapacity','mailCurrentCapacity','whatsappCurrentCapacity','faxCurrentCapacity','openchannelStatus','whatsappStatus','chatStatusTime','openchannelStatusTime','mailStatusTime','whatsappStatusTime','faxStatusTime','voiceStatusTime','queue','screenrecording','phoneBarEnableAutomaticScreenRecording','online','omit','pick','filterAgentAttributes','lodash','jayson/promise','../../mysqldb','client','http','chatPause','mailPause','smsPause','voicePause','whatsappPause','filter','length','idle','unknown','ringing','isNil','voiceStatus','every','chatStatus','mailStatus','smsStatus','request','then','error','Unable\x20to\x20retrieve\x20RPC\x20agents\x20(AMI)','result','Unable\x20to\x20retrieve\x20RPC\x20agents\x20(Routing)','merge','catch','pause','busy','getAgentStatus','isArray','startCase','map','findOne','getAgents','all','flatten','value','getAgentIdsByQueues','getAgentIdsByStatus','resolve','includes','User','findAll','name','fullname','openchannelPause','pauseType','find'];(function(_0x5a0cb2,_0x43a6e4){var _0x32b526=function(_0x47de3c){while(--_0x47de3c){_0x5a0cb2['push'](_0x5a0cb2['shift']());}};_0x32b526(++_0x43a6e4);}(_0x7318,0x83));var _0x8731=function(_0x12e4c6,_0x5d7ab8){_0x12e4c6=_0x12e4c6-0x0;var _0x2e7ce8=_0x7318[_0x12e4c6];return _0x2e7ce8;};'use strict';var _=require(_0x8731('0x0'));var jayson=require(_0x8731('0x1'));var db=require(_0x8731('0x2'))['db'];var amiClient=jayson[_0x8731('0x3')]['http']({'port':0x232a});var routingClient=jayson['client'][_0x8731('0x4')]({'port':0x232c});function isAgentPaused(_0x155432,_0x368826){var _0x671270=[_0x155432[_0x8731('0x5')],_0x155432['faxPause'],_0x155432[_0x8731('0x6')],_0x155432['openchannelPause'],_0x155432[_0x8731('0x7')],_0x155432[_0x8731('0x8')],_0x155432[_0x8731('0x9')]];if(!_0x368826)return _['every'](_0x671270);var _0x46fa1f=_[_0x8731('0xa')](_0x671270);return _0x46fa1f['length']>0x0&&_0x46fa1f[_0x8731('0xb')]<_0x671270['length']?!![]:![];}function isIdle(_0x48ee2f){return _0x48ee2f===_0x8731('0xc')||_0x48ee2f===_0x8731('0xd')||_0x48ee2f==='unavailable'||_0x48ee2f===_0x8731('0xe')||_[_0x8731('0xf')](_0x48ee2f);}function isAgentIdle(_0x9c8ed1){if(_0x9c8ed1[_0x8731('0x10')]!=='idle'&&_0x9c8ed1[_0x8731('0x8')]){_0x9c8ed1['voiceStatus']='pause';return![];}return _[_0x8731('0x11')]([_0x9c8ed1[_0x8731('0x12')],_0x9c8ed1['faxStatus'],_0x9c8ed1[_0x8731('0x13')],_0x9c8ed1['openchannelStatus'],_0x9c8ed1[_0x8731('0x14')],_0x9c8ed1[_0x8731('0x10')],_0x9c8ed1['whatsappStatus']],isIdle);}function getRealtimeAgents(){return amiClient[_0x8731('0x15')]('Agents',{})[_0x8731('0x16')](function(_0x2476e0){if(_0x2476e0[_0x8731('0x17')]){throw new Error(_0x8731('0x18'));}var _0xec378d=_0x2476e0[_0x8731('0x19')];return routingClient[_0x8731('0x15')]('Agents',{})[_0x8731('0x16')](function(_0x448441){if(_0x448441[_0x8731('0x17')]){throw new Error(_0x8731('0x1a'));}var _0x5dcad9=_0x448441[_0x8731('0x19')];return _[_0x8731('0x1b')]({},_0xec378d,_0x5dcad9);});})[_0x8731('0x1c')](function(_0x4a8579){throw _0x4a8579;});}exports['getRealtimeAgents']=getRealtimeAgents;function getAgentStatus(_0x386197){var _0x483ec0='unknown';if(isAgentPaused(_0x386197))_0x483ec0=_0x8731('0x1d');else if(isAgentPaused(_0x386197,!![]))_0x483ec0='*pause';else if(isAgentIdle(_0x386197))_0x483ec0=_0x8731('0xc');else _0x483ec0=_0x8731('0x1e');return _0x483ec0;}exports[_0x8731('0x1f')]=getAgentStatus;function getAgentIdsByQueues(_0x3a6c7e,_0x4fa128){var _0x39fbc4=_[_0x8731('0x20')](_0x3a6c7e)?_0x3a6c7e:[_0x3a6c7e];var _0x103dfe=_[_0x8731('0x21')](_0x4fa128)+'Queue';var _0x501450=_[_0x8731('0x22')](_0x39fbc4,function(_0x2fa67b){return db[_0x103dfe][_0x8731('0x23')]({'where':{'id':_0x2fa67b}})[_0x8731('0x16')](function(_0x32f776){if(!_0x32f776)return[];return _0x32f776[_0x8731('0x24')]({'attributes':['id'],'raw':!![]});});});return Promise[_0x8731('0x25')](_0x501450)[_0x8731('0x16')](function(_0x17eb1c){var _0x1ec9d6=_(_0x17eb1c)[_0x8731('0x26')]()[_0x8731('0x22')]('id')['uniq']()[_0x8731('0x27')]();return _0x1ec9d6;});}exports[_0x8731('0x28')]=getAgentIdsByQueues;function getAgentIdsByStatus(_0x2cdd03,_0x49b800,_0x4d0828){try{if(_0x49b800['length']>0x0){_0x2cdd03=_0x2cdd03['filter'](function(_0x16bd29){return _0x49b800['includes'](_0x16bd29['id']);});}var _0x4beb99=_0x2cdd03[_0x8731('0xa')](function(_0x330342){var _0x14ece0=_0x8731('0x1e');if(isAgentIdle(_0x330342)){_0x14ece0=_0x8731('0xc');}return _0x14ece0===_0x4d0828;});return _[_0x8731('0x22')](_0x4beb99,'id');}catch(_0x53a91b){throw _0x53a91b;}}exports[_0x8731('0x29')]=getAgentIdsByStatus;function getSortedAgentsIdsByStatus(_0x2914b0,_0x15543c,_0x3e9b2b){return Promise[_0x8731('0x2a')]()[_0x8731('0x16')](function(){if(_0x15543c[_0x8731('0xb')]>0x0){_0x2914b0=_0x2914b0[_0x8731('0xa')](function(_0x2b4127){return _0x15543c[_0x8731('0x2b')](_0x2b4127['id']);});}return _0x2914b0;})[_0x8731('0x16')](function(){return db[_0x8731('0x2c')][_0x8731('0x2d')]({'attributes':['id',_0x8731('0x2e'),_0x8731('0x2f'),_0x8731('0x5'),'faxPause',_0x8731('0x6'),_0x8731('0x30'),'smsPause',_0x8731('0x8'),_0x8731('0x9'),_0x8731('0x31')],'where':{'id':{'$in':_[_0x8731('0x22')](_0x2914b0,'id')}},'raw':!![]});})[_0x8731('0x16')](function(_0x5c610d){return _0x5c610d[_0x8731('0x22')](function(_0x4c0f7f){var _0x373ea3=_[_0x8731('0x32')](_0x2914b0,['id',_0x4c0f7f['id']]);var _0x3b3032=filterAgentAttributes(_0x373ea3);_['merge'](_0x4c0f7f,_0x3b3032);_0x4c0f7f[_0x8731('0x33')]=getAgentStatus(_0x4c0f7f);return _0x4c0f7f;});})[_0x8731('0x16')](function(_0x7ee69c){var _0x1fd4b8=sortAgentsByStatus(_0x7ee69c,_0x3e9b2b);return _['map'](_0x1fd4b8,'id');})[_0x8731('0x1c')](function(_0x47aaf7){throw _0x47aaf7;});}exports[_0x8731('0x34')]=getSortedAgentsIdsByStatus;function getUpdatedSortOptions(_0x4f83e5){var _0x3339de={'fields':[],'order':null};var _0x507b48=_0x4f83e5['split'](',');_0x3339de['fields']=_[_0x8731('0xa')](_0x507b48,function(_0x15e25e){if(!_0x15e25e[_0x8731('0x2b')](_0x8731('0x33'))){return!![];}_0x3339de[_0x8731('0x35')]=_[_0x8731('0x36')](_0x15e25e,'-')?_0x8731('0x37'):'ASC';return![];});return _0x3339de;}exports['getUpdatedSortOptions']=getUpdatedSortOptions;function validateSortParameter(_0x2fe2d6){if(_0x2fe2d6['includes'](_0x8731('0x2f'))&&!_0x2fe2d6[_0x8731('0x2b')](_0x8731('0x38'))){var _0x4206de=_0x2fe2d6[_0x8731('0x39')](0x0,_0x2fe2d6[_0x8731('0x3a')](_0x8731('0x2f')));_0x2fe2d6+=','+_0x4206de+_0x8731('0x38');}return _0x2fe2d6;}exports[_0x8731('0x3b')]=validateSortParameter;function sortAgentsByStatus(_0x4d84f0,_0x3ed2b6){var _0x4064c2=_0x4d84f0[_0x8731('0x3c')](function(_0x318b5a,_0x505197){if(_0x318b5a[_0x8731('0x33')]===_0x505197[_0x8731('0x33')]){if(_0x318b5a['globalStatus']===_0x8731('0x1d')){if(_0x3ed2b6===_0x8731('0x37')){return(_0x318b5a[_0x8731('0x31')]||'')<(_0x505197[_0x8731('0x31')]||'')||_0x318b5a[_0x8731('0x2f')][_0x8731('0x3d')]()>_0x505197['fullname'][_0x8731('0x3d')]()?0x1:-0x1;}else{return(_0x318b5a[_0x8731('0x31')]||'')<(_0x505197[_0x8731('0x31')]||'')||_0x318b5a[_0x8731('0x2f')][_0x8731('0x3d')]()>_0x505197[_0x8731('0x2f')]['toLowerCase']()?-0x1:0x1;}}else{if(_0x3ed2b6===_0x8731('0x37')){return _0x318b5a[_0x8731('0x2f')][_0x8731('0x3d')]()<_0x505197[_0x8731('0x2f')]['toLowerCase']()?0x1:-0x1;}else{return _0x318b5a[_0x8731('0x2f')][_0x8731('0x3d')]()<_0x505197[_0x8731('0x2f')][_0x8731('0x3d')]()?-0x1:0x1;}}}else{if(_0x3ed2b6===_0x8731('0x37')){return _0x318b5a[_0x8731('0x33')]<_0x505197[_0x8731('0x33')]?0x1:-0x1;}else{return _0x318b5a[_0x8731('0x33')]<_0x505197[_0x8731('0x33')]?-0x1:0x1;}}});return _0x4064c2;}exports[_0x8731('0x3e')]=sortAgentsByStatus;function filterAgentAttributes(_0x22d32f){var _0x4b9098=[_0x8731('0x3f'),'online','lastLoginAt',_0x8731('0x40'),_0x8731('0x31'),_0x8731('0x40'),'internal',_0x8731('0x41'),'chatPause',_0x8731('0x30'),_0x8731('0x6'),'smsPause',_0x8731('0x9'),_0x8731('0x42'),_0x8731('0x8'),_0x8731('0x43'),_0x8731('0x44'),_0x8731('0x45'),'smsCapacity',_0x8731('0x46'),_0x8731('0x47'),_0x8731('0x48'),'openchannelCurrentCapacity',_0x8731('0x49'),'smsCurrentCapacity',_0x8731('0x4a'),_0x8731('0x4b'),_0x8731('0x12'),_0x8731('0x4c'),_0x8731('0x13'),'smsStatus',_0x8731('0x4d'),'faxStatus',_0x8731('0x10'),_0x8731('0x4e'),_0x8731('0x4f'),_0x8731('0x50'),'smsStatusTime',_0x8731('0x51'),_0x8731('0x52'),_0x8731('0x53'),_0x8731('0x54'),'destconnectedlinenum',_0x8731('0x55'),'phoneBarEnableScreenRecordingByAgent',_0x8731('0x56'),'routealias'];var _0x3b03b2=[_0x8731('0x5'),_0x8731('0x30'),'mailPause',_0x8731('0x7'),_0x8731('0x9'),_0x8731('0x42'),_0x8731('0x8'),_0x8731('0x57')];var _0x157d47=_(_0x22d32f)[_0x8731('0x58')](_0x3b03b2)[_0x8731('0x59')](_0x4b9098)[_0x8731('0x27')]();return _0x157d47;}exports[_0x8731('0x5a')]=filterAgentAttributes;