e4a1a70f6d7187f88fbd817494d5401fa67b8c8e
[motion2.git] / server / services / ami / acw / index.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 _0x3a41=['[ACW][STOP]\x20Interface\x20%s\x20doesn\x27t\x20have\x20timer','stringify','destlinkedid','[ACW][syncAgentConnect]\x20%s','isUndefined','linkedid','[%s][HANGUP:LINKEDID]','[ACW][syncHangupRequest]\x20%s','[%s][HANGUPATTENDEDTRANSFER:UNIQUEID]','[%s][HANGUPATTENDEDTRANSFER:LINKEDID]','[ACW][syncHangup]\x20%s','isNil','transfereeuniqueid','secondtransfereruniqueid','transfertargetuniqueid','origtransfereruniqueid','[ACW][syncAttendedTransfer]\x20%s','[%s][BLINDTRANSFER:UNIQUEID]','transfereruniqueid','transfererlinkedid','[%s][BLINDTRANSFER:LINKEDID]','syncAgentRingNoAnswer','[%s][AUTOPAUSE][AGENT:%s][QUEUE:%]','Auto-Pause','[ACW][syncAgentRingNoAnswer]\x20%s','exports','util','lodash','../ami','../../../config/logger','acw','../rpc/user','../rpc/voiceAgentReport','voiceQueues','agents','timers','channels','agentconnect','syncAgentConnect','bind','syncHangupRequest','syncHangup','agentringnoanswer','syncAttendedTransfer','blindtransfer','syncBlindTransfer','custom:agentConnectPreview','syncAgentConnectPreview','milliseconds','diff','seconds','prototype','startAcw','interface','queue','ACW','mandatoryDisposition','mandatoryDispositionPause','name','Action','then','getAgent','voicePause','info','[%s][START][AGENT:%s][QUEUE:%s]','attended','savePause','[%s][TIMER:%s][AGENT:%s][QUEUE:%s]','acwTimeout','stopAcw','format','YYYY-MM-DD\x20HH:mm:ss','uniqueid','updateAcw','lastPauseAt','timer','update','[%s][UPDATE][ACWTIME:%s]','catch','[%s][UPDATE][ERRORS:%s]','[%s][INPAUSE][AGENT:%s][QUEUE:%s]','error','finally','[ACW][START]\x20%s','message','[%s][TIMER][STOP][AGENT:%s]','saveUnpause'];(function(_0x43444b,_0x8cf95b){var _0x392fe5=function(_0x7a1a82){while(--_0x7a1a82){_0x43444b['push'](_0x43444b['shift']());}};_0x392fe5(++_0x8cf95b);}(_0x3a41,0xc8));var _0x13a4=function(_0x19c6a6,_0x36701d){_0x19c6a6=_0x19c6a6-0x0;var _0x29014=_0x3a41[_0x19c6a6];return _0x29014;};'use strict';var util=require(_0x13a4('0x0'));var _=require(_0x13a4('0x1'));var moment=require('moment');var ami=require(_0x13a4('0x2'));var logger=require(_0x13a4('0x3'))(_0x13a4('0x4'));var RpcUser=require(_0x13a4('0x5'));var RpcVoiceAgentReport=require(_0x13a4('0x6'));function Acw(_0x5ca5a7){this[_0x13a4('0x7')]=_0x5ca5a7['voiceQueues'];this[_0x13a4('0x8')]=_0x5ca5a7[_0x13a4('0x8')];this[_0x13a4('0x9')]=_0x5ca5a7[_0x13a4('0x9')];this[_0x13a4('0xa')]={};ami['on'](_0x13a4('0xb'),this[_0x13a4('0xc')][_0x13a4('0xd')](this));ami['on']('hanguprequest',this[_0x13a4('0xe')][_0x13a4('0xd')](this));ami['on']('hangup',this[_0x13a4('0xf')]['bind'](this));ami['on'](_0x13a4('0x10'),this['syncAgentRingNoAnswer'][_0x13a4('0xd')](this));ami['on']('attendedtransfer',this[_0x13a4('0x11')]['bind'](this));ami['on'](_0x13a4('0x12'),this[_0x13a4('0x13')][_0x13a4('0xd')](this));ami['on'](_0x13a4('0x14'),this[_0x13a4('0x15')]['bind'](this));}function getDiff(_0x2958eb){var _0x20e0a9=moment()[_0x13a4('0x16')](0x0);var _0x22b1ba=moment(_0x2958eb)['milliseconds'](0x0);return _0x20e0a9[_0x13a4('0x17')](_0x22b1ba,_0x13a4('0x18'));}Acw[_0x13a4('0x19')][_0x13a4('0x1a')]=function(_0xf0051){try{var _0x515a24=this;var _0x4353bb=this[_0x13a4('0xa')][_0xf0051][_0x13a4('0x1b')];var _0x4e515d=this[_0x13a4('0xa')][_0xf0051][_0x13a4('0x1c')];var _0x443331=this[_0x13a4('0x7')][_0x4e515d];var _0x2a0809=![];var _0x404cae=_0x13a4('0x1d');if(_0x443331[_0x13a4('0x1e')]){if(_0x443331[_0x13a4('0x1f')]['name']){_0x2a0809=!![];_0x404cae=_0x443331['mandatoryDispositionPause'][_0x13a4('0x20')];}}ami[_0x13a4('0x21')]({'action':'QueuePause','interface':_0x4353bb,'paused':!![],'reason':_0x404cae})[_0x13a4('0x22')](function(_0x2221d3){if(_0x515a24[_0x13a4('0x8')][_0x4353bb]){return RpcUser[_0x13a4('0x23')](_0x515a24['agents'][_0x4353bb]['id'])[_0x13a4('0x22')](function(_0x5f2870){if(_0x5f2870&&!_0x5f2870[_0x13a4('0x24')]){logger[_0x13a4('0x25')](_0x13a4('0x26'),_0xf0051,_0x4353bb,_0x4e515d);var _0x4c66dd=_0x515a24['channels'][_0xf0051][_0x13a4('0x27')]&&_0x515a24[_0x13a4('0xa')][_0xf0051]['destlinkedid']?_0x515a24[_0x13a4('0xa')][_0xf0051]['destlinkedid']:_0xf0051;return RpcUser[_0x13a4('0x28')](_0x515a24['agents'][_0x4353bb],_0x404cae,_0x4c66dd)[_0x13a4('0x22')](function(_0x4ac4e5){if(!_0x2a0809){_0x515a24[_0x13a4('0x9')][_0x4353bb]={};logger[_0x13a4('0x25')](_0x13a4('0x29'),_0xf0051,_0x515a24[_0x13a4('0x7')][_0x4e515d][_0x13a4('0x2a')],_0x4353bb,_0x4e515d);_0x515a24[_0x13a4('0x9')][_0x4353bb]['timer']=setTimeout(_0x515a24[_0x13a4('0x2b')][_0x13a4('0xd')](_0x515a24,_0x4353bb),_0x515a24[_0x13a4('0x7')][_0x4e515d]['acwTimeout']*0x3e8);_0x515a24[_0x13a4('0x9')][_0x4353bb]['lastPauseAt']=moment()[_0x13a4('0x2c')](_0x13a4('0x2d'));_0x515a24[_0x13a4('0x9')][_0x4353bb][_0x13a4('0x2e')]=_0xf0051;_0x515a24[_0x13a4('0x9')][_0x4353bb][_0x13a4('0x1c')]=_0x4e515d;_0x515a24[_0x13a4('0x9')][_0x4353bb][_0x13a4('0x2f')]=function(){var _0x4fe875=getDiff(_0x515a24[_0x13a4('0x9')][_0x4353bb][_0x13a4('0x30')]);clearTimeout(_0x515a24[_0x13a4('0x9')][_0x4353bb]['timer']);_0x515a24[_0x13a4('0x9')][_0x4353bb][_0x13a4('0x31')]=![];RpcVoiceAgentReport[_0x13a4('0x32')]({'acwtime':_0x4fe875},_0x515a24[_0x13a4('0x9')][_0x4353bb][_0x13a4('0x2e')],_0x4353bb)[_0x13a4('0x22')](function(_0x74e604){logger[_0x13a4('0x25')](_0x13a4('0x33'),_0xf0051,_0x4fe875,_0x74e604);})[_0x13a4('0x34')](function(_0x5a9f70){logger['error'](_0x13a4('0x35'),_0xf0051,_0x5a9f70);});delete _0x515a24[_0x13a4('0x9')][_0x4353bb];};}});}else{logger['info'](_0x13a4('0x36'),_0xf0051,_0x4353bb,_0x4e515d);}});}})[_0x13a4('0x34')](function(_0x4205f5){logger[_0x13a4('0x37')](_0x13a4('0x29'),_0xf0051,_0x515a24[_0x13a4('0x7')][_0x4e515d][_0x13a4('0x2a')],_0x4353bb,_0x4e515d);})[_0x13a4('0x38')](function(){delete _0x515a24['channels'][_0xf0051];});}catch(_0x29a5b8){logger[_0x13a4('0x37')](_0x13a4('0x39'),_0x29a5b8[_0x13a4('0x3a')]);}};Acw[_0x13a4('0x19')][_0x13a4('0x2b')]=function(_0x36bf91){try{var _0xdd55a=this;if(_0xdd55a['timers'][_0x36bf91]){_0xdd55a[_0x13a4('0x9')][_0x36bf91][_0x13a4('0x31')]=![];var _0x253368=_0xdd55a['timers'][_0x36bf91][_0x13a4('0x2e')];var _0x46c11e=_0xdd55a[_0x13a4('0x9')][_0x36bf91][_0x13a4('0x1c')];var _0x1367b5=_0xdd55a[_0x13a4('0x7')][_0x46c11e][_0x13a4('0x2a')];logger[_0x13a4('0x25')](_0x13a4('0x3b'),_0x253368,_0x36bf91);RpcUser[_0x13a4('0x3c')](this[_0x13a4('0x8')][_0x36bf91]);RpcVoiceAgentReport[_0x13a4('0x32')]({'acwtime':_0x1367b5,'agentacw':!![]},_0x253368,_0x36bf91)[_0x13a4('0x22')](function(_0x34a724){logger[_0x13a4('0x25')]('[%s][UPDATE][ACWTIME:%s]',_0x253368,_0x1367b5,_0x34a724);})['catch'](function(_0x15cf81){logger[_0x13a4('0x37')](_0x13a4('0x35'),_0x253368,_0x15cf81);});}else{logger['error'](_0x13a4('0x3d'),_0x36bf91);if(_0xdd55a[_0x13a4('0x9')]){logger[_0x13a4('0x25')]('[ACW][TIMERS]',JSON[_0x13a4('0x3e')](_0xdd55a[_0x13a4('0x9')]));}}}catch(_0xf5fda){logger['error']('[ACW][STOP]\x20%s',_0xf5fda[_0x13a4('0x3a')]);}};Acw[_0x13a4('0x19')][_0x13a4('0xc')]=function(_0x579d82){try{if(this[_0x13a4('0x7')][_0x579d82[_0x13a4('0x1c')]]&&(this[_0x13a4('0x7')][_0x579d82['queue']][_0x13a4('0x4')]||this['voiceQueues'][_0x579d82[_0x13a4('0x1c')]][_0x13a4('0x1e')])){if(this['agents'][_0x579d82[_0x13a4('0x1b')]]){this[_0x13a4('0xa')][_0x579d82['uniqueid']]={'queue':_0x579d82[_0x13a4('0x1c')],'interface':_0x579d82[_0x13a4('0x1b')],'destlinkedid':_0x579d82[_0x13a4('0x3f')]};}}}catch(_0x4966d1){logger['error'](_0x13a4('0x40'),_0x4966d1[_0x13a4('0x3a')]);}};Acw[_0x13a4('0x19')][_0x13a4('0x15')]=function(_0x5b48e7){try{if(this[_0x13a4('0x7')][_0x5b48e7[_0x13a4('0x1c')]]&&(this[_0x13a4('0x7')][_0x5b48e7['queue']][_0x13a4('0x4')]||this[_0x13a4('0x7')][_0x5b48e7[_0x13a4('0x1c')]]['mandatoryDisposition'])){if(this['agents'][_0x5b48e7['interface']]){this[_0x13a4('0xa')][_0x5b48e7[_0x13a4('0x2e')]]={'queue':_0x5b48e7[_0x13a4('0x1c')],'interface':_0x5b48e7[_0x13a4('0x1b')]};}}}catch(_0x3368c3){logger[_0x13a4('0x37')]('[ACW][syncAgentConnectPreview]\x20%s',_0x3368c3[_0x13a4('0x3a')]);}};Acw[_0x13a4('0x19')]['syncHangupRequest']=function(_0x54fe44){try{if(this[_0x13a4('0xa')][_0x54fe44[_0x13a4('0x2e')]]&&_[_0x13a4('0x41')](this[_0x13a4('0xa')][_0x54fe44[_0x13a4('0x2e')]][_0x13a4('0x27')])){logger[_0x13a4('0x25')]('[%s][HANGUP:UNIQUEID]',_0x54fe44[_0x13a4('0x2e')]);this['startAcw'](_0x54fe44[_0x13a4('0x2e')]);}else if(this[_0x13a4('0xa')][_0x54fe44[_0x13a4('0x42')]]&&_[_0x13a4('0x41')](this[_0x13a4('0xa')][_0x54fe44['linkedid']][_0x13a4('0x27')])){logger[_0x13a4('0x25')](_0x13a4('0x43'),_0x54fe44[_0x13a4('0x42')]);this[_0x13a4('0x1a')](_0x54fe44[_0x13a4('0x42')]);}}catch(_0x47f74d){logger[_0x13a4('0x37')](_0x13a4('0x44'),_0x47f74d[_0x13a4('0x3a')]);}};Acw[_0x13a4('0x19')][_0x13a4('0xf')]=function(_0x3713da){try{if(this[_0x13a4('0xa')][_0x3713da['uniqueid']]&&this[_0x13a4('0xa')][_0x3713da[_0x13a4('0x2e')]][_0x13a4('0x27')]){logger[_0x13a4('0x25')](_0x13a4('0x45'),_0x3713da[_0x13a4('0x2e')]);this['startAcw'](_0x3713da[_0x13a4('0x2e')]);}else if(this['channels'][_0x3713da[_0x13a4('0x42')]]&&this[_0x13a4('0xa')][_0x3713da[_0x13a4('0x42')]][_0x13a4('0x27')]){logger[_0x13a4('0x25')](_0x13a4('0x46'),_0x3713da[_0x13a4('0x42')]);this[_0x13a4('0x1a')](_0x3713da[_0x13a4('0x42')]);}}catch(_0x27bee6){logger[_0x13a4('0x37')](_0x13a4('0x47'),_0x27bee6[_0x13a4('0x3a')]);}};Acw[_0x13a4('0x19')][_0x13a4('0x11')]=function(_0x321fe7){try{if(!_[_0x13a4('0x48')](this[_0x13a4('0xa')][_0x321fe7[_0x13a4('0x49')]])){this[_0x13a4('0x1a')](_0x321fe7['transfereeuniqueid']);if(this[_0x13a4('0xa')][_0x321fe7['secondtransfereruniqueid']]){this[_0x13a4('0xa')][_0x321fe7['secondtransfereruniqueid']][_0x13a4('0x27')]=!![];this[_0x13a4('0xa')][_0x321fe7['transfertargetuniqueid']]=this[_0x13a4('0xa')][_0x321fe7[_0x13a4('0x4a')]];delete this['channels'][_0x321fe7[_0x13a4('0x4a')]];}}else if(!_[_0x13a4('0x48')](this[_0x13a4('0xa')][_0x321fe7['transfertargetuniqueid']])){this['startAcw'](_0x321fe7[_0x13a4('0x4b')]);if(this[_0x13a4('0xa')][_0x321fe7[_0x13a4('0x4c')]]){this['channels'][_0x321fe7[_0x13a4('0x4c')]][_0x13a4('0x27')]=!![];this[_0x13a4('0xa')][_0x321fe7[_0x13a4('0x49')]]=this[_0x13a4('0xa')][_0x321fe7['origtransfereruniqueid']];delete this[_0x13a4('0xa')][_0x321fe7['origtransfereruniqueid']];}}}catch(_0x2b28a6){logger[_0x13a4('0x37')](_0x13a4('0x4d'),_0x2b28a6['message']);}};Acw[_0x13a4('0x19')][_0x13a4('0x13')]=function(_0x1270cc){try{if(this[_0x13a4('0xa')][_0x1270cc['transfereruniqueid']]){logger[_0x13a4('0x25')](_0x13a4('0x4e'),JSON[_0x13a4('0x3e')](_0x1270cc[_0x13a4('0x4f')]));this[_0x13a4('0x1a')](_0x1270cc[_0x13a4('0x4f')]);}else if(this[_0x13a4('0xa')][_0x1270cc[_0x13a4('0x50')]]){logger['info'](_0x13a4('0x51'),JSON[_0x13a4('0x3e')](_0x1270cc[_0x13a4('0x50')]));this[_0x13a4('0x1a')](_0x1270cc[_0x13a4('0x50')]);}}catch(_0x57f550){logger[_0x13a4('0x37')]('[ACW][syncBlindTransfer]\x20%s',_0x57f550[_0x13a4('0x3a')]);}};Acw[_0x13a4('0x19')][_0x13a4('0x52')]=function(_0x2c5dc4){try{if(this[_0x13a4('0x7')][_0x2c5dc4[_0x13a4('0x1c')]]&&this['voiceQueues'][_0x2c5dc4[_0x13a4('0x1c')]]['autopause']==='all'){if(this['agents'][_0x2c5dc4[_0x13a4('0x1b')]]){logger[_0x13a4('0x25')](_0x13a4('0x53'),_0x2c5dc4[_0x13a4('0x2e')],_0x2c5dc4[_0x13a4('0x1b')],_0x2c5dc4[_0x13a4('0x1c')]);return RpcUser[_0x13a4('0x28')](this[_0x13a4('0x8')][_0x2c5dc4[_0x13a4('0x1b')]],_0x13a4('0x54'),_0x2c5dc4[_0x13a4('0x2e')]);}}}catch(_0x20c95d){logger[_0x13a4('0x37')](_0x13a4('0x55'),_0x20c95d[_0x13a4('0x3a')]);}};module[_0x13a4('0x56')]=Acw;