2ed4ad62e758c97c5c4fa666b394cc4f45245264
[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 _0x55ca=['error','[%s][INPAUSE][AGENT:%s][QUEUE:%s]','finally','stopAcw','[TIMER][STOP][AGENT:%s]','[%s][UPDATE][ERRORS:%s]','[ACW][STOP]\x20Interface\x20%s\x20doesn\x27t\x20have\x20timer','stringify','[ACW][STOP]\x20%s','message','destlinkedid','[ACW][syncAgentConnect]\x20%s','[ACW][syncAgentConnectPreview]\x20%s','attended','[%s][HANGUP:UNIQUEID]','startAcw','linkedid','isUndefined','[%s][HANGUP:LINKEDID]','[ACW][syncHangupRequest]\x20%s','[%s][HANGUPATTENDEDTRANSFER:UNIQUEID]','isNil','transfereeuniqueid','secondtransfereruniqueid','transfertargetuniqueid','origtransfereruniqueid','[ACW][syncAttendedTransfer]\x20%s','transfereruniqueid','[%s][BLINDTRANSFER:UNIQUEID]','[%s][BLINDTRANSFER:LINKEDID]','transfererlinkedid','[ACW][syncBlindTransfer]\x20%s','autopause','all','[%s][AUTOPAUSE][AGENT:%s][QUEUE:%]','Auto-Pause','util','lodash','acw','../rpc/user','voiceQueues','agents','timers','agentconnect','syncAgentConnect','hanguprequest','syncHangupRequest','syncHangup','bind','agentringnoanswer','syncAgentRingNoAnswer','attendedtransfer','syncAttendedTransfer','blindtransfer','syncBlindTransfer','syncAgentConnectPreview','milliseconds','diff','seconds','prototype','channels','interface','queue','ACW','mandatoryDisposition','mandatoryDispositionPause','name','Action','QueuePause','then','getAgent','voicePause','info','[%s][START][AGENT:%s][QUEUE:%s]','savePause','[%s][TIMER:%s][AGENT:%s][QUEUE:%s]','acwTimeout','timer','format','YYYY-MM-DD\x20HH:mm:ss','uniqueid','updateAcw','lastPauseAt','update','[%s][UPDATE][ACWTIME:%s]','catch'];(function(_0xefbb49,_0x1a6623){var _0x46e3f1=function(_0x308e73){while(--_0x308e73){_0xefbb49['push'](_0xefbb49['shift']());}};_0x46e3f1(++_0x1a6623);}(_0x55ca,0x126));var _0xa55c=function(_0x14ea32,_0x262909){_0x14ea32=_0x14ea32-0x0;var _0x137bbb=_0x55ca[_0x14ea32];return _0x137bbb;};'use strict';var util=require(_0xa55c('0x0'));var _=require(_0xa55c('0x1'));var moment=require('moment');var ami=require('../ami');var logger=require('../../../config/logger')(_0xa55c('0x2'));var RpcUser=require(_0xa55c('0x3'));var RpcVoiceAgentReport=require('../rpc/voiceAgentReport');function Acw(_0x3b478a){this[_0xa55c('0x4')]=_0x3b478a[_0xa55c('0x4')];this[_0xa55c('0x5')]=_0x3b478a[_0xa55c('0x5')];this[_0xa55c('0x6')]=_0x3b478a[_0xa55c('0x6')];this['channels']={};ami['on'](_0xa55c('0x7'),this[_0xa55c('0x8')]['bind'](this));ami['on'](_0xa55c('0x9'),this[_0xa55c('0xa')]['bind'](this));ami['on']('hangup',this[_0xa55c('0xb')][_0xa55c('0xc')](this));ami['on'](_0xa55c('0xd'),this[_0xa55c('0xe')][_0xa55c('0xc')](this));ami['on'](_0xa55c('0xf'),this[_0xa55c('0x10')][_0xa55c('0xc')](this));ami['on'](_0xa55c('0x11'),this[_0xa55c('0x12')]['bind'](this));ami['on']('custom:agentConnectPreview',this[_0xa55c('0x13')]['bind'](this));}function getDiff(_0x5a3672){var _0x59ea8d=moment()[_0xa55c('0x14')](0x0);var _0x3930e4=moment(_0x5a3672)[_0xa55c('0x14')](0x0);return _0x59ea8d[_0xa55c('0x15')](_0x3930e4,_0xa55c('0x16'));}Acw[_0xa55c('0x17')]['startAcw']=function(_0x3ccf65){try{var _0x3dcf4f=this;var _0x25934f=this[_0xa55c('0x18')][_0x3ccf65][_0xa55c('0x19')];var _0x3ae86b=this[_0xa55c('0x18')][_0x3ccf65][_0xa55c('0x1a')];var _0x24783b=this['voiceQueues'][_0x3ae86b];var _0x3d4c9e=![];var _0x104a99=_0xa55c('0x1b');if(_0x24783b[_0xa55c('0x1c')]){if(_0x24783b[_0xa55c('0x1d')][_0xa55c('0x1e')]){_0x3d4c9e=!![];_0x104a99=_0x24783b['mandatoryDispositionPause']['name'];}}ami[_0xa55c('0x1f')]({'action':_0xa55c('0x20'),'interface':_0x25934f,'paused':!![],'reason':_0x104a99})[_0xa55c('0x21')](function(_0x4cfe10){if(_0x3dcf4f[_0xa55c('0x5')][_0x25934f]){return RpcUser[_0xa55c('0x22')](_0x3dcf4f['agents'][_0x25934f]['id'])[_0xa55c('0x21')](function(_0x133096){if(_0x133096&&!_0x133096[_0xa55c('0x23')]){logger[_0xa55c('0x24')](_0xa55c('0x25'),_0x3ccf65,_0x25934f,_0x3ae86b);var _0x49ed04=_0x3dcf4f[_0xa55c('0x18')][_0x3ccf65]['attended']&&_0x3dcf4f['channels'][_0x3ccf65]['destlinkedid']?_0x3dcf4f[_0xa55c('0x18')][_0x3ccf65]['destlinkedid']:_0x3ccf65;return RpcUser[_0xa55c('0x26')](_0x3dcf4f[_0xa55c('0x5')][_0x25934f],_0x104a99,_0x49ed04)[_0xa55c('0x21')](function(_0xf0e574){if(!_0x3d4c9e){_0x3dcf4f[_0xa55c('0x6')][_0x25934f]={};logger[_0xa55c('0x24')](_0xa55c('0x27'),_0x3ccf65,_0x3dcf4f[_0xa55c('0x4')][_0x3ae86b][_0xa55c('0x28')],_0x25934f,_0x3ae86b);_0x3dcf4f[_0xa55c('0x6')][_0x25934f][_0xa55c('0x29')]=setTimeout(_0x3dcf4f['stopAcw'][_0xa55c('0xc')](_0x3dcf4f,_0x25934f),_0x3dcf4f[_0xa55c('0x4')][_0x3ae86b][_0xa55c('0x28')]*0x3e8);_0x3dcf4f[_0xa55c('0x6')][_0x25934f]['lastPauseAt']=moment()[_0xa55c('0x2a')](_0xa55c('0x2b'));_0x3dcf4f[_0xa55c('0x6')][_0x25934f][_0xa55c('0x2c')]=_0x3ccf65;_0x3dcf4f[_0xa55c('0x6')][_0x25934f][_0xa55c('0x1a')]=_0x3ae86b;_0x3dcf4f['timers'][_0x25934f][_0xa55c('0x2d')]=function(){var _0x490b7d=getDiff(_0x3dcf4f[_0xa55c('0x6')][_0x25934f][_0xa55c('0x2e')]);clearTimeout(_0x3dcf4f[_0xa55c('0x6')][_0x25934f][_0xa55c('0x29')]);_0x3dcf4f['timers'][_0x25934f][_0xa55c('0x29')]=![];RpcVoiceAgentReport[_0xa55c('0x2f')]({'acwtime':_0x490b7d},_0x3dcf4f[_0xa55c('0x6')][_0x25934f][_0xa55c('0x2c')],_0x25934f)[_0xa55c('0x21')](function(_0x1225c3){logger[_0xa55c('0x24')](_0xa55c('0x30'),_0x3ccf65,_0x490b7d,_0x1225c3);})[_0xa55c('0x31')](function(_0xcbaf2e){logger[_0xa55c('0x32')]('[%s][UPDATE][ERRORS:%s]',_0x3ccf65,_0xcbaf2e);});delete _0x3dcf4f['timers'][_0x25934f];};}});}else{logger[_0xa55c('0x24')](_0xa55c('0x33'),_0x3ccf65,_0x25934f,_0x3ae86b);}});}})['catch'](function(_0x30fadd){logger[_0xa55c('0x32')](_0xa55c('0x27'),_0x3ccf65,_0x3dcf4f[_0xa55c('0x4')][_0x3ae86b][_0xa55c('0x28')],_0x25934f,_0x3ae86b);})[_0xa55c('0x34')](function(){delete _0x3dcf4f[_0xa55c('0x18')][_0x3ccf65];});}catch(_0x222d4b){logger[_0xa55c('0x32')]('[ACW][START]\x20%s',_0x222d4b['message']);}};Acw['prototype'][_0xa55c('0x35')]=function(_0x18e00e){try{var _0x2bb4f0=this;if(_0x2bb4f0['timers'][_0x18e00e]){_0x2bb4f0[_0xa55c('0x6')][_0x18e00e]['timer']=![];var _0x119220=_0x2bb4f0['timers'][_0x18e00e][_0xa55c('0x2c')];var _0x39267c=_0x2bb4f0[_0xa55c('0x6')][_0x18e00e]['queue'];var _0x7c4a47=_0x2bb4f0[_0xa55c('0x4')][_0x39267c]['acwTimeout'];logger[_0xa55c('0x24')](_0xa55c('0x36'),_0x18e00e);RpcUser['saveUnpause'](this['agents'][_0x18e00e]);RpcVoiceAgentReport[_0xa55c('0x2f')]({'acwtime':_0x7c4a47,'agentacw':!![]},_0x119220,_0x18e00e)['then'](function(_0x1e75dc){logger[_0xa55c('0x24')]('[%s][UPDATE][ACWTIME:%s]',_0x119220,_0x7c4a47,_0x1e75dc);})['catch'](function(_0x5e50b6){logger['error'](_0xa55c('0x37'),_0x119220,_0x5e50b6);});}else{logger[_0xa55c('0x32')](_0xa55c('0x38'),_0x18e00e);if(_0x2bb4f0[_0xa55c('0x6')]){logger[_0xa55c('0x24')]('[ACW][TIMERS]',JSON[_0xa55c('0x39')](_0x2bb4f0[_0xa55c('0x6')]));}}}catch(_0x77d623){logger[_0xa55c('0x32')](_0xa55c('0x3a'),_0x77d623[_0xa55c('0x3b')]);}};Acw['prototype'][_0xa55c('0x8')]=function(_0x5ee63d){try{if(this['voiceQueues'][_0x5ee63d[_0xa55c('0x1a')]]&&(this[_0xa55c('0x4')][_0x5ee63d['queue']][_0xa55c('0x2')]||this['voiceQueues'][_0x5ee63d['queue']][_0xa55c('0x1c')])){if(this[_0xa55c('0x5')][_0x5ee63d[_0xa55c('0x19')]]){this['channels'][_0x5ee63d[_0xa55c('0x2c')]]={'queue':_0x5ee63d[_0xa55c('0x1a')],'interface':_0x5ee63d['interface'],'destlinkedid':_0x5ee63d[_0xa55c('0x3c')]};}}}catch(_0x514661){logger[_0xa55c('0x32')](_0xa55c('0x3d'),_0x514661['message']);}};Acw[_0xa55c('0x17')][_0xa55c('0x13')]=function(_0x5d834d){try{if(this[_0xa55c('0x4')][_0x5d834d[_0xa55c('0x1a')]]&&(this[_0xa55c('0x4')][_0x5d834d['queue']][_0xa55c('0x2')]||this['voiceQueues'][_0x5d834d[_0xa55c('0x1a')]][_0xa55c('0x1c')])){if(this[_0xa55c('0x5')][_0x5d834d['interface']]){this[_0xa55c('0x18')][_0x5d834d[_0xa55c('0x2c')]]={'queue':_0x5d834d['queue'],'interface':_0x5d834d[_0xa55c('0x19')]};}}}catch(_0x931907){logger['error'](_0xa55c('0x3e'),_0x931907[_0xa55c('0x3b')]);}};Acw['prototype'][_0xa55c('0xa')]=function(_0x81cee8){try{if(this[_0xa55c('0x18')][_0x81cee8[_0xa55c('0x2c')]]&&_['isUndefined'](this[_0xa55c('0x18')][_0x81cee8['uniqueid']][_0xa55c('0x3f')])){logger[_0xa55c('0x24')](_0xa55c('0x40'),_0x81cee8['uniqueid']);this[_0xa55c('0x41')](_0x81cee8[_0xa55c('0x2c')]);}else if(this['channels'][_0x81cee8[_0xa55c('0x42')]]&&_[_0xa55c('0x43')](this[_0xa55c('0x18')][_0x81cee8[_0xa55c('0x42')]][_0xa55c('0x3f')])){logger[_0xa55c('0x24')](_0xa55c('0x44'),_0x81cee8[_0xa55c('0x42')]);this[_0xa55c('0x41')](_0x81cee8[_0xa55c('0x42')]);}}catch(_0x4fc0a9){logger[_0xa55c('0x32')](_0xa55c('0x45'),_0x4fc0a9[_0xa55c('0x3b')]);}};Acw['prototype'][_0xa55c('0xb')]=function(_0x35bf0a){try{if(this['channels'][_0x35bf0a[_0xa55c('0x2c')]]&&this['channels'][_0x35bf0a[_0xa55c('0x2c')]][_0xa55c('0x3f')]){logger[_0xa55c('0x24')](_0xa55c('0x46'),_0x35bf0a[_0xa55c('0x2c')]);this['startAcw'](_0x35bf0a[_0xa55c('0x2c')]);}else if(this[_0xa55c('0x18')][_0x35bf0a['linkedid']]&&this[_0xa55c('0x18')][_0x35bf0a[_0xa55c('0x42')]][_0xa55c('0x3f')]){logger[_0xa55c('0x24')]('[%s][HANGUPATTENDEDTRANSFER:LINKEDID]',_0x35bf0a['linkedid']);this[_0xa55c('0x41')](_0x35bf0a[_0xa55c('0x42')]);}}catch(_0x3ca5b8){logger[_0xa55c('0x32')]('[ACW][syncHangup]\x20%s',_0x3ca5b8[_0xa55c('0x3b')]);}};Acw['prototype'][_0xa55c('0x10')]=function(_0x437ced){try{if(!_[_0xa55c('0x47')](this[_0xa55c('0x18')][_0x437ced[_0xa55c('0x48')]])){this['startAcw'](_0x437ced[_0xa55c('0x48')]);if(this['channels'][_0x437ced[_0xa55c('0x49')]]){this[_0xa55c('0x18')][_0x437ced[_0xa55c('0x49')]][_0xa55c('0x3f')]=!![];this[_0xa55c('0x18')][_0x437ced[_0xa55c('0x4a')]]=this[_0xa55c('0x18')][_0x437ced['secondtransfereruniqueid']];delete this[_0xa55c('0x18')][_0x437ced[_0xa55c('0x49')]];}}else if(!_[_0xa55c('0x47')](this[_0xa55c('0x18')][_0x437ced[_0xa55c('0x4a')]])){this['startAcw'](_0x437ced[_0xa55c('0x4a')]);if(this[_0xa55c('0x18')][_0x437ced[_0xa55c('0x4b')]]){this[_0xa55c('0x18')][_0x437ced[_0xa55c('0x4b')]]['attended']=!![];this[_0xa55c('0x18')][_0x437ced[_0xa55c('0x48')]]=this[_0xa55c('0x18')][_0x437ced[_0xa55c('0x4b')]];delete this[_0xa55c('0x18')][_0x437ced['origtransfereruniqueid']];}}}catch(_0x419fc3){logger['error'](_0xa55c('0x4c'),_0x419fc3['message']);}};Acw[_0xa55c('0x17')]['syncBlindTransfer']=function(_0x34edc5){try{if(this[_0xa55c('0x18')][_0x34edc5[_0xa55c('0x4d')]]){logger[_0xa55c('0x24')](_0xa55c('0x4e'),JSON[_0xa55c('0x39')](_0x34edc5[_0xa55c('0x4d')]));this[_0xa55c('0x41')](_0x34edc5[_0xa55c('0x4d')]);}else if(this[_0xa55c('0x18')][_0x34edc5['transfererlinkedid']]){logger[_0xa55c('0x24')](_0xa55c('0x4f'),JSON['stringify'](_0x34edc5[_0xa55c('0x50')]));this[_0xa55c('0x41')](_0x34edc5[_0xa55c('0x50')]);}}catch(_0x9fe234){logger[_0xa55c('0x32')](_0xa55c('0x51'),_0x9fe234[_0xa55c('0x3b')]);}};Acw[_0xa55c('0x17')]['syncAgentRingNoAnswer']=function(_0x1dfaf7){try{if(this[_0xa55c('0x4')][_0x1dfaf7[_0xa55c('0x1a')]]&&this[_0xa55c('0x4')][_0x1dfaf7[_0xa55c('0x1a')]][_0xa55c('0x52')]===_0xa55c('0x53')){if(this[_0xa55c('0x5')][_0x1dfaf7[_0xa55c('0x19')]]){logger['info'](_0xa55c('0x54'),_0x1dfaf7[_0xa55c('0x2c')],_0x1dfaf7[_0xa55c('0x19')],_0x1dfaf7[_0xa55c('0x1a')]);return RpcUser[_0xa55c('0x26')](this[_0xa55c('0x5')][_0x1dfaf7[_0xa55c('0x19')]],_0xa55c('0x55'),_0x1dfaf7[_0xa55c('0x2c')]);}}}catch(_0x3178a6){logger[_0xa55c('0x32')]('[ACW][syncAgentRingNoAnswer]\x20%s',_0x3178a6[_0xa55c('0x3b')]);}};module['exports']=Acw;