Built motion from commit d1eab355.|2.6.28
[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 _0x3dfd=['[ACW][STOP]\x20Interface\x20%s\x20doesn\x27t\x20have\x20timer','stringify','[ACW][STOP]\x20%s','[ACW][syncAgentConnectPreview]\x20%s','isUndefined','[%s][HANGUP:LINKEDID]','linkedid','[ACW][syncHangupRequest]\x20%s','[%s][HANGUPATTENDEDTRANSFER:UNIQUEID]','[%s][HANGUPATTENDEDTRANSFER:LINKEDID]','[ACW][syncHangup]\x20%s','isNil','transfereeuniqueid','secondtransfereruniqueid','transfertargetuniqueid','origtransfereruniqueid','[ACW][syncAttendedTransfer]\x20%s','transfereruniqueid','transfererlinkedid','[%s][BLINDTRANSFER:LINKEDID]','syncAgentRingNoAnswer','all','[%s][AUTOPAUSE][AGENT:%s][QUEUE:%]','savePause','Auto-Pause','[ACW][syncAgentRingNoAnswer]\x20%s','moment','../../../config/logger','acw','../rpc/user','../rpc/voiceAgentReport','agents','timers','channels','bind','hanguprequest','syncHangupRequest','hangup','syncHangup','attendedtransfer','syncAttendedTransfer','blindtransfer','syncBlindTransfer','custom:agentConnectPreview','syncAgentConnectPreview','milliseconds','diff','seconds','prototype','updateAcw','timer','update','then','info','[%s][UPDATE][ACWTIME:%s]','catch','[%s][UPDATE][ERRORS:%s]','finally','startAcw','interface','queue','voiceQueues','mandatoryDisposition','mandatoryDispositionPause','name','Action','QueuePause','getAgent','[%s][INPAUSE][AGENT:%s][QUEUE:%s]','[%s][START][AGENT:%s][QUEUE:%s]','attended','destlinkedid','available','paused','[%s][TIMER:%s][AGENT:%s][QUEUE:%s]','stopAcw','acwTimeout','lastPauseAt','format','uniqueid','error','[ACW][START]\x20%s','message','[%s][TIMER][STOP][AGENT:%s]','ACW','saveUnpause'];(function(_0x20a584,_0xe384a5){var _0x4b41a8=function(_0x2127c6){while(--_0x2127c6){_0x20a584['push'](_0x20a584['shift']());}};_0x4b41a8(++_0xe384a5);}(_0x3dfd,0x70));var _0xd3df=function(_0x1b6186,_0x1ec7f2){_0x1b6186=_0x1b6186-0x0;var _0x186121=_0x3dfd[_0x1b6186];return _0x186121;};'use strict';var _=require('lodash');var moment=require(_0xd3df('0x0'));var ami=require('../ami');var logger=require(_0xd3df('0x1'))(_0xd3df('0x2'));var RpcUser=require(_0xd3df('0x3'));var RpcVoiceAgentReport=require(_0xd3df('0x4'));function Acw(_0xfc7246){this['voiceQueues']=_0xfc7246['voiceQueues'];this[_0xd3df('0x5')]=_0xfc7246['agents'];this[_0xd3df('0x6')]=_0xfc7246['timers'];this[_0xd3df('0x7')]={};ami['on']('agentconnect',this['syncAgentConnect'][_0xd3df('0x8')](this));ami['on'](_0xd3df('0x9'),this[_0xd3df('0xa')][_0xd3df('0x8')](this));ami['on'](_0xd3df('0xb'),this[_0xd3df('0xc')][_0xd3df('0x8')](this));ami['on']('agentringnoanswer',this['syncAgentRingNoAnswer'][_0xd3df('0x8')](this));ami['on'](_0xd3df('0xd'),this[_0xd3df('0xe')][_0xd3df('0x8')](this));ami['on'](_0xd3df('0xf'),this[_0xd3df('0x10')]['bind'](this));ami['on'](_0xd3df('0x11'),this[_0xd3df('0x12')][_0xd3df('0x8')](this));}function getDiff(_0x447329){var _0x11e614=moment()[_0xd3df('0x13')](0x0);var _0x2ee86d=moment(_0x447329)[_0xd3df('0x13')](0x0);return _0x11e614[_0xd3df('0x14')](_0x2ee86d,_0xd3df('0x15'));}Acw[_0xd3df('0x16')][_0xd3df('0x17')]=function(_0x1fb2fb,_0x56b5ba){var _0x447eb8=this;var _0x8f0f1e=getDiff(_0x447eb8[_0xd3df('0x6')][_0x1fb2fb]['lastPauseAt']);clearTimeout(_0x447eb8[_0xd3df('0x6')][_0x1fb2fb][_0xd3df('0x18')]);_0x447eb8['timers'][_0x1fb2fb][_0xd3df('0x18')]=![];return RpcVoiceAgentReport[_0xd3df('0x19')]({'acwtime':_0x8f0f1e},_0x447eb8[_0xd3df('0x6')][_0x1fb2fb]['uniqueid'],_0x1fb2fb)[_0xd3df('0x1a')](function(_0x97b87e){logger[_0xd3df('0x1b')](_0xd3df('0x1c'),_0x56b5ba,_0x8f0f1e,_0x97b87e);})[_0xd3df('0x1d')](function(_0x4dd38d){logger['error'](_0xd3df('0x1e'),_0x56b5ba,_0x4dd38d);})[_0xd3df('0x1f')](function(){delete _0x447eb8[_0xd3df('0x6')][_0x1fb2fb];});};Acw[_0xd3df('0x16')][_0xd3df('0x20')]=function(_0x4f08d2){try{var _0x11a9d7=this;var _0x1647d0=this[_0xd3df('0x7')][_0x4f08d2][_0xd3df('0x21')];var _0x27fbe3=this['channels'][_0x4f08d2][_0xd3df('0x22')];var _0x53e2f2=this[_0xd3df('0x23')][_0x27fbe3];var _0x2d24e6=![];var _0x47d6df='ACW';if(_0x53e2f2[_0xd3df('0x24')]&&_0x53e2f2[_0xd3df('0x25')][_0xd3df('0x26')]){_0x2d24e6=!![];_0x47d6df=_0x53e2f2[_0xd3df('0x25')][_0xd3df('0x26')];}return ami[_0xd3df('0x27')]({'action':_0xd3df('0x28'),'interface':_0x1647d0,'paused':!![],'reason':_0x47d6df})['then'](function(){if(_0x11a9d7[_0xd3df('0x5')][_0x1647d0]){return RpcUser[_0xd3df('0x29')](_0x11a9d7[_0xd3df('0x5')][_0x1647d0]['id'])[_0xd3df('0x1a')](function(_0x5a108b){if(!_0x5a108b||_0x5a108b['voicePause']){logger['info'](_0xd3df('0x2a'),_0x4f08d2,_0x1647d0,_0x27fbe3);return;}logger[_0xd3df('0x1b')](_0xd3df('0x2b'),_0x4f08d2,_0x1647d0,_0x27fbe3);var _0x2bf46d=_0x11a9d7['channels'][_0x4f08d2][_0xd3df('0x2c')]&&_0x11a9d7[_0xd3df('0x7')][_0x4f08d2]['destlinkedid']?_0x11a9d7[_0xd3df('0x7')][_0x4f08d2][_0xd3df('0x2d')]:_0x4f08d2;return RpcUser['savePause'](_0x11a9d7['agents'][_0x1647d0],_0x47d6df,_0x2bf46d)[_0xd3df('0x1a')](function(_0x87a8cf){_0x11a9d7[_0xd3df('0x23')][_0x27fbe3][_0xd3df('0x2e')]-=0x1;_0x11a9d7[_0xd3df('0x23')][_0x27fbe3][_0xd3df('0x2f')]+=0x1;return _0x87a8cf;});})[_0xd3df('0x1a')](function(_0x4f2ebb){if(_0x2d24e6||!_0x4f2ebb){return;}_0x11a9d7[_0xd3df('0x6')][_0x1647d0]={};logger[_0xd3df('0x1b')](_0xd3df('0x30'),_0x4f08d2,_0x11a9d7[_0xd3df('0x23')][_0x27fbe3]['acwTimeout'],_0x1647d0,_0x27fbe3);_0x11a9d7[_0xd3df('0x6')][_0x1647d0][_0xd3df('0x18')]=setTimeout(_0x11a9d7[_0xd3df('0x31')][_0xd3df('0x8')](_0x11a9d7,_0x1647d0),_0x11a9d7[_0xd3df('0x23')][_0x27fbe3][_0xd3df('0x32')]*0x3e8);_0x11a9d7[_0xd3df('0x6')][_0x1647d0][_0xd3df('0x33')]=moment()[_0xd3df('0x34')]('YYYY-MM-DD\x20HH:mm:ss');_0x11a9d7[_0xd3df('0x6')][_0x1647d0][_0xd3df('0x35')]=_0x4f08d2;_0x11a9d7[_0xd3df('0x6')][_0x1647d0][_0xd3df('0x22')]=_0x27fbe3;_0x11a9d7[_0xd3df('0x6')][_0x1647d0][_0xd3df('0x17')]=_0x11a9d7['updateAcw'][_0xd3df('0x8')](_0x11a9d7,_0x1647d0,_0x4f08d2);});}})['catch'](function(){logger['error'](_0xd3df('0x30'),_0x4f08d2,_0x11a9d7[_0xd3df('0x23')][_0x27fbe3]['acwTimeout'],_0x1647d0,_0x27fbe3);})[_0xd3df('0x1f')](function(){delete _0x11a9d7[_0xd3df('0x7')][_0x4f08d2];});}catch(_0x56a1c3){logger[_0xd3df('0x36')](_0xd3df('0x37'),_0x56a1c3[_0xd3df('0x38')]);}};Acw[_0xd3df('0x16')][_0xd3df('0x31')]=function(_0x1a569c){try{var _0x492714=this;if(_0x492714[_0xd3df('0x6')][_0x1a569c]){_0x492714[_0xd3df('0x6')][_0x1a569c][_0xd3df('0x18')]=![];var _0x5c0b5d=_0x492714[_0xd3df('0x6')][_0x1a569c][_0xd3df('0x35')];var _0x4e397b=_0x492714[_0xd3df('0x6')][_0x1a569c][_0xd3df('0x22')];var _0x38aa2c=_0x492714[_0xd3df('0x23')][_0x4e397b]['acwTimeout'];logger['info'](_0xd3df('0x39'),_0x5c0b5d,_0x1a569c);RpcUser[_0xd3df('0x29')](this[_0xd3df('0x5')][_0x1a569c]['id'])['then'](function(_0x4f90ff){if(_0x4f90ff['pauseType']===_0xd3df('0x3a')){return RpcUser[_0xd3df('0x3b')](_0x492714[_0xd3df('0x5')][_0x1a569c]);}});RpcVoiceAgentReport['update']({'acwtime':_0x38aa2c,'agentacw':!![]},_0x5c0b5d,_0x1a569c)[_0xd3df('0x1a')](function(_0x10d6d6){logger[_0xd3df('0x1b')](_0xd3df('0x1c'),_0x5c0b5d,_0x38aa2c,_0x10d6d6);})[_0xd3df('0x1d')](function(_0x117fbd){logger[_0xd3df('0x36')](_0xd3df('0x1e'),_0x5c0b5d,_0x117fbd);});}else{logger[_0xd3df('0x36')](_0xd3df('0x3c'),_0x1a569c);if(_0x492714[_0xd3df('0x6')]){logger['info']('[ACW][TIMERS]',JSON[_0xd3df('0x3d')](_0x492714['timers']));}}}catch(_0x2b94c6){logger['error'](_0xd3df('0x3e'),_0x2b94c6[_0xd3df('0x38')]);}};Acw[_0xd3df('0x16')]['syncAgentConnect']=function(_0x5c3dd6){try{if(this['voiceQueues'][_0x5c3dd6[_0xd3df('0x22')]]&&(this[_0xd3df('0x23')][_0x5c3dd6[_0xd3df('0x22')]][_0xd3df('0x2')]||this[_0xd3df('0x23')][_0x5c3dd6['queue']][_0xd3df('0x24')])){if(this[_0xd3df('0x5')][_0x5c3dd6[_0xd3df('0x21')]]){this[_0xd3df('0x7')][_0x5c3dd6[_0xd3df('0x35')]]={'queue':_0x5c3dd6[_0xd3df('0x22')],'interface':_0x5c3dd6['interface'],'destlinkedid':_0x5c3dd6[_0xd3df('0x2d')]};}}}catch(_0x47efc1){logger['error']('[ACW][syncAgentConnect]\x20%s',_0x47efc1[_0xd3df('0x38')]);}};Acw[_0xd3df('0x16')]['syncAgentConnectPreview']=function(_0xb3a543){try{if(this[_0xd3df('0x23')][_0xb3a543['queue']]&&(this['voiceQueues'][_0xb3a543[_0xd3df('0x22')]][_0xd3df('0x2')]||this[_0xd3df('0x23')][_0xb3a543['queue']][_0xd3df('0x24')])){if(this['agents'][_0xb3a543[_0xd3df('0x21')]]){this[_0xd3df('0x7')][_0xb3a543[_0xd3df('0x35')]]={'queue':_0xb3a543[_0xd3df('0x22')],'interface':_0xb3a543['interface']};}}}catch(_0x197f17){logger['error'](_0xd3df('0x3f'),_0x197f17['message']);}};Acw[_0xd3df('0x16')][_0xd3df('0xa')]=function(_0x50c829){try{if(this[_0xd3df('0x7')][_0x50c829[_0xd3df('0x35')]]&&_[_0xd3df('0x40')](this['channels'][_0x50c829['uniqueid']][_0xd3df('0x2c')])){logger[_0xd3df('0x1b')]('[%s][HANGUP:UNIQUEID]',_0x50c829[_0xd3df('0x35')]);this['startAcw'](_0x50c829[_0xd3df('0x35')]);}else if(this[_0xd3df('0x7')][_0x50c829['linkedid']]&&_['isUndefined'](this[_0xd3df('0x7')][_0x50c829['linkedid']][_0xd3df('0x2c')])){logger[_0xd3df('0x1b')](_0xd3df('0x41'),_0x50c829[_0xd3df('0x42')]);this[_0xd3df('0x20')](_0x50c829['linkedid']);}}catch(_0x385332){logger[_0xd3df('0x36')](_0xd3df('0x43'),_0x385332[_0xd3df('0x38')]);}};Acw[_0xd3df('0x16')][_0xd3df('0xc')]=function(_0x439a9d){try{if(this[_0xd3df('0x7')][_0x439a9d[_0xd3df('0x35')]]&&this[_0xd3df('0x7')][_0x439a9d[_0xd3df('0x35')]]['attended']){logger[_0xd3df('0x1b')](_0xd3df('0x44'),_0x439a9d[_0xd3df('0x35')]);this[_0xd3df('0x20')](_0x439a9d['uniqueid']);}else if(this[_0xd3df('0x7')][_0x439a9d[_0xd3df('0x42')]]&&this[_0xd3df('0x7')][_0x439a9d['linkedid']]['attended']){logger[_0xd3df('0x1b')](_0xd3df('0x45'),_0x439a9d['linkedid']);this['startAcw'](_0x439a9d[_0xd3df('0x42')]);}}catch(_0x56d475){logger[_0xd3df('0x36')](_0xd3df('0x46'),_0x56d475['message']);}};Acw[_0xd3df('0x16')][_0xd3df('0xe')]=function(_0x2b029d){try{if(!_[_0xd3df('0x47')](this[_0xd3df('0x7')][_0x2b029d['transfereeuniqueid']])){this[_0xd3df('0x20')](_0x2b029d[_0xd3df('0x48')]);if(this[_0xd3df('0x7')][_0x2b029d[_0xd3df('0x49')]]){this[_0xd3df('0x7')][_0x2b029d[_0xd3df('0x49')]][_0xd3df('0x2c')]=!![];this[_0xd3df('0x7')][_0x2b029d[_0xd3df('0x4a')]]=this['channels'][_0x2b029d[_0xd3df('0x49')]];delete this[_0xd3df('0x7')][_0x2b029d[_0xd3df('0x49')]];}}else if(!_[_0xd3df('0x47')](this[_0xd3df('0x7')][_0x2b029d[_0xd3df('0x4a')]])){this[_0xd3df('0x20')](_0x2b029d[_0xd3df('0x4a')]);if(this[_0xd3df('0x7')][_0x2b029d['origtransfereruniqueid']]){this['channels'][_0x2b029d[_0xd3df('0x4b')]][_0xd3df('0x2c')]=!![];this[_0xd3df('0x7')][_0x2b029d[_0xd3df('0x48')]]=this[_0xd3df('0x7')][_0x2b029d[_0xd3df('0x4b')]];delete this['channels'][_0x2b029d[_0xd3df('0x4b')]];}}}catch(_0x1f0b60){logger[_0xd3df('0x36')](_0xd3df('0x4c'),_0x1f0b60[_0xd3df('0x38')]);}};Acw[_0xd3df('0x16')]['syncBlindTransfer']=function(_0x511977){try{if(this[_0xd3df('0x7')][_0x511977['transfereruniqueid']]){logger['info']('[%s][BLINDTRANSFER:UNIQUEID]',JSON[_0xd3df('0x3d')](_0x511977[_0xd3df('0x4d')]));this[_0xd3df('0x20')](_0x511977[_0xd3df('0x4d')]);}else if(this[_0xd3df('0x7')][_0x511977[_0xd3df('0x4e')]]){logger[_0xd3df('0x1b')](_0xd3df('0x4f'),JSON[_0xd3df('0x3d')](_0x511977[_0xd3df('0x4e')]));this[_0xd3df('0x20')](_0x511977[_0xd3df('0x4e')]);}}catch(_0x4ffeda){logger['error']('[ACW][syncBlindTransfer]\x20%s',_0x4ffeda[_0xd3df('0x38')]);}};Acw[_0xd3df('0x16')][_0xd3df('0x50')]=function(_0x26601f){try{if(this[_0xd3df('0x23')][_0x26601f['queue']]&&this[_0xd3df('0x23')][_0x26601f[_0xd3df('0x22')]]['autopause']===_0xd3df('0x51')){if(this[_0xd3df('0x5')][_0x26601f['interface']]){logger['info'](_0xd3df('0x52'),_0x26601f[_0xd3df('0x35')],_0x26601f[_0xd3df('0x21')],_0x26601f[_0xd3df('0x22')]);return RpcUser[_0xd3df('0x53')](this[_0xd3df('0x5')][_0x26601f[_0xd3df('0x21')]],_0xd3df('0x54'),_0x26601f['uniqueid']);}}}catch(_0xb68c0b){logger['error'](_0xd3df('0x55'),_0xb68c0b['message']);}};module['exports']=Acw;