eb623b4f8a63c843aeb97ca85740a3cad0b4144f
[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 _0xeec6=['savePause','[%s][TIMER:%s][AGENT:%s][QUEUE:%s]','acwTimeout','stopAcw','format','YYYY-MM-DD\x20HH:mm:ss','uniqueid','queue','updateAcw','timer','update','[%s][UPDATE][ACWTIME:%s]','catch','error','[%s][UPDATE][ERRORS:%s]','[%s][INPAUSE][AGENT:%s][QUEUE:%s]','[ACW][START]\x20%s','message','[TIMER][STOP][AGENT:%s]','saveUnpause','[ACW][STOP]\x20%s','interface','attended','[%s][HANGUP:UNIQUEID]','linkedid','isUndefined','[%s][HANGUP:LINKEDID]','[ACW][syncHangupRequest]\x20%s','syncHangup','[ACW][syncHangup]\x20%s','syncAttendedTransfer','isNil','transfereeuniqueid','secondtransfereruniqueid','transfertargetuniqueid','origtransfereruniqueid','transfereruniqueid','stringify','[%s][BLINDTRANSFER:LINKEDID]','transfererlinkedid','[ACW][syncBlindTransfer]\x20%s','all','[%s][AUTOPAUSE][AGENT:%s][QUEUE:%]','Auto-Pause','[ACW][syncAgentRingNoAnswer]\x20%s','util','lodash','moment','../ami','acw','../rpc/user','../rpc/voiceAgentReport','voiceQueues','agents','timers','channels','agentconnect','syncAgentConnect','bind','syncHangupRequest','hangup','syncAgentRingNoAnswer','syncBlindTransfer','custom:agentConnectPreview','syncAgentConnectPreview','milliseconds','diff','seconds','prototype','startAcw','ACW','mandatoryDisposition','mandatoryDispositionPause','name','QueuePause','then','getAgent','voicePause','info','[%s][START][AGENT:%s][QUEUE:%s]','destlinkedid'];(function(_0x5e76e9,_0x2a3b0a){var _0x30ffff=function(_0x2d7fc2){while(--_0x2d7fc2){_0x5e76e9['push'](_0x5e76e9['shift']());}};_0x30ffff(++_0x2a3b0a);}(_0xeec6,0x1c2));var _0x6eec=function(_0x22377a,_0x3397cb){_0x22377a=_0x22377a-0x0;var _0x36f105=_0xeec6[_0x22377a];return _0x36f105;};'use strict';var util=require(_0x6eec('0x0'));var _=require(_0x6eec('0x1'));var moment=require(_0x6eec('0x2'));var ami=require(_0x6eec('0x3'));var logger=require('../../../config/logger')(_0x6eec('0x4'));var RpcUser=require(_0x6eec('0x5'));var RpcVoiceAgentReport=require(_0x6eec('0x6'));function Acw(_0x2d7a15){this[_0x6eec('0x7')]=_0x2d7a15[_0x6eec('0x7')];this['agents']=_0x2d7a15[_0x6eec('0x8')];this[_0x6eec('0x9')]=_0x2d7a15['timers'];this[_0x6eec('0xa')]={};ami['on'](_0x6eec('0xb'),this[_0x6eec('0xc')][_0x6eec('0xd')](this));ami['on']('hanguprequest',this[_0x6eec('0xe')][_0x6eec('0xd')](this));ami['on'](_0x6eec('0xf'),this['syncHangup']['bind'](this));ami['on']('agentringnoanswer',this[_0x6eec('0x10')][_0x6eec('0xd')](this));ami['on']('attendedtransfer',this['syncAttendedTransfer'][_0x6eec('0xd')](this));ami['on']('blindtransfer',this[_0x6eec('0x11')][_0x6eec('0xd')](this));ami['on'](_0x6eec('0x12'),this[_0x6eec('0x13')][_0x6eec('0xd')](this));}function getDiff(_0x49fccb){var _0x25e2a5=moment()[_0x6eec('0x14')](0x0);var _0x462dbb=moment(_0x49fccb)[_0x6eec('0x14')](0x0);return _0x25e2a5[_0x6eec('0x15')](_0x462dbb,_0x6eec('0x16'));}Acw[_0x6eec('0x17')][_0x6eec('0x18')]=function(_0x34a7fc){try{var _0x2ac797=this;var _0x5e2a9b=this[_0x6eec('0xa')][_0x34a7fc]['interface'];var _0x38c9a4=this[_0x6eec('0xa')][_0x34a7fc]['queue'];var _0x3ee353=this[_0x6eec('0x7')][_0x38c9a4];var _0xb1eab7=![];var _0x56c78b=_0x6eec('0x19');if(_0x3ee353[_0x6eec('0x1a')]){if(_0x3ee353[_0x6eec('0x1b')][_0x6eec('0x1c')]){_0xb1eab7=!![];_0x56c78b=_0x3ee353[_0x6eec('0x1b')][_0x6eec('0x1c')];}}ami['Action']({'action':_0x6eec('0x1d'),'interface':_0x5e2a9b,'paused':!![],'reason':_0x56c78b})[_0x6eec('0x1e')](function(_0x132652){if(_0x2ac797[_0x6eec('0x8')][_0x5e2a9b]){return RpcUser[_0x6eec('0x1f')](_0x2ac797[_0x6eec('0x8')][_0x5e2a9b]['id'])['then'](function(_0x6e40b3){if(_0x6e40b3&&!_0x6e40b3[_0x6eec('0x20')]){logger[_0x6eec('0x21')](_0x6eec('0x22'),_0x34a7fc,_0x5e2a9b,_0x38c9a4);var _0x409b26=_0x2ac797[_0x6eec('0xa')][_0x34a7fc]['attended']&&_0x2ac797[_0x6eec('0xa')][_0x34a7fc][_0x6eec('0x23')]?_0x2ac797[_0x6eec('0xa')][_0x34a7fc][_0x6eec('0x23')]:_0x34a7fc;return RpcUser[_0x6eec('0x24')](_0x2ac797[_0x6eec('0x8')][_0x5e2a9b],_0x56c78b,_0x409b26)[_0x6eec('0x1e')](function(_0x20bed3){if(!_0xb1eab7){_0x2ac797[_0x6eec('0x9')][_0x5e2a9b]={};logger['info'](_0x6eec('0x25'),_0x34a7fc,_0x2ac797[_0x6eec('0x7')][_0x38c9a4][_0x6eec('0x26')],_0x5e2a9b,_0x38c9a4);_0x2ac797[_0x6eec('0x9')][_0x5e2a9b]['timer']=setTimeout(_0x2ac797[_0x6eec('0x27')][_0x6eec('0xd')](_0x2ac797,_0x5e2a9b),_0x2ac797['voiceQueues'][_0x38c9a4]['acwTimeout']*0x3e8);_0x2ac797[_0x6eec('0x9')][_0x5e2a9b]['lastPauseAt']=moment()[_0x6eec('0x28')](_0x6eec('0x29'));_0x2ac797[_0x6eec('0x9')][_0x5e2a9b][_0x6eec('0x2a')]=_0x34a7fc;_0x2ac797[_0x6eec('0x9')][_0x5e2a9b][_0x6eec('0x2b')]=_0x38c9a4;_0x2ac797[_0x6eec('0x9')][_0x5e2a9b][_0x6eec('0x2c')]=function(){var _0x1abd19=getDiff(_0x2ac797[_0x6eec('0x9')][_0x5e2a9b]['lastPauseAt']);clearTimeout(_0x2ac797[_0x6eec('0x9')][_0x5e2a9b]['timer']);_0x2ac797[_0x6eec('0x9')][_0x5e2a9b][_0x6eec('0x2d')]=![];RpcVoiceAgentReport[_0x6eec('0x2e')]({'acwtime':_0x1abd19},_0x2ac797['timers'][_0x5e2a9b]['uniqueid'],_0x5e2a9b)['then'](function(_0x183ce3){logger[_0x6eec('0x21')](_0x6eec('0x2f'),_0x34a7fc,_0x1abd19,_0x183ce3);})[_0x6eec('0x30')](function(_0x20c794){logger[_0x6eec('0x31')](_0x6eec('0x32'),_0x34a7fc,_0x20c794);});delete _0x2ac797[_0x6eec('0x9')][_0x5e2a9b];};}});}else{logger[_0x6eec('0x21')](_0x6eec('0x33'),_0x34a7fc,_0x5e2a9b,_0x38c9a4);}});}})[_0x6eec('0x30')](function(_0x4382df){logger['error'](_0x6eec('0x25'),_0x34a7fc,_0x2ac797[_0x6eec('0x7')][_0x38c9a4][_0x6eec('0x26')],_0x5e2a9b,_0x38c9a4);})['finally'](function(){delete _0x2ac797[_0x6eec('0xa')][_0x34a7fc];});}catch(_0x193732){logger[_0x6eec('0x31')](_0x6eec('0x34'),_0x193732[_0x6eec('0x35')]);}};Acw[_0x6eec('0x17')]['stopAcw']=function(_0x45cfb6){try{var _0x1f10ff=this;if(_0x1f10ff[_0x6eec('0x9')][_0x45cfb6]){_0x1f10ff['timers'][_0x45cfb6]['timer']=![];var _0x28e5fa=_0x1f10ff[_0x6eec('0x9')][_0x45cfb6][_0x6eec('0x2a')];var _0x3f79d1=_0x1f10ff[_0x6eec('0x9')][_0x45cfb6]['queue'];var _0x223dfa=_0x1f10ff[_0x6eec('0x7')][_0x3f79d1][_0x6eec('0x26')];logger[_0x6eec('0x21')](_0x6eec('0x36'),_0x45cfb6);RpcUser[_0x6eec('0x37')](this[_0x6eec('0x8')][_0x45cfb6]);RpcVoiceAgentReport[_0x6eec('0x2e')]({'acwtime':_0x223dfa,'agentacw':!![]},_0x28e5fa,_0x45cfb6)['then'](function(_0x2f7a75){logger[_0x6eec('0x21')]('[%s][UPDATE][ACWTIME:%s]',_0x28e5fa,_0x223dfa,_0x2f7a75);})['catch'](function(_0x160fc0){logger[_0x6eec('0x31')](_0x6eec('0x32'),_0x28e5fa,_0x160fc0);});}else{logger[_0x6eec('0x31')]('[ACW][STOP]\x20Interface\x20%s\x20doesn\x27t\x20have\x20timer',_0x45cfb6);if(_0x1f10ff['timers']){logger[_0x6eec('0x21')]('[ACW][TIMERS]',JSON['stringify'](_0x1f10ff[_0x6eec('0x9')]));}}}catch(_0xe523b9){logger[_0x6eec('0x31')](_0x6eec('0x38'),_0xe523b9[_0x6eec('0x35')]);}};Acw['prototype'][_0x6eec('0xc')]=function(_0x3a4d25){try{if(this['voiceQueues'][_0x3a4d25[_0x6eec('0x2b')]]&&(this[_0x6eec('0x7')][_0x3a4d25['queue']][_0x6eec('0x4')]||this[_0x6eec('0x7')][_0x3a4d25['queue']][_0x6eec('0x1a')])){if(this[_0x6eec('0x8')][_0x3a4d25[_0x6eec('0x39')]]){this[_0x6eec('0xa')][_0x3a4d25['uniqueid']]={'queue':_0x3a4d25[_0x6eec('0x2b')],'interface':_0x3a4d25[_0x6eec('0x39')],'destlinkedid':_0x3a4d25[_0x6eec('0x23')]};}}}catch(_0x165498){logger[_0x6eec('0x31')]('[ACW][syncAgentConnect]\x20%s',_0x165498['message']);}};Acw[_0x6eec('0x17')][_0x6eec('0x13')]=function(_0x3703b5){try{if(this[_0x6eec('0x7')][_0x3703b5[_0x6eec('0x2b')]]&&(this['voiceQueues'][_0x3703b5[_0x6eec('0x2b')]]['acw']||this[_0x6eec('0x7')][_0x3703b5[_0x6eec('0x2b')]][_0x6eec('0x1a')])){if(this['agents'][_0x3703b5[_0x6eec('0x39')]]){this[_0x6eec('0xa')][_0x3703b5[_0x6eec('0x2a')]]={'queue':_0x3703b5[_0x6eec('0x2b')],'interface':_0x3703b5[_0x6eec('0x39')]};}}}catch(_0x4be225){logger[_0x6eec('0x31')]('[ACW][syncAgentConnectPreview]\x20%s',_0x4be225['message']);}};Acw[_0x6eec('0x17')]['syncHangupRequest']=function(_0x245a1b){try{if(this[_0x6eec('0xa')][_0x245a1b[_0x6eec('0x2a')]]&&_['isUndefined'](this['channels'][_0x245a1b[_0x6eec('0x2a')]][_0x6eec('0x3a')])){logger[_0x6eec('0x21')](_0x6eec('0x3b'),_0x245a1b[_0x6eec('0x2a')]);this[_0x6eec('0x18')](_0x245a1b[_0x6eec('0x2a')]);}else if(this[_0x6eec('0xa')][_0x245a1b[_0x6eec('0x3c')]]&&_[_0x6eec('0x3d')](this['channels'][_0x245a1b['linkedid']][_0x6eec('0x3a')])){logger[_0x6eec('0x21')](_0x6eec('0x3e'),_0x245a1b['linkedid']);this[_0x6eec('0x18')](_0x245a1b[_0x6eec('0x3c')]);}}catch(_0x16c0da){logger[_0x6eec('0x31')](_0x6eec('0x3f'),_0x16c0da[_0x6eec('0x35')]);}};Acw[_0x6eec('0x17')][_0x6eec('0x40')]=function(_0x5a6e05){try{if(this[_0x6eec('0xa')][_0x5a6e05[_0x6eec('0x2a')]]&&this[_0x6eec('0xa')][_0x5a6e05[_0x6eec('0x2a')]]['attended']){logger['info']('[%s][HANGUPATTENDEDTRANSFER:UNIQUEID]',_0x5a6e05[_0x6eec('0x2a')]);this[_0x6eec('0x18')](_0x5a6e05[_0x6eec('0x2a')]);}else if(this[_0x6eec('0xa')][_0x5a6e05['linkedid']]&&this['channels'][_0x5a6e05[_0x6eec('0x3c')]][_0x6eec('0x3a')]){logger[_0x6eec('0x21')]('[%s][HANGUPATTENDEDTRANSFER:LINKEDID]',_0x5a6e05[_0x6eec('0x3c')]);this[_0x6eec('0x18')](_0x5a6e05[_0x6eec('0x3c')]);}}catch(_0xf957c1){logger[_0x6eec('0x31')](_0x6eec('0x41'),_0xf957c1[_0x6eec('0x35')]);}};Acw[_0x6eec('0x17')][_0x6eec('0x42')]=function(_0x4e921a){try{if(!_[_0x6eec('0x43')](this['channels'][_0x4e921a[_0x6eec('0x44')]])){this[_0x6eec('0x18')](_0x4e921a[_0x6eec('0x44')]);if(this[_0x6eec('0xa')][_0x4e921a[_0x6eec('0x45')]]){this[_0x6eec('0xa')][_0x4e921a[_0x6eec('0x45')]]['attended']=!![];this[_0x6eec('0xa')][_0x4e921a['transfertargetuniqueid']]=this[_0x6eec('0xa')][_0x4e921a['secondtransfereruniqueid']];delete this[_0x6eec('0xa')][_0x4e921a[_0x6eec('0x45')]];}}else if(!_[_0x6eec('0x43')](this[_0x6eec('0xa')][_0x4e921a[_0x6eec('0x46')]])){this[_0x6eec('0x18')](_0x4e921a[_0x6eec('0x46')]);if(this[_0x6eec('0xa')][_0x4e921a[_0x6eec('0x47')]]){this[_0x6eec('0xa')][_0x4e921a['origtransfereruniqueid']]['attended']=!![];this[_0x6eec('0xa')][_0x4e921a[_0x6eec('0x44')]]=this[_0x6eec('0xa')][_0x4e921a[_0x6eec('0x47')]];delete this[_0x6eec('0xa')][_0x4e921a['origtransfereruniqueid']];}}}catch(_0x1d8fb1){logger[_0x6eec('0x31')]('[ACW][syncAttendedTransfer]\x20%s',_0x1d8fb1['message']);}};Acw['prototype'][_0x6eec('0x11')]=function(_0x3dfd47){try{if(this['channels'][_0x3dfd47[_0x6eec('0x48')]]){logger[_0x6eec('0x21')]('[%s][BLINDTRANSFER:UNIQUEID]',JSON[_0x6eec('0x49')](_0x3dfd47[_0x6eec('0x48')]));this[_0x6eec('0x18')](_0x3dfd47[_0x6eec('0x48')]);}else if(this['channels'][_0x3dfd47['transfererlinkedid']]){logger[_0x6eec('0x21')](_0x6eec('0x4a'),JSON[_0x6eec('0x49')](_0x3dfd47[_0x6eec('0x4b')]));this[_0x6eec('0x18')](_0x3dfd47[_0x6eec('0x4b')]);}}catch(_0x169607){logger[_0x6eec('0x31')](_0x6eec('0x4c'),_0x169607[_0x6eec('0x35')]);}};Acw[_0x6eec('0x17')][_0x6eec('0x10')]=function(_0x2799ca){try{if(this[_0x6eec('0x7')][_0x2799ca[_0x6eec('0x2b')]]&&this[_0x6eec('0x7')][_0x2799ca[_0x6eec('0x2b')]]['autopause']===_0x6eec('0x4d')){if(this[_0x6eec('0x8')][_0x2799ca['interface']]){logger[_0x6eec('0x21')](_0x6eec('0x4e'),_0x2799ca['uniqueid'],_0x2799ca[_0x6eec('0x39')],_0x2799ca[_0x6eec('0x2b')]);return RpcUser[_0x6eec('0x24')](this[_0x6eec('0x8')][_0x2799ca['interface']],_0x6eec('0x4f'),_0x2799ca[_0x6eec('0x2a')]);}}}catch(_0x3a9a5b){logger[_0x6eec('0x31')](_0x6eec('0x50'),_0x3a9a5b[_0x6eec('0x35')]);}};module['exports']=Acw;