Built motion from commit c738b9ac.|2.6.25
[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 _0x425d=['getAgents','all','flatten','uniq','getAgentIdsByQueues','includes','getAgentIdsByStatus','resolve','User','name','fullname','whatsappPause','find','merge','catch','getSortedAgentsIdsByStatus','split','globalStatus','order','getUpdatedSortOptions','fullname,internal','internal','substring','indexOf','validateSortParameter','sort','DESC','pauseType','toLowerCase','sortAgentsByStatus','userpic','lastLoginAt','lastPauseAt','chatCapacity','openchannelCapacity','smsCapacity','whatsappCapacity','faxCapacity','chatCurrentCapacity','mailCurrentCapacity','smsCurrentCapacity','whatsappCurrentCapacity','faxCurrentCapacity','faxStatus','openchannelStatusTime','whatsappStatusTime','faxStatusTime','voiceStatusTime','queue','destconnectedlinenum','screenrecording','phoneBarEnableScreenRecordingByAgent','phoneBarEnableAutomaticScreenRecording','pick','value','filterAgentAttributes','chatStatusTime','mailStatusTime','smsStatusTime','mailCapacity','openchannelCurrentCapacity','onhold','routealias','getRealtimeAgentsQueryFields','lodash','../../mysqldb','client','http','chatPause','faxPause','mailPause','openchannelPause','smsPause','voicePause','every','filter','length','idle','unknown','unavailable','ringing','isNil','voiceStatus','pause','chatStatus','mailStatus','openchannelStatus','smsStatus','whatsappStatus','request','Agents','then','Unable\x20to\x20retrieve\x20RPC\x20agents\x20(AMI)','result','error','Unable\x20to\x20retrieve\x20RPC\x20agents\x20(Routing)','getRealtimeAgents','busy','getAgentStatus','isArray','startCase','Queue','map','findOne'];(function(_0x42cae2,_0x284ef8){var _0x5f256f=function(_0x41abc8){while(--_0x41abc8){_0x42cae2['push'](_0x42cae2['shift']());}};_0x5f256f(++_0x284ef8);}(_0x425d,0x1e0));var _0xd425=function(_0x16017e,_0xf8154b){_0x16017e=_0x16017e-0x0;var _0x365023=_0x425d[_0x16017e];return _0x365023;};'use strict';var _=require(_0xd425('0x0'));var jayson=require('jayson/promise');var db=require(_0xd425('0x1'))['db'];var amiClient=jayson[_0xd425('0x2')][_0xd425('0x3')]({'port':0x232a});var routingClient=jayson[_0xd425('0x2')][_0xd425('0x3')]({'port':0x232c});function isAgentPaused(_0x44ba48,_0x47043f){var _0x596be7=[_0x44ba48[_0xd425('0x4')],_0x44ba48[_0xd425('0x5')],_0x44ba48[_0xd425('0x6')],_0x44ba48[_0xd425('0x7')],_0x44ba48[_0xd425('0x8')],_0x44ba48[_0xd425('0x9')],_0x44ba48['whatsappPause']];if(!_0x47043f)return _[_0xd425('0xa')](_0x596be7);var _0x374c3d=_[_0xd425('0xb')](_0x596be7);return _0x374c3d[_0xd425('0xc')]>0x0&&_0x374c3d[_0xd425('0xc')]<_0x596be7[_0xd425('0xc')]?!![]:![];}function isIdle(_0x30111e){return _0x30111e===_0xd425('0xd')||_0x30111e===_0xd425('0xe')||_0x30111e===_0xd425('0xf')||_0x30111e===_0xd425('0x10')||_[_0xd425('0x11')](_0x30111e);}function isAgentIdle(_0x26f6d2){if(_0x26f6d2[_0xd425('0x12')]!==_0xd425('0xd')&&_0x26f6d2[_0xd425('0x9')]){_0x26f6d2[_0xd425('0x12')]=_0xd425('0x13');return![];}return _[_0xd425('0xa')]([_0x26f6d2[_0xd425('0x14')],_0x26f6d2['faxStatus'],_0x26f6d2[_0xd425('0x15')],_0x26f6d2[_0xd425('0x16')],_0x26f6d2[_0xd425('0x17')],_0x26f6d2['voiceStatus'],_0x26f6d2[_0xd425('0x18')]],isIdle);}function getRealtimeAgents(){return amiClient[_0xd425('0x19')](_0xd425('0x1a'),{})[_0xd425('0x1b')](function(_0x1fc822){if(_0x1fc822['error']){throw new Error(_0xd425('0x1c'));}var _0x471267=_0x1fc822[_0xd425('0x1d')];return routingClient[_0xd425('0x19')]('Agents',{})[_0xd425('0x1b')](function(_0x434d97){if(_0x434d97[_0xd425('0x1e')]){throw new Error(_0xd425('0x1f'));}var _0x4e88fa=_0x434d97['result'];return _['merge']({},_0x471267,_0x4e88fa);});})['catch'](function(_0x427304){throw _0x427304;});}exports[_0xd425('0x20')]=getRealtimeAgents;function getAgentStatus(_0x3c98db){var _0x5e797a=_0xd425('0xe');if(isAgentPaused(_0x3c98db))_0x5e797a=_0xd425('0x13');else if(isAgentPaused(_0x3c98db,!![]))_0x5e797a='*pause';else if(isAgentIdle(_0x3c98db))_0x5e797a=_0xd425('0xd');else _0x5e797a=_0xd425('0x21');return _0x5e797a;}exports[_0xd425('0x22')]=getAgentStatus;function getAgentIdsByQueues(_0x1d3fc0,_0x3e93db){var _0xb240c4=_[_0xd425('0x23')](_0x1d3fc0)?_0x1d3fc0:[_0x1d3fc0];var _0x3500bb=_[_0xd425('0x24')](_0x3e93db)+_0xd425('0x25');var _0x151ad9=_[_0xd425('0x26')](_0xb240c4,function(_0x47f44a){return db[_0x3500bb][_0xd425('0x27')]({'where':{'id':_0x47f44a}})[_0xd425('0x1b')](function(_0x398985){if(!_0x398985)return[];return _0x398985[_0xd425('0x28')]({'attributes':['id'],'raw':!![]});});});return Promise[_0xd425('0x29')](_0x151ad9)[_0xd425('0x1b')](function(_0x3c3402){var _0x577e4b=_(_0x3c3402)[_0xd425('0x2a')]()[_0xd425('0x26')]('id')[_0xd425('0x2b')]()['value']();return _0x577e4b;});}exports[_0xd425('0x2c')]=getAgentIdsByQueues;function getAgentIdsByStatus(_0x3ad9bd,_0x433189,_0x999fb9){try{if(_0x433189[_0xd425('0xc')]>0x0){_0x3ad9bd=_0x3ad9bd[_0xd425('0xb')](function(_0x2fd17a){return _0x433189[_0xd425('0x2d')](_0x2fd17a['id']);});}var _0x24da23=_0x3ad9bd[_0xd425('0xb')](function(_0x482ba6){var _0x471e3e=_0xd425('0x21');if(isAgentIdle(_0x482ba6)){_0x471e3e=_0xd425('0xd');}return _0x471e3e===_0x999fb9;});return _[_0xd425('0x26')](_0x24da23,'id');}catch(_0x3275b1){throw _0x3275b1;}}exports[_0xd425('0x2e')]=getAgentIdsByStatus;function getSortedAgentsIdsByStatus(_0x47405f,_0x40c392,_0x3ec51b){return Promise[_0xd425('0x2f')]()[_0xd425('0x1b')](function(){if(_0x40c392['length']>0x0){_0x47405f=_0x47405f[_0xd425('0xb')](function(_0x2a2a9b){return _0x40c392[_0xd425('0x2d')](_0x2a2a9b['id']);});}return _0x47405f;})[_0xd425('0x1b')](function(){return db[_0xd425('0x30')]['findAll']({'attributes':['id',_0xd425('0x31'),_0xd425('0x32'),'chatPause','faxPause','mailPause',_0xd425('0x7'),_0xd425('0x8'),_0xd425('0x9'),_0xd425('0x33'),'pauseType'],'where':{'id':{'$in':_[_0xd425('0x26')](_0x47405f,'id')}},'raw':!![]});})[_0xd425('0x1b')](function(_0x30a9dc){return _0x30a9dc[_0xd425('0x26')](function(_0x27b9e2){var _0x1e12f2=_[_0xd425('0x34')](_0x47405f,['id',_0x27b9e2['id']]);var _0x533af1=filterAgentAttributes(_0x1e12f2);_[_0xd425('0x35')](_0x27b9e2,_0x533af1);_0x27b9e2['globalStatus']=getAgentStatus(_0x27b9e2);return _0x27b9e2;});})[_0xd425('0x1b')](function(_0x29cca9){var _0x36c8da=sortAgentsByStatus(_0x29cca9,_0x3ec51b);return _['map'](_0x36c8da,'id');})[_0xd425('0x36')](function(_0x26806c){throw _0x26806c;});}exports[_0xd425('0x37')]=getSortedAgentsIdsByStatus;function getUpdatedSortOptions(_0x46cfe2){var _0x58f36d={'fields':[],'order':null};var _0x1d38fa=_0x46cfe2[_0xd425('0x38')](',');_0x58f36d['fields']=_['filter'](_0x1d38fa,function(_0x48fc85){if(!_0x48fc85[_0xd425('0x2d')](_0xd425('0x39'))){return!![];}_0x58f36d[_0xd425('0x3a')]=_['startsWith'](_0x48fc85,'-')?'DESC':'ASC';return![];});return _0x58f36d;}exports[_0xd425('0x3b')]=getUpdatedSortOptions;function validateSortParameter(_0x3f9090){if(!_0x3f9090){_0x3f9090=_0xd425('0x3c');}if(_0x3f9090[_0xd425('0x2d')](_0xd425('0x32'))&&!_0x3f9090[_0xd425('0x2d')](_0xd425('0x3d'))){var _0x4b922f=_0x3f9090[_0xd425('0x3e')](0x0,_0x3f9090[_0xd425('0x3f')](_0xd425('0x32')));_0x3f9090+=','+_0x4b922f+'internal';}return _0x3f9090;}exports[_0xd425('0x40')]=validateSortParameter;function sortAgentsByStatus(_0x2dffc7,_0x336a87){var _0x5dc4c4=_0x2dffc7[_0xd425('0x41')](function(_0x12b970,_0x1c5ba6){if(_0x12b970[_0xd425('0x39')]===_0x1c5ba6['globalStatus']){if(_0x12b970[_0xd425('0x39')]===_0xd425('0x13')){if(_0x336a87===_0xd425('0x42')){return(_0x12b970[_0xd425('0x43')]||'')<(_0x1c5ba6[_0xd425('0x43')]||'')||_0x12b970[_0xd425('0x32')][_0xd425('0x44')]()>_0x1c5ba6['fullname'][_0xd425('0x44')]()?0x1:-0x1;}else{return(_0x12b970[_0xd425('0x43')]||'')<(_0x1c5ba6['pauseType']||'')||_0x12b970[_0xd425('0x32')]['toLowerCase']()>_0x1c5ba6['fullname'][_0xd425('0x44')]()?-0x1:0x1;}}else{if(_0x336a87==='DESC'){return _0x12b970[_0xd425('0x32')]['toLowerCase']()<_0x1c5ba6[_0xd425('0x32')][_0xd425('0x44')]()?0x1:-0x1;}else{return _0x12b970[_0xd425('0x32')][_0xd425('0x44')]()<_0x1c5ba6[_0xd425('0x32')]['toLowerCase']()?-0x1:0x1;}}}else{if(_0x336a87===_0xd425('0x42')){return _0x12b970['globalStatus']<_0x1c5ba6[_0xd425('0x39')]?0x1:-0x1;}else{return _0x12b970['globalStatus']<_0x1c5ba6[_0xd425('0x39')]?-0x1:0x1;}}});return _0x5dc4c4;}exports[_0xd425('0x45')]=sortAgentsByStatus;function filterAgentAttributes(_0x3fd2ce){var _0x15d8fd=[_0xd425('0x46'),'online',_0xd425('0x47'),_0xd425('0x48'),_0xd425('0x43'),_0xd425('0x48'),_0xd425('0x3d'),'address',_0xd425('0x4'),_0xd425('0x7'),_0xd425('0x6'),_0xd425('0x8'),_0xd425('0x33'),_0xd425('0x5'),'voicePause',_0xd425('0x49'),_0xd425('0x4a'),'mailCapacity',_0xd425('0x4b'),_0xd425('0x4c'),_0xd425('0x4d'),_0xd425('0x4e'),'openchannelCurrentCapacity',_0xd425('0x4f'),_0xd425('0x50'),_0xd425('0x51'),_0xd425('0x52'),_0xd425('0x14'),'openchannelStatus','mailStatus',_0xd425('0x17'),'whatsappStatus',_0xd425('0x53'),_0xd425('0x12'),'chatStatusTime',_0xd425('0x54'),'mailStatusTime','smsStatusTime',_0xd425('0x55'),_0xd425('0x56'),_0xd425('0x57'),_0xd425('0x58'),_0xd425('0x59'),_0xd425('0x5a'),_0xd425('0x5b'),_0xd425('0x5c'),'routealias'];var _0x11ed71=[_0xd425('0x4'),_0xd425('0x7'),_0xd425('0x6'),_0xd425('0x8'),_0xd425('0x33'),_0xd425('0x5'),_0xd425('0x9'),'online'];var _0x4a2508=_(_0x3fd2ce)['omit'](_0x11ed71)[_0xd425('0x5d')](_0x15d8fd)[_0xd425('0x5e')]();return _0x4a2508;}exports[_0xd425('0x5f')]=filterAgentAttributes;function getRealtimeAgentsQueryFields(){return['id',_0xd425('0x31'),'fullname','role','internal','online',_0xd425('0x39'),_0xd425('0x46'),'lastLoginAt',_0xd425('0x43'),_0xd425('0x48'),_0xd425('0x5'),'chatPause','mailPause',_0xd425('0x7'),'smsPause','voicePause','whatsappPause',_0xd425('0x14'),_0xd425('0x53'),_0xd425('0x15'),'openchannelStatus',_0xd425('0x17'),'voiceStatus',_0xd425('0x18'),_0xd425('0x60'),_0xd425('0x56'),_0xd425('0x61'),_0xd425('0x54'),_0xd425('0x62'),_0xd425('0x57'),_0xd425('0x55'),_0xd425('0x49'),'faxCapacity',_0xd425('0x63'),_0xd425('0x4a'),_0xd425('0x4b'),_0xd425('0x4c'),'chatCurrentCapacity','faxCurrentCapacity',_0xd425('0x4f'),_0xd425('0x64'),_0xd425('0x50'),_0xd425('0x51'),_0xd425('0x5b'),_0xd425('0x5c'),_0xd425('0x59'),_0xd425('0x65'),_0xd425('0x58'),_0xd425('0x66'),_0xd425('0x5a')];}exports[_0xd425('0x67')]=getRealtimeAgentsQueryFields;