Built motion from commit 3d3e98f2.|2.6.29
[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 _0xb79a=['filterAgentAttributes','role','lastLoginAt','whatsappStatusTime','chatCapacity','faxCapacity','smsCapacity','mailCurrentCapacity','onhold','getRealtimeAgentsQueryFields','lodash','jayson/promise','client','http','chatPause','mailPause','smsPause','voicePause','whatsappPause','every','filter','length','idle','ringing','isNil','voiceStatus','faxStatus','mailStatus','openchannelStatus','Agents','then','result','error','merge','catch','getRealtimeAgents','unknown','pause','getAgentStatus','isArray','startCase','Queue','map','getAgents','all','flatten','uniq','value','getAgentIdsByQueues','includes','busy','getAgentIdsByStatus','resolve','User','name','faxPause','openchannelPause','pauseType','find','globalStatus','split','fields','order','startsWith','DESC','ASC','fullname','indexOf','validateSortParameter','sort','toLowerCase','userpic','online','lastPauseAt','internal','address','openchannelCapacity','mailCapacity','chatCurrentCapacity','openchannelCurrentCapacity','smsCurrentCapacity','whatsappCurrentCapacity','chatStatus','smsStatus','whatsappStatus','chatStatusTime','openchannelStatusTime','mailStatusTime','smsStatusTime','faxStatusTime','voiceStatusTime','queue','destconnectedlinenum','screenrecording','phoneBarEnableScreenRecordingByAgent','phoneBarEnableAutomaticScreenRecording','omit'];(function(_0x565c49,_0x54acd0){var _0x20ca34=function(_0x42f7e1){while(--_0x42f7e1){_0x565c49['push'](_0x565c49['shift']());}};_0x20ca34(++_0x54acd0);}(_0xb79a,0x18e));var _0xab79=function(_0x2641f9,_0x26715f){_0x2641f9=_0x2641f9-0x0;var _0x585741=_0xb79a[_0x2641f9];return _0x585741;};'use strict';var _=require(_0xab79('0x0'));var jayson=require(_0xab79('0x1'));var db=require('../../mysqldb')['db'];var amiClient=jayson[_0xab79('0x2')][_0xab79('0x3')]({'port':0x232a});var routingClient=jayson[_0xab79('0x2')][_0xab79('0x3')]({'port':0x232c});function isAgentPaused(_0x3756b0,_0x40fa8a){var _0x55116=[_0x3756b0[_0xab79('0x4')],_0x3756b0['faxPause'],_0x3756b0[_0xab79('0x5')],_0x3756b0['openchannelPause'],_0x3756b0[_0xab79('0x6')],_0x3756b0[_0xab79('0x7')],_0x3756b0[_0xab79('0x8')]];if(!_0x40fa8a)return _[_0xab79('0x9')](_0x55116);var _0x4585fe=_[_0xab79('0xa')](_0x55116);return _0x4585fe[_0xab79('0xb')]>0x0&&_0x4585fe[_0xab79('0xb')]<_0x55116[_0xab79('0xb')]?!![]:![];}function isIdle(_0x283acc){return _0x283acc===_0xab79('0xc')||_0x283acc==='unknown'||_0x283acc==='unavailable'||_0x283acc===_0xab79('0xd')||_[_0xab79('0xe')](_0x283acc);}function isAgentIdle(_0x2a06c7){if(_0x2a06c7[_0xab79('0xf')]!==_0xab79('0xc')&&_0x2a06c7[_0xab79('0x7')]){_0x2a06c7['voiceStatus']='pause';return![];}return _[_0xab79('0x9')]([_0x2a06c7['chatStatus'],_0x2a06c7[_0xab79('0x10')],_0x2a06c7[_0xab79('0x11')],_0x2a06c7[_0xab79('0x12')],_0x2a06c7['smsStatus'],_0x2a06c7['voiceStatus'],_0x2a06c7['whatsappStatus']],isIdle);}function getRealtimeAgents(){return amiClient['request'](_0xab79('0x13'),{})[_0xab79('0x14')](function(_0x4ae6d8){if(_0x4ae6d8['error']){throw new Error('Unable\x20to\x20retrieve\x20RPC\x20agents\x20(AMI)');}var _0x3e42cb=_0x4ae6d8[_0xab79('0x15')];return routingClient['request'](_0xab79('0x13'),{})[_0xab79('0x14')](function(_0x3393de){if(_0x3393de[_0xab79('0x16')]){throw new Error('Unable\x20to\x20retrieve\x20RPC\x20agents\x20(Routing)');}var _0x2716ef=_0x3393de[_0xab79('0x15')];return _[_0xab79('0x17')]({},_0x3e42cb,_0x2716ef);});})[_0xab79('0x18')](function(_0x4e71b8){throw _0x4e71b8;});}exports[_0xab79('0x19')]=getRealtimeAgents;function getAgentStatus(_0x2b49e8){var _0x3777aa=_0xab79('0x1a');if(isAgentPaused(_0x2b49e8))_0x3777aa=_0xab79('0x1b');else if(isAgentPaused(_0x2b49e8,!![]))_0x3777aa='*pause';else if(isAgentIdle(_0x2b49e8))_0x3777aa=_0xab79('0xc');else _0x3777aa='busy';return _0x3777aa;}exports[_0xab79('0x1c')]=getAgentStatus;function getAgentIdsByQueues(_0x3a0e04,_0x37e1d5){var _0x1bea71=_[_0xab79('0x1d')](_0x3a0e04)?_0x3a0e04:[_0x3a0e04];var _0x9315bd=_[_0xab79('0x1e')](_0x37e1d5)+_0xab79('0x1f');var _0x397ce4=_[_0xab79('0x20')](_0x1bea71,function(_0xb669a){return db[_0x9315bd]['findOne']({'where':{'id':_0xb669a}})[_0xab79('0x14')](function(_0x1e6ac1){if(!_0x1e6ac1)return[];return _0x1e6ac1[_0xab79('0x21')]({'attributes':['id'],'raw':!![]});});});return Promise[_0xab79('0x22')](_0x397ce4)[_0xab79('0x14')](function(_0x241c89){var _0x441b08=_(_0x241c89)[_0xab79('0x23')]()['map']('id')[_0xab79('0x24')]()[_0xab79('0x25')]();return _0x441b08;});}exports[_0xab79('0x26')]=getAgentIdsByQueues;function getAgentIdsByStatus(_0x4eecc3,_0x4d5d2f,_0x16edca){try{if(_0x4d5d2f[_0xab79('0xb')]>0x0){_0x4eecc3=_0x4eecc3['filter'](function(_0x2f6dc3){return _0x4d5d2f[_0xab79('0x27')](_0x2f6dc3['id']);});}var _0x3295c0=_0x4eecc3['filter'](function(_0x58e8a4){var _0x9fc678=_0xab79('0x28');if(isAgentIdle(_0x58e8a4)){_0x9fc678='idle';}return _0x9fc678===_0x16edca;});return _[_0xab79('0x20')](_0x3295c0,'id');}catch(_0x4b5396){throw _0x4b5396;}}exports[_0xab79('0x29')]=getAgentIdsByStatus;function getSortedAgentsIdsByStatus(_0x18e9bf,_0x5520bd,_0x42f534){return Promise[_0xab79('0x2a')]()[_0xab79('0x14')](function(){if(_0x5520bd[_0xab79('0xb')]>0x0){_0x18e9bf=_0x18e9bf[_0xab79('0xa')](function(_0x5abac9){return _0x5520bd[_0xab79('0x27')](_0x5abac9['id']);});}return _0x18e9bf;})['then'](function(){return db[_0xab79('0x2b')]['findAll']({'attributes':['id',_0xab79('0x2c'),'fullname',_0xab79('0x4'),_0xab79('0x2d'),_0xab79('0x5'),_0xab79('0x2e'),_0xab79('0x6'),'voicePause',_0xab79('0x8'),_0xab79('0x2f')],'where':{'id':{'$in':_['map'](_0x18e9bf,'id')}},'raw':!![]});})[_0xab79('0x14')](function(_0x5333be){return _0x5333be[_0xab79('0x20')](function(_0x523c2f){var _0x3d9fa9=_[_0xab79('0x30')](_0x18e9bf,['id',_0x523c2f['id']]);var _0x1305d2=filterAgentAttributes(_0x3d9fa9);_[_0xab79('0x17')](_0x523c2f,_0x1305d2);_0x523c2f[_0xab79('0x31')]=getAgentStatus(_0x523c2f);return _0x523c2f;});})['then'](function(_0x5e6fa4){var _0x4d8396=sortAgentsByStatus(_0x5e6fa4,_0x42f534);return _['map'](_0x4d8396,'id');})[_0xab79('0x18')](function(_0x23070d){throw _0x23070d;});}exports['getSortedAgentsIdsByStatus']=getSortedAgentsIdsByStatus;function getUpdatedSortOptions(_0xe4246){var _0x4c1f1a={'fields':[],'order':null};var _0x39c587=_0xe4246[_0xab79('0x32')](',');_0x4c1f1a[_0xab79('0x33')]=_[_0xab79('0xa')](_0x39c587,function(_0x29e104){if(!_0x29e104[_0xab79('0x27')](_0xab79('0x31'))){return!![];}_0x4c1f1a[_0xab79('0x34')]=_[_0xab79('0x35')](_0x29e104,'-')?_0xab79('0x36'):_0xab79('0x37');return![];});return _0x4c1f1a;}exports['getUpdatedSortOptions']=getUpdatedSortOptions;function validateSortParameter(_0x3637eb){if(!_0x3637eb){_0x3637eb='fullname,internal';}if(_0x3637eb['includes'](_0xab79('0x38'))&&!_0x3637eb[_0xab79('0x27')]('internal')){var _0x3f6676=_0x3637eb['substring'](0x0,_0x3637eb[_0xab79('0x39')](_0xab79('0x38')));_0x3637eb+=','+_0x3f6676+'internal';}return _0x3637eb;}exports[_0xab79('0x3a')]=validateSortParameter;function sortAgentsByStatus(_0x4db42d,_0x37780f){var _0x49d766=_0x4db42d[_0xab79('0x3b')](function(_0x1214f4,_0x4bd32e){if(_0x1214f4[_0xab79('0x31')]===_0x4bd32e['globalStatus']){if(_0x1214f4[_0xab79('0x31')]===_0xab79('0x1b')){if(_0x37780f===_0xab79('0x36')){return(_0x1214f4['pauseType']||'')<(_0x4bd32e[_0xab79('0x2f')]||'')||_0x1214f4[_0xab79('0x38')][_0xab79('0x3c')]()>_0x4bd32e[_0xab79('0x38')][_0xab79('0x3c')]()?0x1:-0x1;}else{return(_0x1214f4['pauseType']||'')<(_0x4bd32e['pauseType']||'')||_0x1214f4['fullname'][_0xab79('0x3c')]()>_0x4bd32e['fullname'][_0xab79('0x3c')]()?-0x1:0x1;}}else{if(_0x37780f===_0xab79('0x36')){return _0x1214f4[_0xab79('0x38')][_0xab79('0x3c')]()<_0x4bd32e[_0xab79('0x38')]['toLowerCase']()?0x1:-0x1;}else{return _0x1214f4[_0xab79('0x38')][_0xab79('0x3c')]()<_0x4bd32e[_0xab79('0x38')][_0xab79('0x3c')]()?-0x1:0x1;}}}else{if(_0x37780f===_0xab79('0x36')){return _0x1214f4[_0xab79('0x31')]<_0x4bd32e[_0xab79('0x31')]?0x1:-0x1;}else{return _0x1214f4['globalStatus']<_0x4bd32e[_0xab79('0x31')]?-0x1:0x1;}}});return _0x49d766;}exports['sortAgentsByStatus']=sortAgentsByStatus;function filterAgentAttributes(_0x649e1){var _0x1005fd=[_0xab79('0x3d'),_0xab79('0x3e'),'lastLoginAt','lastPauseAt',_0xab79('0x2f'),_0xab79('0x3f'),_0xab79('0x40'),_0xab79('0x41'),'chatPause',_0xab79('0x2e'),_0xab79('0x5'),_0xab79('0x6'),_0xab79('0x8'),'faxPause',_0xab79('0x7'),'chatCapacity',_0xab79('0x42'),_0xab79('0x43'),'smsCapacity','whatsappCapacity','faxCapacity',_0xab79('0x44'),_0xab79('0x45'),'mailCurrentCapacity',_0xab79('0x46'),_0xab79('0x47'),'faxCurrentCapacity',_0xab79('0x48'),_0xab79('0x12'),_0xab79('0x11'),_0xab79('0x49'),_0xab79('0x4a'),'faxStatus',_0xab79('0xf'),_0xab79('0x4b'),_0xab79('0x4c'),_0xab79('0x4d'),_0xab79('0x4e'),'whatsappStatusTime',_0xab79('0x4f'),_0xab79('0x50'),_0xab79('0x51'),_0xab79('0x52'),_0xab79('0x53'),_0xab79('0x54'),_0xab79('0x55')];var _0x2e8d73=[_0xab79('0x4'),_0xab79('0x2e'),_0xab79('0x5'),_0xab79('0x6'),_0xab79('0x8'),_0xab79('0x2d'),_0xab79('0x7'),'online'];var _0x36aad7=_(_0x649e1)[_0xab79('0x56')](_0x2e8d73)['pick'](_0x1005fd)[_0xab79('0x25')]();return _0x36aad7;}exports[_0xab79('0x57')]=filterAgentAttributes;function getRealtimeAgentsQueryFields(){return['id',_0xab79('0x2c'),_0xab79('0x38'),_0xab79('0x58'),'internal',_0xab79('0x3e'),'globalStatus',_0xab79('0x3d'),_0xab79('0x59'),'pauseType',_0xab79('0x3f'),_0xab79('0x2d'),'chatPause',_0xab79('0x5'),_0xab79('0x2e'),_0xab79('0x6'),_0xab79('0x7'),_0xab79('0x8'),_0xab79('0x48'),_0xab79('0x10'),_0xab79('0x11'),_0xab79('0x12'),_0xab79('0x49'),_0xab79('0xf'),_0xab79('0x4a'),'chatStatusTime',_0xab79('0x4f'),_0xab79('0x4d'),'openchannelStatusTime',_0xab79('0x4e'),_0xab79('0x50'),_0xab79('0x5a'),_0xab79('0x5b'),_0xab79('0x5c'),_0xab79('0x43'),_0xab79('0x42'),_0xab79('0x5d'),'whatsappCapacity',_0xab79('0x44'),'faxCurrentCapacity',_0xab79('0x5e'),_0xab79('0x45'),_0xab79('0x46'),_0xab79('0x47'),_0xab79('0x54'),'phoneBarEnableAutomaticScreenRecording',_0xab79('0x52'),_0xab79('0x5f'),_0xab79('0x51'),_0xab79('0x53')];}exports[_0xab79('0x60')]=getRealtimeAgentsQueryFields;