0f5c0dbb9061b6d6b87edf994c3a7e9d62b7cc36
[motion2.git] / server / services / xdr / agents.controller.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 _0x6b20=['includes','[%s][agents][queuecallerabandon]','[%s][agents][queuecallerabandon]\x20agent:%s\x20destuniqueid:%s\x20lastevent:abandoned','abandoned','[%s][agents][agentconnect]','[%s][agents][agentconnect]\x20agent:%s\x20destuniqueid:%s\x20lastevent:connect','agentconnectAt','connect','answered_elsewhere','answeredelsewheredestinationuniqueid','answeredelsewheremembername','agentcomplete','[%s][agents][agentcomplete]','agentcompleteAt','diffTime','complete','blindtransfer','[%s][agents][blindtransfer]','[%s][agents][blindtransfer]\x20agent:%s\x20transferuniqueid:%s','transfereruniqueid','transfer','transfertype','blind','extension','transferuniqueid','[%s][agents][attendedtransfer]','origtransfereruniqueid','origtransfererlinkedid','secondtransfereruniqueid','[%s][agents][attendedtransfer]\x20agent:%s','ATTENDED','transfereeuniqueid','agententerreason','clone','calleridname','transferexten','secondtransfererexten','transfertargetuniqueid','hangup','cause','rejected','[%s][agents][hangup]\x20agent:%s\x20reason:%s\x20lastevent:%s','splice','lodash','util','info','format','[%s][agents][writeDB]\x20channel:%s\x20queue:%s\x20agent:%s\x20interface:%s\x20calleridnum:%s\x20connectedlinenum:%s\x20lastevent:%s','channel','queue','membername','interface','calleridnum','connectedlinenum','lastevent','getVoiceQueueByName','then','type','agentacw','acwtime','request','CreateVoiceAgentReport','uniqueid','destuniqueid','agentcalled','debug','[%s][agents][agentcalled]','agentcalledAt','now','called','connectedlinename','agentringnoanswer','isNil','[%s][agents][agentringnoanswer]','agentringnoanswerAt','timeout','reason','holdtime','ringtime','talktime','error','queuecallerabandon','forIn'];(function(_0x5ddb1c,_0x5ea4df){var _0x354adc=function(_0x2dfb1f){while(--_0x2dfb1f){_0x5ddb1c['push'](_0x5ddb1c['shift']());}};_0x354adc(++_0x5ea4df);}(_0x6b20,0xd1));var _0x06b2=function(_0x582c7e,_0x2f134e){_0x582c7e=_0x582c7e-0x0;var _0x1131d0=_0x6b20[_0x582c7e];return _0x1131d0;};'use strict';var _=require(_0x06b2('0x0'));var util=require(_0x06b2('0x1'));var utils=require('./utils');var agents={};var transfers={};var unanswered=[];function writeDB(_0x2d5e24,_0x54947c){utils[_0x06b2('0x2')](util[_0x06b2('0x3')](_0x06b2('0x4'),_0x2d5e24['uniqueid'],_0x2d5e24[_0x06b2('0x5')],_0x2d5e24[_0x06b2('0x6')],_0x2d5e24[_0x06b2('0x7')],_0x2d5e24[_0x06b2('0x8')],_0x2d5e24[_0x06b2('0x9')],_0x2d5e24[_0x06b2('0xa')],_0x2d5e24[_0x06b2('0xb')]));if(_0x2d5e24['queue']){utils[_0x06b2('0xc')](_0x2d5e24[_0x06b2('0x6')])[_0x06b2('0xd')](function(_0x58538a){if(_0x58538a){_0x2d5e24[_0x06b2('0xe')]=_0x58538a['type'];_0x2d5e24[_0x06b2('0xf')]=_0x2d5e24['agentcomplete']?_0x58538a['acw']:![];_0x2d5e24[_0x06b2('0x10')]=_0x2d5e24[_0x06b2('0xf')]?_0x58538a['acwTimeout']:0x0;}utils[_0x06b2('0x11')](_0x06b2('0x12'),_0x2d5e24);});}else{utils[_0x06b2('0x11')](_0x06b2('0x12'),_0x2d5e24);}if(_0x54947c){delete transfers[_0x2d5e24[_0x06b2('0x13')]];}else{delete agents[_0x2d5e24[_0x06b2('0x14')]];}}exports[_0x06b2('0x15')]=function(_0x926bf6){try{utils[_0x06b2('0x16')](util[_0x06b2('0x3')](_0x06b2('0x17'),_0x926bf6[_0x06b2('0x13')]),_0x926bf6);agents[_0x926bf6[_0x06b2('0x14')]]=_0x926bf6;agents[_0x926bf6['destuniqueid']][_0x06b2('0x18')]=utils[_0x06b2('0x19')]();agents[_0x926bf6[_0x06b2('0x14')]][_0x06b2('0xb')]=_0x06b2('0x1a');agents[_0x926bf6[_0x06b2('0x14')]]['connectedlinenum']=null;agents[_0x926bf6[_0x06b2('0x14')]][_0x06b2('0x1b')]=null;utils['info'](util[_0x06b2('0x3')]('[%s][agents][agentcalled]\x20agent:%s\x20destuniqueid:%s\x20lastevent:called',_0x926bf6['uniqueid'],agents[_0x926bf6[_0x06b2('0x14')]][_0x06b2('0x7')],_0x926bf6[_0x06b2('0x14')]));}catch(_0x2182f3){utils['error'](util[_0x06b2('0x3')](_0x06b2('0x17'),_0x926bf6[_0x06b2('0x13')]),_0x2182f3);}};exports[_0x06b2('0x1c')]=function(_0xe28985){try{if(!_[_0x06b2('0x1d')](agents[_0xe28985[_0x06b2('0x14')]])){utils['debug'](util[_0x06b2('0x3')](_0x06b2('0x1e'),_0xe28985[_0x06b2('0x13')]),_0xe28985);utils[_0x06b2('0x2')](util['format']('[%s][agents][agentringnoanswer]\x20agent:%s\x20destuniqueid:%s\x20lastevent:timeout',_0xe28985[_0x06b2('0x13')],agents[_0xe28985[_0x06b2('0x14')]]['membername'],_0xe28985[_0x06b2('0x14')]));agents[_0xe28985['destuniqueid']][_0x06b2('0x1c')]=!![];agents[_0xe28985[_0x06b2('0x14')]][_0x06b2('0x1f')]=utils['now']();agents[_0xe28985[_0x06b2('0x14')]][_0x06b2('0xb')]=_0x06b2('0x20');agents[_0xe28985[_0x06b2('0x14')]][_0x06b2('0x21')]='timeout';agents[_0xe28985[_0x06b2('0x14')]][_0x06b2('0x22')]=_0xe28985[_0x06b2('0x23')]?parseInt(_0xe28985[_0x06b2('0x23')])/0x3e8:0x0;agents[_0xe28985[_0x06b2('0x14')]][_0x06b2('0x24')]=0x0;unanswered['push'](_0xe28985[_0x06b2('0x14')]);}}catch(_0x2a3228){utils[_0x06b2('0x25')](util[_0x06b2('0x3')](_0x06b2('0x1e'),_0xe28985[_0x06b2('0x13')]),_0x2a3228);}};exports[_0x06b2('0x26')]=function(_0x51698b){try{_[_0x06b2('0x27')](agents,function(_0x32eeea,_0x1637c2){if(_0x32eeea[_0x06b2('0x13')]==_0x51698b[_0x06b2('0x13')]&&!_[_0x06b2('0x28')](unanswered,_0x32eeea[_0x06b2('0x14')])){utils[_0x06b2('0x16')](util['format'](_0x06b2('0x29'),_0x51698b[_0x06b2('0x13')]),_0x51698b);utils[_0x06b2('0x2')](util[_0x06b2('0x3')](_0x06b2('0x2a'),_0x51698b[_0x06b2('0x13')],_0x32eeea[_0x06b2('0x7')],_0x32eeea['destuniqueid']));_0x32eeea['agentringnoanswer']=!![];_0x32eeea[_0x06b2('0x1f')]=utils[_0x06b2('0x19')]();_0x32eeea[_0x06b2('0xb')]='abandoned';_0x32eeea[_0x06b2('0x21')]=_0x06b2('0x2b');_0x32eeea[_0x06b2('0x22')]=_0x51698b[_0x06b2('0x22')];_0x32eeea[_0x06b2('0x24')]=0x0;writeDB(_0x32eeea);}});}catch(_0x27f172){utils['error'](util[_0x06b2('0x3')](_0x06b2('0x29'),_0x51698b[_0x06b2('0x13')]),_0x27f172);}};exports['agentconnect']=function(_0x268780){try{if(agents[_0x268780[_0x06b2('0x14')]]){utils['debug'](util[_0x06b2('0x3')](_0x06b2('0x2c'),_0x268780[_0x06b2('0x13')]),_0x268780);utils[_0x06b2('0x2')](util[_0x06b2('0x3')](_0x06b2('0x2d'),_0x268780[_0x06b2('0x13')],agents[_0x268780[_0x06b2('0x14')]][_0x06b2('0x7')],_0x268780[_0x06b2('0x14')]));agents[_0x268780[_0x06b2('0x14')]][_0x06b2('0x2e')]=utils['now']();agents[_0x268780[_0x06b2('0x14')]]['connectedlinenum']=_0x268780['connectedlinenum'];agents[_0x268780[_0x06b2('0x14')]]['connectedlinename']=_0x268780[_0x06b2('0x1b')];agents[_0x268780['destuniqueid']][_0x06b2('0x22')]=_0x268780[_0x06b2('0x23')];agents[_0x268780[_0x06b2('0x14')]][_0x06b2('0xb')]=_0x06b2('0x2f');_['forIn'](agents,function(_0x404eab,_0xee3ec6){if(_0x404eab[_0x06b2('0x14')]!=_0x268780[_0x06b2('0x14')]&&_0x404eab[_0x06b2('0x13')]==_0x268780[_0x06b2('0x13')]){_0x404eab['talktime']=0x0;_0x404eab[_0x06b2('0x22')]=_0x268780[_0x06b2('0x23')];_0x404eab['agentringnoanswer']=!![];_0x404eab['agentringnoanswerAt']=utils[_0x06b2('0x19')]();_0x404eab[_0x06b2('0xb')]=_0x06b2('0x30');_0x404eab[_0x06b2('0x21')]=_0x06b2('0x30');_0x404eab[_0x06b2('0x31')]=_0x268780[_0x06b2('0x14')];_0x404eab[_0x06b2('0x32')]=_0x268780[_0x06b2('0x7')];writeDB(_0x404eab);}});}}catch(_0x117bf4){utils[_0x06b2('0x25')](util[_0x06b2('0x3')](_0x06b2('0x2c'),_0x268780[_0x06b2('0x13')]),_0x117bf4);}};exports[_0x06b2('0x33')]=function(_0x190781){try{if(!_[_0x06b2('0x1d')](agents[_0x190781[_0x06b2('0x14')]])){utils[_0x06b2('0x16')](util['format'](_0x06b2('0x34'),_0x190781[_0x06b2('0x13')]),_0x190781);utils[_0x06b2('0x2')](util[_0x06b2('0x3')]('[%s][agents][agentcomplete]\x20agent:%s\x20destuniqueid:%s\x20lastevent:complete',_0x190781[_0x06b2('0x13')],agents[_0x190781[_0x06b2('0x14')]]['membername'],_0x190781[_0x06b2('0x14')]));agents[_0x190781[_0x06b2('0x14')]]['agentcomplete']=!![];agents[_0x190781[_0x06b2('0x14')]][_0x06b2('0x35')]=utils['now']();agents[_0x190781['destuniqueid']]['talktime']=utils[_0x06b2('0x36')](agents[_0x190781[_0x06b2('0x14')]][_0x06b2('0x35')],agents[_0x190781[_0x06b2('0x14')]][_0x06b2('0x2e')]);agents[_0x190781['destuniqueid']]['reason']=_0x190781[_0x06b2('0x21')];agents[_0x190781[_0x06b2('0x14')]][_0x06b2('0xb')]=_0x06b2('0x37');writeDB(agents[_0x190781[_0x06b2('0x14')]]);}}catch(_0xc18216){utils['error'](util[_0x06b2('0x3')](_0x06b2('0x34'),_0x190781[_0x06b2('0x13')]),_0xc18216);}};exports[_0x06b2('0x38')]=function(_0x146c5c){try{if(!_[_0x06b2('0x1d')](agents[_0x146c5c['transfereruniqueid']])){utils[_0x06b2('0x16')](util[_0x06b2('0x3')](_0x06b2('0x39'),_0x146c5c[_0x06b2('0x13')]),_0x146c5c);utils['info'](util[_0x06b2('0x3')](_0x06b2('0x3a'),_0x146c5c[_0x06b2('0x13')],agents[_0x146c5c[_0x06b2('0x3b')]]['membername'],agents[_0x146c5c[_0x06b2('0x3b')]][_0x06b2('0x13')]));agents[_0x146c5c[_0x06b2('0x3b')]][_0x06b2('0x3c')]=!![];agents[_0x146c5c[_0x06b2('0x3b')]][_0x06b2('0x3d')]=_0x06b2('0x3e');agents[_0x146c5c[_0x06b2('0x3b')]]['transferexten']=_0x146c5c[_0x06b2('0x3f')];agents[_0x146c5c[_0x06b2('0x3b')]][_0x06b2('0x40')]=agents[_0x146c5c[_0x06b2('0x3b')]][_0x06b2('0x13')];}}catch(_0x2f75a0){utils['error'](util['format'](_0x06b2('0x39'),_0x146c5c['uniqueid']),_0x2f75a0);}};exports['attendedtransfer']=function(_0x2daf62){try{utils['debug'](util[_0x06b2('0x3')](_0x06b2('0x41'),_0x2daf62[_0x06b2('0x42')]),_0x2daf62);if(_0x2daf62[_0x06b2('0x42')]==_0x2daf62[_0x06b2('0x43')]){if(!_[_0x06b2('0x1d')](agents[_0x2daf62[_0x06b2('0x44')]])){utils[_0x06b2('0x2')](util[_0x06b2('0x3')](_0x06b2('0x45'),_0x2daf62['origtransfereruniqueid'],agents[_0x2daf62['secondtransfereruniqueid']][_0x06b2('0x7')]));agents[_0x2daf62[_0x06b2('0x44')]]['transfer']=!![];agents[_0x2daf62[_0x06b2('0x44')]][_0x06b2('0x3d')]=_0x06b2('0x46');agents[_0x2daf62[_0x06b2('0x44')]]['transferexten']=_0x2daf62['origtransfererexten'];agents[_0x2daf62['secondtransfereruniqueid']][_0x06b2('0x40')]=_0x2daf62['origtransfereruniqueid'];}if(_0x2daf62['transfereeuniqueid']&&agents[_0x2daf62[_0x06b2('0x47')]]){agents[_0x2daf62[_0x06b2('0x47')]][_0x06b2('0x48')]=0x1;transfers[_0x2daf62[_0x06b2('0x47')]]=_[_0x06b2('0x49')](agents[_0x2daf62[_0x06b2('0x47')]]);transfers[_0x2daf62['transfereeuniqueid']][_0x06b2('0x9')]=agents[_0x2daf62[_0x06b2('0x44')]]['calleridnum'];transfers[_0x2daf62[_0x06b2('0x47')]][_0x06b2('0x4a')]=agents[_0x2daf62[_0x06b2('0x44')]][_0x06b2('0x4a')];transfers[_0x2daf62[_0x06b2('0x47')]][_0x06b2('0x18')]=utils[_0x06b2('0x19')]();transfers[_0x2daf62[_0x06b2('0x47')]][_0x06b2('0x2e')]=utils[_0x06b2('0x19')]();transfers[_0x2daf62[_0x06b2('0x47')]][_0x06b2('0x22')]=0x0;transfers[_0x2daf62['transfereeuniqueid']][_0x06b2('0x48')]=0x2;}}else if(_0x2daf62[_0x06b2('0x44')]==_0x2daf62['secondtransfererlinkedid']){if(!_[_0x06b2('0x1d')](agents[_0x2daf62[_0x06b2('0x42')]])){utils[_0x06b2('0x2')](util[_0x06b2('0x3')]('[%s][agents][attendedtransfer]\x20agent:%s',_0x2daf62[_0x06b2('0x42')],agents[_0x2daf62[_0x06b2('0x42')]][_0x06b2('0x7')]));agents[_0x2daf62['origtransfereruniqueid']][_0x06b2('0x3c')]=!![];agents[_0x2daf62[_0x06b2('0x42')]][_0x06b2('0x3d')]=_0x06b2('0x46');agents[_0x2daf62[_0x06b2('0x42')]][_0x06b2('0x4b')]=_0x2daf62[_0x06b2('0x4c')];agents[_0x2daf62[_0x06b2('0x42')]][_0x06b2('0x40')]=_0x2daf62['secondtransfereruniqueid'];}if(_0x2daf62['transfertargetuniqueid']&&agents[_0x2daf62['transfertargetuniqueid']]){agents[_0x2daf62['transfertargetuniqueid']][_0x06b2('0x48')]=0x1;transfers[_0x2daf62['transfertargetuniqueid']]=_[_0x06b2('0x49')](agents[_0x2daf62[_0x06b2('0x4d')]]);transfers[_0x2daf62[_0x06b2('0x4d')]][_0x06b2('0x9')]=agents[_0x2daf62[_0x06b2('0x42')]][_0x06b2('0x9')];transfers[_0x2daf62['transfertargetuniqueid']]['calleridname']=agents[_0x2daf62[_0x06b2('0x42')]][_0x06b2('0x4a')];transfers[_0x2daf62['transfertargetuniqueid']][_0x06b2('0x18')]=utils[_0x06b2('0x19')]();transfers[_0x2daf62[_0x06b2('0x4d')]][_0x06b2('0x2e')]=utils[_0x06b2('0x19')]();transfers[_0x2daf62[_0x06b2('0x4d')]]['holdtime']=0x0;transfers[_0x2daf62[_0x06b2('0x4d')]]['agententerreason']=0x2;}}}catch(_0x4023b0){utils[_0x06b2('0x25')](util[_0x06b2('0x3')]('[%s][agents][attendedtransfer]',_0x2daf62[_0x06b2('0x42')]),_0x4023b0);}};exports[_0x06b2('0x4e')]=function(_0x461c4d){try{utils['debug'](util[_0x06b2('0x3')]('[%s][agents][hangup]',_0x461c4d[_0x06b2('0x13')]),_0x461c4d);if(agents[_0x461c4d[_0x06b2('0x13')]]&&agents[_0x461c4d[_0x06b2('0x13')]][_0x06b2('0x21')]===_0x06b2('0x20')){if(_0x461c4d[_0x06b2('0x4f')]==='21'){agents[_0x461c4d['uniqueid']][_0x06b2('0x21')]=_0x06b2('0x50');agents[_0x461c4d[_0x06b2('0x13')]][_0x06b2('0xb')]='rejected';}utils[_0x06b2('0x2')](util[_0x06b2('0x3')](_0x06b2('0x51'),_0x461c4d['uniqueid'],agents[_0x461c4d['uniqueid']][_0x06b2('0x7')],agents[_0x461c4d['uniqueid']][_0x06b2('0x21')],agents[_0x461c4d['uniqueid']]['lastevent']));writeDB(agents[_0x461c4d[_0x06b2('0x13')]]);var _0x38647d=unanswered['indexOf'](_0x461c4d[_0x06b2('0x13')]);if(_0x38647d>-0x1){unanswered[_0x06b2('0x52')](_0x38647d,0x1);}}if(transfers[_0x461c4d[_0x06b2('0x13')]]){transfers[_0x461c4d[_0x06b2('0x13')]][_0x06b2('0x33')]=!![];transfers[_0x461c4d[_0x06b2('0x13')]][_0x06b2('0x35')]=utils[_0x06b2('0x19')]();transfers[_0x461c4d[_0x06b2('0x13')]][_0x06b2('0x24')]=utils[_0x06b2('0x36')](transfers[_0x461c4d['uniqueid']][_0x06b2('0x35')],transfers[_0x461c4d['uniqueid']]['agentconnectAt']);transfers[_0x461c4d[_0x06b2('0x13')]][_0x06b2('0x21')]='agent';transfers[_0x461c4d[_0x06b2('0x13')]][_0x06b2('0xb')]=_0x06b2('0x37');utils['info'](util[_0x06b2('0x3')](_0x06b2('0x51'),_0x461c4d['uniqueid'],transfers[_0x461c4d['uniqueid']]['membername'],transfers[_0x461c4d['uniqueid']][_0x06b2('0x21')],transfers[_0x461c4d['uniqueid']][_0x06b2('0xb')]));writeDB(transfers[_0x461c4d[_0x06b2('0x13')]],!![]);}if(agents[_0x461c4d[_0x06b2('0x13')]]&&agents[_0x461c4d[_0x06b2('0x13')]][_0x06b2('0x2e')]){agents[_0x461c4d[_0x06b2('0x13')]][_0x06b2('0x33')]=!![];agents[_0x461c4d[_0x06b2('0x13')]][_0x06b2('0x35')]=utils[_0x06b2('0x19')]();agents[_0x461c4d[_0x06b2('0x13')]][_0x06b2('0x24')]=utils[_0x06b2('0x36')](agents[_0x461c4d['uniqueid']]['agentcompleteAt'],agents[_0x461c4d[_0x06b2('0x13')]][_0x06b2('0x2e')]);agents[_0x461c4d[_0x06b2('0x13')]][_0x06b2('0x21')]=agents[_0x461c4d[_0x06b2('0x13')]][_0x06b2('0x3c')]?'transfer':'agent';agents[_0x461c4d[_0x06b2('0x13')]][_0x06b2('0xb')]=_0x06b2('0x37');utils[_0x06b2('0x2')](util[_0x06b2('0x3')]('[%s][agents][hangup]\x20agent:%s\x20reason:%s\x20lastevent:%s',_0x461c4d[_0x06b2('0x13')],agents[_0x461c4d['uniqueid']]['membername'],agents[_0x461c4d[_0x06b2('0x13')]][_0x06b2('0x21')],agents[_0x461c4d['uniqueid']]['lastevent']));writeDB(agents[_0x461c4d[_0x06b2('0x13')]]);}}catch(_0x3fa469){utils['error'](util['format']('[%s][agents][hangup]',_0x461c4d['uniqueid']),_0x3fa469);}};