Built motion from commit (unavailable).|2.0.78
[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 _0x2b22=['agentconnect','syncAgentConnect','bind','hanguprequest','syncHangupRequest','hangup','agentringnoanswer','syncAgentRingNoAnswer','syncAttendedTransfer','blindtransfer','syncBlindTransfer','custom:agentConnectPreview','syncAgentConnectPreview','milliseconds','diff','seconds','prototype','startAcw','interface','QueuePause','then','getAgent','voicePause','info','[%s][START][AGENT:%s][QUEUE:%s]','savePause','ACW','[%s][TIMER:%s][AGENT:%s][QUEUE:%s]','timer','stopAcw','acwTimeout','lastPauseAt','uniqueid','queue','update','error','[%s][UPDATE][ERRORS:%s]','[%s][INPAUSE][AGENT:%s][QUEUE:%s]','catch','finally','[ACW][START]\x20%s','[TIMER][STOP][AGENT:%s]','saveUnpause','[%s][UPDATE][ACWTIME:%s]','message','acw','[ACW][syncAgentConnect]\x20%s','isUndefined','attended','[%s][HANGUP:UNIQUEID]','linkedid','[%s][HANGUPATTENDEDTRANSFER:UNIQUEID]','[%s][HANGUPATTENDEDTRANSFER:LINKEDID]','[ACW][syncHangup]\x20%s','[%s][ATTENDEDTRANSFER][%s]','transfertargetlinkedid','transfereeuniqueid','origtransfereruniqueid','[%s][ATTENDEDTRANSFER:UNIQUEID]','origtransfererlinkedid','transfertargetuniqueid','find','format','SIP/%s','localtwoconnectedlinename','[ACW][syncAttendedTransfer]\x20%s','transfereruniqueid','[%s][BLINDTRANSFER:UNIQUEID]','stringify','transfererlinkedid','[%s][BLINDTRANSFER:LINKEDID]','[%s][AUTOPAUSE][AGENT:%s][QUEUE:%]','Auto-Pause','exports','util','lodash','moment','../ami','../../../config/logger','../rpc/user','socket.io-emitter','voiceQueues','agents','timers','channels'];(function(_0x29e6ab,_0x2e697b){var _0x30a7d0=function(_0x434b76){while(--_0x434b76){_0x29e6ab['push'](_0x29e6ab['shift']());}};_0x30a7d0(++_0x2e697b);}(_0x2b22,0xf4));var _0x22b2=function(_0xa6d20d,_0x3a81ba){_0xa6d20d=_0xa6d20d-0x0;var _0x5342d9=_0x2b22[_0xa6d20d];return _0x5342d9;};'use strict';var util=require(_0x22b2('0x0'));var _=require(_0x22b2('0x1'));var moment=require(_0x22b2('0x2'));var ami=require(_0x22b2('0x3'));var logger=require(_0x22b2('0x4'))('acw');var RpcUser=require(_0x22b2('0x5'));var RpcVoiceAgentReport=require('../rpc/voiceAgentReport');var io=require(_0x22b2('0x6'))({'host':'localhost','port':0x18eb});function Acw(_0x1635dc){this[_0x22b2('0x7')]=_0x1635dc[_0x22b2('0x7')];this['agents']=_0x1635dc[_0x22b2('0x8')];this[_0x22b2('0x9')]=_0x1635dc[_0x22b2('0x9')];this[_0x22b2('0xa')]={};ami['on'](_0x22b2('0xb'),this[_0x22b2('0xc')][_0x22b2('0xd')](this));ami['on'](_0x22b2('0xe'),this[_0x22b2('0xf')]['bind'](this));ami['on'](_0x22b2('0x10'),this['syncHangup']['bind'](this));ami['on'](_0x22b2('0x11'),this[_0x22b2('0x12')][_0x22b2('0xd')](this));ami['on']('attendedtransfer',this[_0x22b2('0x13')]['bind'](this));ami['on'](_0x22b2('0x14'),this[_0x22b2('0x15')]['bind'](this));ami['on'](_0x22b2('0x16'),this[_0x22b2('0x17')][_0x22b2('0xd')](this));}function getDiff(_0x33ef6d){var _0x32988a=moment()[_0x22b2('0x18')](0x0);var _0x526b31=moment(_0x33ef6d)[_0x22b2('0x18')](0x0);return _0x32988a[_0x22b2('0x19')](_0x526b31,_0x22b2('0x1a'));}Acw[_0x22b2('0x1b')][_0x22b2('0x1c')]=function(_0xe1048e){try{var _0x4dc4e1=this;var _0x2418e6=this[_0x22b2('0xa')][_0xe1048e][_0x22b2('0x1d')];var _0x19e438=this['channels'][_0xe1048e]['queue'];ami['Action']({'action':_0x22b2('0x1e'),'interface':_0x2418e6,'paused':!![],'reason':'ACW'})[_0x22b2('0x1f')](function(_0x87f69b){if(_0x4dc4e1['agents'][_0x2418e6]){return RpcUser[_0x22b2('0x20')](_0x4dc4e1[_0x22b2('0x8')][_0x2418e6]['id'])[_0x22b2('0x1f')](function(_0x57d092){if(_0x57d092&&!_0x57d092[_0x22b2('0x21')]){logger[_0x22b2('0x22')](_0x22b2('0x23'),_0xe1048e,_0x2418e6,_0x19e438);return RpcUser[_0x22b2('0x24')](_0x4dc4e1[_0x22b2('0x8')][_0x2418e6],_0x22b2('0x25'),_0xe1048e)['then'](function(_0x1ed45b){_0x4dc4e1[_0x22b2('0x9')][_0x2418e6]={};logger[_0x22b2('0x22')](_0x22b2('0x26'),_0xe1048e,_0x4dc4e1[_0x22b2('0x7')][_0x19e438]['acwTimeout'],_0x2418e6,_0x19e438);_0x4dc4e1[_0x22b2('0x9')][_0x2418e6][_0x22b2('0x27')]=setTimeout(_0x4dc4e1[_0x22b2('0x28')][_0x22b2('0xd')](_0x4dc4e1,_0x2418e6),_0x4dc4e1[_0x22b2('0x7')][_0x19e438][_0x22b2('0x29')]*0x3e8);_0x4dc4e1['timers'][_0x2418e6]['lastPauseAt']=_0x1ed45b[_0x22b2('0x2a')];_0x4dc4e1['timers'][_0x2418e6][_0x22b2('0x2b')]=_0xe1048e;_0x4dc4e1[_0x22b2('0x9')][_0x2418e6][_0x22b2('0x2c')]=_0x19e438;_0x4dc4e1[_0x22b2('0x9')][_0x2418e6]['updateAcw']=function(){var _0x3956e8=getDiff(_0x4dc4e1[_0x22b2('0x9')][_0x2418e6][_0x22b2('0x2a')]);clearTimeout(_0x4dc4e1[_0x22b2('0x9')][_0x2418e6]['timer']);RpcVoiceAgentReport[_0x22b2('0x2d')]({'acwtime':_0x3956e8},_0x4dc4e1[_0x22b2('0x9')][_0x2418e6][_0x22b2('0x2b')],_0x2418e6)['then'](function(_0x8d2a2){logger['info']('[%s][UPDATE][ACWTIME:%s]',_0xe1048e,_0x3956e8,_0x8d2a2);})['catch'](function(_0x24489b){logger[_0x22b2('0x2e')](_0x22b2('0x2f'),_0xe1048e,_0x24489b);});delete _0x4dc4e1[_0x22b2('0x9')][_0x2418e6];};});}else{logger['info'](_0x22b2('0x30'),_0xe1048e,_0x2418e6,_0x19e438);}});}})[_0x22b2('0x31')](function(_0x582edc){logger['error'](_0x22b2('0x26'),_0xe1048e,_0x4dc4e1[_0x22b2('0x7')][_0x19e438][_0x22b2('0x29')],_0x2418e6,_0x19e438);})[_0x22b2('0x32')](function(){delete _0x4dc4e1[_0x22b2('0xa')][_0xe1048e];});}catch(_0x403b4a){logger[_0x22b2('0x2e')](_0x22b2('0x33'),_0x403b4a['message']);}};Acw['prototype'][_0x22b2('0x28')]=function(_0x3f655e){try{var _0x4cc5bc=this;if(_0x4cc5bc['timers'][_0x3f655e]){var _0x2e466a=_0x4cc5bc[_0x22b2('0x9')][_0x3f655e]['uniqueid'];var _0x36580d=_0x4cc5bc[_0x22b2('0x9')][_0x3f655e][_0x22b2('0x2c')];var _0x48e0c1=_0x4cc5bc[_0x22b2('0x7')][_0x36580d][_0x22b2('0x29')];logger[_0x22b2('0x22')](_0x22b2('0x34'),_0x3f655e);RpcUser[_0x22b2('0x35')](this['agents'][_0x3f655e]);RpcVoiceAgentReport[_0x22b2('0x2d')]({'acwtime':_0x48e0c1,'agentacw':!![]},_0x2e466a,_0x3f655e)[_0x22b2('0x1f')](function(_0x4bbee0){logger[_0x22b2('0x22')](_0x22b2('0x36'),_0x2e466a,_0x48e0c1,_0x4bbee0);})[_0x22b2('0x31')](function(_0x5888cd){logger[_0x22b2('0x2e')](_0x22b2('0x2f'),_0x2e466a,_0x5888cd);});}else{logger[_0x22b2('0x2e')]('[ACW][STOP]\x20Interface\x20%s\x20doesn\x27t\x20have\x20timer',_0x3f655e);if(_0x4cc5bc[_0x22b2('0x9')]){logger['info']('[ACW][TIMERS]',JSON['stringify'](_0x4cc5bc[_0x22b2('0x9')]));}}}catch(_0x6eb590){logger[_0x22b2('0x2e')]('[ACW][STOP]\x20%s',_0x6eb590[_0x22b2('0x37')]);}};Acw[_0x22b2('0x1b')][_0x22b2('0xc')]=function(_0x4eb065){try{if(this[_0x22b2('0x7')][_0x4eb065[_0x22b2('0x2c')]]&&this[_0x22b2('0x7')][_0x4eb065['queue']][_0x22b2('0x38')]){if(this[_0x22b2('0x8')][_0x4eb065[_0x22b2('0x1d')]]){this[_0x22b2('0xa')][_0x4eb065[_0x22b2('0x2b')]]={'queue':_0x4eb065[_0x22b2('0x2c')],'interface':_0x4eb065[_0x22b2('0x1d')]};}}}catch(_0x42391f){logger[_0x22b2('0x2e')](_0x22b2('0x39'),_0x42391f['message']);}};Acw['prototype'][_0x22b2('0x17')]=function(_0x3085cf){try{if(this[_0x22b2('0x7')][_0x3085cf[_0x22b2('0x2c')]]&&this['voiceQueues'][_0x3085cf[_0x22b2('0x2c')]][_0x22b2('0x38')]){if(this[_0x22b2('0x8')][_0x3085cf[_0x22b2('0x1d')]]){this[_0x22b2('0xa')][_0x3085cf[_0x22b2('0x2b')]]={'queue':_0x3085cf[_0x22b2('0x2c')],'interface':_0x3085cf['interface']};}}}catch(_0x4c6663){logger[_0x22b2('0x2e')]('[ACW][syncAgentConnectPreview]\x20%s',_0x4c6663[_0x22b2('0x37')]);}};Acw[_0x22b2('0x1b')][_0x22b2('0xf')]=function(_0x3ce870){try{if(this[_0x22b2('0xa')][_0x3ce870[_0x22b2('0x2b')]]&&_[_0x22b2('0x3a')](this[_0x22b2('0xa')][_0x3ce870['uniqueid']][_0x22b2('0x3b')])){logger[_0x22b2('0x22')](_0x22b2('0x3c'),_0x3ce870[_0x22b2('0x2b')]);this[_0x22b2('0x1c')](_0x3ce870['uniqueid']);}else if(this[_0x22b2('0xa')][_0x3ce870['linkedid']]&&_[_0x22b2('0x3a')](this[_0x22b2('0xa')][_0x3ce870[_0x22b2('0x3d')]][_0x22b2('0x3b')])){logger[_0x22b2('0x22')]('[%s][HANGUP:LINKEDID]',_0x3ce870[_0x22b2('0x3d')]);this[_0x22b2('0x1c')](_0x3ce870[_0x22b2('0x3d')]);}}catch(_0x1f2fcb){logger[_0x22b2('0x2e')]('[ACW][syncHangupRequest]\x20%s',_0x1f2fcb[_0x22b2('0x37')]);}};Acw[_0x22b2('0x1b')]['syncHangup']=function(_0x1e0dc4){try{if(this['channels'][_0x1e0dc4['uniqueid']]&&this[_0x22b2('0xa')][_0x1e0dc4[_0x22b2('0x2b')]][_0x22b2('0x3b')]){logger[_0x22b2('0x22')](_0x22b2('0x3e'),_0x1e0dc4[_0x22b2('0x2b')]);this[_0x22b2('0x1c')](_0x1e0dc4[_0x22b2('0x2b')]);}else if(this['channels'][_0x1e0dc4['linkedid']]&&this[_0x22b2('0xa')][_0x1e0dc4[_0x22b2('0x3d')]][_0x22b2('0x3b')]){logger['info'](_0x22b2('0x3f'),_0x1e0dc4['linkedid']);this['startAcw'](_0x1e0dc4[_0x22b2('0x3d')]);}}catch(_0x13e25e){logger[_0x22b2('0x2e')](_0x22b2('0x40'),_0x13e25e['message']);}};Acw[_0x22b2('0x1b')][_0x22b2('0x13')]=function(_0xad07d4){try{if(this[_0x22b2('0xa')][_0xad07d4['transfertargetlinkedid']]){logger[_0x22b2('0x22')](_0x22b2('0x41'),_0xad07d4[_0x22b2('0x42')],_0xad07d4[_0x22b2('0x43')]);this['channels'][_0xad07d4[_0x22b2('0x43')]]=this['channels'][_0xad07d4[_0x22b2('0x42')]];this['channels'][_0xad07d4[_0x22b2('0x43')]][_0x22b2('0x3b')]=!![];delete this['channels'][_0xad07d4[_0x22b2('0x42')]];}if(this[_0x22b2('0xa')][_0xad07d4[_0x22b2('0x44')]]){logger['info'](_0x22b2('0x45'),_0xad07d4[_0x22b2('0x44')]);this['startAcw'](_0xad07d4[_0x22b2('0x44')]);}else if(this[_0x22b2('0xa')][_0xad07d4['origtransfererlinkedid']]){logger[_0x22b2('0x22')]('[%s][ATTENDEDTRANSFER:LINKEDID]',_0xad07d4[_0x22b2('0x46')]);this[_0x22b2('0x1c')](_0xad07d4[_0x22b2('0x46')]);}logger[_0x22b2('0x22')]('[%s][ATTENDEDTRANSFER:TRANSFERTARGETUNIQUEID]',_0xad07d4[_0x22b2('0x47')]);this[_0x22b2('0xa')][_0xad07d4[_0x22b2('0x47')]]=_[_0x22b2('0x48')](this['channels'],[_0x22b2('0x1d'),util[_0x22b2('0x49')](_0x22b2('0x4a'),_0xad07d4[_0x22b2('0x4b')])]);if(this[_0x22b2('0xa')][_0xad07d4[_0x22b2('0x47')]]){this['channels'][_0xad07d4[_0x22b2('0x47')]][_0x22b2('0x3b')]=!![];delete this[_0x22b2('0xa')][_['findKey'](this[_0x22b2('0xa')],[_0x22b2('0x1d'),util[_0x22b2('0x49')]('SIP/%s',_0xad07d4[_0x22b2('0x4b')])])];}}catch(_0x457cfa){logger[_0x22b2('0x2e')](_0x22b2('0x4c'),_0x457cfa[_0x22b2('0x37')]);}};Acw[_0x22b2('0x1b')][_0x22b2('0x15')]=function(_0x2434b5){try{if(this[_0x22b2('0xa')][_0x2434b5[_0x22b2('0x4d')]]){logger[_0x22b2('0x22')](_0x22b2('0x4e'),JSON[_0x22b2('0x4f')](_0x2434b5['transfereruniqueid']));this[_0x22b2('0x1c')](_0x2434b5[_0x22b2('0x4d')]);}else if(this['channels'][_0x2434b5[_0x22b2('0x50')]]){logger['info'](_0x22b2('0x51'),JSON[_0x22b2('0x4f')](_0x2434b5['transfererlinkedid']));this[_0x22b2('0x1c')](_0x2434b5['transfererlinkedid']);}}catch(_0x301a1a){logger[_0x22b2('0x2e')]('[ACW][syncBlindTransfer]\x20%s',_0x301a1a['message']);}};Acw[_0x22b2('0x1b')][_0x22b2('0x12')]=function(_0x44f90d){try{if(this['voiceQueues'][_0x44f90d['queue']]&&this[_0x22b2('0x7')][_0x44f90d[_0x22b2('0x2c')]]['autopause']==='all'){if(this[_0x22b2('0x8')][_0x44f90d[_0x22b2('0x1d')]]){logger[_0x22b2('0x22')](_0x22b2('0x52'),_0x44f90d[_0x22b2('0x2b')],_0x44f90d[_0x22b2('0x1d')],_0x44f90d[_0x22b2('0x2c')]);return RpcUser['savePause'](this[_0x22b2('0x8')][_0x44f90d[_0x22b2('0x1d')]],_0x22b2('0x53'),_0x44f90d['uniqueid']);}}}catch(_0x3fe6db){logger['error']('[ACW][syncAgentRingNoAnswer]\x20%s',_0x3fe6db['message']);}};module[_0x22b2('0x54')]=Acw;