Built motion from commit 9d0783e6.|2.6.13
[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 _0x59be=['[%s][AUTOPAUSE][AGENT:%s][QUEUE:%]','exports','lodash','moment','../ami','../../../config/logger','../rpc/user','voiceQueues','agents','timers','agentconnect','syncAgentConnect','bind','hanguprequest','syncHangupRequest','hangup','syncHangup','agentringnoanswer','syncAgentRingNoAnswer','syncAttendedTransfer','syncBlindTransfer','custom:agentConnectPreview','milliseconds','prototype','startAcw','channels','queue','ACW','mandatoryDisposition','mandatoryDispositionPause','name','Action','QueuePause','getAgent','then','voicePause','info','[%s][START][AGENT:%s][QUEUE:%s]','destlinkedid','savePause','acwTimeout','timer','stopAcw','lastPauseAt','format','YYYY-MM-DD\x20HH:mm:ss','uniqueid','updateAcw','update','catch','[%s][UPDATE][ERRORS:%s]','[%s][INPAUSE][AGENT:%s][QUEUE:%s]','error','[%s][TIMER:%s][AGENT:%s][QUEUE:%s]','finally','[ACW][START]\x20%s','message','[%s][TIMER][STOP][AGENT:%s]','saveUnpause','[%s][UPDATE][ACWTIME:%s]','[ACW][STOP]\x20Interface\x20%s\x20doesn\x27t\x20have\x20timer','stringify','[ACW][STOP]\x20%s','acw','interface','syncAgentConnectPreview','isUndefined','attended','[%s][HANGUP:UNIQUEID]','linkedid','[ACW][syncHangupRequest]\x20%s','[%s][HANGUPATTENDEDTRANSFER:UNIQUEID]','[%s][HANGUPATTENDEDTRANSFER:LINKEDID]','[ACW][syncHangup]\x20%s','transfereeuniqueid','secondtransfereruniqueid','transfertargetuniqueid','origtransfereruniqueid','[ACW][syncAttendedTransfer]\x20%s','[%s][BLINDTRANSFER:UNIQUEID]','transfereruniqueid','transfererlinkedid','[ACW][syncBlindTransfer]\x20%s','all'];(function(_0x3ab51d,_0x2fa01d){var _0x29a04e=function(_0x7807b0){while(--_0x7807b0){_0x3ab51d['push'](_0x3ab51d['shift']());}};_0x29a04e(++_0x2fa01d);}(_0x59be,0x1a6));var _0xe59b=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x59be[_0x3dd15e];return _0x231fd0;};'use strict';var _=require(_0xe59b('0x0'));var moment=require(_0xe59b('0x1'));var ami=require(_0xe59b('0x2'));var logger=require(_0xe59b('0x3'))('acw');var RpcUser=require(_0xe59b('0x4'));var RpcVoiceAgentReport=require('../rpc/voiceAgentReport');function Acw(_0x59a83f){this[_0xe59b('0x5')]=_0x59a83f[_0xe59b('0x5')];this[_0xe59b('0x6')]=_0x59a83f[_0xe59b('0x6')];this[_0xe59b('0x7')]=_0x59a83f[_0xe59b('0x7')];this['channels']={};ami['on'](_0xe59b('0x8'),this[_0xe59b('0x9')][_0xe59b('0xa')](this));ami['on'](_0xe59b('0xb'),this[_0xe59b('0xc')][_0xe59b('0xa')](this));ami['on'](_0xe59b('0xd'),this[_0xe59b('0xe')][_0xe59b('0xa')](this));ami['on'](_0xe59b('0xf'),this[_0xe59b('0x10')][_0xe59b('0xa')](this));ami['on']('attendedtransfer',this[_0xe59b('0x11')][_0xe59b('0xa')](this));ami['on']('blindtransfer',this[_0xe59b('0x12')]['bind'](this));ami['on'](_0xe59b('0x13'),this['syncAgentConnectPreview'][_0xe59b('0xa')](this));}function getDiff(_0x1d8581){var _0xd2b51a=moment()['milliseconds'](0x0);var _0x404b87=moment(_0x1d8581)[_0xe59b('0x14')](0x0);return _0xd2b51a['diff'](_0x404b87,'seconds');}Acw[_0xe59b('0x15')][_0xe59b('0x16')]=function(_0x50e92b){try{var _0x44223b=this;var _0x455a4c=this[_0xe59b('0x17')][_0x50e92b]['interface'];var _0x58dc87=this[_0xe59b('0x17')][_0x50e92b][_0xe59b('0x18')];var _0x2b72b0=this[_0xe59b('0x5')][_0x58dc87];var _0x201165=![];var _0x1d25d6=_0xe59b('0x19');if(_0x2b72b0[_0xe59b('0x1a')]){if(_0x2b72b0[_0xe59b('0x1b')][_0xe59b('0x1c')]){_0x201165=!![];_0x1d25d6=_0x2b72b0[_0xe59b('0x1b')]['name'];}}return ami[_0xe59b('0x1d')]({'action':_0xe59b('0x1e'),'interface':_0x455a4c,'paused':!![],'reason':_0x1d25d6})['then'](function(){if(_0x44223b['agents'][_0x455a4c]){return RpcUser[_0xe59b('0x1f')](_0x44223b[_0xe59b('0x6')][_0x455a4c]['id'])[_0xe59b('0x20')](function(_0x4d15b0){if(_0x4d15b0&&!_0x4d15b0[_0xe59b('0x21')]){logger[_0xe59b('0x22')](_0xe59b('0x23'),_0x50e92b,_0x455a4c,_0x58dc87);var _0x2ff84f=_0x44223b['channels'][_0x50e92b]['attended']&&_0x44223b[_0xe59b('0x17')][_0x50e92b]['destlinkedid']?_0x44223b[_0xe59b('0x17')][_0x50e92b][_0xe59b('0x24')]:_0x50e92b;return RpcUser[_0xe59b('0x25')](_0x44223b[_0xe59b('0x6')][_0x455a4c],_0x1d25d6,_0x2ff84f)['then'](function(){if(!_0x201165){_0x44223b[_0xe59b('0x7')][_0x455a4c]={};logger[_0xe59b('0x22')]('[%s][TIMER:%s][AGENT:%s][QUEUE:%s]',_0x50e92b,_0x44223b[_0xe59b('0x5')][_0x58dc87][_0xe59b('0x26')],_0x455a4c,_0x58dc87);_0x44223b[_0xe59b('0x7')][_0x455a4c][_0xe59b('0x27')]=setTimeout(_0x44223b[_0xe59b('0x28')][_0xe59b('0xa')](_0x44223b,_0x455a4c),_0x44223b[_0xe59b('0x5')][_0x58dc87][_0xe59b('0x26')]*0x3e8);_0x44223b[_0xe59b('0x7')][_0x455a4c][_0xe59b('0x29')]=moment()[_0xe59b('0x2a')](_0xe59b('0x2b'));_0x44223b[_0xe59b('0x7')][_0x455a4c][_0xe59b('0x2c')]=_0x50e92b;_0x44223b['timers'][_0x455a4c]['queue']=_0x58dc87;_0x44223b[_0xe59b('0x7')][_0x455a4c][_0xe59b('0x2d')]=function(){var _0x29fe0c=getDiff(_0x44223b[_0xe59b('0x7')][_0x455a4c][_0xe59b('0x29')]);clearTimeout(_0x44223b[_0xe59b('0x7')][_0x455a4c][_0xe59b('0x27')]);_0x44223b[_0xe59b('0x7')][_0x455a4c][_0xe59b('0x27')]=![];RpcVoiceAgentReport[_0xe59b('0x2e')]({'acwtime':_0x29fe0c},_0x44223b[_0xe59b('0x7')][_0x455a4c][_0xe59b('0x2c')],_0x455a4c)[_0xe59b('0x20')](function(_0x5b557a){logger[_0xe59b('0x22')]('[%s][UPDATE][ACWTIME:%s]',_0x50e92b,_0x29fe0c,_0x5b557a);})[_0xe59b('0x2f')](function(_0x11247a){logger['error'](_0xe59b('0x30'),_0x50e92b,_0x11247a);});delete _0x44223b[_0xe59b('0x7')][_0x455a4c];};}});}else{logger[_0xe59b('0x22')](_0xe59b('0x31'),_0x50e92b,_0x455a4c,_0x58dc87);}});}})[_0xe59b('0x2f')](function(){logger[_0xe59b('0x32')](_0xe59b('0x33'),_0x50e92b,_0x44223b[_0xe59b('0x5')][_0x58dc87][_0xe59b('0x26')],_0x455a4c,_0x58dc87);})[_0xe59b('0x34')](function(){delete _0x44223b['channels'][_0x50e92b];});}catch(_0x1dc6e0){logger[_0xe59b('0x32')](_0xe59b('0x35'),_0x1dc6e0[_0xe59b('0x36')]);}};Acw[_0xe59b('0x15')][_0xe59b('0x28')]=function(_0x2da9d9){try{var _0x25c5c6=this;if(_0x25c5c6[_0xe59b('0x7')][_0x2da9d9]){_0x25c5c6[_0xe59b('0x7')][_0x2da9d9][_0xe59b('0x27')]=![];var _0x255cb9=_0x25c5c6[_0xe59b('0x7')][_0x2da9d9]['uniqueid'];var _0x3ac3e9=_0x25c5c6[_0xe59b('0x7')][_0x2da9d9][_0xe59b('0x18')];var _0x5075b0=_0x25c5c6[_0xe59b('0x5')][_0x3ac3e9]['acwTimeout'];logger[_0xe59b('0x22')](_0xe59b('0x37'),_0x255cb9,_0x2da9d9);RpcUser[_0xe59b('0x38')](this[_0xe59b('0x6')][_0x2da9d9]);RpcVoiceAgentReport[_0xe59b('0x2e')]({'acwtime':_0x5075b0,'agentacw':!![]},_0x255cb9,_0x2da9d9)[_0xe59b('0x20')](function(_0x551e10){logger['info'](_0xe59b('0x39'),_0x255cb9,_0x5075b0,_0x551e10);})['catch'](function(_0x6e46c2){logger[_0xe59b('0x32')](_0xe59b('0x30'),_0x255cb9,_0x6e46c2);});}else{logger[_0xe59b('0x32')](_0xe59b('0x3a'),_0x2da9d9);if(_0x25c5c6[_0xe59b('0x7')]){logger['info']('[ACW][TIMERS]',JSON[_0xe59b('0x3b')](_0x25c5c6[_0xe59b('0x7')]));}}}catch(_0x27f501){logger[_0xe59b('0x32')](_0xe59b('0x3c'),_0x27f501[_0xe59b('0x36')]);}};Acw[_0xe59b('0x15')]['syncAgentConnect']=function(_0x2b9b7f){try{if(this['voiceQueues'][_0x2b9b7f['queue']]&&(this[_0xe59b('0x5')][_0x2b9b7f[_0xe59b('0x18')]][_0xe59b('0x3d')]||this[_0xe59b('0x5')][_0x2b9b7f[_0xe59b('0x18')]][_0xe59b('0x1a')])){if(this[_0xe59b('0x6')][_0x2b9b7f[_0xe59b('0x3e')]]){this['channels'][_0x2b9b7f['uniqueid']]={'queue':_0x2b9b7f[_0xe59b('0x18')],'interface':_0x2b9b7f[_0xe59b('0x3e')],'destlinkedid':_0x2b9b7f['destlinkedid']};}}}catch(_0x169283){logger[_0xe59b('0x32')]('[ACW][syncAgentConnect]\x20%s',_0x169283[_0xe59b('0x36')]);}};Acw[_0xe59b('0x15')][_0xe59b('0x3f')]=function(_0x5462f2){try{if(this[_0xe59b('0x5')][_0x5462f2[_0xe59b('0x18')]]&&(this[_0xe59b('0x5')][_0x5462f2[_0xe59b('0x18')]]['acw']||this[_0xe59b('0x5')][_0x5462f2['queue']][_0xe59b('0x1a')])){if(this['agents'][_0x5462f2[_0xe59b('0x3e')]]){this['channels'][_0x5462f2[_0xe59b('0x2c')]]={'queue':_0x5462f2[_0xe59b('0x18')],'interface':_0x5462f2[_0xe59b('0x3e')]};}}}catch(_0x249c3f){logger[_0xe59b('0x32')]('[ACW][syncAgentConnectPreview]\x20%s',_0x249c3f[_0xe59b('0x36')]);}};Acw[_0xe59b('0x15')]['syncHangupRequest']=function(_0x5f133b){try{if(this[_0xe59b('0x17')][_0x5f133b[_0xe59b('0x2c')]]&&_[_0xe59b('0x40')](this[_0xe59b('0x17')][_0x5f133b[_0xe59b('0x2c')]][_0xe59b('0x41')])){logger['info'](_0xe59b('0x42'),_0x5f133b[_0xe59b('0x2c')]);this['startAcw'](_0x5f133b['uniqueid']);}else if(this[_0xe59b('0x17')][_0x5f133b[_0xe59b('0x43')]]&&_['isUndefined'](this['channels'][_0x5f133b['linkedid']][_0xe59b('0x41')])){logger[_0xe59b('0x22')]('[%s][HANGUP:LINKEDID]',_0x5f133b[_0xe59b('0x43')]);this[_0xe59b('0x16')](_0x5f133b[_0xe59b('0x43')]);}}catch(_0xeaae03){logger[_0xe59b('0x32')](_0xe59b('0x44'),_0xeaae03[_0xe59b('0x36')]);}};Acw[_0xe59b('0x15')]['syncHangup']=function(_0x402c58){try{if(this[_0xe59b('0x17')][_0x402c58['uniqueid']]&&this['channels'][_0x402c58[_0xe59b('0x2c')]]['attended']){logger[_0xe59b('0x22')](_0xe59b('0x45'),_0x402c58[_0xe59b('0x2c')]);this[_0xe59b('0x16')](_0x402c58[_0xe59b('0x2c')]);}else if(this['channels'][_0x402c58[_0xe59b('0x43')]]&&this['channels'][_0x402c58[_0xe59b('0x43')]][_0xe59b('0x41')]){logger[_0xe59b('0x22')](_0xe59b('0x46'),_0x402c58[_0xe59b('0x43')]);this['startAcw'](_0x402c58[_0xe59b('0x43')]);}}catch(_0x384ab2){logger[_0xe59b('0x32')](_0xe59b('0x47'),_0x384ab2[_0xe59b('0x36')]);}};Acw[_0xe59b('0x15')]['syncAttendedTransfer']=function(_0x2c005f){try{if(!_['isNil'](this[_0xe59b('0x17')][_0x2c005f[_0xe59b('0x48')]])){this[_0xe59b('0x16')](_0x2c005f[_0xe59b('0x48')]);if(this[_0xe59b('0x17')][_0x2c005f[_0xe59b('0x49')]]){this[_0xe59b('0x17')][_0x2c005f[_0xe59b('0x49')]][_0xe59b('0x41')]=!![];this['channels'][_0x2c005f[_0xe59b('0x4a')]]=this[_0xe59b('0x17')][_0x2c005f[_0xe59b('0x49')]];delete this[_0xe59b('0x17')][_0x2c005f[_0xe59b('0x49')]];}}else if(!_['isNil'](this[_0xe59b('0x17')][_0x2c005f[_0xe59b('0x4a')]])){this[_0xe59b('0x16')](_0x2c005f[_0xe59b('0x4a')]);if(this[_0xe59b('0x17')][_0x2c005f[_0xe59b('0x4b')]]){this[_0xe59b('0x17')][_0x2c005f[_0xe59b('0x4b')]][_0xe59b('0x41')]=!![];this[_0xe59b('0x17')][_0x2c005f[_0xe59b('0x48')]]=this[_0xe59b('0x17')][_0x2c005f[_0xe59b('0x4b')]];delete this[_0xe59b('0x17')][_0x2c005f[_0xe59b('0x4b')]];}}}catch(_0x44fc41){logger[_0xe59b('0x32')](_0xe59b('0x4c'),_0x44fc41['message']);}};Acw[_0xe59b('0x15')][_0xe59b('0x12')]=function(_0x562030){try{if(this[_0xe59b('0x17')][_0x562030['transfereruniqueid']]){logger[_0xe59b('0x22')](_0xe59b('0x4d'),JSON['stringify'](_0x562030[_0xe59b('0x4e')]));this[_0xe59b('0x16')](_0x562030['transfereruniqueid']);}else if(this[_0xe59b('0x17')][_0x562030[_0xe59b('0x4f')]]){logger[_0xe59b('0x22')]('[%s][BLINDTRANSFER:LINKEDID]',JSON[_0xe59b('0x3b')](_0x562030[_0xe59b('0x4f')]));this['startAcw'](_0x562030[_0xe59b('0x4f')]);}}catch(_0x4582ed){logger[_0xe59b('0x32')](_0xe59b('0x50'),_0x4582ed[_0xe59b('0x36')]);}};Acw[_0xe59b('0x15')][_0xe59b('0x10')]=function(_0x411a0a){try{if(this[_0xe59b('0x5')][_0x411a0a[_0xe59b('0x18')]]&&this[_0xe59b('0x5')][_0x411a0a['queue']]['autopause']===_0xe59b('0x51')){if(this[_0xe59b('0x6')][_0x411a0a[_0xe59b('0x3e')]]){logger['info'](_0xe59b('0x52'),_0x411a0a[_0xe59b('0x2c')],_0x411a0a[_0xe59b('0x3e')],_0x411a0a['queue']);return RpcUser['savePause'](this[_0xe59b('0x6')][_0x411a0a[_0xe59b('0x3e')]],'Auto-Pause',_0x411a0a[_0xe59b('0x2c')]);}}}catch(_0x10a962){logger[_0xe59b('0x32')]('[ACW][syncAgentRingNoAnswer]\x20%s',_0x10a962[_0xe59b('0x36')]);}};module[_0xe59b('0x53')]=Acw;