Built motion from commit (unavailable).|2.5.4
[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 _0x9f62=['isNil','transfereeuniqueid','secondtransfereruniqueid','transfertargetuniqueid','origtransfereruniqueid','[ACW][syncAttendedTransfer]\x20%s','transfereruniqueid','[%s][BLINDTRANSFER:UNIQUEID]','transfererlinkedid','[%s][BLINDTRANSFER:LINKEDID]','[ACW][syncBlindTransfer]\x20%s','autopause','all','[%s][AUTOPAUSE][AGENT:%s][QUEUE:%]','Auto-Pause','exports','lodash','../ami','../../../config/logger','acw','voiceQueues','agents','timers','channels','agentconnect','syncAgentConnect','hangup','syncHangup','syncAgentRingNoAnswer','bind','syncAttendedTransfer','syncAgentConnectPreview','milliseconds','diff','seconds','prototype','startAcw','interface','ACW','mandatoryDisposition','name','mandatoryDispositionPause','Action','QueuePause','then','voicePause','info','attended','destlinkedid','savePause','[%s][TIMER:%s][AGENT:%s][QUEUE:%s]','acwTimeout','stopAcw','lastPauseAt','format','YYYY-MM-DD\x20HH:mm:ss','uniqueid','queue','updateAcw','update','[%s][UPDATE][ACWTIME:%s]','catch','error','[%s][UPDATE][ERRORS:%s]','[%s][INPAUSE][AGENT:%s][QUEUE:%s]','[ACW][START]\x20%s','timer','[TIMER][STOP][AGENT:%s]','[ACW][TIMERS]','stringify','[ACW][STOP]\x20%s','message','[ACW][syncAgentConnect]\x20%s','[ACW][syncAgentConnectPreview]\x20%s','syncHangupRequest','isUndefined','[%s][HANGUP:UNIQUEID]','linkedid','[ACW][syncHangupRequest]\x20%s','[%s][HANGUPATTENDEDTRANSFER:LINKEDID]','[ACW][syncHangup]\x20%s'];(function(_0x3e1926,_0x11e729){var _0x5517e9=function(_0x5cc4b0){while(--_0x5cc4b0){_0x3e1926['push'](_0x3e1926['shift']());}};_0x5517e9(++_0x11e729);}(_0x9f62,0x154));var _0x29f6=function(_0x884f57,_0x50c7df){_0x884f57=_0x884f57-0x0;var _0x16e0a8=_0x9f62[_0x884f57];return _0x16e0a8;};'use strict';var util=require('util');var _=require(_0x29f6('0x0'));var moment=require('moment');var ami=require(_0x29f6('0x1'));var logger=require(_0x29f6('0x2'))(_0x29f6('0x3'));var RpcUser=require('../rpc/user');var RpcVoiceAgentReport=require('../rpc/voiceAgentReport');function Acw(_0x258ddd){this[_0x29f6('0x4')]=_0x258ddd[_0x29f6('0x4')];this[_0x29f6('0x5')]=_0x258ddd['agents'];this[_0x29f6('0x6')]=_0x258ddd[_0x29f6('0x6')];this[_0x29f6('0x7')]={};ami['on'](_0x29f6('0x8'),this[_0x29f6('0x9')]['bind'](this));ami['on']('hanguprequest',this['syncHangupRequest']['bind'](this));ami['on'](_0x29f6('0xa'),this[_0x29f6('0xb')]['bind'](this));ami['on']('agentringnoanswer',this[_0x29f6('0xc')][_0x29f6('0xd')](this));ami['on']('attendedtransfer',this[_0x29f6('0xe')][_0x29f6('0xd')](this));ami['on']('blindtransfer',this['syncBlindTransfer']['bind'](this));ami['on']('custom:agentConnectPreview',this[_0x29f6('0xf')][_0x29f6('0xd')](this));}function getDiff(_0x189344){var _0x11a1fd=moment()[_0x29f6('0x10')](0x0);var _0x156c96=moment(_0x189344)[_0x29f6('0x10')](0x0);return _0x11a1fd[_0x29f6('0x11')](_0x156c96,_0x29f6('0x12'));}Acw[_0x29f6('0x13')][_0x29f6('0x14')]=function(_0x370484){try{var _0x1dde97=this;var _0x3a75d0=this[_0x29f6('0x7')][_0x370484][_0x29f6('0x15')];var _0x3584a1=this['channels'][_0x370484]['queue'];var _0x2e66d3=this[_0x29f6('0x4')][_0x3584a1];var _0xb31436=![];var _0x5c8246=_0x29f6('0x16');if(_0x2e66d3[_0x29f6('0x17')]){if(_0x2e66d3['mandatoryDispositionPause'][_0x29f6('0x18')]){_0xb31436=!![];_0x5c8246=_0x2e66d3[_0x29f6('0x19')][_0x29f6('0x18')];}}ami[_0x29f6('0x1a')]({'action':_0x29f6('0x1b'),'interface':_0x3a75d0,'paused':!![],'reason':_0x5c8246})[_0x29f6('0x1c')](function(_0x5673c8){if(_0x1dde97[_0x29f6('0x5')][_0x3a75d0]){return RpcUser['getAgent'](_0x1dde97['agents'][_0x3a75d0]['id'])[_0x29f6('0x1c')](function(_0x1fa159){if(_0x1fa159&&!_0x1fa159[_0x29f6('0x1d')]){logger[_0x29f6('0x1e')]('[%s][START][AGENT:%s][QUEUE:%s]',_0x370484,_0x3a75d0,_0x3584a1);var _0x2c672e=_0x1dde97['channels'][_0x370484][_0x29f6('0x1f')]&&_0x1dde97[_0x29f6('0x7')][_0x370484][_0x29f6('0x20')]?_0x1dde97[_0x29f6('0x7')][_0x370484]['destlinkedid']:_0x370484;return RpcUser[_0x29f6('0x21')](_0x1dde97[_0x29f6('0x5')][_0x3a75d0],_0x5c8246,_0x2c672e)['then'](function(_0x1401fb){if(!_0xb31436){_0x1dde97[_0x29f6('0x6')][_0x3a75d0]={};logger[_0x29f6('0x1e')](_0x29f6('0x22'),_0x370484,_0x1dde97[_0x29f6('0x4')][_0x3584a1][_0x29f6('0x23')],_0x3a75d0,_0x3584a1);_0x1dde97[_0x29f6('0x6')][_0x3a75d0]['timer']=setTimeout(_0x1dde97[_0x29f6('0x24')][_0x29f6('0xd')](_0x1dde97,_0x3a75d0),_0x1dde97[_0x29f6('0x4')][_0x3584a1][_0x29f6('0x23')]*0x3e8);_0x1dde97[_0x29f6('0x6')][_0x3a75d0][_0x29f6('0x25')]=moment()[_0x29f6('0x26')](_0x29f6('0x27'));_0x1dde97[_0x29f6('0x6')][_0x3a75d0][_0x29f6('0x28')]=_0x370484;_0x1dde97[_0x29f6('0x6')][_0x3a75d0][_0x29f6('0x29')]=_0x3584a1;_0x1dde97[_0x29f6('0x6')][_0x3a75d0][_0x29f6('0x2a')]=function(){var _0x375564=getDiff(_0x1dde97[_0x29f6('0x6')][_0x3a75d0][_0x29f6('0x25')]);clearTimeout(_0x1dde97['timers'][_0x3a75d0]['timer']);_0x1dde97[_0x29f6('0x6')][_0x3a75d0]['timer']=![];RpcVoiceAgentReport[_0x29f6('0x2b')]({'acwtime':_0x375564},_0x1dde97[_0x29f6('0x6')][_0x3a75d0][_0x29f6('0x28')],_0x3a75d0)[_0x29f6('0x1c')](function(_0x5e5d89){logger['info'](_0x29f6('0x2c'),_0x370484,_0x375564,_0x5e5d89);})[_0x29f6('0x2d')](function(_0x2edc2e){logger[_0x29f6('0x2e')](_0x29f6('0x2f'),_0x370484,_0x2edc2e);});delete _0x1dde97[_0x29f6('0x6')][_0x3a75d0];};}});}else{logger[_0x29f6('0x1e')](_0x29f6('0x30'),_0x370484,_0x3a75d0,_0x3584a1);}});}})[_0x29f6('0x2d')](function(_0x3bd7cf){logger[_0x29f6('0x2e')](_0x29f6('0x22'),_0x370484,_0x1dde97[_0x29f6('0x4')][_0x3584a1][_0x29f6('0x23')],_0x3a75d0,_0x3584a1);})['finally'](function(){delete _0x1dde97['channels'][_0x370484];});}catch(_0x206beb){logger[_0x29f6('0x2e')](_0x29f6('0x31'),_0x206beb['message']);}};Acw[_0x29f6('0x13')][_0x29f6('0x24')]=function(_0xe3b91f){try{var _0x27d945=this;if(_0x27d945[_0x29f6('0x6')][_0xe3b91f]){_0x27d945['timers'][_0xe3b91f][_0x29f6('0x32')]=![];var _0x2ad06f=_0x27d945[_0x29f6('0x6')][_0xe3b91f][_0x29f6('0x28')];var _0x4f5fe1=_0x27d945[_0x29f6('0x6')][_0xe3b91f][_0x29f6('0x29')];var _0x14b392=_0x27d945[_0x29f6('0x4')][_0x4f5fe1]['acwTimeout'];logger['info'](_0x29f6('0x33'),_0xe3b91f);RpcUser['saveUnpause'](this[_0x29f6('0x5')][_0xe3b91f]);RpcVoiceAgentReport['update']({'acwtime':_0x14b392,'agentacw':!![]},_0x2ad06f,_0xe3b91f)[_0x29f6('0x1c')](function(_0x537210){logger[_0x29f6('0x1e')](_0x29f6('0x2c'),_0x2ad06f,_0x14b392,_0x537210);})['catch'](function(_0x1431fc){logger['error'](_0x29f6('0x2f'),_0x2ad06f,_0x1431fc);});}else{logger[_0x29f6('0x2e')]('[ACW][STOP]\x20Interface\x20%s\x20doesn\x27t\x20have\x20timer',_0xe3b91f);if(_0x27d945[_0x29f6('0x6')]){logger[_0x29f6('0x1e')](_0x29f6('0x34'),JSON[_0x29f6('0x35')](_0x27d945['timers']));}}}catch(_0x43da1a){logger[_0x29f6('0x2e')](_0x29f6('0x36'),_0x43da1a[_0x29f6('0x37')]);}};Acw[_0x29f6('0x13')]['syncAgentConnect']=function(_0xb5f2b1){try{if(this['voiceQueues'][_0xb5f2b1[_0x29f6('0x29')]]&&(this['voiceQueues'][_0xb5f2b1[_0x29f6('0x29')]][_0x29f6('0x3')]||this['voiceQueues'][_0xb5f2b1[_0x29f6('0x29')]][_0x29f6('0x17')])){if(this[_0x29f6('0x5')][_0xb5f2b1[_0x29f6('0x15')]]){this['channels'][_0xb5f2b1[_0x29f6('0x28')]]={'queue':_0xb5f2b1[_0x29f6('0x29')],'interface':_0xb5f2b1[_0x29f6('0x15')],'destlinkedid':_0xb5f2b1['destlinkedid']};}}}catch(_0x3d8244){logger['error'](_0x29f6('0x38'),_0x3d8244['message']);}};Acw['prototype']['syncAgentConnectPreview']=function(_0x452db1){try{if(this[_0x29f6('0x4')][_0x452db1[_0x29f6('0x29')]]&&(this[_0x29f6('0x4')][_0x452db1[_0x29f6('0x29')]][_0x29f6('0x3')]||this[_0x29f6('0x4')][_0x452db1[_0x29f6('0x29')]][_0x29f6('0x17')])){if(this[_0x29f6('0x5')][_0x452db1['interface']]){this['channels'][_0x452db1[_0x29f6('0x28')]]={'queue':_0x452db1[_0x29f6('0x29')],'interface':_0x452db1[_0x29f6('0x15')]};}}}catch(_0x1e14a1){logger['error'](_0x29f6('0x39'),_0x1e14a1[_0x29f6('0x37')]);}};Acw['prototype'][_0x29f6('0x3a')]=function(_0xd8514a){try{if(this[_0x29f6('0x7')][_0xd8514a[_0x29f6('0x28')]]&&_[_0x29f6('0x3b')](this[_0x29f6('0x7')][_0xd8514a[_0x29f6('0x28')]][_0x29f6('0x1f')])){logger[_0x29f6('0x1e')](_0x29f6('0x3c'),_0xd8514a[_0x29f6('0x28')]);this[_0x29f6('0x14')](_0xd8514a['uniqueid']);}else if(this[_0x29f6('0x7')][_0xd8514a[_0x29f6('0x3d')]]&&_[_0x29f6('0x3b')](this[_0x29f6('0x7')][_0xd8514a[_0x29f6('0x3d')]]['attended'])){logger[_0x29f6('0x1e')]('[%s][HANGUP:LINKEDID]',_0xd8514a['linkedid']);this[_0x29f6('0x14')](_0xd8514a[_0x29f6('0x3d')]);}}catch(_0x3194fa){logger[_0x29f6('0x2e')](_0x29f6('0x3e'),_0x3194fa['message']);}};Acw[_0x29f6('0x13')][_0x29f6('0xb')]=function(_0x5f42f3){try{if(this[_0x29f6('0x7')][_0x5f42f3['uniqueid']]&&this[_0x29f6('0x7')][_0x5f42f3[_0x29f6('0x28')]][_0x29f6('0x1f')]){logger[_0x29f6('0x1e')]('[%s][HANGUPATTENDEDTRANSFER:UNIQUEID]',_0x5f42f3[_0x29f6('0x28')]);this[_0x29f6('0x14')](_0x5f42f3[_0x29f6('0x28')]);}else if(this[_0x29f6('0x7')][_0x5f42f3[_0x29f6('0x3d')]]&&this[_0x29f6('0x7')][_0x5f42f3[_0x29f6('0x3d')]]['attended']){logger[_0x29f6('0x1e')](_0x29f6('0x3f'),_0x5f42f3[_0x29f6('0x3d')]);this[_0x29f6('0x14')](_0x5f42f3[_0x29f6('0x3d')]);}}catch(_0x1ac20d){logger[_0x29f6('0x2e')](_0x29f6('0x40'),_0x1ac20d[_0x29f6('0x37')]);}};Acw[_0x29f6('0x13')]['syncAttendedTransfer']=function(_0x5d7c9a){try{if(!_[_0x29f6('0x41')](this[_0x29f6('0x7')][_0x5d7c9a[_0x29f6('0x42')]])){this['startAcw'](_0x5d7c9a[_0x29f6('0x42')]);if(this['channels'][_0x5d7c9a['secondtransfereruniqueid']]){this[_0x29f6('0x7')][_0x5d7c9a[_0x29f6('0x43')]]['attended']=!![];this['channels'][_0x5d7c9a[_0x29f6('0x44')]]=this[_0x29f6('0x7')][_0x5d7c9a[_0x29f6('0x43')]];delete this['channels'][_0x5d7c9a[_0x29f6('0x43')]];}}else if(!_[_0x29f6('0x41')](this[_0x29f6('0x7')][_0x5d7c9a[_0x29f6('0x44')]])){this[_0x29f6('0x14')](_0x5d7c9a[_0x29f6('0x44')]);if(this[_0x29f6('0x7')][_0x5d7c9a[_0x29f6('0x45')]]){this[_0x29f6('0x7')][_0x5d7c9a[_0x29f6('0x45')]][_0x29f6('0x1f')]=!![];this[_0x29f6('0x7')][_0x5d7c9a[_0x29f6('0x42')]]=this['channels'][_0x5d7c9a['origtransfereruniqueid']];delete this[_0x29f6('0x7')][_0x5d7c9a['origtransfereruniqueid']];}}}catch(_0x1a5220){logger[_0x29f6('0x2e')](_0x29f6('0x46'),_0x1a5220[_0x29f6('0x37')]);}};Acw[_0x29f6('0x13')]['syncBlindTransfer']=function(_0x56c442){try{if(this[_0x29f6('0x7')][_0x56c442[_0x29f6('0x47')]]){logger[_0x29f6('0x1e')](_0x29f6('0x48'),JSON['stringify'](_0x56c442[_0x29f6('0x47')]));this['startAcw'](_0x56c442['transfereruniqueid']);}else if(this[_0x29f6('0x7')][_0x56c442[_0x29f6('0x49')]]){logger['info'](_0x29f6('0x4a'),JSON[_0x29f6('0x35')](_0x56c442['transfererlinkedid']));this[_0x29f6('0x14')](_0x56c442[_0x29f6('0x49')]);}}catch(_0x94de9c){logger[_0x29f6('0x2e')](_0x29f6('0x4b'),_0x94de9c[_0x29f6('0x37')]);}};Acw[_0x29f6('0x13')]['syncAgentRingNoAnswer']=function(_0x285caf){try{if(this['voiceQueues'][_0x285caf[_0x29f6('0x29')]]&&this['voiceQueues'][_0x285caf['queue']][_0x29f6('0x4c')]===_0x29f6('0x4d')){if(this[_0x29f6('0x5')][_0x285caf['interface']]){logger[_0x29f6('0x1e')](_0x29f6('0x4e'),_0x285caf[_0x29f6('0x28')],_0x285caf['interface'],_0x285caf[_0x29f6('0x29')]);return RpcUser[_0x29f6('0x21')](this[_0x29f6('0x5')][_0x285caf[_0x29f6('0x15')]],_0x29f6('0x4f'),_0x285caf[_0x29f6('0x28')]);}}}catch(_0x6587f3){logger[_0x29f6('0x2e')]('[ACW][syncAgentRingNoAnswer]\x20%s',_0x6587f3[_0x29f6('0x37')]);}};module[_0x29f6('0x50')]=Acw;