Built motion from commit 092f8824.|2.5.49
[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 _0x6e11=['syncAgentConnect','bind','hanguprequest','hangup','syncHangup','agentringnoanswer','syncAgentRingNoAnswer','attendedtransfer','syncAttendedTransfer','blindtransfer','syncBlindTransfer','custom:agentConnectPreview','syncAgentConnectPreview','milliseconds','diff','seconds','prototype','startAcw','interface','queue','mandatoryDisposition','mandatoryDispositionPause','name','Action','QueuePause','then','getAgent','voicePause','info','attended','savePause','[%s][TIMER:%s][AGENT:%s][QUEUE:%s]','timer','stopAcw','acwTimeout','lastPauseAt','format','uniqueid','update','[%s][UPDATE][ACWTIME:%s]','catch','error','[%s][UPDATE][ERRORS:%s]','[%s][INPAUSE][AGENT:%s][QUEUE:%s]','finally','[ACW][START]\x20%s','message','[%s][TIMER][STOP][AGENT:%s]','saveUnpause','[ACW][STOP]\x20Interface\x20%s\x20doesn\x27t\x20have\x20timer','stringify','[ACW][syncAgentConnect]\x20%s','[ACW][syncAgentConnectPreview]\x20%s','isUndefined','linkedid','[%s][HANGUP:LINKEDID]','[%s][HANGUPATTENDEDTRANSFER:UNIQUEID]','[%s][HANGUPATTENDEDTRANSFER:LINKEDID]','isNil','transfereeuniqueid','secondtransfereruniqueid','transfertargetuniqueid','origtransfereruniqueid','transfereruniqueid','[%s][BLINDTRANSFER:UNIQUEID]','[%s][BLINDTRANSFER:LINKEDID]','transfererlinkedid','all','[%s][AUTOPAUSE][AGENT:%s][QUEUE:%]','Auto-Pause','moment','../ami','../../../config/logger','acw','../rpc/voiceAgentReport','voiceQueues','agents','timers','channels','agentconnect'];(function(_0x54b7a8,_0x9e75d5){var _0x6939d9=function(_0x590020){while(--_0x590020){_0x54b7a8['push'](_0x54b7a8['shift']());}};_0x6939d9(++_0x9e75d5);}(_0x6e11,0x96));var _0x16e1=function(_0x45d3f0,_0x4be53f){_0x45d3f0=_0x45d3f0-0x0;var _0x314b79=_0x6e11[_0x45d3f0];return _0x314b79;};'use strict';var util=require('util');var _=require('lodash');var moment=require(_0x16e1('0x0'));var ami=require(_0x16e1('0x1'));var logger=require(_0x16e1('0x2'))(_0x16e1('0x3'));var RpcUser=require('../rpc/user');var RpcVoiceAgentReport=require(_0x16e1('0x4'));function Acw(_0x5b42a8){this['voiceQueues']=_0x5b42a8[_0x16e1('0x5')];this[_0x16e1('0x6')]=_0x5b42a8[_0x16e1('0x6')];this['timers']=_0x5b42a8[_0x16e1('0x7')];this[_0x16e1('0x8')]={};ami['on'](_0x16e1('0x9'),this[_0x16e1('0xa')][_0x16e1('0xb')](this));ami['on'](_0x16e1('0xc'),this['syncHangupRequest'][_0x16e1('0xb')](this));ami['on'](_0x16e1('0xd'),this[_0x16e1('0xe')][_0x16e1('0xb')](this));ami['on'](_0x16e1('0xf'),this[_0x16e1('0x10')][_0x16e1('0xb')](this));ami['on'](_0x16e1('0x11'),this[_0x16e1('0x12')][_0x16e1('0xb')](this));ami['on'](_0x16e1('0x13'),this[_0x16e1('0x14')][_0x16e1('0xb')](this));ami['on'](_0x16e1('0x15'),this[_0x16e1('0x16')][_0x16e1('0xb')](this));}function getDiff(_0x23c84b){var _0x5f1c7f=moment()[_0x16e1('0x17')](0x0);var _0x5f4387=moment(_0x23c84b)[_0x16e1('0x17')](0x0);return _0x5f1c7f[_0x16e1('0x18')](_0x5f4387,_0x16e1('0x19'));}Acw[_0x16e1('0x1a')][_0x16e1('0x1b')]=function(_0x36b6b6){try{var _0x1664ea=this;var _0x5ba009=this[_0x16e1('0x8')][_0x36b6b6][_0x16e1('0x1c')];var _0x4f687f=this[_0x16e1('0x8')][_0x36b6b6][_0x16e1('0x1d')];var _0xd1efa3=this['voiceQueues'][_0x4f687f];var _0x42dbe3=![];var _0x577f3b='ACW';if(_0xd1efa3[_0x16e1('0x1e')]){if(_0xd1efa3[_0x16e1('0x1f')][_0x16e1('0x20')]){_0x42dbe3=!![];_0x577f3b=_0xd1efa3[_0x16e1('0x1f')][_0x16e1('0x20')];}}ami[_0x16e1('0x21')]({'action':_0x16e1('0x22'),'interface':_0x5ba009,'paused':!![],'reason':_0x577f3b})[_0x16e1('0x23')](function(_0x4ab013){if(_0x1664ea['agents'][_0x5ba009]){return RpcUser[_0x16e1('0x24')](_0x1664ea[_0x16e1('0x6')][_0x5ba009]['id'])[_0x16e1('0x23')](function(_0x24f749){if(_0x24f749&&!_0x24f749[_0x16e1('0x25')]){logger[_0x16e1('0x26')]('[%s][START][AGENT:%s][QUEUE:%s]',_0x36b6b6,_0x5ba009,_0x4f687f);var _0x482011=_0x1664ea[_0x16e1('0x8')][_0x36b6b6][_0x16e1('0x27')]&&_0x1664ea[_0x16e1('0x8')][_0x36b6b6]['destlinkedid']?_0x1664ea[_0x16e1('0x8')][_0x36b6b6]['destlinkedid']:_0x36b6b6;return RpcUser[_0x16e1('0x28')](_0x1664ea[_0x16e1('0x6')][_0x5ba009],_0x577f3b,_0x482011)[_0x16e1('0x23')](function(_0x199f94){if(!_0x42dbe3){_0x1664ea[_0x16e1('0x7')][_0x5ba009]={};logger[_0x16e1('0x26')](_0x16e1('0x29'),_0x36b6b6,_0x1664ea[_0x16e1('0x5')][_0x4f687f]['acwTimeout'],_0x5ba009,_0x4f687f);_0x1664ea[_0x16e1('0x7')][_0x5ba009][_0x16e1('0x2a')]=setTimeout(_0x1664ea[_0x16e1('0x2b')][_0x16e1('0xb')](_0x1664ea,_0x5ba009),_0x1664ea[_0x16e1('0x5')][_0x4f687f][_0x16e1('0x2c')]*0x3e8);_0x1664ea[_0x16e1('0x7')][_0x5ba009][_0x16e1('0x2d')]=moment()[_0x16e1('0x2e')]('YYYY-MM-DD\x20HH:mm:ss');_0x1664ea['timers'][_0x5ba009][_0x16e1('0x2f')]=_0x36b6b6;_0x1664ea[_0x16e1('0x7')][_0x5ba009][_0x16e1('0x1d')]=_0x4f687f;_0x1664ea[_0x16e1('0x7')][_0x5ba009]['updateAcw']=function(){var _0x974478=getDiff(_0x1664ea[_0x16e1('0x7')][_0x5ba009][_0x16e1('0x2d')]);clearTimeout(_0x1664ea[_0x16e1('0x7')][_0x5ba009][_0x16e1('0x2a')]);_0x1664ea[_0x16e1('0x7')][_0x5ba009][_0x16e1('0x2a')]=![];RpcVoiceAgentReport[_0x16e1('0x30')]({'acwtime':_0x974478},_0x1664ea[_0x16e1('0x7')][_0x5ba009][_0x16e1('0x2f')],_0x5ba009)[_0x16e1('0x23')](function(_0x5ac548){logger[_0x16e1('0x26')](_0x16e1('0x31'),_0x36b6b6,_0x974478,_0x5ac548);})[_0x16e1('0x32')](function(_0x3fcdfd){logger[_0x16e1('0x33')](_0x16e1('0x34'),_0x36b6b6,_0x3fcdfd);});delete _0x1664ea['timers'][_0x5ba009];};}});}else{logger[_0x16e1('0x26')](_0x16e1('0x35'),_0x36b6b6,_0x5ba009,_0x4f687f);}});}})[_0x16e1('0x32')](function(_0xc462af){logger[_0x16e1('0x33')](_0x16e1('0x29'),_0x36b6b6,_0x1664ea['voiceQueues'][_0x4f687f][_0x16e1('0x2c')],_0x5ba009,_0x4f687f);})[_0x16e1('0x36')](function(){delete _0x1664ea[_0x16e1('0x8')][_0x36b6b6];});}catch(_0x29414c){logger[_0x16e1('0x33')](_0x16e1('0x37'),_0x29414c[_0x16e1('0x38')]);}};Acw[_0x16e1('0x1a')][_0x16e1('0x2b')]=function(_0xe15800){try{var _0x5f2347=this;if(_0x5f2347[_0x16e1('0x7')][_0xe15800]){_0x5f2347[_0x16e1('0x7')][_0xe15800][_0x16e1('0x2a')]=![];var _0x52fa87=_0x5f2347[_0x16e1('0x7')][_0xe15800][_0x16e1('0x2f')];var _0x2ac295=_0x5f2347[_0x16e1('0x7')][_0xe15800]['queue'];var _0x419677=_0x5f2347[_0x16e1('0x5')][_0x2ac295][_0x16e1('0x2c')];logger['info'](_0x16e1('0x39'),_0x52fa87,_0xe15800);RpcUser[_0x16e1('0x3a')](this[_0x16e1('0x6')][_0xe15800]);RpcVoiceAgentReport[_0x16e1('0x30')]({'acwtime':_0x419677,'agentacw':!![]},_0x52fa87,_0xe15800)['then'](function(_0x16305c){logger['info'](_0x16e1('0x31'),_0x52fa87,_0x419677,_0x16305c);})[_0x16e1('0x32')](function(_0x30263b){logger[_0x16e1('0x33')]('[%s][UPDATE][ERRORS:%s]',_0x52fa87,_0x30263b);});}else{logger['error'](_0x16e1('0x3b'),_0xe15800);if(_0x5f2347[_0x16e1('0x7')]){logger['info']('[ACW][TIMERS]',JSON[_0x16e1('0x3c')](_0x5f2347[_0x16e1('0x7')]));}}}catch(_0x249d5a){logger[_0x16e1('0x33')]('[ACW][STOP]\x20%s',_0x249d5a['message']);}};Acw[_0x16e1('0x1a')]['syncAgentConnect']=function(_0x197eb3){try{if(this[_0x16e1('0x5')][_0x197eb3['queue']]&&(this[_0x16e1('0x5')][_0x197eb3[_0x16e1('0x1d')]][_0x16e1('0x3')]||this[_0x16e1('0x5')][_0x197eb3[_0x16e1('0x1d')]][_0x16e1('0x1e')])){if(this[_0x16e1('0x6')][_0x197eb3[_0x16e1('0x1c')]]){this[_0x16e1('0x8')][_0x197eb3[_0x16e1('0x2f')]]={'queue':_0x197eb3[_0x16e1('0x1d')],'interface':_0x197eb3[_0x16e1('0x1c')],'destlinkedid':_0x197eb3['destlinkedid']};}}}catch(_0x1add96){logger[_0x16e1('0x33')](_0x16e1('0x3d'),_0x1add96['message']);}};Acw['prototype']['syncAgentConnectPreview']=function(_0x503c48){try{if(this[_0x16e1('0x5')][_0x503c48[_0x16e1('0x1d')]]&&(this[_0x16e1('0x5')][_0x503c48[_0x16e1('0x1d')]][_0x16e1('0x3')]||this[_0x16e1('0x5')][_0x503c48[_0x16e1('0x1d')]][_0x16e1('0x1e')])){if(this[_0x16e1('0x6')][_0x503c48[_0x16e1('0x1c')]]){this[_0x16e1('0x8')][_0x503c48[_0x16e1('0x2f')]]={'queue':_0x503c48[_0x16e1('0x1d')],'interface':_0x503c48['interface']};}}}catch(_0x490222){logger[_0x16e1('0x33')](_0x16e1('0x3e'),_0x490222[_0x16e1('0x38')]);}};Acw[_0x16e1('0x1a')]['syncHangupRequest']=function(_0x283549){try{if(this[_0x16e1('0x8')][_0x283549['uniqueid']]&&_[_0x16e1('0x3f')](this[_0x16e1('0x8')][_0x283549[_0x16e1('0x2f')]][_0x16e1('0x27')])){logger[_0x16e1('0x26')]('[%s][HANGUP:UNIQUEID]',_0x283549['uniqueid']);this[_0x16e1('0x1b')](_0x283549[_0x16e1('0x2f')]);}else if(this['channels'][_0x283549[_0x16e1('0x40')]]&&_['isUndefined'](this[_0x16e1('0x8')][_0x283549[_0x16e1('0x40')]][_0x16e1('0x27')])){logger['info'](_0x16e1('0x41'),_0x283549[_0x16e1('0x40')]);this[_0x16e1('0x1b')](_0x283549[_0x16e1('0x40')]);}}catch(_0x4ce25f){logger['error']('[ACW][syncHangupRequest]\x20%s',_0x4ce25f['message']);}};Acw[_0x16e1('0x1a')][_0x16e1('0xe')]=function(_0x4c1d72){try{if(this[_0x16e1('0x8')][_0x4c1d72[_0x16e1('0x2f')]]&&this[_0x16e1('0x8')][_0x4c1d72['uniqueid']][_0x16e1('0x27')]){logger[_0x16e1('0x26')](_0x16e1('0x42'),_0x4c1d72[_0x16e1('0x2f')]);this['startAcw'](_0x4c1d72[_0x16e1('0x2f')]);}else if(this[_0x16e1('0x8')][_0x4c1d72[_0x16e1('0x40')]]&&this[_0x16e1('0x8')][_0x4c1d72[_0x16e1('0x40')]][_0x16e1('0x27')]){logger['info'](_0x16e1('0x43'),_0x4c1d72[_0x16e1('0x40')]);this['startAcw'](_0x4c1d72[_0x16e1('0x40')]);}}catch(_0x592b71){logger[_0x16e1('0x33')]('[ACW][syncHangup]\x20%s',_0x592b71[_0x16e1('0x38')]);}};Acw[_0x16e1('0x1a')][_0x16e1('0x12')]=function(_0x14822c){try{if(!_[_0x16e1('0x44')](this[_0x16e1('0x8')][_0x14822c[_0x16e1('0x45')]])){this[_0x16e1('0x1b')](_0x14822c[_0x16e1('0x45')]);if(this[_0x16e1('0x8')][_0x14822c[_0x16e1('0x46')]]){this[_0x16e1('0x8')][_0x14822c[_0x16e1('0x46')]][_0x16e1('0x27')]=!![];this['channels'][_0x14822c[_0x16e1('0x47')]]=this[_0x16e1('0x8')][_0x14822c[_0x16e1('0x46')]];delete this['channels'][_0x14822c[_0x16e1('0x46')]];}}else if(!_[_0x16e1('0x44')](this['channels'][_0x14822c[_0x16e1('0x47')]])){this[_0x16e1('0x1b')](_0x14822c[_0x16e1('0x47')]);if(this[_0x16e1('0x8')][_0x14822c[_0x16e1('0x48')]]){this[_0x16e1('0x8')][_0x14822c[_0x16e1('0x48')]][_0x16e1('0x27')]=!![];this[_0x16e1('0x8')][_0x14822c[_0x16e1('0x45')]]=this[_0x16e1('0x8')][_0x14822c['origtransfereruniqueid']];delete this[_0x16e1('0x8')][_0x14822c[_0x16e1('0x48')]];}}}catch(_0x248a60){logger['error']('[ACW][syncAttendedTransfer]\x20%s',_0x248a60[_0x16e1('0x38')]);}};Acw[_0x16e1('0x1a')]['syncBlindTransfer']=function(_0x36d314){try{if(this[_0x16e1('0x8')][_0x36d314[_0x16e1('0x49')]]){logger[_0x16e1('0x26')](_0x16e1('0x4a'),JSON[_0x16e1('0x3c')](_0x36d314['transfereruniqueid']));this['startAcw'](_0x36d314[_0x16e1('0x49')]);}else if(this[_0x16e1('0x8')][_0x36d314['transfererlinkedid']]){logger[_0x16e1('0x26')](_0x16e1('0x4b'),JSON[_0x16e1('0x3c')](_0x36d314['transfererlinkedid']));this['startAcw'](_0x36d314[_0x16e1('0x4c')]);}}catch(_0x3471f8){logger[_0x16e1('0x33')]('[ACW][syncBlindTransfer]\x20%s',_0x3471f8[_0x16e1('0x38')]);}};Acw[_0x16e1('0x1a')][_0x16e1('0x10')]=function(_0xfea92){try{if(this[_0x16e1('0x5')][_0xfea92[_0x16e1('0x1d')]]&&this[_0x16e1('0x5')][_0xfea92[_0x16e1('0x1d')]]['autopause']===_0x16e1('0x4d')){if(this[_0x16e1('0x6')][_0xfea92['interface']]){logger[_0x16e1('0x26')](_0x16e1('0x4e'),_0xfea92[_0x16e1('0x2f')],_0xfea92[_0x16e1('0x1c')],_0xfea92[_0x16e1('0x1d')]);return RpcUser[_0x16e1('0x28')](this[_0x16e1('0x6')][_0xfea92[_0x16e1('0x1c')]],_0x16e1('0x4f'),_0xfea92[_0x16e1('0x2f')]);}}}catch(_0x2485dd){logger[_0x16e1('0x33')]('[ACW][syncAgentRingNoAnswer]\x20%s',_0x2485dd[_0x16e1('0x38')]);}};module['exports']=Acw;