Built motion from commit d5e4af8c.|2.6.23
[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 _0xa617=['updateAcw','[%s][TIMER:%s][AGENT:%s][QUEUE:%s]','[%s][TIMER][STOP][AGENT:%s]','pauseType','saveUnpause','[ACW][STOP]\x20Interface\x20%s\x20doesn\x27t\x20have\x20timer','[ACW][TIMERS]','stringify','[ACW][STOP]\x20%s','[ACW][syncAgentConnect]\x20%s','message','[ACW][syncAgentConnectPreview]\x20%s','isUndefined','attended','linkedid','[%s][HANGUP:LINKEDID]','[%s][HANGUPATTENDEDTRANSFER:UNIQUEID]','[%s][HANGUPATTENDEDTRANSFER:LINKEDID]','[ACW][syncHangup]\x20%s','isNil','transfereeuniqueid','secondtransfereruniqueid','transfertargetuniqueid','origtransfereruniqueid','[ACW][syncAttendedTransfer]\x20%s','transfereruniqueid','[%s][BLINDTRANSFER:UNIQUEID]','transfererlinkedid','[%s][BLINDTRANSFER:LINKEDID]','[ACW][syncBlindTransfer]\x20%s','syncAgentRingNoAnswer','autopause','[%s][AUTOPAUSE][AGENT:%s][QUEUE:%]','Auto-Pause','[ACW][syncAgentRingNoAnswer]\x20%s','exports','moment','../ami','../../../config/logger','acw','../rpc/user','../rpc/voiceAgentReport','voiceQueues','agents','channels','agentconnect','syncAgentConnect','bind','hanguprequest','syncHangupRequest','hangup','attendedtransfer','syncAttendedTransfer','blindtransfer','syncBlindTransfer','custom:agentConnectPreview','syncAgentConnectPreview','milliseconds','diff','seconds','prototype','timers','timer','update','uniqueid','then','info','[%s][UPDATE][ACWTIME:%s]','catch','error','[%s][UPDATE][ERRORS:%s]','finally','startAcw','interface','queue','ACW','mandatoryDisposition','name','mandatoryDispositionPause','getAgent','voicePause','[%s][START][AGENT:%s][QUEUE:%s]','destlinkedid','savePause','available','paused','acwTimeout','stopAcw','format','YYYY-MM-DD\x20HH:mm:ss'];(function(_0x9b78fa,_0x529770){var _0x2f9c14=function(_0x1bdff5){while(--_0x1bdff5){_0x9b78fa['push'](_0x9b78fa['shift']());}};_0x2f9c14(++_0x529770);}(_0xa617,0xd8));var _0x7a61=function(_0xe8f345,_0xb10506){_0xe8f345=_0xe8f345-0x0;var _0x12e8d6=_0xa617[_0xe8f345];return _0x12e8d6;};'use strict';var _=require('lodash');var moment=require(_0x7a61('0x0'));var ami=require(_0x7a61('0x1'));var logger=require(_0x7a61('0x2'))(_0x7a61('0x3'));var RpcUser=require(_0x7a61('0x4'));var RpcVoiceAgentReport=require(_0x7a61('0x5'));function Acw(_0x1e5394){this[_0x7a61('0x6')]=_0x1e5394[_0x7a61('0x6')];this[_0x7a61('0x7')]=_0x1e5394['agents'];this['timers']=_0x1e5394['timers'];this[_0x7a61('0x8')]={};ami['on'](_0x7a61('0x9'),this[_0x7a61('0xa')][_0x7a61('0xb')](this));ami['on'](_0x7a61('0xc'),this[_0x7a61('0xd')][_0x7a61('0xb')](this));ami['on'](_0x7a61('0xe'),this['syncHangup'][_0x7a61('0xb')](this));ami['on']('agentringnoanswer',this['syncAgentRingNoAnswer'][_0x7a61('0xb')](this));ami['on'](_0x7a61('0xf'),this[_0x7a61('0x10')][_0x7a61('0xb')](this));ami['on'](_0x7a61('0x11'),this[_0x7a61('0x12')][_0x7a61('0xb')](this));ami['on'](_0x7a61('0x13'),this[_0x7a61('0x14')][_0x7a61('0xb')](this));}function getDiff(_0x88c0da){var _0x35d8f2=moment()[_0x7a61('0x15')](0x0);var _0x3af077=moment(_0x88c0da)[_0x7a61('0x15')](0x0);return _0x35d8f2[_0x7a61('0x16')](_0x3af077,_0x7a61('0x17'));}Acw[_0x7a61('0x18')]['updateAcw']=function(_0x50c8b5,_0x1bd161){var _0x2e2961=this;var _0x4040ea=getDiff(_0x2e2961[_0x7a61('0x19')][_0x50c8b5]['lastPauseAt']);clearTimeout(_0x2e2961[_0x7a61('0x19')][_0x50c8b5][_0x7a61('0x1a')]);_0x2e2961[_0x7a61('0x19')][_0x50c8b5][_0x7a61('0x1a')]=![];return RpcVoiceAgentReport[_0x7a61('0x1b')]({'acwtime':_0x4040ea},_0x2e2961[_0x7a61('0x19')][_0x50c8b5][_0x7a61('0x1c')],_0x50c8b5)[_0x7a61('0x1d')](function(_0xa290c1){logger[_0x7a61('0x1e')](_0x7a61('0x1f'),_0x1bd161,_0x4040ea,_0xa290c1);})[_0x7a61('0x20')](function(_0x4855c3){logger[_0x7a61('0x21')](_0x7a61('0x22'),_0x1bd161,_0x4855c3);})[_0x7a61('0x23')](function(){delete _0x2e2961['timers'][_0x50c8b5];});};Acw[_0x7a61('0x18')][_0x7a61('0x24')]=function(_0x267985){try{var _0x4cb2c7=this;var _0xb837df=this[_0x7a61('0x8')][_0x267985][_0x7a61('0x25')];var _0x3cbfba=this[_0x7a61('0x8')][_0x267985][_0x7a61('0x26')];var _0x5defb4=this[_0x7a61('0x6')][_0x3cbfba];var _0x67cddd=![];var _0x27e22b=_0x7a61('0x27');if(_0x5defb4[_0x7a61('0x28')]&&_0x5defb4['mandatoryDispositionPause'][_0x7a61('0x29')]){_0x67cddd=!![];_0x27e22b=_0x5defb4[_0x7a61('0x2a')][_0x7a61('0x29')];}if(!_0x4cb2c7[_0x7a61('0x7')][_0xb837df]){return Promise['resolve']();}return RpcUser[_0x7a61('0x2b')](_0x4cb2c7['agents'][_0xb837df]['id'])[_0x7a61('0x1d')](function(_0x5235dd){if(!_0x5235dd||_0x5235dd[_0x7a61('0x2c')]){logger[_0x7a61('0x1e')]('[%s][INPAUSE][AGENT:%s][QUEUE:%s]',_0x267985,_0xb837df,_0x3cbfba);return;}logger[_0x7a61('0x1e')](_0x7a61('0x2d'),_0x267985,_0xb837df,_0x3cbfba);var _0x2ba477=_0x4cb2c7[_0x7a61('0x8')][_0x267985]['attended']&&_0x4cb2c7['channels'][_0x267985][_0x7a61('0x2e')]?_0x4cb2c7[_0x7a61('0x8')][_0x267985]['destlinkedid']:_0x267985;return RpcUser[_0x7a61('0x2f')](_0x4cb2c7[_0x7a61('0x7')][_0xb837df],_0x27e22b,_0x2ba477)[_0x7a61('0x1d')](function(_0x56345c){_0x4cb2c7[_0x7a61('0x6')][_0x3cbfba][_0x7a61('0x30')]-=0x1;_0x4cb2c7[_0x7a61('0x6')][_0x3cbfba][_0x7a61('0x31')]+=0x1;return _0x56345c;});})[_0x7a61('0x1d')](function(_0x31d884){if(_0x67cddd||!_0x31d884){return;}_0x4cb2c7['timers'][_0xb837df]={};logger[_0x7a61('0x1e')]('[%s][TIMER:%s][AGENT:%s][QUEUE:%s]',_0x267985,_0x4cb2c7['voiceQueues'][_0x3cbfba][_0x7a61('0x32')],_0xb837df,_0x3cbfba);_0x4cb2c7['timers'][_0xb837df][_0x7a61('0x1a')]=setTimeout(_0x4cb2c7[_0x7a61('0x33')][_0x7a61('0xb')](_0x4cb2c7,_0xb837df),_0x4cb2c7['voiceQueues'][_0x3cbfba]['acwTimeout']*0x3e8);_0x4cb2c7['timers'][_0xb837df]['lastPauseAt']=moment()[_0x7a61('0x34')](_0x7a61('0x35'));_0x4cb2c7[_0x7a61('0x19')][_0xb837df][_0x7a61('0x1c')]=_0x267985;_0x4cb2c7[_0x7a61('0x19')][_0xb837df][_0x7a61('0x26')]=_0x3cbfba;_0x4cb2c7[_0x7a61('0x19')][_0xb837df][_0x7a61('0x36')]=_0x4cb2c7[_0x7a61('0x36')][_0x7a61('0xb')](_0x4cb2c7,_0xb837df,_0x267985);})['catch'](function(){logger['error'](_0x7a61('0x37'),_0x267985,_0x4cb2c7[_0x7a61('0x6')][_0x3cbfba][_0x7a61('0x32')],_0xb837df,_0x3cbfba);})[_0x7a61('0x23')](function(){delete _0x4cb2c7[_0x7a61('0x8')][_0x267985];});}catch(_0x95bfea){logger[_0x7a61('0x21')]('[ACW][START]\x20%s',_0x95bfea['message']);}};Acw['prototype']['stopAcw']=function(_0x356f4e){try{var _0x41997c=this;if(_0x41997c[_0x7a61('0x19')][_0x356f4e]){_0x41997c[_0x7a61('0x19')][_0x356f4e][_0x7a61('0x1a')]=![];var _0x113cc3=_0x41997c[_0x7a61('0x19')][_0x356f4e]['uniqueid'];var _0x389edf=_0x41997c[_0x7a61('0x19')][_0x356f4e]['queue'];var _0x712cbc=_0x41997c[_0x7a61('0x6')][_0x389edf][_0x7a61('0x32')];logger[_0x7a61('0x1e')](_0x7a61('0x38'),_0x113cc3,_0x356f4e);RpcUser['getAgent'](this[_0x7a61('0x7')][_0x356f4e]['id'])[_0x7a61('0x1d')](function(_0x3ba541){if(_0x3ba541[_0x7a61('0x39')]==='ACW'){return RpcUser[_0x7a61('0x3a')](_0x41997c[_0x7a61('0x7')][_0x356f4e]);}});RpcVoiceAgentReport['update']({'acwtime':_0x712cbc,'agentacw':!![]},_0x113cc3,_0x356f4e)['then'](function(_0x393661){logger[_0x7a61('0x1e')](_0x7a61('0x1f'),_0x113cc3,_0x712cbc,_0x393661);})['catch'](function(_0x1578cd){logger[_0x7a61('0x21')](_0x7a61('0x22'),_0x113cc3,_0x1578cd);});}else{logger['error'](_0x7a61('0x3b'),_0x356f4e);if(_0x41997c[_0x7a61('0x19')]){logger[_0x7a61('0x1e')](_0x7a61('0x3c'),JSON[_0x7a61('0x3d')](_0x41997c[_0x7a61('0x19')]));}}}catch(_0x15b079){logger[_0x7a61('0x21')](_0x7a61('0x3e'),_0x15b079['message']);}};Acw[_0x7a61('0x18')]['syncAgentConnect']=function(_0x30d0ab){try{if(this['voiceQueues'][_0x30d0ab[_0x7a61('0x26')]]&&(this['voiceQueues'][_0x30d0ab['queue']]['acw']||this[_0x7a61('0x6')][_0x30d0ab[_0x7a61('0x26')]]['mandatoryDisposition'])){if(this[_0x7a61('0x7')][_0x30d0ab[_0x7a61('0x25')]]){this[_0x7a61('0x8')][_0x30d0ab[_0x7a61('0x1c')]]={'queue':_0x30d0ab[_0x7a61('0x26')],'interface':_0x30d0ab[_0x7a61('0x25')],'destlinkedid':_0x30d0ab[_0x7a61('0x2e')]};}}}catch(_0x5e0d5f){logger[_0x7a61('0x21')](_0x7a61('0x3f'),_0x5e0d5f[_0x7a61('0x40')]);}};Acw['prototype'][_0x7a61('0x14')]=function(_0x42d680){try{if(this['voiceQueues'][_0x42d680[_0x7a61('0x26')]]&&(this[_0x7a61('0x6')][_0x42d680[_0x7a61('0x26')]][_0x7a61('0x3')]||this[_0x7a61('0x6')][_0x42d680[_0x7a61('0x26')]]['mandatoryDisposition'])){if(this['agents'][_0x42d680[_0x7a61('0x25')]]){this['channels'][_0x42d680['uniqueid']]={'queue':_0x42d680[_0x7a61('0x26')],'interface':_0x42d680[_0x7a61('0x25')]};}}}catch(_0x49ba8a){logger[_0x7a61('0x21')](_0x7a61('0x41'),_0x49ba8a[_0x7a61('0x40')]);}};Acw['prototype'][_0x7a61('0xd')]=function(_0x2c16c1){try{if(this['channels'][_0x2c16c1[_0x7a61('0x1c')]]&&_[_0x7a61('0x42')](this[_0x7a61('0x8')][_0x2c16c1['uniqueid']][_0x7a61('0x43')])){logger[_0x7a61('0x1e')]('[%s][HANGUP:UNIQUEID]',_0x2c16c1['uniqueid']);this['startAcw'](_0x2c16c1[_0x7a61('0x1c')]);}else if(this[_0x7a61('0x8')][_0x2c16c1[_0x7a61('0x44')]]&&_[_0x7a61('0x42')](this['channels'][_0x2c16c1[_0x7a61('0x44')]]['attended'])){logger['info'](_0x7a61('0x45'),_0x2c16c1[_0x7a61('0x44')]);this[_0x7a61('0x24')](_0x2c16c1['linkedid']);}}catch(_0x113e88){logger[_0x7a61('0x21')]('[ACW][syncHangupRequest]\x20%s',_0x113e88['message']);}};Acw[_0x7a61('0x18')]['syncHangup']=function(_0x3b3641){try{if(this[_0x7a61('0x8')][_0x3b3641[_0x7a61('0x1c')]]&&this['channels'][_0x3b3641[_0x7a61('0x1c')]]['attended']){logger['info'](_0x7a61('0x46'),_0x3b3641[_0x7a61('0x1c')]);this[_0x7a61('0x24')](_0x3b3641[_0x7a61('0x1c')]);}else if(this[_0x7a61('0x8')][_0x3b3641['linkedid']]&&this['channels'][_0x3b3641['linkedid']][_0x7a61('0x43')]){logger[_0x7a61('0x1e')](_0x7a61('0x47'),_0x3b3641['linkedid']);this[_0x7a61('0x24')](_0x3b3641[_0x7a61('0x44')]);}}catch(_0x20a661){logger['error'](_0x7a61('0x48'),_0x20a661['message']);}};Acw[_0x7a61('0x18')][_0x7a61('0x10')]=function(_0x41e7b2){try{if(!_[_0x7a61('0x49')](this[_0x7a61('0x8')][_0x41e7b2[_0x7a61('0x4a')]])){this[_0x7a61('0x24')](_0x41e7b2[_0x7a61('0x4a')]);if(this[_0x7a61('0x8')][_0x41e7b2[_0x7a61('0x4b')]]){this[_0x7a61('0x8')][_0x41e7b2[_0x7a61('0x4b')]][_0x7a61('0x43')]=!![];this[_0x7a61('0x8')][_0x41e7b2[_0x7a61('0x4c')]]=this['channels'][_0x41e7b2['secondtransfereruniqueid']];delete this['channels'][_0x41e7b2[_0x7a61('0x4b')]];}}else if(!_[_0x7a61('0x49')](this[_0x7a61('0x8')][_0x41e7b2[_0x7a61('0x4c')]])){this['startAcw'](_0x41e7b2[_0x7a61('0x4c')]);if(this['channels'][_0x41e7b2[_0x7a61('0x4d')]]){this['channels'][_0x41e7b2[_0x7a61('0x4d')]][_0x7a61('0x43')]=!![];this['channels'][_0x41e7b2[_0x7a61('0x4a')]]=this[_0x7a61('0x8')][_0x41e7b2[_0x7a61('0x4d')]];delete this[_0x7a61('0x8')][_0x41e7b2[_0x7a61('0x4d')]];}}}catch(_0x4d7abe){logger[_0x7a61('0x21')](_0x7a61('0x4e'),_0x4d7abe[_0x7a61('0x40')]);}};Acw[_0x7a61('0x18')]['syncBlindTransfer']=function(_0x1ed397){try{if(this[_0x7a61('0x8')][_0x1ed397[_0x7a61('0x4f')]]){logger[_0x7a61('0x1e')](_0x7a61('0x50'),JSON[_0x7a61('0x3d')](_0x1ed397[_0x7a61('0x4f')]));this['startAcw'](_0x1ed397['transfereruniqueid']);}else if(this[_0x7a61('0x8')][_0x1ed397[_0x7a61('0x51')]]){logger[_0x7a61('0x1e')](_0x7a61('0x52'),JSON[_0x7a61('0x3d')](_0x1ed397['transfererlinkedid']));this[_0x7a61('0x24')](_0x1ed397[_0x7a61('0x51')]);}}catch(_0x2c0885){logger[_0x7a61('0x21')](_0x7a61('0x53'),_0x2c0885['message']);}};Acw[_0x7a61('0x18')][_0x7a61('0x54')]=function(_0x5504c7){try{if(this[_0x7a61('0x6')][_0x5504c7[_0x7a61('0x26')]]&&this[_0x7a61('0x6')][_0x5504c7['queue']][_0x7a61('0x55')]==='all'){if(this[_0x7a61('0x7')][_0x5504c7['interface']]){logger[_0x7a61('0x1e')](_0x7a61('0x56'),_0x5504c7[_0x7a61('0x1c')],_0x5504c7[_0x7a61('0x25')],_0x5504c7[_0x7a61('0x26')]);return RpcUser['savePause'](this[_0x7a61('0x7')][_0x5504c7[_0x7a61('0x25')]],_0x7a61('0x57'),_0x5504c7[_0x7a61('0x1c')]);}}}catch(_0x35ab4f){logger[_0x7a61('0x21')](_0x7a61('0x58'),_0x35ab4f['message']);}};module[_0x7a61('0x59')]=Acw;