Built motion from commit (unavailable).|2.5.16
[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 _0xac9d=['name','Action','QueuePause','then','getAgent','voicePause','info','[%s][START][AGENT:%s][QUEUE:%s]','destlinkedid','[%s][TIMER:%s][AGENT:%s][QUEUE:%s]','acwTimeout','timer','stopAcw','YYYY-MM-DD\x20HH:mm:ss','uniqueid','queue','updateAcw','lastPauseAt','update','[%s][UPDATE][ACWTIME:%s]','error','[%s][UPDATE][ERRORS:%s]','[%s][INPAUSE][AGENT:%s][QUEUE:%s]','finally','[ACW][START]\x20%s','message','prototype','[TIMER][STOP][AGENT:%s]','catch','[ACW][TIMERS]','stringify','[ACW][STOP]\x20%s','syncAgentConnect','[ACW][syncAgentConnect]\x20%s','[ACW][syncAgentConnectPreview]\x20%s','isUndefined','attended','[%s][HANGUP:UNIQUEID]','linkedid','[%s][HANGUP:LINKEDID]','[%s][HANGUPATTENDEDTRANSFER:UNIQUEID]','[%s][HANGUPATTENDEDTRANSFER:LINKEDID]','[ACW][syncHangup]\x20%s','syncAttendedTransfer','isNil','transfereeuniqueid','secondtransfereruniqueid','transfertargetuniqueid','origtransfereruniqueid','[ACW][syncAttendedTransfer]\x20%s','syncBlindTransfer','transfereruniqueid','transfererlinkedid','[%s][BLINDTRANSFER:LINKEDID]','autopause','all','[%s][AUTOPAUSE][AGENT:%s][QUEUE:%]','savePause','[ACW][syncAgentRingNoAnswer]\x20%s','exports','util','lodash','moment','../ami','../../../config/logger','acw','../rpc/user','../rpc/voiceAgentReport','voiceQueues','agents','timers','channels','agentconnect','bind','syncHangupRequest','hangup','syncHangup','agentringnoanswer','syncAgentRingNoAnswer','attendedtransfer','blindtransfer','custom:agentConnectPreview','syncAgentConnectPreview','milliseconds','diff','seconds','startAcw','interface','ACW','mandatoryDisposition','mandatoryDispositionPause'];(function(_0x8ada9f,_0x11139a){var _0x296518=function(_0x2429bc){while(--_0x2429bc){_0x8ada9f['push'](_0x8ada9f['shift']());}};_0x296518(++_0x11139a);}(_0xac9d,0x14d));var _0xdac9=function(_0xf8ef4a,_0x34a9d5){_0xf8ef4a=_0xf8ef4a-0x0;var _0x1869c9=_0xac9d[_0xf8ef4a];return _0x1869c9;};'use strict';var util=require(_0xdac9('0x0'));var _=require(_0xdac9('0x1'));var moment=require(_0xdac9('0x2'));var ami=require(_0xdac9('0x3'));var logger=require(_0xdac9('0x4'))(_0xdac9('0x5'));var RpcUser=require(_0xdac9('0x6'));var RpcVoiceAgentReport=require(_0xdac9('0x7'));function Acw(_0x51a5d7){this[_0xdac9('0x8')]=_0x51a5d7['voiceQueues'];this[_0xdac9('0x9')]=_0x51a5d7[_0xdac9('0x9')];this[_0xdac9('0xa')]=_0x51a5d7[_0xdac9('0xa')];this[_0xdac9('0xb')]={};ami['on'](_0xdac9('0xc'),this['syncAgentConnect'][_0xdac9('0xd')](this));ami['on']('hanguprequest',this[_0xdac9('0xe')][_0xdac9('0xd')](this));ami['on'](_0xdac9('0xf'),this[_0xdac9('0x10')][_0xdac9('0xd')](this));ami['on'](_0xdac9('0x11'),this[_0xdac9('0x12')][_0xdac9('0xd')](this));ami['on'](_0xdac9('0x13'),this['syncAttendedTransfer'][_0xdac9('0xd')](this));ami['on'](_0xdac9('0x14'),this['syncBlindTransfer'][_0xdac9('0xd')](this));ami['on'](_0xdac9('0x15'),this[_0xdac9('0x16')]['bind'](this));}function getDiff(_0x16063f){var _0x33ba20=moment()[_0xdac9('0x17')](0x0);var _0x5f0bbd=moment(_0x16063f)['milliseconds'](0x0);return _0x33ba20[_0xdac9('0x18')](_0x5f0bbd,_0xdac9('0x19'));}Acw['prototype'][_0xdac9('0x1a')]=function(_0x36cbe4){try{var _0x152ea5=this;var _0x5b2f1b=this[_0xdac9('0xb')][_0x36cbe4][_0xdac9('0x1b')];var _0x34a85a=this[_0xdac9('0xb')][_0x36cbe4]['queue'];var _0x283343=this[_0xdac9('0x8')][_0x34a85a];var _0x571e07=![];var _0x1cd239=_0xdac9('0x1c');if(_0x283343[_0xdac9('0x1d')]){if(_0x283343[_0xdac9('0x1e')]['name']){_0x571e07=!![];_0x1cd239=_0x283343['mandatoryDispositionPause'][_0xdac9('0x1f')];}}ami[_0xdac9('0x20')]({'action':_0xdac9('0x21'),'interface':_0x5b2f1b,'paused':!![],'reason':_0x1cd239})[_0xdac9('0x22')](function(_0x52fb18){if(_0x152ea5[_0xdac9('0x9')][_0x5b2f1b]){return RpcUser[_0xdac9('0x23')](_0x152ea5[_0xdac9('0x9')][_0x5b2f1b]['id'])[_0xdac9('0x22')](function(_0xe7bd10){if(_0xe7bd10&&!_0xe7bd10[_0xdac9('0x24')]){logger[_0xdac9('0x25')](_0xdac9('0x26'),_0x36cbe4,_0x5b2f1b,_0x34a85a);var _0x419f0c=_0x152ea5[_0xdac9('0xb')][_0x36cbe4]['attended']&&_0x152ea5[_0xdac9('0xb')][_0x36cbe4][_0xdac9('0x27')]?_0x152ea5[_0xdac9('0xb')][_0x36cbe4][_0xdac9('0x27')]:_0x36cbe4;return RpcUser['savePause'](_0x152ea5[_0xdac9('0x9')][_0x5b2f1b],_0x1cd239,_0x419f0c)['then'](function(_0x3ce475){if(!_0x571e07){_0x152ea5[_0xdac9('0xa')][_0x5b2f1b]={};logger['info'](_0xdac9('0x28'),_0x36cbe4,_0x152ea5['voiceQueues'][_0x34a85a][_0xdac9('0x29')],_0x5b2f1b,_0x34a85a);_0x152ea5[_0xdac9('0xa')][_0x5b2f1b][_0xdac9('0x2a')]=setTimeout(_0x152ea5[_0xdac9('0x2b')]['bind'](_0x152ea5,_0x5b2f1b),_0x152ea5['voiceQueues'][_0x34a85a][_0xdac9('0x29')]*0x3e8);_0x152ea5[_0xdac9('0xa')][_0x5b2f1b]['lastPauseAt']=moment()['format'](_0xdac9('0x2c'));_0x152ea5[_0xdac9('0xa')][_0x5b2f1b][_0xdac9('0x2d')]=_0x36cbe4;_0x152ea5[_0xdac9('0xa')][_0x5b2f1b][_0xdac9('0x2e')]=_0x34a85a;_0x152ea5[_0xdac9('0xa')][_0x5b2f1b][_0xdac9('0x2f')]=function(){var _0x2cda4d=getDiff(_0x152ea5[_0xdac9('0xa')][_0x5b2f1b][_0xdac9('0x30')]);clearTimeout(_0x152ea5[_0xdac9('0xa')][_0x5b2f1b][_0xdac9('0x2a')]);_0x152ea5[_0xdac9('0xa')][_0x5b2f1b][_0xdac9('0x2a')]=![];RpcVoiceAgentReport[_0xdac9('0x31')]({'acwtime':_0x2cda4d},_0x152ea5[_0xdac9('0xa')][_0x5b2f1b][_0xdac9('0x2d')],_0x5b2f1b)[_0xdac9('0x22')](function(_0x339f31){logger[_0xdac9('0x25')](_0xdac9('0x32'),_0x36cbe4,_0x2cda4d,_0x339f31);})['catch'](function(_0x5e7ebe){logger[_0xdac9('0x33')](_0xdac9('0x34'),_0x36cbe4,_0x5e7ebe);});delete _0x152ea5[_0xdac9('0xa')][_0x5b2f1b];};}});}else{logger[_0xdac9('0x25')](_0xdac9('0x35'),_0x36cbe4,_0x5b2f1b,_0x34a85a);}});}})['catch'](function(_0x1d125a){logger['error'](_0xdac9('0x28'),_0x36cbe4,_0x152ea5[_0xdac9('0x8')][_0x34a85a]['acwTimeout'],_0x5b2f1b,_0x34a85a);})[_0xdac9('0x36')](function(){delete _0x152ea5['channels'][_0x36cbe4];});}catch(_0x52d758){logger[_0xdac9('0x33')](_0xdac9('0x37'),_0x52d758[_0xdac9('0x38')]);}};Acw[_0xdac9('0x39')][_0xdac9('0x2b')]=function(_0x363d93){try{var _0x51cde6=this;if(_0x51cde6[_0xdac9('0xa')][_0x363d93]){_0x51cde6[_0xdac9('0xa')][_0x363d93]['timer']=![];var _0x244d1f=_0x51cde6[_0xdac9('0xa')][_0x363d93][_0xdac9('0x2d')];var _0x27bdfb=_0x51cde6[_0xdac9('0xa')][_0x363d93][_0xdac9('0x2e')];var _0x3ac9ae=_0x51cde6['voiceQueues'][_0x27bdfb][_0xdac9('0x29')];logger[_0xdac9('0x25')](_0xdac9('0x3a'),_0x363d93);RpcUser['saveUnpause'](this[_0xdac9('0x9')][_0x363d93]);RpcVoiceAgentReport[_0xdac9('0x31')]({'acwtime':_0x3ac9ae,'agentacw':!![]},_0x244d1f,_0x363d93)[_0xdac9('0x22')](function(_0x1d6f88){logger['info']('[%s][UPDATE][ACWTIME:%s]',_0x244d1f,_0x3ac9ae,_0x1d6f88);})[_0xdac9('0x3b')](function(_0xe47a3c){logger[_0xdac9('0x33')](_0xdac9('0x34'),_0x244d1f,_0xe47a3c);});}else{logger[_0xdac9('0x33')]('[ACW][STOP]\x20Interface\x20%s\x20doesn\x27t\x20have\x20timer',_0x363d93);if(_0x51cde6[_0xdac9('0xa')]){logger['info'](_0xdac9('0x3c'),JSON[_0xdac9('0x3d')](_0x51cde6[_0xdac9('0xa')]));}}}catch(_0x1898e1){logger[_0xdac9('0x33')](_0xdac9('0x3e'),_0x1898e1[_0xdac9('0x38')]);}};Acw[_0xdac9('0x39')][_0xdac9('0x3f')]=function(_0x8a0538){try{if(this[_0xdac9('0x8')][_0x8a0538[_0xdac9('0x2e')]]&&(this[_0xdac9('0x8')][_0x8a0538[_0xdac9('0x2e')]]['acw']||this[_0xdac9('0x8')][_0x8a0538[_0xdac9('0x2e')]]['mandatoryDisposition'])){if(this[_0xdac9('0x9')][_0x8a0538[_0xdac9('0x1b')]]){this[_0xdac9('0xb')][_0x8a0538[_0xdac9('0x2d')]]={'queue':_0x8a0538[_0xdac9('0x2e')],'interface':_0x8a0538[_0xdac9('0x1b')],'destlinkedid':_0x8a0538['destlinkedid']};}}}catch(_0x1c3f15){logger['error'](_0xdac9('0x40'),_0x1c3f15[_0xdac9('0x38')]);}};Acw[_0xdac9('0x39')][_0xdac9('0x16')]=function(_0x5e61ac){try{if(this['voiceQueues'][_0x5e61ac['queue']]&&(this[_0xdac9('0x8')][_0x5e61ac['queue']]['acw']||this[_0xdac9('0x8')][_0x5e61ac[_0xdac9('0x2e')]]['mandatoryDisposition'])){if(this['agents'][_0x5e61ac[_0xdac9('0x1b')]]){this[_0xdac9('0xb')][_0x5e61ac[_0xdac9('0x2d')]]={'queue':_0x5e61ac[_0xdac9('0x2e')],'interface':_0x5e61ac[_0xdac9('0x1b')]};}}}catch(_0x2e07bc){logger[_0xdac9('0x33')](_0xdac9('0x41'),_0x2e07bc['message']);}};Acw[_0xdac9('0x39')][_0xdac9('0xe')]=function(_0xfa104f){try{if(this[_0xdac9('0xb')][_0xfa104f[_0xdac9('0x2d')]]&&_[_0xdac9('0x42')](this[_0xdac9('0xb')][_0xfa104f[_0xdac9('0x2d')]][_0xdac9('0x43')])){logger[_0xdac9('0x25')](_0xdac9('0x44'),_0xfa104f[_0xdac9('0x2d')]);this[_0xdac9('0x1a')](_0xfa104f[_0xdac9('0x2d')]);}else if(this['channels'][_0xfa104f['linkedid']]&&_['isUndefined'](this[_0xdac9('0xb')][_0xfa104f[_0xdac9('0x45')]]['attended'])){logger[_0xdac9('0x25')](_0xdac9('0x46'),_0xfa104f[_0xdac9('0x45')]);this['startAcw'](_0xfa104f[_0xdac9('0x45')]);}}catch(_0x9f6e4){logger['error']('[ACW][syncHangupRequest]\x20%s',_0x9f6e4[_0xdac9('0x38')]);}};Acw[_0xdac9('0x39')][_0xdac9('0x10')]=function(_0x370532){try{if(this[_0xdac9('0xb')][_0x370532[_0xdac9('0x2d')]]&&this[_0xdac9('0xb')][_0x370532[_0xdac9('0x2d')]][_0xdac9('0x43')]){logger[_0xdac9('0x25')](_0xdac9('0x47'),_0x370532[_0xdac9('0x2d')]);this[_0xdac9('0x1a')](_0x370532[_0xdac9('0x2d')]);}else if(this[_0xdac9('0xb')][_0x370532['linkedid']]&&this[_0xdac9('0xb')][_0x370532[_0xdac9('0x45')]][_0xdac9('0x43')]){logger[_0xdac9('0x25')](_0xdac9('0x48'),_0x370532[_0xdac9('0x45')]);this['startAcw'](_0x370532[_0xdac9('0x45')]);}}catch(_0x401ab6){logger[_0xdac9('0x33')](_0xdac9('0x49'),_0x401ab6[_0xdac9('0x38')]);}};Acw[_0xdac9('0x39')][_0xdac9('0x4a')]=function(_0x243862){try{if(!_[_0xdac9('0x4b')](this['channels'][_0x243862[_0xdac9('0x4c')]])){this[_0xdac9('0x1a')](_0x243862[_0xdac9('0x4c')]);if(this[_0xdac9('0xb')][_0x243862[_0xdac9('0x4d')]]){this[_0xdac9('0xb')][_0x243862['secondtransfereruniqueid']]['attended']=!![];this[_0xdac9('0xb')][_0x243862[_0xdac9('0x4e')]]=this[_0xdac9('0xb')][_0x243862[_0xdac9('0x4d')]];delete this[_0xdac9('0xb')][_0x243862[_0xdac9('0x4d')]];}}else if(!_['isNil'](this['channels'][_0x243862['transfertargetuniqueid']])){this[_0xdac9('0x1a')](_0x243862[_0xdac9('0x4e')]);if(this[_0xdac9('0xb')][_0x243862[_0xdac9('0x4f')]]){this['channels'][_0x243862[_0xdac9('0x4f')]][_0xdac9('0x43')]=!![];this[_0xdac9('0xb')][_0x243862[_0xdac9('0x4c')]]=this[_0xdac9('0xb')][_0x243862['origtransfereruniqueid']];delete this[_0xdac9('0xb')][_0x243862['origtransfereruniqueid']];}}}catch(_0x60b64e){logger['error'](_0xdac9('0x50'),_0x60b64e[_0xdac9('0x38')]);}};Acw[_0xdac9('0x39')][_0xdac9('0x51')]=function(_0x303008){try{if(this[_0xdac9('0xb')][_0x303008[_0xdac9('0x52')]]){logger['info']('[%s][BLINDTRANSFER:UNIQUEID]',JSON['stringify'](_0x303008[_0xdac9('0x52')]));this[_0xdac9('0x1a')](_0x303008[_0xdac9('0x52')]);}else if(this[_0xdac9('0xb')][_0x303008[_0xdac9('0x53')]]){logger[_0xdac9('0x25')](_0xdac9('0x54'),JSON['stringify'](_0x303008[_0xdac9('0x53')]));this['startAcw'](_0x303008['transfererlinkedid']);}}catch(_0x461c96){logger['error']('[ACW][syncBlindTransfer]\x20%s',_0x461c96[_0xdac9('0x38')]);}};Acw[_0xdac9('0x39')][_0xdac9('0x12')]=function(_0x55ce14){try{if(this['voiceQueues'][_0x55ce14[_0xdac9('0x2e')]]&&this[_0xdac9('0x8')][_0x55ce14['queue']][_0xdac9('0x55')]===_0xdac9('0x56')){if(this[_0xdac9('0x9')][_0x55ce14[_0xdac9('0x1b')]]){logger[_0xdac9('0x25')](_0xdac9('0x57'),_0x55ce14[_0xdac9('0x2d')],_0x55ce14[_0xdac9('0x1b')],_0x55ce14[_0xdac9('0x2e')]);return RpcUser[_0xdac9('0x58')](this[_0xdac9('0x9')][_0x55ce14[_0xdac9('0x1b')]],'Auto-Pause',_0x55ce14[_0xdac9('0x2d')]);}}}catch(_0x4df310){logger[_0xdac9('0x33')](_0xdac9('0x59'),_0x4df310['message']);}};module[_0xdac9('0x5a')]=Acw;