176d920d3d12483cba1f05b620b6ed02b88f620c
[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 _0x5518=['[ACW][syncAgentConnectPreview]\x20%s','isUndefined','attended','[%s][HANGUP:UNIQUEID]','startAcw','linkedid','[ACW][syncHangupRequest]\x20%s','[%s][HANGUPATTENDEDTRANSFER:UNIQUEID]','isNil','transfereeuniqueid','secondtransfereruniqueid','transfertargetuniqueid','origtransfereruniqueid','[ACW][syncAttendedTransfer]\x20%s','transfereruniqueid','transfererlinkedid','[%s][BLINDTRANSFER:LINKEDID]','[ACW][syncBlindTransfer]\x20%s','autopause','[%s][AUTOPAUSE][AGENT:%s][QUEUE:%]','savePause','Auto-Pause','exports','util','lodash','moment','acw','../rpc/user','voiceQueues','agents','timers','channels','agentconnect','hanguprequest','syncHangupRequest','hangup','syncHangup','bind','agentringnoanswer','syncAgentRingNoAnswer','syncAttendedTransfer','syncAgentConnectPreview','diff','seconds','interface','queue','mandatoryDisposition','mandatoryDispositionPause','name','Action','getAgent','then','voicePause','[%s][START][AGENT:%s][QUEUE:%s]','[%s][TIMER:%s][AGENT:%s][QUEUE:%s]','acwTimeout','stopAcw','lastPauseAt','YYYY-MM-DD\x20HH:mm:ss','uniqueid','timer','update','info','[%s][UPDATE][ERRORS:%s]','catch','error','finally','message','[%s][TIMER][STOP][AGENT:%s]','saveUnpause','[%s][UPDATE][ACWTIME:%s]','[ACW][STOP]\x20Interface\x20%s\x20doesn\x27t\x20have\x20timer','[ACW][TIMERS]','stringify','[ACW][STOP]\x20%s','prototype','destlinkedid','[ACW][syncAgentConnect]\x20%s'];(function(_0x11c868,_0x587cdf){var _0x5d5060=function(_0x3c9602){while(--_0x3c9602){_0x11c868['push'](_0x11c868['shift']());}};_0x5d5060(++_0x587cdf);}(_0x5518,0x14f));var _0x8551=function(_0x5cd51d,_0x20d4fa){_0x5cd51d=_0x5cd51d-0x0;var _0x444608=_0x5518[_0x5cd51d];return _0x444608;};'use strict';var util=require(_0x8551('0x0'));var _=require(_0x8551('0x1'));var moment=require(_0x8551('0x2'));var ami=require('../ami');var logger=require('../../../config/logger')(_0x8551('0x3'));var RpcUser=require(_0x8551('0x4'));var RpcVoiceAgentReport=require('../rpc/voiceAgentReport');function Acw(_0x2c8a54){this[_0x8551('0x5')]=_0x2c8a54['voiceQueues'];this[_0x8551('0x6')]=_0x2c8a54[_0x8551('0x6')];this['timers']=_0x2c8a54[_0x8551('0x7')];this[_0x8551('0x8')]={};ami['on'](_0x8551('0x9'),this['syncAgentConnect']['bind'](this));ami['on'](_0x8551('0xa'),this[_0x8551('0xb')]['bind'](this));ami['on'](_0x8551('0xc'),this[_0x8551('0xd')][_0x8551('0xe')](this));ami['on'](_0x8551('0xf'),this[_0x8551('0x10')][_0x8551('0xe')](this));ami['on']('attendedtransfer',this[_0x8551('0x11')][_0x8551('0xe')](this));ami['on']('blindtransfer',this['syncBlindTransfer'][_0x8551('0xe')](this));ami['on']('custom:agentConnectPreview',this[_0x8551('0x12')]['bind'](this));}function getDiff(_0xde5ee2){var _0x2d7cd9=moment()['milliseconds'](0x0);var _0x403553=moment(_0xde5ee2)['milliseconds'](0x0);return _0x2d7cd9[_0x8551('0x13')](_0x403553,_0x8551('0x14'));}Acw['prototype']['startAcw']=function(_0x5bcfdf){try{var _0x10c81d=this;var _0x35e48e=this[_0x8551('0x8')][_0x5bcfdf][_0x8551('0x15')];var _0x953666=this[_0x8551('0x8')][_0x5bcfdf][_0x8551('0x16')];var _0x4c6ade=this[_0x8551('0x5')][_0x953666];var _0x1ae408=![];var _0x4ffed2='ACW';if(_0x4c6ade[_0x8551('0x17')]){if(_0x4c6ade[_0x8551('0x18')][_0x8551('0x19')]){_0x1ae408=!![];_0x4ffed2=_0x4c6ade[_0x8551('0x18')]['name'];}}ami[_0x8551('0x1a')]({'action':'QueuePause','interface':_0x35e48e,'paused':!![],'reason':_0x4ffed2})['then'](function(_0x1339f4){if(_0x10c81d[_0x8551('0x6')][_0x35e48e]){return RpcUser[_0x8551('0x1b')](_0x10c81d['agents'][_0x35e48e]['id'])[_0x8551('0x1c')](function(_0x24cc9b){if(_0x24cc9b&&!_0x24cc9b[_0x8551('0x1d')]){logger['info'](_0x8551('0x1e'),_0x5bcfdf,_0x35e48e,_0x953666);var _0x5e833d=_0x10c81d[_0x8551('0x8')][_0x5bcfdf]['attended']&&_0x10c81d[_0x8551('0x8')][_0x5bcfdf]['destlinkedid']?_0x10c81d['channels'][_0x5bcfdf]['destlinkedid']:_0x5bcfdf;return RpcUser['savePause'](_0x10c81d[_0x8551('0x6')][_0x35e48e],_0x4ffed2,_0x5e833d)[_0x8551('0x1c')](function(_0x335e11){if(!_0x1ae408){_0x10c81d[_0x8551('0x7')][_0x35e48e]={};logger['info'](_0x8551('0x1f'),_0x5bcfdf,_0x10c81d['voiceQueues'][_0x953666][_0x8551('0x20')],_0x35e48e,_0x953666);_0x10c81d[_0x8551('0x7')][_0x35e48e]['timer']=setTimeout(_0x10c81d[_0x8551('0x21')][_0x8551('0xe')](_0x10c81d,_0x35e48e),_0x10c81d[_0x8551('0x5')][_0x953666][_0x8551('0x20')]*0x3e8);_0x10c81d['timers'][_0x35e48e][_0x8551('0x22')]=moment()['format'](_0x8551('0x23'));_0x10c81d[_0x8551('0x7')][_0x35e48e][_0x8551('0x24')]=_0x5bcfdf;_0x10c81d[_0x8551('0x7')][_0x35e48e][_0x8551('0x16')]=_0x953666;_0x10c81d[_0x8551('0x7')][_0x35e48e]['updateAcw']=function(){var _0x57e122=getDiff(_0x10c81d['timers'][_0x35e48e][_0x8551('0x22')]);clearTimeout(_0x10c81d['timers'][_0x35e48e][_0x8551('0x25')]);_0x10c81d[_0x8551('0x7')][_0x35e48e][_0x8551('0x25')]=![];RpcVoiceAgentReport[_0x8551('0x26')]({'acwtime':_0x57e122},_0x10c81d[_0x8551('0x7')][_0x35e48e]['uniqueid'],_0x35e48e)[_0x8551('0x1c')](function(_0x8f0b06){logger[_0x8551('0x27')]('[%s][UPDATE][ACWTIME:%s]',_0x5bcfdf,_0x57e122,_0x8f0b06);})['catch'](function(_0x3df92b){logger['error'](_0x8551('0x28'),_0x5bcfdf,_0x3df92b);});delete _0x10c81d[_0x8551('0x7')][_0x35e48e];};}});}else{logger[_0x8551('0x27')]('[%s][INPAUSE][AGENT:%s][QUEUE:%s]',_0x5bcfdf,_0x35e48e,_0x953666);}});}})[_0x8551('0x29')](function(_0x5b20da){logger[_0x8551('0x2a')]('[%s][TIMER:%s][AGENT:%s][QUEUE:%s]',_0x5bcfdf,_0x10c81d[_0x8551('0x5')][_0x953666][_0x8551('0x20')],_0x35e48e,_0x953666);})[_0x8551('0x2b')](function(){delete _0x10c81d[_0x8551('0x8')][_0x5bcfdf];});}catch(_0x21f3d7){logger['error']('[ACW][START]\x20%s',_0x21f3d7[_0x8551('0x2c')]);}};Acw['prototype']['stopAcw']=function(_0x5d107d){try{var _0x5f308e=this;if(_0x5f308e[_0x8551('0x7')][_0x5d107d]){_0x5f308e['timers'][_0x5d107d][_0x8551('0x25')]=![];var _0x3b0fab=_0x5f308e[_0x8551('0x7')][_0x5d107d][_0x8551('0x24')];var _0xf31c3d=_0x5f308e[_0x8551('0x7')][_0x5d107d]['queue'];var _0x13698e=_0x5f308e['voiceQueues'][_0xf31c3d]['acwTimeout'];logger[_0x8551('0x27')](_0x8551('0x2d'),_0x3b0fab,_0x5d107d);RpcUser[_0x8551('0x2e')](this[_0x8551('0x6')][_0x5d107d]);RpcVoiceAgentReport['update']({'acwtime':_0x13698e,'agentacw':!![]},_0x3b0fab,_0x5d107d)[_0x8551('0x1c')](function(_0xc69abd){logger[_0x8551('0x27')](_0x8551('0x2f'),_0x3b0fab,_0x13698e,_0xc69abd);})['catch'](function(_0x28e159){logger[_0x8551('0x2a')](_0x8551('0x28'),_0x3b0fab,_0x28e159);});}else{logger['error'](_0x8551('0x30'),_0x5d107d);if(_0x5f308e[_0x8551('0x7')]){logger[_0x8551('0x27')](_0x8551('0x31'),JSON[_0x8551('0x32')](_0x5f308e[_0x8551('0x7')]));}}}catch(_0x425cc4){logger[_0x8551('0x2a')](_0x8551('0x33'),_0x425cc4[_0x8551('0x2c')]);}};Acw[_0x8551('0x34')]['syncAgentConnect']=function(_0x367647){try{if(this[_0x8551('0x5')][_0x367647[_0x8551('0x16')]]&&(this['voiceQueues'][_0x367647[_0x8551('0x16')]]['acw']||this[_0x8551('0x5')][_0x367647[_0x8551('0x16')]][_0x8551('0x17')])){if(this[_0x8551('0x6')][_0x367647[_0x8551('0x15')]]){this['channels'][_0x367647[_0x8551('0x24')]]={'queue':_0x367647['queue'],'interface':_0x367647[_0x8551('0x15')],'destlinkedid':_0x367647[_0x8551('0x35')]};}}}catch(_0x3be8f2){logger['error'](_0x8551('0x36'),_0x3be8f2[_0x8551('0x2c')]);}};Acw[_0x8551('0x34')]['syncAgentConnectPreview']=function(_0x2e77ee){try{if(this[_0x8551('0x5')][_0x2e77ee[_0x8551('0x16')]]&&(this[_0x8551('0x5')][_0x2e77ee[_0x8551('0x16')]][_0x8551('0x3')]||this[_0x8551('0x5')][_0x2e77ee[_0x8551('0x16')]][_0x8551('0x17')])){if(this['agents'][_0x2e77ee[_0x8551('0x15')]]){this[_0x8551('0x8')][_0x2e77ee[_0x8551('0x24')]]={'queue':_0x2e77ee['queue'],'interface':_0x2e77ee[_0x8551('0x15')]};}}}catch(_0x392514){logger['error'](_0x8551('0x37'),_0x392514[_0x8551('0x2c')]);}};Acw['prototype']['syncHangupRequest']=function(_0x5648aa){try{if(this[_0x8551('0x8')][_0x5648aa[_0x8551('0x24')]]&&_[_0x8551('0x38')](this[_0x8551('0x8')][_0x5648aa['uniqueid']][_0x8551('0x39')])){logger['info'](_0x8551('0x3a'),_0x5648aa['uniqueid']);this[_0x8551('0x3b')](_0x5648aa[_0x8551('0x24')]);}else if(this[_0x8551('0x8')][_0x5648aa['linkedid']]&&_[_0x8551('0x38')](this[_0x8551('0x8')][_0x5648aa['linkedid']][_0x8551('0x39')])){logger['info']('[%s][HANGUP:LINKEDID]',_0x5648aa[_0x8551('0x3c')]);this[_0x8551('0x3b')](_0x5648aa['linkedid']);}}catch(_0x26a0de){logger['error'](_0x8551('0x3d'),_0x26a0de[_0x8551('0x2c')]);}};Acw[_0x8551('0x34')][_0x8551('0xd')]=function(_0x17276c){try{if(this[_0x8551('0x8')][_0x17276c['uniqueid']]&&this['channels'][_0x17276c[_0x8551('0x24')]][_0x8551('0x39')]){logger[_0x8551('0x27')](_0x8551('0x3e'),_0x17276c[_0x8551('0x24')]);this[_0x8551('0x3b')](_0x17276c[_0x8551('0x24')]);}else if(this[_0x8551('0x8')][_0x17276c[_0x8551('0x3c')]]&&this[_0x8551('0x8')][_0x17276c[_0x8551('0x3c')]][_0x8551('0x39')]){logger[_0x8551('0x27')]('[%s][HANGUPATTENDEDTRANSFER:LINKEDID]',_0x17276c[_0x8551('0x3c')]);this['startAcw'](_0x17276c[_0x8551('0x3c')]);}}catch(_0x2826f1){logger[_0x8551('0x2a')]('[ACW][syncHangup]\x20%s',_0x2826f1[_0x8551('0x2c')]);}};Acw['prototype'][_0x8551('0x11')]=function(_0x37bcbe){try{if(!_[_0x8551('0x3f')](this[_0x8551('0x8')][_0x37bcbe[_0x8551('0x40')]])){this[_0x8551('0x3b')](_0x37bcbe[_0x8551('0x40')]);if(this['channels'][_0x37bcbe[_0x8551('0x41')]]){this[_0x8551('0x8')][_0x37bcbe[_0x8551('0x41')]]['attended']=!![];this[_0x8551('0x8')][_0x37bcbe[_0x8551('0x42')]]=this[_0x8551('0x8')][_0x37bcbe[_0x8551('0x41')]];delete this[_0x8551('0x8')][_0x37bcbe[_0x8551('0x41')]];}}else if(!_[_0x8551('0x3f')](this[_0x8551('0x8')][_0x37bcbe[_0x8551('0x42')]])){this[_0x8551('0x3b')](_0x37bcbe[_0x8551('0x42')]);if(this[_0x8551('0x8')][_0x37bcbe['origtransfereruniqueid']]){this[_0x8551('0x8')][_0x37bcbe['origtransfereruniqueid']][_0x8551('0x39')]=!![];this[_0x8551('0x8')][_0x37bcbe[_0x8551('0x40')]]=this[_0x8551('0x8')][_0x37bcbe[_0x8551('0x43')]];delete this[_0x8551('0x8')][_0x37bcbe['origtransfereruniqueid']];}}}catch(_0x109843){logger['error'](_0x8551('0x44'),_0x109843[_0x8551('0x2c')]);}};Acw[_0x8551('0x34')]['syncBlindTransfer']=function(_0x3cf0d7){try{if(this['channels'][_0x3cf0d7[_0x8551('0x45')]]){logger['info']('[%s][BLINDTRANSFER:UNIQUEID]',JSON[_0x8551('0x32')](_0x3cf0d7[_0x8551('0x45')]));this[_0x8551('0x3b')](_0x3cf0d7['transfereruniqueid']);}else if(this['channels'][_0x3cf0d7[_0x8551('0x46')]]){logger[_0x8551('0x27')](_0x8551('0x47'),JSON[_0x8551('0x32')](_0x3cf0d7[_0x8551('0x46')]));this['startAcw'](_0x3cf0d7[_0x8551('0x46')]);}}catch(_0x2394c2){logger[_0x8551('0x2a')](_0x8551('0x48'),_0x2394c2[_0x8551('0x2c')]);}};Acw[_0x8551('0x34')][_0x8551('0x10')]=function(_0x51b2bc){try{if(this[_0x8551('0x5')][_0x51b2bc[_0x8551('0x16')]]&&this[_0x8551('0x5')][_0x51b2bc['queue']][_0x8551('0x49')]==='all'){if(this[_0x8551('0x6')][_0x51b2bc['interface']]){logger[_0x8551('0x27')](_0x8551('0x4a'),_0x51b2bc['uniqueid'],_0x51b2bc[_0x8551('0x15')],_0x51b2bc[_0x8551('0x16')]);return RpcUser[_0x8551('0x4b')](this['agents'][_0x51b2bc[_0x8551('0x15')]],_0x8551('0x4c'),_0x51b2bc['uniqueid']);}}}catch(_0x522e59){logger[_0x8551('0x2a')]('[ACW][syncAgentRingNoAnswer]\x20%s',_0x522e59[_0x8551('0x2c')]);}};module[_0x8551('0x4d')]=Acw;