Built motion from commit bab6f49e.|2.6.17
[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 _0x878f=['abandoned','agentconnect','[%s][agents][agentconnect]','[%s][agents][agentconnect]\x20agent:%s\x20destuniqueid:%s\x20lastevent:connect','connect','reason','answered_elsewhere','answeredelsewheremembername','[%s][agents][agentcomplete]','[%s][agents][agentcomplete]\x20agent:%s\x20destuniqueid:%s\x20lastevent:complete','agentcompleteAt','diffTime','agentconnectAt','complete','transfereruniqueid','transfertype','blind','transferexten','extension','transferuniqueid','[%s][agents][blindtransfer]','attendedtransfer','origtransfereruniqueid','secondtransfereruniqueid','[%s][agents][attendedtransfer]\x20agent:%s','transfer','ATTENDED','origtransfererexten','transfereeuniqueid','agententerreason','clone','calleridnum','calleridname','agentcalledAt','secondtransfererexten','transfertargetuniqueid','[%s][agents][attendedtransfer]','[%s][agents][hangup]','cause','rejected','splice','agent','[%s][agents][hangup]\x20agent:%s\x20reason:%s\x20lastevent:%s','util','./utils','info','format','[%s][agents][writeDB]\x20channel:%s\x20queue:%s\x20agent:%s\x20interface:%s\x20calleridnum:%s\x20connectedlinenum:%s\x20lastevent:%s','uniqueid','channel','queue','membername','connectedlinenum','lastevent','then','type','agentacw','agentcomplete','acwtime','request','CreateVoiceAgentReport','agentcalled','debug','[%s][agents][agentcalled]','destuniqueid','now','called','connectedlinename','[%s][agents][agentcalled]\x20agent:%s\x20destuniqueid:%s\x20lastevent:called','error','agentringnoanswer','isNil','[%s][agents][agentringnoanswer]','[%s][agents][agentringnoanswer]\x20agent:%s\x20destuniqueid:%s\x20lastevent:timeout','agentringnoanswerAt','timeout','holdtime','ringtime','talktime','push','includes','[%s][agents][queuecallerabandon]'];(function(_0x8de54f,_0x271987){var _0x14cba4=function(_0x58ed41){while(--_0x58ed41){_0x8de54f['push'](_0x8de54f['shift']());}};_0x14cba4(++_0x271987);}(_0x878f,0x173));var _0xf878=function(_0x4f6523,_0x1c1fb6){_0x4f6523=_0x4f6523-0x0;var _0x55b11a=_0x878f[_0x4f6523];return _0x55b11a;};'use strict';var _=require('lodash');var util=require(_0xf878('0x0'));var utils=require(_0xf878('0x1'));var agents={};var transfers={};var unanswered=[];function writeDB(_0x2e1d23,_0x12df2b){utils[_0xf878('0x2')](util[_0xf878('0x3')](_0xf878('0x4'),_0x2e1d23[_0xf878('0x5')],_0x2e1d23[_0xf878('0x6')],_0x2e1d23[_0xf878('0x7')],_0x2e1d23[_0xf878('0x8')],_0x2e1d23['interface'],_0x2e1d23['calleridnum'],_0x2e1d23[_0xf878('0x9')],_0x2e1d23[_0xf878('0xa')]));if(_0x2e1d23['queue']){utils['getVoiceQueueByName'](_0x2e1d23['queue'])[_0xf878('0xb')](function(_0x5f2693){if(_0x5f2693){_0x2e1d23['type']=_0x5f2693[_0xf878('0xc')];_0x2e1d23[_0xf878('0xd')]=_0x2e1d23[_0xf878('0xe')]?_0x5f2693['acw']:![];_0x2e1d23[_0xf878('0xf')]=_0x2e1d23[_0xf878('0xd')]?_0x5f2693['acwTimeout']:0x0;}utils[_0xf878('0x10')]('CreateVoiceAgentReport',_0x2e1d23);});}else{utils[_0xf878('0x10')](_0xf878('0x11'),_0x2e1d23);}if(_0x12df2b){delete transfers[_0x2e1d23[_0xf878('0x5')]];}else{delete agents[_0x2e1d23['destuniqueid']];}}exports[_0xf878('0x12')]=function(_0x38eddf){try{utils[_0xf878('0x13')](util['format'](_0xf878('0x14'),_0x38eddf[_0xf878('0x5')]),_0x38eddf);agents[_0x38eddf[_0xf878('0x15')]]=_0x38eddf;agents[_0x38eddf['destuniqueid']]['agentcalledAt']=utils[_0xf878('0x16')]();agents[_0x38eddf[_0xf878('0x15')]][_0xf878('0xa')]=_0xf878('0x17');agents[_0x38eddf[_0xf878('0x15')]][_0xf878('0x9')]=null;agents[_0x38eddf[_0xf878('0x15')]][_0xf878('0x18')]=null;utils[_0xf878('0x2')](util[_0xf878('0x3')](_0xf878('0x19'),_0x38eddf['uniqueid'],agents[_0x38eddf[_0xf878('0x15')]][_0xf878('0x8')],_0x38eddf[_0xf878('0x15')]));}catch(_0x622ea8){utils[_0xf878('0x1a')](util[_0xf878('0x3')](_0xf878('0x14'),_0x38eddf['uniqueid']),_0x622ea8);}};exports[_0xf878('0x1b')]=function(_0x140866){try{if(!_[_0xf878('0x1c')](agents[_0x140866['destuniqueid']])){utils[_0xf878('0x13')](util[_0xf878('0x3')](_0xf878('0x1d'),_0x140866[_0xf878('0x5')]),_0x140866);utils[_0xf878('0x2')](util[_0xf878('0x3')](_0xf878('0x1e'),_0x140866[_0xf878('0x5')],agents[_0x140866[_0xf878('0x15')]][_0xf878('0x8')],_0x140866[_0xf878('0x15')]));agents[_0x140866['destuniqueid']][_0xf878('0x1b')]=!![];agents[_0x140866['destuniqueid']][_0xf878('0x1f')]=utils[_0xf878('0x16')]();agents[_0x140866[_0xf878('0x15')]][_0xf878('0xa')]=_0xf878('0x20');agents[_0x140866['destuniqueid']]['reason']='timeout';agents[_0x140866[_0xf878('0x15')]][_0xf878('0x21')]=_0x140866[_0xf878('0x22')]?parseInt(_0x140866['ringtime'])/0x3e8:0x0;agents[_0x140866[_0xf878('0x15')]][_0xf878('0x23')]=0x0;unanswered[_0xf878('0x24')](_0x140866[_0xf878('0x15')]);}}catch(_0x41dd55){utils['error'](util['format'](_0xf878('0x1d'),_0x140866[_0xf878('0x5')]),_0x41dd55);}};exports['queuecallerabandon']=function(_0x31e2e1){try{_['forIn'](agents,function(_0x969ee3,_0x51afaf){if(_0x969ee3[_0xf878('0x5')]==_0x31e2e1['uniqueid']&&!_[_0xf878('0x25')](unanswered,_0x969ee3['destuniqueid'])){utils[_0xf878('0x13')](util[_0xf878('0x3')](_0xf878('0x26'),_0x31e2e1[_0xf878('0x5')]),_0x31e2e1);utils[_0xf878('0x2')](util[_0xf878('0x3')]('[%s][agents][queuecallerabandon]\x20agent:%s\x20destuniqueid:%s\x20lastevent:abandoned',_0x31e2e1[_0xf878('0x5')],_0x969ee3[_0xf878('0x8')],_0x969ee3[_0xf878('0x15')]));_0x969ee3[_0xf878('0x1b')]=!![];_0x969ee3[_0xf878('0x1f')]=utils['now']();_0x969ee3[_0xf878('0xa')]=_0xf878('0x27');_0x969ee3['reason']=_0xf878('0x27');_0x969ee3[_0xf878('0x21')]=_0x31e2e1[_0xf878('0x21')];_0x969ee3[_0xf878('0x23')]=0x0;writeDB(_0x969ee3);}});}catch(_0x1acfb6){utils['error'](util[_0xf878('0x3')](_0xf878('0x26'),_0x31e2e1[_0xf878('0x5')]),_0x1acfb6);}};exports[_0xf878('0x28')]=function(_0x579c91){try{if(agents[_0x579c91[_0xf878('0x15')]]){utils['debug'](util['format'](_0xf878('0x29'),_0x579c91[_0xf878('0x5')]),_0x579c91);utils[_0xf878('0x2')](util[_0xf878('0x3')](_0xf878('0x2a'),_0x579c91['uniqueid'],agents[_0x579c91[_0xf878('0x15')]]['membername'],_0x579c91[_0xf878('0x15')]));agents[_0x579c91[_0xf878('0x15')]]['agentconnectAt']=utils[_0xf878('0x16')]();agents[_0x579c91[_0xf878('0x15')]]['connectedlinenum']=_0x579c91[_0xf878('0x9')];agents[_0x579c91[_0xf878('0x15')]]['connectedlinename']=_0x579c91[_0xf878('0x18')];agents[_0x579c91[_0xf878('0x15')]][_0xf878('0x21')]=_0x579c91[_0xf878('0x22')];agents[_0x579c91[_0xf878('0x15')]][_0xf878('0xa')]=_0xf878('0x2b');_['forIn'](agents,function(_0x1179fb,_0x14340d){if(_0x1179fb['destuniqueid']!=_0x579c91[_0xf878('0x15')]&&_0x1179fb['uniqueid']==_0x579c91['uniqueid']){_0x1179fb[_0xf878('0x23')]=0x0;_0x1179fb[_0xf878('0x21')]=_0x579c91[_0xf878('0x22')];_0x1179fb[_0xf878('0x1b')]=!![];_0x1179fb[_0xf878('0x1f')]=utils['now']();_0x1179fb[_0xf878('0xa')]='answered_elsewhere';_0x1179fb[_0xf878('0x2c')]=_0xf878('0x2d');_0x1179fb['answeredelsewheredestinationuniqueid']=_0x579c91['destuniqueid'];_0x1179fb[_0xf878('0x2e')]=_0x579c91[_0xf878('0x8')];writeDB(_0x1179fb);}});}}catch(_0x13fcd3){utils[_0xf878('0x1a')](util[_0xf878('0x3')](_0xf878('0x29'),_0x579c91[_0xf878('0x5')]),_0x13fcd3);}};exports[_0xf878('0xe')]=function(_0x3b1c67){try{if(!_['isNil'](agents[_0x3b1c67[_0xf878('0x15')]])){utils[_0xf878('0x13')](util[_0xf878('0x3')](_0xf878('0x2f'),_0x3b1c67[_0xf878('0x5')]),_0x3b1c67);utils[_0xf878('0x2')](util['format'](_0xf878('0x30'),_0x3b1c67[_0xf878('0x5')],agents[_0x3b1c67[_0xf878('0x15')]][_0xf878('0x8')],_0x3b1c67[_0xf878('0x15')]));agents[_0x3b1c67['destuniqueid']][_0xf878('0xe')]=!![];agents[_0x3b1c67[_0xf878('0x15')]][_0xf878('0x31')]=utils[_0xf878('0x16')]();agents[_0x3b1c67['destuniqueid']][_0xf878('0x23')]=utils[_0xf878('0x32')](agents[_0x3b1c67[_0xf878('0x15')]]['agentcompleteAt'],agents[_0x3b1c67['destuniqueid']][_0xf878('0x33')]);agents[_0x3b1c67['destuniqueid']]['reason']=_0x3b1c67['reason'];agents[_0x3b1c67[_0xf878('0x15')]]['lastevent']=_0xf878('0x34');writeDB(agents[_0x3b1c67[_0xf878('0x15')]]);}}catch(_0x1dcb19){utils[_0xf878('0x1a')](util[_0xf878('0x3')](_0xf878('0x2f'),_0x3b1c67[_0xf878('0x5')]),_0x1dcb19);}};exports['blindtransfer']=function(_0xb0bf4c){try{if(!_[_0xf878('0x1c')](agents[_0xb0bf4c[_0xf878('0x35')]])){utils[_0xf878('0x13')](util[_0xf878('0x3')]('[%s][agents][blindtransfer]',_0xb0bf4c['uniqueid']),_0xb0bf4c);utils[_0xf878('0x2')](util[_0xf878('0x3')]('[%s][agents][blindtransfer]\x20agent:%s\x20transferuniqueid:%s',_0xb0bf4c[_0xf878('0x5')],agents[_0xb0bf4c['transfereruniqueid']][_0xf878('0x8')],agents[_0xb0bf4c[_0xf878('0x35')]][_0xf878('0x5')]));agents[_0xb0bf4c[_0xf878('0x35')]]['transfer']=!![];agents[_0xb0bf4c[_0xf878('0x35')]][_0xf878('0x36')]=_0xf878('0x37');agents[_0xb0bf4c['transfereruniqueid']][_0xf878('0x38')]=_0xb0bf4c[_0xf878('0x39')];agents[_0xb0bf4c[_0xf878('0x35')]][_0xf878('0x3a')]=agents[_0xb0bf4c['transfereruniqueid']][_0xf878('0x5')];}}catch(_0x181f09){utils[_0xf878('0x1a')](util['format'](_0xf878('0x3b'),_0xb0bf4c[_0xf878('0x5')]),_0x181f09);}};exports[_0xf878('0x3c')]=function(_0x150f60){try{utils['debug'](util['format']('[%s][agents][attendedtransfer]',_0x150f60[_0xf878('0x3d')]),_0x150f60);if(_0x150f60['origtransfereruniqueid']==_0x150f60['origtransfererlinkedid']){if(!_['isNil'](agents[_0x150f60[_0xf878('0x3e')]])){utils[_0xf878('0x2')](util['format'](_0xf878('0x3f'),_0x150f60[_0xf878('0x3d')],agents[_0x150f60[_0xf878('0x3e')]]['membername']));agents[_0x150f60['secondtransfereruniqueid']][_0xf878('0x40')]=!![];agents[_0x150f60['secondtransfereruniqueid']][_0xf878('0x36')]=_0xf878('0x41');agents[_0x150f60[_0xf878('0x3e')]][_0xf878('0x38')]=_0x150f60[_0xf878('0x42')];agents[_0x150f60[_0xf878('0x3e')]]['transferuniqueid']=_0x150f60[_0xf878('0x3d')];}if(_0x150f60[_0xf878('0x43')]&&agents[_0x150f60['transfereeuniqueid']]){agents[_0x150f60[_0xf878('0x43')]][_0xf878('0x44')]=0x1;transfers[_0x150f60[_0xf878('0x43')]]=_[_0xf878('0x45')](agents[_0x150f60[_0xf878('0x43')]]);transfers[_0x150f60[_0xf878('0x43')]][_0xf878('0x46')]=agents[_0x150f60['secondtransfereruniqueid']][_0xf878('0x46')];transfers[_0x150f60[_0xf878('0x43')]][_0xf878('0x47')]=agents[_0x150f60['secondtransfereruniqueid']][_0xf878('0x47')];transfers[_0x150f60['transfereeuniqueid']][_0xf878('0x48')]=utils[_0xf878('0x16')]();transfers[_0x150f60[_0xf878('0x43')]][_0xf878('0x33')]=utils[_0xf878('0x16')]();transfers[_0x150f60[_0xf878('0x43')]][_0xf878('0x21')]=0x0;transfers[_0x150f60[_0xf878('0x43')]][_0xf878('0x44')]=0x2;}}else if(_0x150f60[_0xf878('0x3e')]==_0x150f60['secondtransfererlinkedid']){if(!_['isNil'](agents[_0x150f60['origtransfereruniqueid']])){utils[_0xf878('0x2')](util['format'](_0xf878('0x3f'),_0x150f60[_0xf878('0x3d')],agents[_0x150f60['origtransfereruniqueid']]['membername']));agents[_0x150f60[_0xf878('0x3d')]][_0xf878('0x40')]=!![];agents[_0x150f60[_0xf878('0x3d')]][_0xf878('0x36')]=_0xf878('0x41');agents[_0x150f60[_0xf878('0x3d')]][_0xf878('0x38')]=_0x150f60[_0xf878('0x49')];agents[_0x150f60[_0xf878('0x3d')]][_0xf878('0x3a')]=_0x150f60[_0xf878('0x3e')];}if(_0x150f60[_0xf878('0x4a')]&&agents[_0x150f60[_0xf878('0x4a')]]){agents[_0x150f60[_0xf878('0x4a')]][_0xf878('0x44')]=0x1;transfers[_0x150f60[_0xf878('0x4a')]]=_[_0xf878('0x45')](agents[_0x150f60[_0xf878('0x4a')]]);transfers[_0x150f60['transfertargetuniqueid']][_0xf878('0x46')]=agents[_0x150f60['origtransfereruniqueid']][_0xf878('0x46')];transfers[_0x150f60[_0xf878('0x4a')]][_0xf878('0x47')]=agents[_0x150f60[_0xf878('0x3d')]][_0xf878('0x47')];transfers[_0x150f60[_0xf878('0x4a')]][_0xf878('0x48')]=utils[_0xf878('0x16')]();transfers[_0x150f60[_0xf878('0x4a')]]['agentconnectAt']=utils[_0xf878('0x16')]();transfers[_0x150f60[_0xf878('0x4a')]][_0xf878('0x21')]=0x0;transfers[_0x150f60[_0xf878('0x4a')]]['agententerreason']=0x2;}}}catch(_0xa73ee){utils[_0xf878('0x1a')](util[_0xf878('0x3')](_0xf878('0x4b'),_0x150f60[_0xf878('0x3d')]),_0xa73ee);}};exports['hangup']=function(_0x5860f6){try{utils[_0xf878('0x13')](util[_0xf878('0x3')](_0xf878('0x4c'),_0x5860f6[_0xf878('0x5')]),_0x5860f6);if(agents[_0x5860f6[_0xf878('0x5')]]&&agents[_0x5860f6[_0xf878('0x5')]][_0xf878('0x2c')]===_0xf878('0x20')){if(_0x5860f6[_0xf878('0x4d')]==='21'){agents[_0x5860f6[_0xf878('0x5')]][_0xf878('0x2c')]=_0xf878('0x4e');agents[_0x5860f6[_0xf878('0x5')]][_0xf878('0xa')]=_0xf878('0x4e');}utils[_0xf878('0x2')](util[_0xf878('0x3')]('[%s][agents][hangup]\x20agent:%s\x20reason:%s\x20lastevent:%s',_0x5860f6[_0xf878('0x5')],agents[_0x5860f6[_0xf878('0x5')]][_0xf878('0x8')],agents[_0x5860f6[_0xf878('0x5')]][_0xf878('0x2c')],agents[_0x5860f6[_0xf878('0x5')]][_0xf878('0xa')]));writeDB(agents[_0x5860f6[_0xf878('0x5')]]);var _0x443e69=unanswered['indexOf'](_0x5860f6[_0xf878('0x5')]);if(_0x443e69>-0x1){unanswered[_0xf878('0x4f')](_0x443e69,0x1);}}if(transfers[_0x5860f6[_0xf878('0x5')]]){transfers[_0x5860f6[_0xf878('0x5')]][_0xf878('0xe')]=!![];transfers[_0x5860f6[_0xf878('0x5')]][_0xf878('0x31')]=utils['now']();transfers[_0x5860f6['uniqueid']][_0xf878('0x23')]=utils['diffTime'](transfers[_0x5860f6[_0xf878('0x5')]][_0xf878('0x31')],transfers[_0x5860f6[_0xf878('0x5')]][_0xf878('0x33')]);transfers[_0x5860f6['uniqueid']][_0xf878('0x2c')]=_0xf878('0x50');transfers[_0x5860f6[_0xf878('0x5')]][_0xf878('0xa')]='complete';utils[_0xf878('0x2')](util['format'](_0xf878('0x51'),_0x5860f6[_0xf878('0x5')],transfers[_0x5860f6[_0xf878('0x5')]][_0xf878('0x8')],transfers[_0x5860f6[_0xf878('0x5')]]['reason'],transfers[_0x5860f6[_0xf878('0x5')]][_0xf878('0xa')]));writeDB(transfers[_0x5860f6[_0xf878('0x5')]],!![]);}if(agents[_0x5860f6[_0xf878('0x5')]]&&agents[_0x5860f6['uniqueid']][_0xf878('0x33')]){agents[_0x5860f6['uniqueid']][_0xf878('0xe')]=!![];agents[_0x5860f6[_0xf878('0x5')]][_0xf878('0x31')]=utils[_0xf878('0x16')]();agents[_0x5860f6[_0xf878('0x5')]][_0xf878('0x23')]=utils[_0xf878('0x32')](agents[_0x5860f6[_0xf878('0x5')]]['agentcompleteAt'],agents[_0x5860f6['uniqueid']]['agentconnectAt']);agents[_0x5860f6[_0xf878('0x5')]][_0xf878('0x2c')]=agents[_0x5860f6['uniqueid']]['transfer']?_0xf878('0x40'):'agent';agents[_0x5860f6[_0xf878('0x5')]][_0xf878('0xa')]=_0xf878('0x34');utils[_0xf878('0x2')](util[_0xf878('0x3')](_0xf878('0x51'),_0x5860f6[_0xf878('0x5')],agents[_0x5860f6[_0xf878('0x5')]][_0xf878('0x8')],agents[_0x5860f6['uniqueid']][_0xf878('0x2c')],agents[_0x5860f6[_0xf878('0x5')]][_0xf878('0xa')]));writeDB(agents[_0x5860f6['uniqueid']]);}}catch(_0x15f893){utils[_0xf878('0x1a')](util['format'](_0xf878('0x4c'),_0x5860f6[_0xf878('0x5')]),_0x15f893);}};