d7c31e12e80878f93c06dc3ab19244a925817ad2
[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 _0x6320=['lastevent','then','type','agentacw','agentcomplete','acw','acwtime','acwTimeout','request','destuniqueid','agentcalledAt','called','connectedlinename','info','[%s][agents][agentcalled]\x20agent:%s\x20destuniqueid:%s\x20lastevent:called','error','[%s][agents][agentcalled]','agentringnoanswer','isNil','debug','[%s][agents][agentringnoanswer]','[%s][agents][agentringnoanswer]\x20agent:%s\x20destuniqueid:%s\x20lastevent:timeout','agentringnoanswerAt','now','timeout','reason','ringtime','queuecallerabandon','forIn','[%s][agents][queuecallerabandon]','[%s][agents][queuecallerabandon]\x20agent:%s\x20destuniqueid:%s\x20lastevent:abandoned','abandoned','holdtime','[%s][agents][agentconnect]','[%s][agents][agentconnect]\x20agent:%s\x20destuniqueid:%s\x20lastevent:connect','agentconnectAt','talktime','answered_elsewhere','answeredelsewheredestinationuniqueid','answeredelsewheremembername','[%s][agents][agentcomplete]','[%s][agents][agentcomplete]\x20agent:%s\x20destuniqueid:%s\x20lastevent:complete','agentcompleteAt','diffTime','complete','transfereruniqueid','[%s][agents][blindtransfer]','[%s][agents][blindtransfer]\x20agent:%s\x20transferuniqueid:%s','transfer','transfertype','blind','transferexten','extension','transferuniqueid','attendedtransfer','origtransfereruniqueid','origtransfererlinkedid','secondtransfereruniqueid','[%s][agents][attendedtransfer]\x20agent:%s','transfereeuniqueid','clone','calleridname','agententerreason','ATTENDED','secondtransfererexten','transfertargetuniqueid','hangup','[%s][agents][hangup]','indexOf','splice','agent','lodash','util','format','uniqueid','channel','queue','membername','interface','calleridnum','connectedlinenum'];(function(_0x46d61f,_0x26608d){var _0x4f26b4=function(_0x55ebe0){while(--_0x55ebe0){_0x46d61f['push'](_0x46d61f['shift']());}};_0x4f26b4(++_0x26608d);}(_0x6320,0x13a));var _0x0632=function(_0xbdc17f,_0x5b378c){_0xbdc17f=_0xbdc17f-0x0;var _0x59a9db=_0x6320[_0xbdc17f];return _0x59a9db;};'use strict';var _=require(_0x0632('0x0'));var util=require(_0x0632('0x1'));var utils=require('./utils');var agents={};var transfers={};var unanswered=[];function writeDB(_0x538acf,_0x99f41e){utils['info'](util[_0x0632('0x2')]('[%s][agents][writeDB]\x20channel:%s\x20queue:%s\x20agent:%s\x20interface:%s\x20calleridnum:%s\x20connectedlinenum:%s\x20lastevent:%s',_0x538acf[_0x0632('0x3')],_0x538acf[_0x0632('0x4')],_0x538acf[_0x0632('0x5')],_0x538acf[_0x0632('0x6')],_0x538acf[_0x0632('0x7')],_0x538acf[_0x0632('0x8')],_0x538acf[_0x0632('0x9')],_0x538acf[_0x0632('0xa')]));if(_0x538acf[_0x0632('0x5')]){utils['getVoiceQueueByName'](_0x538acf[_0x0632('0x5')])[_0x0632('0xb')](function(_0x3b1b10){if(_0x3b1b10){_0x538acf[_0x0632('0xc')]=_0x3b1b10[_0x0632('0xc')];_0x538acf[_0x0632('0xd')]=_0x538acf[_0x0632('0xe')]?_0x3b1b10[_0x0632('0xf')]:![];_0x538acf[_0x0632('0x10')]=_0x538acf[_0x0632('0xd')]?_0x3b1b10[_0x0632('0x11')]:0x0;}utils[_0x0632('0x12')]('CreateVoiceAgentReport',_0x538acf);});}else{utils['request']('CreateVoiceAgentReport',_0x538acf);}if(_0x99f41e){delete transfers[_0x538acf['uniqueid']];}else{delete agents[_0x538acf[_0x0632('0x13')]];}}exports['agentcalled']=function(_0xa99ced){try{utils['debug'](util[_0x0632('0x2')]('[%s][agents][agentcalled]',_0xa99ced[_0x0632('0x3')]),_0xa99ced);agents[_0xa99ced[_0x0632('0x13')]]=_0xa99ced;agents[_0xa99ced['destuniqueid']][_0x0632('0x14')]=utils['now']();agents[_0xa99ced[_0x0632('0x13')]][_0x0632('0xa')]=_0x0632('0x15');agents[_0xa99ced[_0x0632('0x13')]][_0x0632('0x9')]=null;agents[_0xa99ced[_0x0632('0x13')]][_0x0632('0x16')]=null;utils[_0x0632('0x17')](util[_0x0632('0x2')](_0x0632('0x18'),_0xa99ced['uniqueid'],agents[_0xa99ced['destuniqueid']][_0x0632('0x6')],_0xa99ced[_0x0632('0x13')]));}catch(_0xf71d1b){utils[_0x0632('0x19')](util[_0x0632('0x2')](_0x0632('0x1a'),_0xa99ced['uniqueid']),_0xf71d1b);}};exports[_0x0632('0x1b')]=function(_0x480415){try{if(!_[_0x0632('0x1c')](agents[_0x480415[_0x0632('0x13')]])){utils[_0x0632('0x1d')](util[_0x0632('0x2')](_0x0632('0x1e'),_0x480415[_0x0632('0x3')]),_0x480415);utils['info'](util[_0x0632('0x2')](_0x0632('0x1f'),_0x480415[_0x0632('0x3')],agents[_0x480415[_0x0632('0x13')]][_0x0632('0x6')],_0x480415[_0x0632('0x13')]));agents[_0x480415[_0x0632('0x13')]][_0x0632('0x1b')]=!![];agents[_0x480415[_0x0632('0x13')]][_0x0632('0x20')]=utils[_0x0632('0x21')]();agents[_0x480415[_0x0632('0x13')]]['lastevent']=_0x0632('0x22');agents[_0x480415[_0x0632('0x13')]][_0x0632('0x23')]=_0x0632('0x22');agents[_0x480415[_0x0632('0x13')]]['holdtime']=_0x480415[_0x0632('0x24')]?parseInt(_0x480415[_0x0632('0x24')])/0x3e8:0x0;agents[_0x480415[_0x0632('0x13')]]['talktime']=0x0;unanswered['push'](_0x480415[_0x0632('0x13')]);}}catch(_0x13ca39){utils['error'](util[_0x0632('0x2')](_0x0632('0x1e'),_0x480415[_0x0632('0x3')]),_0x13ca39);}};exports[_0x0632('0x25')]=function(_0x47edb6){try{_[_0x0632('0x26')](agents,function(_0x4da50e,_0x5d5f15){if(_0x4da50e[_0x0632('0x3')]==_0x47edb6[_0x0632('0x3')]&&!_['includes'](unanswered,_0x4da50e[_0x0632('0x13')])){utils[_0x0632('0x1d')](util['format'](_0x0632('0x27'),_0x47edb6[_0x0632('0x3')]),_0x47edb6);utils[_0x0632('0x17')](util[_0x0632('0x2')](_0x0632('0x28'),_0x47edb6['uniqueid'],_0x4da50e[_0x0632('0x6')],_0x4da50e['destuniqueid']));_0x4da50e[_0x0632('0x1b')]=!![];_0x4da50e['agentringnoanswerAt']=utils[_0x0632('0x21')]();_0x4da50e[_0x0632('0xa')]=_0x0632('0x29');_0x4da50e[_0x0632('0x23')]='abandoned';_0x4da50e[_0x0632('0x2a')]=_0x47edb6['holdtime'];_0x4da50e['talktime']=0x0;writeDB(_0x4da50e);}});}catch(_0x31a9da){utils['error'](util['format'](_0x0632('0x27'),_0x47edb6['uniqueid']),_0x31a9da);}};exports['agentconnect']=function(_0x5e1fc5){try{if(agents[_0x5e1fc5['destuniqueid']]){utils[_0x0632('0x1d')](util[_0x0632('0x2')](_0x0632('0x2b'),_0x5e1fc5[_0x0632('0x3')]),_0x5e1fc5);utils[_0x0632('0x17')](util['format'](_0x0632('0x2c'),_0x5e1fc5[_0x0632('0x3')],agents[_0x5e1fc5[_0x0632('0x13')]]['membername'],_0x5e1fc5[_0x0632('0x13')]));agents[_0x5e1fc5[_0x0632('0x13')]][_0x0632('0x2d')]=utils['now']();agents[_0x5e1fc5[_0x0632('0x13')]][_0x0632('0x9')]=_0x5e1fc5[_0x0632('0x9')];agents[_0x5e1fc5['destuniqueid']][_0x0632('0x16')]=_0x5e1fc5['connectedlinename'];agents[_0x5e1fc5[_0x0632('0x13')]][_0x0632('0x2a')]=_0x5e1fc5['ringtime'];agents[_0x5e1fc5[_0x0632('0x13')]][_0x0632('0xa')]='connect';_['forIn'](agents,function(_0x5c69b4,_0xda3a28){if(_0x5c69b4[_0x0632('0x13')]!=_0x5e1fc5['destuniqueid']&&_0x5c69b4[_0x0632('0x3')]==_0x5e1fc5[_0x0632('0x3')]){_0x5c69b4[_0x0632('0x2e')]=0x0;_0x5c69b4[_0x0632('0x2a')]=_0x5e1fc5[_0x0632('0x24')];_0x5c69b4['agentringnoanswer']=!![];_0x5c69b4[_0x0632('0x20')]=utils[_0x0632('0x21')]();_0x5c69b4['lastevent']=_0x0632('0x2f');_0x5c69b4[_0x0632('0x23')]=_0x0632('0x2f');_0x5c69b4[_0x0632('0x30')]=_0x5e1fc5['destuniqueid'];_0x5c69b4[_0x0632('0x31')]=_0x5e1fc5['membername'];writeDB(_0x5c69b4);}});}}catch(_0x4fcf6f){utils[_0x0632('0x19')](util[_0x0632('0x2')](_0x0632('0x2b'),_0x5e1fc5[_0x0632('0x3')]),_0x4fcf6f);}};exports[_0x0632('0xe')]=function(_0x4c2bb5){try{if(!_[_0x0632('0x1c')](agents[_0x4c2bb5['destuniqueid']])){utils[_0x0632('0x1d')](util[_0x0632('0x2')](_0x0632('0x32'),_0x4c2bb5[_0x0632('0x3')]),_0x4c2bb5);utils[_0x0632('0x17')](util[_0x0632('0x2')](_0x0632('0x33'),_0x4c2bb5[_0x0632('0x3')],agents[_0x4c2bb5['destuniqueid']]['membername'],_0x4c2bb5['destuniqueid']));agents[_0x4c2bb5[_0x0632('0x13')]][_0x0632('0xe')]=!![];agents[_0x4c2bb5[_0x0632('0x13')]][_0x0632('0x34')]=utils['now']();agents[_0x4c2bb5['destuniqueid']]['talktime']=utils[_0x0632('0x35')](agents[_0x4c2bb5[_0x0632('0x13')]][_0x0632('0x34')],agents[_0x4c2bb5[_0x0632('0x13')]][_0x0632('0x2d')]);agents[_0x4c2bb5[_0x0632('0x13')]]['reason']=_0x4c2bb5[_0x0632('0x23')];agents[_0x4c2bb5[_0x0632('0x13')]]['lastevent']=_0x0632('0x36');writeDB(agents[_0x4c2bb5['destuniqueid']]);}}catch(_0x15e9dc){utils[_0x0632('0x19')](util[_0x0632('0x2')](_0x0632('0x32'),_0x4c2bb5[_0x0632('0x3')]),_0x15e9dc);}};exports['blindtransfer']=function(_0x95f601){try{if(!_['isNil'](agents[_0x95f601[_0x0632('0x37')]])){utils[_0x0632('0x1d')](util[_0x0632('0x2')](_0x0632('0x38'),_0x95f601[_0x0632('0x3')]),_0x95f601);utils[_0x0632('0x17')](util[_0x0632('0x2')](_0x0632('0x39'),_0x95f601[_0x0632('0x3')],agents[_0x95f601[_0x0632('0x37')]][_0x0632('0x6')],agents[_0x95f601[_0x0632('0x37')]]['uniqueid']));agents[_0x95f601['transfereruniqueid']][_0x0632('0x3a')]=!![];agents[_0x95f601['transfereruniqueid']][_0x0632('0x3b')]=_0x0632('0x3c');agents[_0x95f601[_0x0632('0x37')]][_0x0632('0x3d')]=_0x95f601[_0x0632('0x3e')];agents[_0x95f601[_0x0632('0x37')]][_0x0632('0x3f')]=agents[_0x95f601['transfereruniqueid']][_0x0632('0x3')];}}catch(_0x19329f){utils[_0x0632('0x19')](util[_0x0632('0x2')](_0x0632('0x38'),_0x95f601[_0x0632('0x3')]),_0x19329f);}};exports[_0x0632('0x40')]=function(_0x58c44b){try{utils[_0x0632('0x1d')](util[_0x0632('0x2')]('[%s][agents][attendedtransfer]',_0x58c44b[_0x0632('0x41')]),_0x58c44b);if(_0x58c44b['origtransfereruniqueid']==_0x58c44b[_0x0632('0x42')]){if(!_[_0x0632('0x1c')](agents[_0x58c44b[_0x0632('0x43')]])){utils[_0x0632('0x17')](util[_0x0632('0x2')](_0x0632('0x44'),_0x58c44b[_0x0632('0x41')],agents[_0x58c44b[_0x0632('0x43')]]['membername']));agents[_0x58c44b[_0x0632('0x43')]][_0x0632('0x3a')]=!![];agents[_0x58c44b[_0x0632('0x43')]][_0x0632('0x3b')]='ATTENDED';agents[_0x58c44b[_0x0632('0x43')]][_0x0632('0x3d')]=_0x58c44b['origtransfererexten'];agents[_0x58c44b[_0x0632('0x43')]][_0x0632('0x3f')]=_0x58c44b[_0x0632('0x41')];}if(_0x58c44b[_0x0632('0x45')]&&agents[_0x58c44b[_0x0632('0x45')]]){agents[_0x58c44b[_0x0632('0x45')]]['agententerreason']=0x1;transfers[_0x58c44b[_0x0632('0x45')]]=_[_0x0632('0x46')](agents[_0x58c44b[_0x0632('0x45')]]);transfers[_0x58c44b[_0x0632('0x45')]][_0x0632('0x8')]=agents[_0x58c44b[_0x0632('0x43')]][_0x0632('0x8')];transfers[_0x58c44b[_0x0632('0x45')]]['calleridname']=agents[_0x58c44b[_0x0632('0x43')]][_0x0632('0x47')];transfers[_0x58c44b[_0x0632('0x45')]][_0x0632('0x14')]=utils[_0x0632('0x21')]();transfers[_0x58c44b['transfereeuniqueid']][_0x0632('0x2d')]=utils[_0x0632('0x21')]();transfers[_0x58c44b[_0x0632('0x45')]][_0x0632('0x2a')]=0x0;transfers[_0x58c44b[_0x0632('0x45')]][_0x0632('0x48')]=0x2;}}else if(_0x58c44b[_0x0632('0x43')]==_0x58c44b['secondtransfererlinkedid']){if(!_['isNil'](agents[_0x58c44b[_0x0632('0x41')]])){utils[_0x0632('0x17')](util[_0x0632('0x2')](_0x0632('0x44'),_0x58c44b[_0x0632('0x41')],agents[_0x58c44b[_0x0632('0x41')]][_0x0632('0x6')]));agents[_0x58c44b[_0x0632('0x41')]][_0x0632('0x3a')]=!![];agents[_0x58c44b[_0x0632('0x41')]][_0x0632('0x3b')]=_0x0632('0x49');agents[_0x58c44b[_0x0632('0x41')]]['transferexten']=_0x58c44b[_0x0632('0x4a')];agents[_0x58c44b[_0x0632('0x41')]][_0x0632('0x3f')]=_0x58c44b[_0x0632('0x43')];}if(_0x58c44b['transfertargetuniqueid']&&agents[_0x58c44b['transfertargetuniqueid']]){agents[_0x58c44b[_0x0632('0x4b')]][_0x0632('0x48')]=0x1;transfers[_0x58c44b[_0x0632('0x4b')]]=_[_0x0632('0x46')](agents[_0x58c44b[_0x0632('0x4b')]]);transfers[_0x58c44b['transfertargetuniqueid']][_0x0632('0x8')]=agents[_0x58c44b[_0x0632('0x41')]][_0x0632('0x8')];transfers[_0x58c44b[_0x0632('0x4b')]][_0x0632('0x47')]=agents[_0x58c44b['origtransfereruniqueid']][_0x0632('0x47')];transfers[_0x58c44b[_0x0632('0x4b')]]['agentcalledAt']=utils[_0x0632('0x21')]();transfers[_0x58c44b[_0x0632('0x4b')]]['agentconnectAt']=utils[_0x0632('0x21')]();transfers[_0x58c44b['transfertargetuniqueid']][_0x0632('0x2a')]=0x0;transfers[_0x58c44b[_0x0632('0x4b')]][_0x0632('0x48')]=0x2;}}}catch(_0x1b5c2a){utils[_0x0632('0x19')](util[_0x0632('0x2')]('[%s][agents][attendedtransfer]',_0x58c44b['origtransfereruniqueid']),_0x1b5c2a);}};exports[_0x0632('0x4c')]=function(_0x26e068){try{utils[_0x0632('0x1d')](util[_0x0632('0x2')](_0x0632('0x4d'),_0x26e068[_0x0632('0x3')]),_0x26e068);if(agents[_0x26e068[_0x0632('0x3')]]&&agents[_0x26e068[_0x0632('0x3')]][_0x0632('0x23')]==='timeout'){if(_0x26e068['cause']==='21'){agents[_0x26e068[_0x0632('0x3')]][_0x0632('0x23')]='rejected';agents[_0x26e068[_0x0632('0x3')]][_0x0632('0xa')]='rejected';}utils['info'](util[_0x0632('0x2')]('[%s][agents][hangup]\x20agent:%s\x20reason:%s\x20lastevent:%s',_0x26e068['uniqueid'],agents[_0x26e068['uniqueid']]['membername'],agents[_0x26e068[_0x0632('0x3')]][_0x0632('0x23')],agents[_0x26e068['uniqueid']][_0x0632('0xa')]));writeDB(agents[_0x26e068[_0x0632('0x3')]]);var _0x4a7457=unanswered[_0x0632('0x4e')](_0x26e068[_0x0632('0x3')]);if(_0x4a7457>-0x1){unanswered[_0x0632('0x4f')](_0x4a7457,0x1);}}if(transfers[_0x26e068[_0x0632('0x3')]]){transfers[_0x26e068[_0x0632('0x3')]][_0x0632('0xe')]=!![];transfers[_0x26e068['uniqueid']]['agentcompleteAt']=utils[_0x0632('0x21')]();transfers[_0x26e068[_0x0632('0x3')]][_0x0632('0x2e')]=utils['diffTime'](transfers[_0x26e068[_0x0632('0x3')]][_0x0632('0x34')],transfers[_0x26e068[_0x0632('0x3')]]['agentconnectAt']);transfers[_0x26e068['uniqueid']][_0x0632('0x23')]=_0x0632('0x50');transfers[_0x26e068[_0x0632('0x3')]][_0x0632('0xa')]=_0x0632('0x36');utils[_0x0632('0x17')](util[_0x0632('0x2')]('[%s][agents][hangup]\x20agent:%s\x20reason:%s\x20lastevent:%s',_0x26e068[_0x0632('0x3')],transfers[_0x26e068[_0x0632('0x3')]][_0x0632('0x6')],transfers[_0x26e068[_0x0632('0x3')]]['reason'],transfers[_0x26e068['uniqueid']][_0x0632('0xa')]));writeDB(transfers[_0x26e068['uniqueid']],!![]);}if(agents[_0x26e068[_0x0632('0x3')]]&&agents[_0x26e068['uniqueid']][_0x0632('0x2d')]){agents[_0x26e068[_0x0632('0x3')]]['agentcomplete']=!![];agents[_0x26e068[_0x0632('0x3')]][_0x0632('0x34')]=utils[_0x0632('0x21')]();agents[_0x26e068[_0x0632('0x3')]][_0x0632('0x2e')]=utils['diffTime'](agents[_0x26e068['uniqueid']][_0x0632('0x34')],agents[_0x26e068['uniqueid']]['agentconnectAt']);agents[_0x26e068['uniqueid']]['reason']=agents[_0x26e068['uniqueid']]['transfer']?_0x0632('0x3a'):_0x0632('0x50');agents[_0x26e068[_0x0632('0x3')]]['lastevent']=_0x0632('0x36');utils['info'](util[_0x0632('0x2')]('[%s][agents][hangup]\x20agent:%s\x20reason:%s\x20lastevent:%s',_0x26e068['uniqueid'],agents[_0x26e068[_0x0632('0x3')]][_0x0632('0x6')],agents[_0x26e068['uniqueid']]['reason'],agents[_0x26e068[_0x0632('0x3')]]['lastevent']));writeDB(agents[_0x26e068[_0x0632('0x3')]]);}}catch(_0x58c620){utils['error'](util[_0x0632('0x2')]('[%s][agents][hangup]',_0x26e068[_0x0632('0x3')]),_0x58c620);}};