47aaed074c26312409790553cc1d49007c5422d6
[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 _0xfddd=['moment','../ami','acw','../rpc/voiceAgentReport','voiceQueues','agents','timers','channels','agentconnect','syncHangup','bind','syncAgentRingNoAnswer','syncAttendedTransfer','blindtransfer','custom:agentConnectPreview','syncAgentConnectPreview','milliseconds','diff','prototype','startAcw','interface','mandatoryDisposition','name','Action','QueuePause','then','getAgent','voicePause','attended','destlinkedid','savePause','info','[%s][TIMER:%s][AGENT:%s][QUEUE:%s]','acwTimeout','lastPauseAt','uniqueid','queue','updateAcw','timer','update','[%s][UPDATE][ACWTIME:%s]','catch','error','finally','[ACW][START]\x20%s','stopAcw','[%s][TIMER][STOP][AGENT:%s]','saveUnpause','[ACW][STOP]\x20Interface\x20%s\x20doesn\x27t\x20have\x20timer','[ACW][TIMERS]','stringify','message','[ACW][syncAgentConnect]\x20%s','[ACW][syncAgentConnectPreview]\x20%s','syncHangupRequest','[%s][HANGUP:UNIQUEID]','linkedid','isUndefined','[%s][HANGUP:LINKEDID]','[ACW][syncHangupRequest]\x20%s','[%s][HANGUPATTENDEDTRANSFER:UNIQUEID]','[%s][HANGUPATTENDEDTRANSFER:LINKEDID]','isNil','transfereeuniqueid','secondtransfereruniqueid','transfertargetuniqueid','origtransfereruniqueid','[ACW][syncAttendedTransfer]\x20%s','transfereruniqueid','[%s][BLINDTRANSFER:UNIQUEID]','transfererlinkedid','[%s][BLINDTRANSFER:LINKEDID]','[ACW][syncBlindTransfer]\x20%s','autopause','all','Auto-Pause','[ACW][syncAgentRingNoAnswer]\x20%s','util','lodash'];(function(_0x516043,_0x4f9bdb){var _0xb672e6=function(_0x436baa){while(--_0x436baa){_0x516043['push'](_0x516043['shift']());}};_0xb672e6(++_0x4f9bdb);}(_0xfddd,0x9c));var _0xdfdd=function(_0x4cfa88,_0x47f1f7){_0x4cfa88=_0x4cfa88-0x0;var _0x497e2a=_0xfddd[_0x4cfa88];return _0x497e2a;};'use strict';var util=require(_0xdfdd('0x0'));var _=require(_0xdfdd('0x1'));var moment=require(_0xdfdd('0x2'));var ami=require(_0xdfdd('0x3'));var logger=require('../../../config/logger')(_0xdfdd('0x4'));var RpcUser=require('../rpc/user');var RpcVoiceAgentReport=require(_0xdfdd('0x5'));function Acw(_0x57e958){this[_0xdfdd('0x6')]=_0x57e958[_0xdfdd('0x6')];this[_0xdfdd('0x7')]=_0x57e958[_0xdfdd('0x7')];this[_0xdfdd('0x8')]=_0x57e958['timers'];this[_0xdfdd('0x9')]={};ami['on'](_0xdfdd('0xa'),this['syncAgentConnect']['bind'](this));ami['on']('hanguprequest',this['syncHangupRequest']['bind'](this));ami['on']('hangup',this[_0xdfdd('0xb')][_0xdfdd('0xc')](this));ami['on']('agentringnoanswer',this[_0xdfdd('0xd')]['bind'](this));ami['on']('attendedtransfer',this[_0xdfdd('0xe')][_0xdfdd('0xc')](this));ami['on'](_0xdfdd('0xf'),this['syncBlindTransfer'][_0xdfdd('0xc')](this));ami['on'](_0xdfdd('0x10'),this[_0xdfdd('0x11')]['bind'](this));}function getDiff(_0x33c2ee){var _0x508efb=moment()[_0xdfdd('0x12')](0x0);var _0x1c61be=moment(_0x33c2ee)[_0xdfdd('0x12')](0x0);return _0x508efb[_0xdfdd('0x13')](_0x1c61be,'seconds');}Acw[_0xdfdd('0x14')][_0xdfdd('0x15')]=function(_0x40b0c3){try{var _0xa9b94b=this;var _0x438b04=this[_0xdfdd('0x9')][_0x40b0c3][_0xdfdd('0x16')];var _0x3b6e7d=this['channels'][_0x40b0c3]['queue'];var _0xcb6b38=this[_0xdfdd('0x6')][_0x3b6e7d];var _0x353e3d=![];var _0x29b3a8='ACW';if(_0xcb6b38[_0xdfdd('0x17')]){if(_0xcb6b38['mandatoryDispositionPause'][_0xdfdd('0x18')]){_0x353e3d=!![];_0x29b3a8=_0xcb6b38['mandatoryDispositionPause'][_0xdfdd('0x18')];}}ami[_0xdfdd('0x19')]({'action':_0xdfdd('0x1a'),'interface':_0x438b04,'paused':!![],'reason':_0x29b3a8})[_0xdfdd('0x1b')](function(_0x49ed38){if(_0xa9b94b[_0xdfdd('0x7')][_0x438b04]){return RpcUser[_0xdfdd('0x1c')](_0xa9b94b[_0xdfdd('0x7')][_0x438b04]['id'])[_0xdfdd('0x1b')](function(_0xd92eb9){if(_0xd92eb9&&!_0xd92eb9[_0xdfdd('0x1d')]){logger['info']('[%s][START][AGENT:%s][QUEUE:%s]',_0x40b0c3,_0x438b04,_0x3b6e7d);var _0x29d872=_0xa9b94b['channels'][_0x40b0c3][_0xdfdd('0x1e')]&&_0xa9b94b[_0xdfdd('0x9')][_0x40b0c3][_0xdfdd('0x1f')]?_0xa9b94b[_0xdfdd('0x9')][_0x40b0c3]['destlinkedid']:_0x40b0c3;return RpcUser[_0xdfdd('0x20')](_0xa9b94b[_0xdfdd('0x7')][_0x438b04],_0x29b3a8,_0x29d872)[_0xdfdd('0x1b')](function(_0x1812ea){if(!_0x353e3d){_0xa9b94b[_0xdfdd('0x8')][_0x438b04]={};logger[_0xdfdd('0x21')](_0xdfdd('0x22'),_0x40b0c3,_0xa9b94b[_0xdfdd('0x6')][_0x3b6e7d][_0xdfdd('0x23')],_0x438b04,_0x3b6e7d);_0xa9b94b[_0xdfdd('0x8')][_0x438b04]['timer']=setTimeout(_0xa9b94b['stopAcw'][_0xdfdd('0xc')](_0xa9b94b,_0x438b04),_0xa9b94b[_0xdfdd('0x6')][_0x3b6e7d][_0xdfdd('0x23')]*0x3e8);_0xa9b94b[_0xdfdd('0x8')][_0x438b04][_0xdfdd('0x24')]=moment()['format']('YYYY-MM-DD\x20HH:mm:ss');_0xa9b94b['timers'][_0x438b04][_0xdfdd('0x25')]=_0x40b0c3;_0xa9b94b[_0xdfdd('0x8')][_0x438b04][_0xdfdd('0x26')]=_0x3b6e7d;_0xa9b94b[_0xdfdd('0x8')][_0x438b04][_0xdfdd('0x27')]=function(){var _0x161bac=getDiff(_0xa9b94b[_0xdfdd('0x8')][_0x438b04][_0xdfdd('0x24')]);clearTimeout(_0xa9b94b['timers'][_0x438b04][_0xdfdd('0x28')]);_0xa9b94b[_0xdfdd('0x8')][_0x438b04]['timer']=![];RpcVoiceAgentReport[_0xdfdd('0x29')]({'acwtime':_0x161bac},_0xa9b94b[_0xdfdd('0x8')][_0x438b04][_0xdfdd('0x25')],_0x438b04)[_0xdfdd('0x1b')](function(_0xafbbf2){logger[_0xdfdd('0x21')](_0xdfdd('0x2a'),_0x40b0c3,_0x161bac,_0xafbbf2);})[_0xdfdd('0x2b')](function(_0x21d935){logger[_0xdfdd('0x2c')]('[%s][UPDATE][ERRORS:%s]',_0x40b0c3,_0x21d935);});delete _0xa9b94b['timers'][_0x438b04];};}});}else{logger['info']('[%s][INPAUSE][AGENT:%s][QUEUE:%s]',_0x40b0c3,_0x438b04,_0x3b6e7d);}});}})['catch'](function(_0x29e3d4){logger[_0xdfdd('0x2c')](_0xdfdd('0x22'),_0x40b0c3,_0xa9b94b['voiceQueues'][_0x3b6e7d]['acwTimeout'],_0x438b04,_0x3b6e7d);})[_0xdfdd('0x2d')](function(){delete _0xa9b94b[_0xdfdd('0x9')][_0x40b0c3];});}catch(_0x4231bd){logger[_0xdfdd('0x2c')](_0xdfdd('0x2e'),_0x4231bd['message']);}};Acw['prototype'][_0xdfdd('0x2f')]=function(_0x4b893d){try{var _0x18fc4a=this;if(_0x18fc4a['timers'][_0x4b893d]){_0x18fc4a['timers'][_0x4b893d][_0xdfdd('0x28')]=![];var _0x17f4d=_0x18fc4a[_0xdfdd('0x8')][_0x4b893d][_0xdfdd('0x25')];var _0x5bde80=_0x18fc4a[_0xdfdd('0x8')][_0x4b893d][_0xdfdd('0x26')];var _0x38a8ba=_0x18fc4a['voiceQueues'][_0x5bde80]['acwTimeout'];logger[_0xdfdd('0x21')](_0xdfdd('0x30'),_0x17f4d,_0x4b893d);RpcUser[_0xdfdd('0x31')](this[_0xdfdd('0x7')][_0x4b893d]);RpcVoiceAgentReport['update']({'acwtime':_0x38a8ba,'agentacw':!![]},_0x17f4d,_0x4b893d)[_0xdfdd('0x1b')](function(_0x16a1a4){logger[_0xdfdd('0x21')]('[%s][UPDATE][ACWTIME:%s]',_0x17f4d,_0x38a8ba,_0x16a1a4);})[_0xdfdd('0x2b')](function(_0x156663){logger[_0xdfdd('0x2c')]('[%s][UPDATE][ERRORS:%s]',_0x17f4d,_0x156663);});}else{logger[_0xdfdd('0x2c')](_0xdfdd('0x32'),_0x4b893d);if(_0x18fc4a[_0xdfdd('0x8')]){logger['info'](_0xdfdd('0x33'),JSON[_0xdfdd('0x34')](_0x18fc4a[_0xdfdd('0x8')]));}}}catch(_0x4e609a){logger['error']('[ACW][STOP]\x20%s',_0x4e609a[_0xdfdd('0x35')]);}};Acw['prototype']['syncAgentConnect']=function(_0x3dd30e){try{if(this[_0xdfdd('0x6')][_0x3dd30e[_0xdfdd('0x26')]]&&(this[_0xdfdd('0x6')][_0x3dd30e['queue']][_0xdfdd('0x4')]||this[_0xdfdd('0x6')][_0x3dd30e['queue']][_0xdfdd('0x17')])){if(this[_0xdfdd('0x7')][_0x3dd30e[_0xdfdd('0x16')]]){this[_0xdfdd('0x9')][_0x3dd30e[_0xdfdd('0x25')]]={'queue':_0x3dd30e[_0xdfdd('0x26')],'interface':_0x3dd30e[_0xdfdd('0x16')],'destlinkedid':_0x3dd30e['destlinkedid']};}}}catch(_0x271d0d){logger['error'](_0xdfdd('0x36'),_0x271d0d['message']);}};Acw[_0xdfdd('0x14')][_0xdfdd('0x11')]=function(_0x15e359){try{if(this[_0xdfdd('0x6')][_0x15e359['queue']]&&(this[_0xdfdd('0x6')][_0x15e359[_0xdfdd('0x26')]][_0xdfdd('0x4')]||this[_0xdfdd('0x6')][_0x15e359[_0xdfdd('0x26')]][_0xdfdd('0x17')])){if(this[_0xdfdd('0x7')][_0x15e359[_0xdfdd('0x16')]]){this[_0xdfdd('0x9')][_0x15e359[_0xdfdd('0x25')]]={'queue':_0x15e359[_0xdfdd('0x26')],'interface':_0x15e359[_0xdfdd('0x16')]};}}}catch(_0x54762c){logger[_0xdfdd('0x2c')](_0xdfdd('0x37'),_0x54762c[_0xdfdd('0x35')]);}};Acw[_0xdfdd('0x14')][_0xdfdd('0x38')]=function(_0x262f8f){try{if(this['channels'][_0x262f8f[_0xdfdd('0x25')]]&&_['isUndefined'](this[_0xdfdd('0x9')][_0x262f8f[_0xdfdd('0x25')]]['attended'])){logger[_0xdfdd('0x21')](_0xdfdd('0x39'),_0x262f8f[_0xdfdd('0x25')]);this[_0xdfdd('0x15')](_0x262f8f[_0xdfdd('0x25')]);}else if(this[_0xdfdd('0x9')][_0x262f8f[_0xdfdd('0x3a')]]&&_[_0xdfdd('0x3b')](this[_0xdfdd('0x9')][_0x262f8f[_0xdfdd('0x3a')]][_0xdfdd('0x1e')])){logger[_0xdfdd('0x21')](_0xdfdd('0x3c'),_0x262f8f[_0xdfdd('0x3a')]);this[_0xdfdd('0x15')](_0x262f8f[_0xdfdd('0x3a')]);}}catch(_0x28f730){logger[_0xdfdd('0x2c')](_0xdfdd('0x3d'),_0x28f730[_0xdfdd('0x35')]);}};Acw[_0xdfdd('0x14')][_0xdfdd('0xb')]=function(_0x4f8de5){try{if(this[_0xdfdd('0x9')][_0x4f8de5['uniqueid']]&&this[_0xdfdd('0x9')][_0x4f8de5['uniqueid']][_0xdfdd('0x1e')]){logger[_0xdfdd('0x21')](_0xdfdd('0x3e'),_0x4f8de5[_0xdfdd('0x25')]);this[_0xdfdd('0x15')](_0x4f8de5['uniqueid']);}else if(this[_0xdfdd('0x9')][_0x4f8de5[_0xdfdd('0x3a')]]&&this['channels'][_0x4f8de5[_0xdfdd('0x3a')]]['attended']){logger['info'](_0xdfdd('0x3f'),_0x4f8de5[_0xdfdd('0x3a')]);this[_0xdfdd('0x15')](_0x4f8de5['linkedid']);}}catch(_0xacad9d){logger[_0xdfdd('0x2c')]('[ACW][syncHangup]\x20%s',_0xacad9d[_0xdfdd('0x35')]);}};Acw[_0xdfdd('0x14')][_0xdfdd('0xe')]=function(_0x2f3e14){try{if(!_[_0xdfdd('0x40')](this[_0xdfdd('0x9')][_0x2f3e14[_0xdfdd('0x41')]])){this[_0xdfdd('0x15')](_0x2f3e14[_0xdfdd('0x41')]);if(this['channels'][_0x2f3e14['secondtransfereruniqueid']]){this[_0xdfdd('0x9')][_0x2f3e14[_0xdfdd('0x42')]][_0xdfdd('0x1e')]=!![];this['channels'][_0x2f3e14[_0xdfdd('0x43')]]=this[_0xdfdd('0x9')][_0x2f3e14[_0xdfdd('0x42')]];delete this[_0xdfdd('0x9')][_0x2f3e14[_0xdfdd('0x42')]];}}else if(!_[_0xdfdd('0x40')](this['channels'][_0x2f3e14[_0xdfdd('0x43')]])){this[_0xdfdd('0x15')](_0x2f3e14[_0xdfdd('0x43')]);if(this['channels'][_0x2f3e14['origtransfereruniqueid']]){this[_0xdfdd('0x9')][_0x2f3e14[_0xdfdd('0x44')]][_0xdfdd('0x1e')]=!![];this['channels'][_0x2f3e14[_0xdfdd('0x41')]]=this['channels'][_0x2f3e14[_0xdfdd('0x44')]];delete this['channels'][_0x2f3e14[_0xdfdd('0x44')]];}}}catch(_0x61ac82){logger[_0xdfdd('0x2c')](_0xdfdd('0x45'),_0x61ac82[_0xdfdd('0x35')]);}};Acw[_0xdfdd('0x14')]['syncBlindTransfer']=function(_0x4ef273){try{if(this[_0xdfdd('0x9')][_0x4ef273[_0xdfdd('0x46')]]){logger[_0xdfdd('0x21')](_0xdfdd('0x47'),JSON[_0xdfdd('0x34')](_0x4ef273['transfereruniqueid']));this[_0xdfdd('0x15')](_0x4ef273['transfereruniqueid']);}else if(this[_0xdfdd('0x9')][_0x4ef273[_0xdfdd('0x48')]]){logger['info'](_0xdfdd('0x49'),JSON[_0xdfdd('0x34')](_0x4ef273[_0xdfdd('0x48')]));this[_0xdfdd('0x15')](_0x4ef273['transfererlinkedid']);}}catch(_0x36f48a){logger[_0xdfdd('0x2c')](_0xdfdd('0x4a'),_0x36f48a[_0xdfdd('0x35')]);}};Acw[_0xdfdd('0x14')]['syncAgentRingNoAnswer']=function(_0x58192a){try{if(this[_0xdfdd('0x6')][_0x58192a[_0xdfdd('0x26')]]&&this[_0xdfdd('0x6')][_0x58192a[_0xdfdd('0x26')]][_0xdfdd('0x4b')]===_0xdfdd('0x4c')){if(this[_0xdfdd('0x7')][_0x58192a[_0xdfdd('0x16')]]){logger['info']('[%s][AUTOPAUSE][AGENT:%s][QUEUE:%]',_0x58192a[_0xdfdd('0x25')],_0x58192a['interface'],_0x58192a[_0xdfdd('0x26')]);return RpcUser['savePause'](this[_0xdfdd('0x7')][_0x58192a[_0xdfdd('0x16')]],_0xdfdd('0x4d'),_0x58192a['uniqueid']);}}}catch(_0x7aafdc){logger['error'](_0xdfdd('0x4e'),_0x7aafdc[_0xdfdd('0x35')]);}};module['exports']=Acw;