Built motion from commit b5413ace.|2.6.9
[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 _0x8da8=['Action','QueuePause','then','getAgent','info','[%s][START][AGENT:%s][QUEUE:%s]','destlinkedid','savePause','acwTimeout','stopAcw','lastPauseAt','format','YYYY-MM-DD\x20HH:mm:ss','uniqueid','updateAcw','timer','update','[%s][UPDATE][ACWTIME:%s]','catch','error','[%s][UPDATE][ERRORS:%s]','[%s][INPAUSE][AGENT:%s][QUEUE:%s]','[%s][TIMER:%s][AGENT:%s][QUEUE:%s]','finally','[ACW][START]\x20%s','message','prototype','[%s][TIMER][STOP][AGENT:%s]','saveUnpause','[ACW][STOP]\x20Interface\x20%s\x20doesn\x27t\x20have\x20timer','stringify','[ACW][STOP]\x20%s','acw','[ACW][syncAgentConnect]\x20%s','syncHangupRequest','isUndefined','attended','[%s][HANGUP:LINKEDID]','linkedid','[ACW][syncHangupRequest]\x20%s','[ACW][syncHangup]\x20%s','syncAttendedTransfer','isNil','transfereeuniqueid','secondtransfereruniqueid','transfertargetuniqueid','origtransfereruniqueid','[ACW][syncAttendedTransfer]\x20%s','syncBlindTransfer','[%s][BLINDTRANSFER:UNIQUEID]','transfereruniqueid','transfererlinkedid','[%s][BLINDTRANSFER:LINKEDID]','autopause','[%s][AUTOPAUSE][AGENT:%s][QUEUE:%]','Auto-Pause','exports','util','lodash','moment','../ami','../rpc/user','../rpc/voiceAgentReport','voiceQueues','agents','timers','channels','agentconnect','syncAgentConnect','bind','hanguprequest','hangup','agentringnoanswer','syncAgentRingNoAnswer','attendedtransfer','blindtransfer','syncAgentConnectPreview','milliseconds','seconds','startAcw','interface','queue','ACW','mandatoryDisposition','mandatoryDispositionPause','name'];(function(_0x4c6eaa,_0x391f8b){var _0x403439=function(_0x3dd4e7){while(--_0x3dd4e7){_0x4c6eaa['push'](_0x4c6eaa['shift']());}};_0x403439(++_0x391f8b);}(_0x8da8,0x8f));var _0x88da=function(_0x2fb1ba,_0x2796b5){_0x2fb1ba=_0x2fb1ba-0x0;var _0xaf78f1=_0x8da8[_0x2fb1ba];return _0xaf78f1;};'use strict';var util=require(_0x88da('0x0'));var _=require(_0x88da('0x1'));var moment=require(_0x88da('0x2'));var ami=require(_0x88da('0x3'));var logger=require('../../../config/logger')('acw');var RpcUser=require(_0x88da('0x4'));var RpcVoiceAgentReport=require(_0x88da('0x5'));function Acw(_0x4f31f7){this[_0x88da('0x6')]=_0x4f31f7[_0x88da('0x6')];this['agents']=_0x4f31f7[_0x88da('0x7')];this[_0x88da('0x8')]=_0x4f31f7[_0x88da('0x8')];this[_0x88da('0x9')]={};ami['on'](_0x88da('0xa'),this[_0x88da('0xb')][_0x88da('0xc')](this));ami['on'](_0x88da('0xd'),this['syncHangupRequest'][_0x88da('0xc')](this));ami['on'](_0x88da('0xe'),this['syncHangup']['bind'](this));ami['on'](_0x88da('0xf'),this[_0x88da('0x10')][_0x88da('0xc')](this));ami['on'](_0x88da('0x11'),this['syncAttendedTransfer'][_0x88da('0xc')](this));ami['on'](_0x88da('0x12'),this['syncBlindTransfer'][_0x88da('0xc')](this));ami['on']('custom:agentConnectPreview',this[_0x88da('0x13')][_0x88da('0xc')](this));}function getDiff(_0x52d2bd){var _0x494e56=moment()[_0x88da('0x14')](0x0);var _0x1c3838=moment(_0x52d2bd)['milliseconds'](0x0);return _0x494e56['diff'](_0x1c3838,_0x88da('0x15'));}Acw['prototype'][_0x88da('0x16')]=function(_0x1f3f89){try{var _0x5efcdc=this;var _0x257887=this[_0x88da('0x9')][_0x1f3f89][_0x88da('0x17')];var _0x8bc0cd=this[_0x88da('0x9')][_0x1f3f89][_0x88da('0x18')];var _0x1a361a=this[_0x88da('0x6')][_0x8bc0cd];var _0x57121d=![];var _0x3cf669=_0x88da('0x19');if(_0x1a361a[_0x88da('0x1a')]){if(_0x1a361a[_0x88da('0x1b')][_0x88da('0x1c')]){_0x57121d=!![];_0x3cf669=_0x1a361a['mandatoryDispositionPause'][_0x88da('0x1c')];}}ami[_0x88da('0x1d')]({'action':_0x88da('0x1e'),'interface':_0x257887,'paused':!![],'reason':_0x3cf669})[_0x88da('0x1f')](function(_0x30e53f){if(_0x5efcdc['agents'][_0x257887]){return RpcUser[_0x88da('0x20')](_0x5efcdc[_0x88da('0x7')][_0x257887]['id'])[_0x88da('0x1f')](function(_0x3ba11d){if(_0x3ba11d&&!_0x3ba11d['voicePause']){logger[_0x88da('0x21')](_0x88da('0x22'),_0x1f3f89,_0x257887,_0x8bc0cd);var _0x2b9a49=_0x5efcdc[_0x88da('0x9')][_0x1f3f89]['attended']&&_0x5efcdc[_0x88da('0x9')][_0x1f3f89][_0x88da('0x23')]?_0x5efcdc[_0x88da('0x9')][_0x1f3f89]['destlinkedid']:_0x1f3f89;return RpcUser[_0x88da('0x24')](_0x5efcdc[_0x88da('0x7')][_0x257887],_0x3cf669,_0x2b9a49)[_0x88da('0x1f')](function(_0x53eeae){if(!_0x57121d){_0x5efcdc[_0x88da('0x8')][_0x257887]={};logger[_0x88da('0x21')]('[%s][TIMER:%s][AGENT:%s][QUEUE:%s]',_0x1f3f89,_0x5efcdc[_0x88da('0x6')][_0x8bc0cd][_0x88da('0x25')],_0x257887,_0x8bc0cd);_0x5efcdc[_0x88da('0x8')][_0x257887]['timer']=setTimeout(_0x5efcdc[_0x88da('0x26')]['bind'](_0x5efcdc,_0x257887),_0x5efcdc[_0x88da('0x6')][_0x8bc0cd][_0x88da('0x25')]*0x3e8);_0x5efcdc[_0x88da('0x8')][_0x257887][_0x88da('0x27')]=moment()[_0x88da('0x28')](_0x88da('0x29'));_0x5efcdc[_0x88da('0x8')][_0x257887][_0x88da('0x2a')]=_0x1f3f89;_0x5efcdc[_0x88da('0x8')][_0x257887]['queue']=_0x8bc0cd;_0x5efcdc['timers'][_0x257887][_0x88da('0x2b')]=function(){var _0x23609d=getDiff(_0x5efcdc[_0x88da('0x8')][_0x257887][_0x88da('0x27')]);clearTimeout(_0x5efcdc[_0x88da('0x8')][_0x257887][_0x88da('0x2c')]);_0x5efcdc[_0x88da('0x8')][_0x257887][_0x88da('0x2c')]=![];RpcVoiceAgentReport[_0x88da('0x2d')]({'acwtime':_0x23609d},_0x5efcdc[_0x88da('0x8')][_0x257887][_0x88da('0x2a')],_0x257887)[_0x88da('0x1f')](function(_0x4f6957){logger[_0x88da('0x21')](_0x88da('0x2e'),_0x1f3f89,_0x23609d,_0x4f6957);})[_0x88da('0x2f')](function(_0x571b36){logger[_0x88da('0x30')](_0x88da('0x31'),_0x1f3f89,_0x571b36);});delete _0x5efcdc['timers'][_0x257887];};}});}else{logger[_0x88da('0x21')](_0x88da('0x32'),_0x1f3f89,_0x257887,_0x8bc0cd);}});}})[_0x88da('0x2f')](function(_0x24f600){logger['error'](_0x88da('0x33'),_0x1f3f89,_0x5efcdc[_0x88da('0x6')][_0x8bc0cd]['acwTimeout'],_0x257887,_0x8bc0cd);})[_0x88da('0x34')](function(){delete _0x5efcdc['channels'][_0x1f3f89];});}catch(_0x3499ca){logger[_0x88da('0x30')](_0x88da('0x35'),_0x3499ca[_0x88da('0x36')]);}};Acw[_0x88da('0x37')]['stopAcw']=function(_0x4d2e42){try{var _0x43ffcc=this;if(_0x43ffcc[_0x88da('0x8')][_0x4d2e42]){_0x43ffcc[_0x88da('0x8')][_0x4d2e42][_0x88da('0x2c')]=![];var _0x2b0866=_0x43ffcc[_0x88da('0x8')][_0x4d2e42][_0x88da('0x2a')];var _0x5a1ff1=_0x43ffcc['timers'][_0x4d2e42][_0x88da('0x18')];var _0x4bb4e3=_0x43ffcc['voiceQueues'][_0x5a1ff1][_0x88da('0x25')];logger['info'](_0x88da('0x38'),_0x2b0866,_0x4d2e42);RpcUser[_0x88da('0x39')](this[_0x88da('0x7')][_0x4d2e42]);RpcVoiceAgentReport[_0x88da('0x2d')]({'acwtime':_0x4bb4e3,'agentacw':!![]},_0x2b0866,_0x4d2e42)[_0x88da('0x1f')](function(_0x402cca){logger['info'](_0x88da('0x2e'),_0x2b0866,_0x4bb4e3,_0x402cca);})[_0x88da('0x2f')](function(_0x51920f){logger[_0x88da('0x30')](_0x88da('0x31'),_0x2b0866,_0x51920f);});}else{logger[_0x88da('0x30')](_0x88da('0x3a'),_0x4d2e42);if(_0x43ffcc[_0x88da('0x8')]){logger['info']('[ACW][TIMERS]',JSON[_0x88da('0x3b')](_0x43ffcc['timers']));}}}catch(_0x184a3a){logger[_0x88da('0x30')](_0x88da('0x3c'),_0x184a3a[_0x88da('0x36')]);}};Acw[_0x88da('0x37')][_0x88da('0xb')]=function(_0x58a4ff){try{if(this[_0x88da('0x6')][_0x58a4ff[_0x88da('0x18')]]&&(this['voiceQueues'][_0x58a4ff[_0x88da('0x18')]][_0x88da('0x3d')]||this['voiceQueues'][_0x58a4ff[_0x88da('0x18')]][_0x88da('0x1a')])){if(this[_0x88da('0x7')][_0x58a4ff['interface']]){this[_0x88da('0x9')][_0x58a4ff[_0x88da('0x2a')]]={'queue':_0x58a4ff[_0x88da('0x18')],'interface':_0x58a4ff[_0x88da('0x17')],'destlinkedid':_0x58a4ff[_0x88da('0x23')]};}}}catch(_0x105be8){logger['error'](_0x88da('0x3e'),_0x105be8['message']);}};Acw[_0x88da('0x37')][_0x88da('0x13')]=function(_0x3b6541){try{if(this['voiceQueues'][_0x3b6541[_0x88da('0x18')]]&&(this[_0x88da('0x6')][_0x3b6541[_0x88da('0x18')]][_0x88da('0x3d')]||this[_0x88da('0x6')][_0x3b6541[_0x88da('0x18')]][_0x88da('0x1a')])){if(this[_0x88da('0x7')][_0x3b6541[_0x88da('0x17')]]){this[_0x88da('0x9')][_0x3b6541[_0x88da('0x2a')]]={'queue':_0x3b6541[_0x88da('0x18')],'interface':_0x3b6541[_0x88da('0x17')]};}}}catch(_0x33012e){logger['error']('[ACW][syncAgentConnectPreview]\x20%s',_0x33012e[_0x88da('0x36')]);}};Acw[_0x88da('0x37')][_0x88da('0x3f')]=function(_0xd82b32){try{if(this[_0x88da('0x9')][_0xd82b32[_0x88da('0x2a')]]&&_[_0x88da('0x40')](this[_0x88da('0x9')][_0xd82b32[_0x88da('0x2a')]][_0x88da('0x41')])){logger[_0x88da('0x21')]('[%s][HANGUP:UNIQUEID]',_0xd82b32[_0x88da('0x2a')]);this['startAcw'](_0xd82b32[_0x88da('0x2a')]);}else if(this[_0x88da('0x9')][_0xd82b32['linkedid']]&&_[_0x88da('0x40')](this[_0x88da('0x9')][_0xd82b32['linkedid']][_0x88da('0x41')])){logger['info'](_0x88da('0x42'),_0xd82b32[_0x88da('0x43')]);this[_0x88da('0x16')](_0xd82b32[_0x88da('0x43')]);}}catch(_0x5ca5cf){logger[_0x88da('0x30')](_0x88da('0x44'),_0x5ca5cf['message']);}};Acw[_0x88da('0x37')]['syncHangup']=function(_0x55f760){try{if(this['channels'][_0x55f760[_0x88da('0x2a')]]&&this[_0x88da('0x9')][_0x55f760['uniqueid']][_0x88da('0x41')]){logger['info']('[%s][HANGUPATTENDEDTRANSFER:UNIQUEID]',_0x55f760[_0x88da('0x2a')]);this[_0x88da('0x16')](_0x55f760[_0x88da('0x2a')]);}else if(this[_0x88da('0x9')][_0x55f760[_0x88da('0x43')]]&&this['channels'][_0x55f760['linkedid']][_0x88da('0x41')]){logger[_0x88da('0x21')]('[%s][HANGUPATTENDEDTRANSFER:LINKEDID]',_0x55f760[_0x88da('0x43')]);this[_0x88da('0x16')](_0x55f760[_0x88da('0x43')]);}}catch(_0x2a9233){logger[_0x88da('0x30')](_0x88da('0x45'),_0x2a9233[_0x88da('0x36')]);}};Acw[_0x88da('0x37')][_0x88da('0x46')]=function(_0x3ca10e){try{if(!_[_0x88da('0x47')](this[_0x88da('0x9')][_0x3ca10e[_0x88da('0x48')]])){this['startAcw'](_0x3ca10e[_0x88da('0x48')]);if(this[_0x88da('0x9')][_0x3ca10e['secondtransfereruniqueid']]){this[_0x88da('0x9')][_0x3ca10e[_0x88da('0x49')]][_0x88da('0x41')]=!![];this[_0x88da('0x9')][_0x3ca10e[_0x88da('0x4a')]]=this[_0x88da('0x9')][_0x3ca10e[_0x88da('0x49')]];delete this[_0x88da('0x9')][_0x3ca10e[_0x88da('0x49')]];}}else if(!_[_0x88da('0x47')](this[_0x88da('0x9')][_0x3ca10e[_0x88da('0x4a')]])){this[_0x88da('0x16')](_0x3ca10e[_0x88da('0x4a')]);if(this[_0x88da('0x9')][_0x3ca10e[_0x88da('0x4b')]]){this[_0x88da('0x9')][_0x3ca10e[_0x88da('0x4b')]][_0x88da('0x41')]=!![];this[_0x88da('0x9')][_0x3ca10e[_0x88da('0x48')]]=this['channels'][_0x3ca10e[_0x88da('0x4b')]];delete this[_0x88da('0x9')][_0x3ca10e[_0x88da('0x4b')]];}}}catch(_0x19748f){logger[_0x88da('0x30')](_0x88da('0x4c'),_0x19748f[_0x88da('0x36')]);}};Acw[_0x88da('0x37')][_0x88da('0x4d')]=function(_0x1f95b4){try{if(this['channels'][_0x1f95b4['transfereruniqueid']]){logger[_0x88da('0x21')](_0x88da('0x4e'),JSON['stringify'](_0x1f95b4[_0x88da('0x4f')]));this[_0x88da('0x16')](_0x1f95b4[_0x88da('0x4f')]);}else if(this[_0x88da('0x9')][_0x1f95b4[_0x88da('0x50')]]){logger[_0x88da('0x21')](_0x88da('0x51'),JSON[_0x88da('0x3b')](_0x1f95b4['transfererlinkedid']));this['startAcw'](_0x1f95b4[_0x88da('0x50')]);}}catch(_0x34be6e){logger[_0x88da('0x30')]('[ACW][syncBlindTransfer]\x20%s',_0x34be6e['message']);}};Acw['prototype'][_0x88da('0x10')]=function(_0x32f4e8){try{if(this['voiceQueues'][_0x32f4e8['queue']]&&this[_0x88da('0x6')][_0x32f4e8[_0x88da('0x18')]][_0x88da('0x52')]==='all'){if(this[_0x88da('0x7')][_0x32f4e8['interface']]){logger[_0x88da('0x21')](_0x88da('0x53'),_0x32f4e8['uniqueid'],_0x32f4e8[_0x88da('0x17')],_0x32f4e8[_0x88da('0x18')]);return RpcUser['savePause'](this[_0x88da('0x7')][_0x32f4e8['interface']],_0x88da('0x54'),_0x32f4e8[_0x88da('0x2a')]);}}}catch(_0x5ab181){logger[_0x88da('0x30')]('[ACW][syncAgentRingNoAnswer]\x20%s',_0x5ab181[_0x88da('0x36')]);}};module[_0x88da('0x55')]=Acw;