Built motion from commit ddca4d0d.|2.5.47
[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 _0x7216=['lastPauseAt','format','YYYY-MM-DD\x20HH:mm:ss','uniqueid','queue','updateAcw','update','[%s][UPDATE][ACWTIME:%s]','error','[%s][UPDATE][ERRORS:%s]','[%s][INPAUSE][AGENT:%s][QUEUE:%s]','catch','finally','message','prototype','timer','[%s][TIMER][STOP][AGENT:%s]','saveUnpause','[ACW][STOP]\x20Interface\x20%s\x20doesn\x27t\x20have\x20timer','[ACW][TIMERS]','[ACW][STOP]\x20%s','acw','mandatoryDisposition','[ACW][syncAgentConnect]\x20%s','[ACW][syncAgentConnectPreview]\x20%s','syncHangupRequest','startAcw','linkedid','isUndefined','attended','[ACW][syncHangupRequest]\x20%s','[%s][HANGUPATTENDEDTRANSFER:UNIQUEID]','[%s][HANGUPATTENDEDTRANSFER:LINKEDID]','[ACW][syncHangup]\x20%s','transfereeuniqueid','secondtransfereruniqueid','transfertargetuniqueid','origtransfereruniqueid','[ACW][syncAttendedTransfer]\x20%s','transfereruniqueid','[%s][BLINDTRANSFER:UNIQUEID]','stringify','transfererlinkedid','[%s][BLINDTRANSFER:LINKEDID]','[ACW][syncBlindTransfer]\x20%s','all','[%s][AUTOPAUSE][AGENT:%s][QUEUE:%]','Auto-Pause','[ACW][syncAgentRingNoAnswer]\x20%s','util','lodash','moment','../rpc/user','../rpc/voiceAgentReport','voiceQueues','agents','timers','channels','agentconnect','syncAgentConnect','hanguprequest','bind','hangup','syncHangup','agentringnoanswer','syncAgentRingNoAnswer','attendedtransfer','syncAttendedTransfer','blindtransfer','syncBlindTransfer','custom:agentConnectPreview','syncAgentConnectPreview','milliseconds','seconds','interface','ACW','mandatoryDispositionPause','name','Action','then','getAgent','info','[%s][START][AGENT:%s][QUEUE:%s]','destlinkedid','[%s][TIMER:%s][AGENT:%s][QUEUE:%s]','acwTimeout','stopAcw'];(function(_0x50a5be,_0x50f7bd){var _0x4a12fd=function(_0x4001b6){while(--_0x4001b6){_0x50a5be['push'](_0x50a5be['shift']());}};_0x4a12fd(++_0x50f7bd);}(_0x7216,0xdf));var _0x6721=function(_0x1e2e56,_0x582a95){_0x1e2e56=_0x1e2e56-0x0;var _0x340b8f=_0x7216[_0x1e2e56];return _0x340b8f;};'use strict';var util=require(_0x6721('0x0'));var _=require(_0x6721('0x1'));var moment=require(_0x6721('0x2'));var ami=require('../ami');var logger=require('../../../config/logger')('acw');var RpcUser=require(_0x6721('0x3'));var RpcVoiceAgentReport=require(_0x6721('0x4'));function Acw(_0xa54113){this[_0x6721('0x5')]=_0xa54113[_0x6721('0x5')];this[_0x6721('0x6')]=_0xa54113[_0x6721('0x6')];this[_0x6721('0x7')]=_0xa54113['timers'];this[_0x6721('0x8')]={};ami['on'](_0x6721('0x9'),this[_0x6721('0xa')]['bind'](this));ami['on'](_0x6721('0xb'),this['syncHangupRequest'][_0x6721('0xc')](this));ami['on'](_0x6721('0xd'),this[_0x6721('0xe')][_0x6721('0xc')](this));ami['on'](_0x6721('0xf'),this[_0x6721('0x10')]['bind'](this));ami['on'](_0x6721('0x11'),this[_0x6721('0x12')][_0x6721('0xc')](this));ami['on'](_0x6721('0x13'),this[_0x6721('0x14')][_0x6721('0xc')](this));ami['on'](_0x6721('0x15'),this[_0x6721('0x16')][_0x6721('0xc')](this));}function getDiff(_0x7ea3fc){var _0x382fd3=moment()[_0x6721('0x17')](0x0);var _0x3d616a=moment(_0x7ea3fc)[_0x6721('0x17')](0x0);return _0x382fd3['diff'](_0x3d616a,_0x6721('0x18'));}Acw['prototype']['startAcw']=function(_0x3a8715){try{var _0x122cff=this;var _0x12b060=this[_0x6721('0x8')][_0x3a8715][_0x6721('0x19')];var _0x2d298f=this[_0x6721('0x8')][_0x3a8715]['queue'];var _0x42977d=this[_0x6721('0x5')][_0x2d298f];var _0x10c2c6=![];var _0x255497=_0x6721('0x1a');if(_0x42977d['mandatoryDisposition']){if(_0x42977d[_0x6721('0x1b')][_0x6721('0x1c')]){_0x10c2c6=!![];_0x255497=_0x42977d['mandatoryDispositionPause'][_0x6721('0x1c')];}}ami[_0x6721('0x1d')]({'action':'QueuePause','interface':_0x12b060,'paused':!![],'reason':_0x255497})[_0x6721('0x1e')](function(_0x5a950c){if(_0x122cff[_0x6721('0x6')][_0x12b060]){return RpcUser[_0x6721('0x1f')](_0x122cff['agents'][_0x12b060]['id'])[_0x6721('0x1e')](function(_0x349a9b){if(_0x349a9b&&!_0x349a9b['voicePause']){logger[_0x6721('0x20')](_0x6721('0x21'),_0x3a8715,_0x12b060,_0x2d298f);var _0x28096e=_0x122cff['channels'][_0x3a8715]['attended']&&_0x122cff[_0x6721('0x8')][_0x3a8715]['destlinkedid']?_0x122cff['channels'][_0x3a8715][_0x6721('0x22')]:_0x3a8715;return RpcUser['savePause'](_0x122cff[_0x6721('0x6')][_0x12b060],_0x255497,_0x28096e)[_0x6721('0x1e')](function(_0x23fd88){if(!_0x10c2c6){_0x122cff[_0x6721('0x7')][_0x12b060]={};logger[_0x6721('0x20')](_0x6721('0x23'),_0x3a8715,_0x122cff[_0x6721('0x5')][_0x2d298f][_0x6721('0x24')],_0x12b060,_0x2d298f);_0x122cff[_0x6721('0x7')][_0x12b060]['timer']=setTimeout(_0x122cff[_0x6721('0x25')][_0x6721('0xc')](_0x122cff,_0x12b060),_0x122cff[_0x6721('0x5')][_0x2d298f][_0x6721('0x24')]*0x3e8);_0x122cff[_0x6721('0x7')][_0x12b060][_0x6721('0x26')]=moment()[_0x6721('0x27')](_0x6721('0x28'));_0x122cff[_0x6721('0x7')][_0x12b060][_0x6721('0x29')]=_0x3a8715;_0x122cff['timers'][_0x12b060][_0x6721('0x2a')]=_0x2d298f;_0x122cff[_0x6721('0x7')][_0x12b060][_0x6721('0x2b')]=function(){var _0x9adc24=getDiff(_0x122cff['timers'][_0x12b060]['lastPauseAt']);clearTimeout(_0x122cff['timers'][_0x12b060]['timer']);_0x122cff[_0x6721('0x7')][_0x12b060]['timer']=![];RpcVoiceAgentReport[_0x6721('0x2c')]({'acwtime':_0x9adc24},_0x122cff['timers'][_0x12b060][_0x6721('0x29')],_0x12b060)['then'](function(_0x5a6206){logger[_0x6721('0x20')](_0x6721('0x2d'),_0x3a8715,_0x9adc24,_0x5a6206);})['catch'](function(_0x35013a){logger[_0x6721('0x2e')](_0x6721('0x2f'),_0x3a8715,_0x35013a);});delete _0x122cff[_0x6721('0x7')][_0x12b060];};}});}else{logger[_0x6721('0x20')](_0x6721('0x30'),_0x3a8715,_0x12b060,_0x2d298f);}});}})[_0x6721('0x31')](function(_0x55e9bc){logger[_0x6721('0x2e')]('[%s][TIMER:%s][AGENT:%s][QUEUE:%s]',_0x3a8715,_0x122cff['voiceQueues'][_0x2d298f][_0x6721('0x24')],_0x12b060,_0x2d298f);})[_0x6721('0x32')](function(){delete _0x122cff[_0x6721('0x8')][_0x3a8715];});}catch(_0x28b829){logger[_0x6721('0x2e')]('[ACW][START]\x20%s',_0x28b829[_0x6721('0x33')]);}};Acw[_0x6721('0x34')]['stopAcw']=function(_0x3a4271){try{var _0x38eb03=this;if(_0x38eb03[_0x6721('0x7')][_0x3a4271]){_0x38eb03['timers'][_0x3a4271][_0x6721('0x35')]=![];var _0x1d6930=_0x38eb03['timers'][_0x3a4271][_0x6721('0x29')];var _0x52d6de=_0x38eb03['timers'][_0x3a4271][_0x6721('0x2a')];var _0x5ad2d1=_0x38eb03[_0x6721('0x5')][_0x52d6de][_0x6721('0x24')];logger[_0x6721('0x20')](_0x6721('0x36'),_0x1d6930,_0x3a4271);RpcUser[_0x6721('0x37')](this[_0x6721('0x6')][_0x3a4271]);RpcVoiceAgentReport[_0x6721('0x2c')]({'acwtime':_0x5ad2d1,'agentacw':!![]},_0x1d6930,_0x3a4271)[_0x6721('0x1e')](function(_0x34db93){logger[_0x6721('0x20')]('[%s][UPDATE][ACWTIME:%s]',_0x1d6930,_0x5ad2d1,_0x34db93);})[_0x6721('0x31')](function(_0x45f183){logger[_0x6721('0x2e')](_0x6721('0x2f'),_0x1d6930,_0x45f183);});}else{logger[_0x6721('0x2e')](_0x6721('0x38'),_0x3a4271);if(_0x38eb03['timers']){logger[_0x6721('0x20')](_0x6721('0x39'),JSON['stringify'](_0x38eb03[_0x6721('0x7')]));}}}catch(_0xbc8bce){logger['error'](_0x6721('0x3a'),_0xbc8bce[_0x6721('0x33')]);}};Acw[_0x6721('0x34')][_0x6721('0xa')]=function(_0xf483d8){try{if(this[_0x6721('0x5')][_0xf483d8['queue']]&&(this[_0x6721('0x5')][_0xf483d8[_0x6721('0x2a')]][_0x6721('0x3b')]||this[_0x6721('0x5')][_0xf483d8[_0x6721('0x2a')]][_0x6721('0x3c')])){if(this[_0x6721('0x6')][_0xf483d8['interface']]){this[_0x6721('0x8')][_0xf483d8[_0x6721('0x29')]]={'queue':_0xf483d8[_0x6721('0x2a')],'interface':_0xf483d8[_0x6721('0x19')],'destlinkedid':_0xf483d8[_0x6721('0x22')]};}}}catch(_0xd7d815){logger[_0x6721('0x2e')](_0x6721('0x3d'),_0xd7d815['message']);}};Acw['prototype'][_0x6721('0x16')]=function(_0x464ca2){try{if(this[_0x6721('0x5')][_0x464ca2[_0x6721('0x2a')]]&&(this[_0x6721('0x5')][_0x464ca2[_0x6721('0x2a')]][_0x6721('0x3b')]||this[_0x6721('0x5')][_0x464ca2[_0x6721('0x2a')]][_0x6721('0x3c')])){if(this[_0x6721('0x6')][_0x464ca2[_0x6721('0x19')]]){this['channels'][_0x464ca2['uniqueid']]={'queue':_0x464ca2['queue'],'interface':_0x464ca2['interface']};}}}catch(_0x5567aa){logger[_0x6721('0x2e')](_0x6721('0x3e'),_0x5567aa[_0x6721('0x33')]);}};Acw[_0x6721('0x34')][_0x6721('0x3f')]=function(_0xa17e97){try{if(this['channels'][_0xa17e97[_0x6721('0x29')]]&&_['isUndefined'](this[_0x6721('0x8')][_0xa17e97[_0x6721('0x29')]]['attended'])){logger[_0x6721('0x20')]('[%s][HANGUP:UNIQUEID]',_0xa17e97[_0x6721('0x29')]);this[_0x6721('0x40')](_0xa17e97[_0x6721('0x29')]);}else if(this['channels'][_0xa17e97[_0x6721('0x41')]]&&_[_0x6721('0x42')](this[_0x6721('0x8')][_0xa17e97[_0x6721('0x41')]][_0x6721('0x43')])){logger[_0x6721('0x20')]('[%s][HANGUP:LINKEDID]',_0xa17e97[_0x6721('0x41')]);this['startAcw'](_0xa17e97[_0x6721('0x41')]);}}catch(_0x1ea75a){logger[_0x6721('0x2e')](_0x6721('0x44'),_0x1ea75a[_0x6721('0x33')]);}};Acw[_0x6721('0x34')][_0x6721('0xe')]=function(_0x3930d8){try{if(this[_0x6721('0x8')][_0x3930d8[_0x6721('0x29')]]&&this[_0x6721('0x8')][_0x3930d8['uniqueid']]['attended']){logger['info'](_0x6721('0x45'),_0x3930d8[_0x6721('0x29')]);this[_0x6721('0x40')](_0x3930d8[_0x6721('0x29')]);}else if(this[_0x6721('0x8')][_0x3930d8[_0x6721('0x41')]]&&this[_0x6721('0x8')][_0x3930d8[_0x6721('0x41')]][_0x6721('0x43')]){logger[_0x6721('0x20')](_0x6721('0x46'),_0x3930d8[_0x6721('0x41')]);this[_0x6721('0x40')](_0x3930d8[_0x6721('0x41')]);}}catch(_0x5aa434){logger[_0x6721('0x2e')](_0x6721('0x47'),_0x5aa434[_0x6721('0x33')]);}};Acw[_0x6721('0x34')][_0x6721('0x12')]=function(_0x42b5c3){try{if(!_['isNil'](this[_0x6721('0x8')][_0x42b5c3[_0x6721('0x48')]])){this['startAcw'](_0x42b5c3[_0x6721('0x48')]);if(this[_0x6721('0x8')][_0x42b5c3['secondtransfereruniqueid']]){this[_0x6721('0x8')][_0x42b5c3[_0x6721('0x49')]][_0x6721('0x43')]=!![];this['channels'][_0x42b5c3[_0x6721('0x4a')]]=this[_0x6721('0x8')][_0x42b5c3[_0x6721('0x49')]];delete this['channels'][_0x42b5c3['secondtransfereruniqueid']];}}else if(!_['isNil'](this[_0x6721('0x8')][_0x42b5c3[_0x6721('0x4a')]])){this[_0x6721('0x40')](_0x42b5c3['transfertargetuniqueid']);if(this[_0x6721('0x8')][_0x42b5c3['origtransfereruniqueid']]){this[_0x6721('0x8')][_0x42b5c3[_0x6721('0x4b')]][_0x6721('0x43')]=!![];this[_0x6721('0x8')][_0x42b5c3[_0x6721('0x48')]]=this['channels'][_0x42b5c3[_0x6721('0x4b')]];delete this[_0x6721('0x8')][_0x42b5c3['origtransfereruniqueid']];}}}catch(_0x280e2a){logger[_0x6721('0x2e')](_0x6721('0x4c'),_0x280e2a['message']);}};Acw['prototype'][_0x6721('0x14')]=function(_0x190101){try{if(this[_0x6721('0x8')][_0x190101[_0x6721('0x4d')]]){logger[_0x6721('0x20')](_0x6721('0x4e'),JSON[_0x6721('0x4f')](_0x190101[_0x6721('0x4d')]));this[_0x6721('0x40')](_0x190101['transfereruniqueid']);}else if(this[_0x6721('0x8')][_0x190101[_0x6721('0x50')]]){logger[_0x6721('0x20')](_0x6721('0x51'),JSON['stringify'](_0x190101[_0x6721('0x50')]));this['startAcw'](_0x190101[_0x6721('0x50')]);}}catch(_0x59d230){logger['error'](_0x6721('0x52'),_0x59d230[_0x6721('0x33')]);}};Acw[_0x6721('0x34')]['syncAgentRingNoAnswer']=function(_0x263942){try{if(this['voiceQueues'][_0x263942[_0x6721('0x2a')]]&&this[_0x6721('0x5')][_0x263942[_0x6721('0x2a')]]['autopause']===_0x6721('0x53')){if(this[_0x6721('0x6')][_0x263942[_0x6721('0x19')]]){logger[_0x6721('0x20')](_0x6721('0x54'),_0x263942[_0x6721('0x29')],_0x263942[_0x6721('0x19')],_0x263942[_0x6721('0x2a')]);return RpcUser['savePause'](this[_0x6721('0x6')][_0x263942[_0x6721('0x19')]],_0x6721('0x55'),_0x263942[_0x6721('0x29')]);}}}catch(_0x27b4cc){logger[_0x6721('0x2e')](_0x6721('0x56'),_0x27b4cc['message']);}};module['exports']=Acw;