2e0d581d1202cfb2db0d625e392560b7d37cadd8
[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 _0x809c=['../rpc/user','../rpc/voiceAgentReport','voiceQueues','agents','timers','channels','agentconnect','syncAgentConnect','syncHangupRequest','syncHangup','bind','agentringnoanswer','syncAgentRingNoAnswer','attendedtransfer','syncAttendedTransfer','syncBlindTransfer','custom:agentConnectPreview','milliseconds','diff','seconds','prototype','interface','queue','mandatoryDisposition','name','mandatoryDispositionPause','Action','QueuePause','getAgent','voicePause','info','[%s][START][AGENT:%s][QUEUE:%s]','attended','destlinkedid','savePause','then','[%s][TIMER:%s][AGENT:%s][QUEUE:%s]','acwTimeout','timer','stopAcw','lastPauseAt','format','uniqueid','updateAcw','update','catch','error','[%s][INPAUSE][AGENT:%s][QUEUE:%s]','finally','[ACW][START]\x20%s','message','[%s][TIMER][STOP][AGENT:%s]','[%s][UPDATE][ACWTIME:%s]','[ACW][STOP]\x20Interface\x20%s\x20doesn\x27t\x20have\x20timer','[ACW][TIMERS]','stringify','[ACW][STOP]\x20%s','syncAgentConnectPreview','[ACW][syncAgentConnectPreview]\x20%s','isUndefined','[%s][HANGUP:UNIQUEID]','startAcw','linkedid','[%s][HANGUPATTENDEDTRANSFER:LINKEDID]','isNil','transfereeuniqueid','secondtransfereruniqueid','transfertargetuniqueid','origtransfereruniqueid','[ACW][syncAttendedTransfer]\x20%s','transfereruniqueid','[%s][BLINDTRANSFER:UNIQUEID]','transfererlinkedid','[ACW][syncBlindTransfer]\x20%s','autopause','all','[%s][AUTOPAUSE][AGENT:%s][QUEUE:%]','Auto-Pause','[ACW][syncAgentRingNoAnswer]\x20%s','exports','moment','../ami','../../../config/logger','acw'];(function(_0x4b0389,_0x58a91e){var _0x384ecd=function(_0x2f31a2){while(--_0x2f31a2){_0x4b0389['push'](_0x4b0389['shift']());}};_0x384ecd(++_0x58a91e);}(_0x809c,0x1f4));var _0xc809=function(_0x3f9933,_0x56f159){_0x3f9933=_0x3f9933-0x0;var _0x49deaf=_0x809c[_0x3f9933];return _0x49deaf;};'use strict';var _=require('lodash');var moment=require(_0xc809('0x0'));var ami=require(_0xc809('0x1'));var logger=require(_0xc809('0x2'))(_0xc809('0x3'));var RpcUser=require(_0xc809('0x4'));var RpcVoiceAgentReport=require(_0xc809('0x5'));function Acw(_0x13e95a){this[_0xc809('0x6')]=_0x13e95a[_0xc809('0x6')];this[_0xc809('0x7')]=_0x13e95a[_0xc809('0x7')];this[_0xc809('0x8')]=_0x13e95a['timers'];this[_0xc809('0x9')]={};ami['on'](_0xc809('0xa'),this[_0xc809('0xb')]['bind'](this));ami['on']('hanguprequest',this[_0xc809('0xc')]['bind'](this));ami['on']('hangup',this[_0xc809('0xd')][_0xc809('0xe')](this));ami['on'](_0xc809('0xf'),this[_0xc809('0x10')]['bind'](this));ami['on'](_0xc809('0x11'),this[_0xc809('0x12')]['bind'](this));ami['on']('blindtransfer',this[_0xc809('0x13')]['bind'](this));ami['on'](_0xc809('0x14'),this['syncAgentConnectPreview']['bind'](this));}function getDiff(_0x258eb9){var _0x2ca2c2=moment()['milliseconds'](0x0);var _0x1ff39c=moment(_0x258eb9)[_0xc809('0x15')](0x0);return _0x2ca2c2[_0xc809('0x16')](_0x1ff39c,_0xc809('0x17'));}Acw[_0xc809('0x18')]['startAcw']=function(_0x24caf3){try{var _0x1f0ef4=this;var _0x37bd95=this['channels'][_0x24caf3][_0xc809('0x19')];var _0x313818=this[_0xc809('0x9')][_0x24caf3][_0xc809('0x1a')];var _0x57acba=this['voiceQueues'][_0x313818];var _0x452e7e=![];var _0x6ff2f='ACW';if(_0x57acba[_0xc809('0x1b')]){if(_0x57acba['mandatoryDispositionPause'][_0xc809('0x1c')]){_0x452e7e=!![];_0x6ff2f=_0x57acba[_0xc809('0x1d')]['name'];}}return ami[_0xc809('0x1e')]({'action':_0xc809('0x1f'),'interface':_0x37bd95,'paused':!![],'reason':_0x6ff2f})['then'](function(){if(_0x1f0ef4[_0xc809('0x7')][_0x37bd95]){return RpcUser[_0xc809('0x20')](_0x1f0ef4[_0xc809('0x7')][_0x37bd95]['id'])['then'](function(_0x53070a){if(_0x53070a&&!_0x53070a[_0xc809('0x21')]){logger[_0xc809('0x22')](_0xc809('0x23'),_0x24caf3,_0x37bd95,_0x313818);var _0x3b4079=_0x1f0ef4['channels'][_0x24caf3][_0xc809('0x24')]&&_0x1f0ef4[_0xc809('0x9')][_0x24caf3]['destlinkedid']?_0x1f0ef4[_0xc809('0x9')][_0x24caf3][_0xc809('0x25')]:_0x24caf3;return RpcUser[_0xc809('0x26')](_0x1f0ef4[_0xc809('0x7')][_0x37bd95],_0x6ff2f,_0x3b4079)[_0xc809('0x27')](function(){if(!_0x452e7e){_0x1f0ef4[_0xc809('0x8')][_0x37bd95]={};logger['info'](_0xc809('0x28'),_0x24caf3,_0x1f0ef4['voiceQueues'][_0x313818][_0xc809('0x29')],_0x37bd95,_0x313818);_0x1f0ef4['timers'][_0x37bd95][_0xc809('0x2a')]=setTimeout(_0x1f0ef4[_0xc809('0x2b')][_0xc809('0xe')](_0x1f0ef4,_0x37bd95),_0x1f0ef4[_0xc809('0x6')][_0x313818]['acwTimeout']*0x3e8);_0x1f0ef4['timers'][_0x37bd95][_0xc809('0x2c')]=moment()[_0xc809('0x2d')]('YYYY-MM-DD\x20HH:mm:ss');_0x1f0ef4[_0xc809('0x8')][_0x37bd95][_0xc809('0x2e')]=_0x24caf3;_0x1f0ef4[_0xc809('0x8')][_0x37bd95][_0xc809('0x1a')]=_0x313818;_0x1f0ef4[_0xc809('0x8')][_0x37bd95][_0xc809('0x2f')]=function(){var _0x5c9dbd=getDiff(_0x1f0ef4[_0xc809('0x8')][_0x37bd95][_0xc809('0x2c')]);clearTimeout(_0x1f0ef4['timers'][_0x37bd95]['timer']);_0x1f0ef4[_0xc809('0x8')][_0x37bd95][_0xc809('0x2a')]=![];RpcVoiceAgentReport[_0xc809('0x30')]({'acwtime':_0x5c9dbd},_0x1f0ef4[_0xc809('0x8')][_0x37bd95][_0xc809('0x2e')],_0x37bd95)[_0xc809('0x27')](function(_0x4f0970){logger['info']('[%s][UPDATE][ACWTIME:%s]',_0x24caf3,_0x5c9dbd,_0x4f0970);})[_0xc809('0x31')](function(_0x30c7fb){logger[_0xc809('0x32')]('[%s][UPDATE][ERRORS:%s]',_0x24caf3,_0x30c7fb);});delete _0x1f0ef4[_0xc809('0x8')][_0x37bd95];};}});}else{logger[_0xc809('0x22')](_0xc809('0x33'),_0x24caf3,_0x37bd95,_0x313818);}});}})[_0xc809('0x31')](function(){logger[_0xc809('0x32')]('[%s][TIMER:%s][AGENT:%s][QUEUE:%s]',_0x24caf3,_0x1f0ef4['voiceQueues'][_0x313818][_0xc809('0x29')],_0x37bd95,_0x313818);})[_0xc809('0x34')](function(){delete _0x1f0ef4[_0xc809('0x9')][_0x24caf3];});}catch(_0x1b1e76){logger['error'](_0xc809('0x35'),_0x1b1e76[_0xc809('0x36')]);}};Acw[_0xc809('0x18')][_0xc809('0x2b')]=function(_0x541374){try{var _0x5a3582=this;if(_0x5a3582[_0xc809('0x8')][_0x541374]){_0x5a3582[_0xc809('0x8')][_0x541374][_0xc809('0x2a')]=![];var _0x159114=_0x5a3582[_0xc809('0x8')][_0x541374]['uniqueid'];var _0x72d1a4=_0x5a3582[_0xc809('0x8')][_0x541374][_0xc809('0x1a')];var _0x5da297=_0x5a3582['voiceQueues'][_0x72d1a4][_0xc809('0x29')];logger['info'](_0xc809('0x37'),_0x159114,_0x541374);RpcUser['saveUnpause'](this['agents'][_0x541374]);RpcVoiceAgentReport['update']({'acwtime':_0x5da297,'agentacw':!![]},_0x159114,_0x541374)[_0xc809('0x27')](function(_0x1761fa){logger['info'](_0xc809('0x38'),_0x159114,_0x5da297,_0x1761fa);})[_0xc809('0x31')](function(_0x4910cc){logger[_0xc809('0x32')]('[%s][UPDATE][ERRORS:%s]',_0x159114,_0x4910cc);});}else{logger[_0xc809('0x32')](_0xc809('0x39'),_0x541374);if(_0x5a3582[_0xc809('0x8')]){logger[_0xc809('0x22')](_0xc809('0x3a'),JSON[_0xc809('0x3b')](_0x5a3582[_0xc809('0x8')]));}}}catch(_0xdcd068){logger['error'](_0xc809('0x3c'),_0xdcd068[_0xc809('0x36')]);}};Acw[_0xc809('0x18')][_0xc809('0xb')]=function(_0x5e6fa1){try{if(this[_0xc809('0x6')][_0x5e6fa1[_0xc809('0x1a')]]&&(this[_0xc809('0x6')][_0x5e6fa1['queue']][_0xc809('0x3')]||this['voiceQueues'][_0x5e6fa1[_0xc809('0x1a')]][_0xc809('0x1b')])){if(this[_0xc809('0x7')][_0x5e6fa1[_0xc809('0x19')]]){this[_0xc809('0x9')][_0x5e6fa1[_0xc809('0x2e')]]={'queue':_0x5e6fa1['queue'],'interface':_0x5e6fa1[_0xc809('0x19')],'destlinkedid':_0x5e6fa1[_0xc809('0x25')]};}}}catch(_0x17ac3e){logger['error']('[ACW][syncAgentConnect]\x20%s',_0x17ac3e[_0xc809('0x36')]);}};Acw[_0xc809('0x18')][_0xc809('0x3d')]=function(_0x1a4626){try{if(this[_0xc809('0x6')][_0x1a4626[_0xc809('0x1a')]]&&(this[_0xc809('0x6')][_0x1a4626[_0xc809('0x1a')]][_0xc809('0x3')]||this[_0xc809('0x6')][_0x1a4626[_0xc809('0x1a')]][_0xc809('0x1b')])){if(this[_0xc809('0x7')][_0x1a4626[_0xc809('0x19')]]){this[_0xc809('0x9')][_0x1a4626[_0xc809('0x2e')]]={'queue':_0x1a4626['queue'],'interface':_0x1a4626[_0xc809('0x19')]};}}}catch(_0x186d63){logger[_0xc809('0x32')](_0xc809('0x3e'),_0x186d63['message']);}};Acw[_0xc809('0x18')][_0xc809('0xc')]=function(_0x1053ce){try{if(this[_0xc809('0x9')][_0x1053ce[_0xc809('0x2e')]]&&_[_0xc809('0x3f')](this['channels'][_0x1053ce[_0xc809('0x2e')]][_0xc809('0x24')])){logger['info'](_0xc809('0x40'),_0x1053ce['uniqueid']);this[_0xc809('0x41')](_0x1053ce[_0xc809('0x2e')]);}else if(this['channels'][_0x1053ce[_0xc809('0x42')]]&&_['isUndefined'](this[_0xc809('0x9')][_0x1053ce[_0xc809('0x42')]]['attended'])){logger['info']('[%s][HANGUP:LINKEDID]',_0x1053ce[_0xc809('0x42')]);this[_0xc809('0x41')](_0x1053ce[_0xc809('0x42')]);}}catch(_0x4671b0){logger[_0xc809('0x32')]('[ACW][syncHangupRequest]\x20%s',_0x4671b0[_0xc809('0x36')]);}};Acw[_0xc809('0x18')]['syncHangup']=function(_0x17fa0d){try{if(this['channels'][_0x17fa0d[_0xc809('0x2e')]]&&this[_0xc809('0x9')][_0x17fa0d[_0xc809('0x2e')]][_0xc809('0x24')]){logger[_0xc809('0x22')]('[%s][HANGUPATTENDEDTRANSFER:UNIQUEID]',_0x17fa0d[_0xc809('0x2e')]);this[_0xc809('0x41')](_0x17fa0d[_0xc809('0x2e')]);}else if(this[_0xc809('0x9')][_0x17fa0d[_0xc809('0x42')]]&&this[_0xc809('0x9')][_0x17fa0d[_0xc809('0x42')]][_0xc809('0x24')]){logger[_0xc809('0x22')](_0xc809('0x43'),_0x17fa0d[_0xc809('0x42')]);this[_0xc809('0x41')](_0x17fa0d[_0xc809('0x42')]);}}catch(_0x3d968a){logger[_0xc809('0x32')]('[ACW][syncHangup]\x20%s',_0x3d968a['message']);}};Acw['prototype'][_0xc809('0x12')]=function(_0x33caf0){try{if(!_[_0xc809('0x44')](this[_0xc809('0x9')][_0x33caf0['transfereeuniqueid']])){this[_0xc809('0x41')](_0x33caf0[_0xc809('0x45')]);if(this[_0xc809('0x9')][_0x33caf0[_0xc809('0x46')]]){this['channels'][_0x33caf0[_0xc809('0x46')]][_0xc809('0x24')]=!![];this['channels'][_0x33caf0['transfertargetuniqueid']]=this[_0xc809('0x9')][_0x33caf0[_0xc809('0x46')]];delete this['channels'][_0x33caf0[_0xc809('0x46')]];}}else if(!_[_0xc809('0x44')](this[_0xc809('0x9')][_0x33caf0[_0xc809('0x47')]])){this[_0xc809('0x41')](_0x33caf0['transfertargetuniqueid']);if(this[_0xc809('0x9')][_0x33caf0[_0xc809('0x48')]]){this[_0xc809('0x9')][_0x33caf0[_0xc809('0x48')]][_0xc809('0x24')]=!![];this[_0xc809('0x9')][_0x33caf0['transfereeuniqueid']]=this['channels'][_0x33caf0[_0xc809('0x48')]];delete this['channels'][_0x33caf0['origtransfereruniqueid']];}}}catch(_0x33d18a){logger[_0xc809('0x32')](_0xc809('0x49'),_0x33d18a[_0xc809('0x36')]);}};Acw['prototype']['syncBlindTransfer']=function(_0x2cb8e9){try{if(this['channels'][_0x2cb8e9[_0xc809('0x4a')]]){logger[_0xc809('0x22')](_0xc809('0x4b'),JSON[_0xc809('0x3b')](_0x2cb8e9[_0xc809('0x4a')]));this[_0xc809('0x41')](_0x2cb8e9[_0xc809('0x4a')]);}else if(this[_0xc809('0x9')][_0x2cb8e9[_0xc809('0x4c')]]){logger[_0xc809('0x22')]('[%s][BLINDTRANSFER:LINKEDID]',JSON[_0xc809('0x3b')](_0x2cb8e9[_0xc809('0x4c')]));this[_0xc809('0x41')](_0x2cb8e9[_0xc809('0x4c')]);}}catch(_0x348a19){logger[_0xc809('0x32')](_0xc809('0x4d'),_0x348a19[_0xc809('0x36')]);}};Acw[_0xc809('0x18')][_0xc809('0x10')]=function(_0x3bfc8b){try{if(this['voiceQueues'][_0x3bfc8b[_0xc809('0x1a')]]&&this[_0xc809('0x6')][_0x3bfc8b['queue']][_0xc809('0x4e')]===_0xc809('0x4f')){if(this[_0xc809('0x7')][_0x3bfc8b[_0xc809('0x19')]]){logger['info'](_0xc809('0x50'),_0x3bfc8b[_0xc809('0x2e')],_0x3bfc8b[_0xc809('0x19')],_0x3bfc8b[_0xc809('0x1a')]);return RpcUser['savePause'](this[_0xc809('0x7')][_0x3bfc8b[_0xc809('0x19')]],_0xc809('0x51'),_0x3bfc8b[_0xc809('0x2e')]);}}}catch(_0x3c9902){logger['error'](_0xc809('0x52'),_0x3c9902['message']);}};module[_0xc809('0x53')]=Acw;