3af84ff9464d8015b65e0d61b24daf70dba03c94
[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 _0x9243=['voicePause','[%s][START][AGENT:%s][QUEUE:%s]','attended','destlinkedid','savePause','[%s][TIMER:%s][AGENT:%s][QUEUE:%s]','acwTimeout','timer','lastPauseAt','YYYY-MM-DD\x20HH:mm:ss','uniqueid','update','info','[%s][UPDATE][ACWTIME:%s]','[%s][UPDATE][ERRORS:%s]','[%s][INPAUSE][AGENT:%s][QUEUE:%s]','catch','error','[ACW][START]\x20%s','message','stopAcw','saveUnpause','[ACW][STOP]\x20Interface\x20%s\x20doesn\x27t\x20have\x20timer','[ACW][STOP]\x20%s','syncAgentConnect','mandatoryDisposition','[ACW][syncAgentConnect]\x20%s','syncAgentConnectPreview','acw','[ACW][syncAgentConnectPreview]\x20%s','isUndefined','linkedid','[%s][HANGUP:LINKEDID]','[ACW][syncHangupRequest]\x20%s','[%s][HANGUPATTENDEDTRANSFER:UNIQUEID]','[%s][HANGUPATTENDEDTRANSFER:LINKEDID]','prototype','isNil','secondtransfereruniqueid','transfertargetuniqueid','origtransfereruniqueid','transfereeuniqueid','[ACW][syncAttendedTransfer]\x20%s','transfereruniqueid','[%s][BLINDTRANSFER:UNIQUEID]','stringify','transfererlinkedid','[%s][BLINDTRANSFER:LINKEDID]','[ACW][syncBlindTransfer]\x20%s','autopause','[%s][AUTOPAUSE][AGENT:%s][QUEUE:%]','Auto-Pause','[ACW][syncAgentRingNoAnswer]\x20%s','exports','util','lodash','../../../config/logger','../rpc/voiceAgentReport','voiceQueues','agents','timers','channels','bind','hanguprequest','syncHangupRequest','hangup','syncHangup','agentringnoanswer','syncAgentRingNoAnswer','syncAttendedTransfer','blindtransfer','syncBlindTransfer','milliseconds','diff','seconds','startAcw','interface','queue','ACW','mandatoryDispositionPause','Action','getAgent','then'];(function(_0x2641f9,_0x26715f){var _0x585741=function(_0x2d1462){while(--_0x2d1462){_0x2641f9['push'](_0x2641f9['shift']());}};_0x585741(++_0x26715f);}(_0x9243,0x1d5));var _0x3924=function(_0x22f85a,_0x195ed5){_0x22f85a=_0x22f85a-0x0;var _0xaa717=_0x9243[_0x22f85a];return _0xaa717;};'use strict';var util=require(_0x3924('0x0'));var _=require(_0x3924('0x1'));var moment=require('moment');var ami=require('../ami');var logger=require(_0x3924('0x2'))('acw');var RpcUser=require('../rpc/user');var RpcVoiceAgentReport=require(_0x3924('0x3'));function Acw(_0x3e9420){this[_0x3924('0x4')]=_0x3e9420[_0x3924('0x4')];this[_0x3924('0x5')]=_0x3e9420['agents'];this['timers']=_0x3e9420[_0x3924('0x6')];this[_0x3924('0x7')]={};ami['on']('agentconnect',this['syncAgentConnect'][_0x3924('0x8')](this));ami['on'](_0x3924('0x9'),this[_0x3924('0xa')][_0x3924('0x8')](this));ami['on'](_0x3924('0xb'),this[_0x3924('0xc')][_0x3924('0x8')](this));ami['on'](_0x3924('0xd'),this[_0x3924('0xe')][_0x3924('0x8')](this));ami['on']('attendedtransfer',this[_0x3924('0xf')]['bind'](this));ami['on'](_0x3924('0x10'),this[_0x3924('0x11')]['bind'](this));ami['on']('custom:agentConnectPreview',this['syncAgentConnectPreview']['bind'](this));}function getDiff(_0x3fae41){var _0x2dcb08=moment()['milliseconds'](0x0);var _0x42e608=moment(_0x3fae41)[_0x3924('0x12')](0x0);return _0x2dcb08[_0x3924('0x13')](_0x42e608,_0x3924('0x14'));}Acw['prototype'][_0x3924('0x15')]=function(_0xb8225b){try{var _0x31c15d=this;var _0x40f1f2=this[_0x3924('0x7')][_0xb8225b][_0x3924('0x16')];var _0xbe941d=this[_0x3924('0x7')][_0xb8225b][_0x3924('0x17')];var _0x285d66=this['voiceQueues'][_0xbe941d];var _0x3dcaaf=![];var _0x5032c0=_0x3924('0x18');if(_0x285d66['mandatoryDisposition']){if(_0x285d66[_0x3924('0x19')]['name']){_0x3dcaaf=!![];_0x5032c0=_0x285d66[_0x3924('0x19')]['name'];}}ami[_0x3924('0x1a')]({'action':'QueuePause','interface':_0x40f1f2,'paused':!![],'reason':_0x5032c0})['then'](function(_0x5cbc01){if(_0x31c15d[_0x3924('0x5')][_0x40f1f2]){return RpcUser[_0x3924('0x1b')](_0x31c15d['agents'][_0x40f1f2]['id'])[_0x3924('0x1c')](function(_0x9e1029){if(_0x9e1029&&!_0x9e1029[_0x3924('0x1d')]){logger['info'](_0x3924('0x1e'),_0xb8225b,_0x40f1f2,_0xbe941d);var _0x2b3ced=_0x31c15d['channels'][_0xb8225b][_0x3924('0x1f')]&&_0x31c15d[_0x3924('0x7')][_0xb8225b][_0x3924('0x20')]?_0x31c15d[_0x3924('0x7')][_0xb8225b][_0x3924('0x20')]:_0xb8225b;return RpcUser[_0x3924('0x21')](_0x31c15d[_0x3924('0x5')][_0x40f1f2],_0x5032c0,_0x2b3ced)[_0x3924('0x1c')](function(_0x2a0035){if(!_0x3dcaaf){_0x31c15d[_0x3924('0x6')][_0x40f1f2]={};logger['info'](_0x3924('0x22'),_0xb8225b,_0x31c15d[_0x3924('0x4')][_0xbe941d][_0x3924('0x23')],_0x40f1f2,_0xbe941d);_0x31c15d[_0x3924('0x6')][_0x40f1f2][_0x3924('0x24')]=setTimeout(_0x31c15d['stopAcw'][_0x3924('0x8')](_0x31c15d,_0x40f1f2),_0x31c15d[_0x3924('0x4')][_0xbe941d]['acwTimeout']*0x3e8);_0x31c15d[_0x3924('0x6')][_0x40f1f2][_0x3924('0x25')]=moment()['format'](_0x3924('0x26'));_0x31c15d['timers'][_0x40f1f2][_0x3924('0x27')]=_0xb8225b;_0x31c15d[_0x3924('0x6')][_0x40f1f2][_0x3924('0x17')]=_0xbe941d;_0x31c15d['timers'][_0x40f1f2]['updateAcw']=function(){var _0xd1ad72=getDiff(_0x31c15d['timers'][_0x40f1f2][_0x3924('0x25')]);clearTimeout(_0x31c15d[_0x3924('0x6')][_0x40f1f2][_0x3924('0x24')]);_0x31c15d[_0x3924('0x6')][_0x40f1f2]['timer']=![];RpcVoiceAgentReport[_0x3924('0x28')]({'acwtime':_0xd1ad72},_0x31c15d[_0x3924('0x6')][_0x40f1f2][_0x3924('0x27')],_0x40f1f2)[_0x3924('0x1c')](function(_0x47ed0d){logger[_0x3924('0x29')](_0x3924('0x2a'),_0xb8225b,_0xd1ad72,_0x47ed0d);})['catch'](function(_0x387f12){logger['error'](_0x3924('0x2b'),_0xb8225b,_0x387f12);});delete _0x31c15d[_0x3924('0x6')][_0x40f1f2];};}});}else{logger['info'](_0x3924('0x2c'),_0xb8225b,_0x40f1f2,_0xbe941d);}});}})[_0x3924('0x2d')](function(_0x298012){logger[_0x3924('0x2e')](_0x3924('0x22'),_0xb8225b,_0x31c15d[_0x3924('0x4')][_0xbe941d][_0x3924('0x23')],_0x40f1f2,_0xbe941d);})['finally'](function(){delete _0x31c15d[_0x3924('0x7')][_0xb8225b];});}catch(_0x3bf24b){logger[_0x3924('0x2e')](_0x3924('0x2f'),_0x3bf24b[_0x3924('0x30')]);}};Acw['prototype'][_0x3924('0x31')]=function(_0x185946){try{var _0x534279=this;if(_0x534279[_0x3924('0x6')][_0x185946]){_0x534279['timers'][_0x185946][_0x3924('0x24')]=![];var _0x35fb95=_0x534279['timers'][_0x185946]['uniqueid'];var _0x1e1929=_0x534279[_0x3924('0x6')][_0x185946]['queue'];var _0x35bcbc=_0x534279[_0x3924('0x4')][_0x1e1929][_0x3924('0x23')];logger[_0x3924('0x29')]('[%s][TIMER][STOP][AGENT:%s]',_0x35fb95,_0x185946);RpcUser[_0x3924('0x32')](this[_0x3924('0x5')][_0x185946]);RpcVoiceAgentReport[_0x3924('0x28')]({'acwtime':_0x35bcbc,'agentacw':!![]},_0x35fb95,_0x185946)['then'](function(_0x57f3e4){logger[_0x3924('0x29')]('[%s][UPDATE][ACWTIME:%s]',_0x35fb95,_0x35bcbc,_0x57f3e4);})[_0x3924('0x2d')](function(_0x3aea56){logger['error'](_0x3924('0x2b'),_0x35fb95,_0x3aea56);});}else{logger['error'](_0x3924('0x33'),_0x185946);if(_0x534279[_0x3924('0x6')]){logger[_0x3924('0x29')]('[ACW][TIMERS]',JSON['stringify'](_0x534279[_0x3924('0x6')]));}}}catch(_0x96cd9c){logger[_0x3924('0x2e')](_0x3924('0x34'),_0x96cd9c[_0x3924('0x30')]);}};Acw['prototype'][_0x3924('0x35')]=function(_0xded222){try{if(this[_0x3924('0x4')][_0xded222['queue']]&&(this[_0x3924('0x4')][_0xded222[_0x3924('0x17')]]['acw']||this[_0x3924('0x4')][_0xded222[_0x3924('0x17')]][_0x3924('0x36')])){if(this[_0x3924('0x5')][_0xded222[_0x3924('0x16')]]){this[_0x3924('0x7')][_0xded222[_0x3924('0x27')]]={'queue':_0xded222[_0x3924('0x17')],'interface':_0xded222['interface'],'destlinkedid':_0xded222[_0x3924('0x20')]};}}}catch(_0xbd2e87){logger[_0x3924('0x2e')](_0x3924('0x37'),_0xbd2e87[_0x3924('0x30')]);}};Acw['prototype'][_0x3924('0x38')]=function(_0x28fcc2){try{if(this['voiceQueues'][_0x28fcc2[_0x3924('0x17')]]&&(this[_0x3924('0x4')][_0x28fcc2[_0x3924('0x17')]][_0x3924('0x39')]||this[_0x3924('0x4')][_0x28fcc2['queue']][_0x3924('0x36')])){if(this[_0x3924('0x5')][_0x28fcc2[_0x3924('0x16')]]){this[_0x3924('0x7')][_0x28fcc2[_0x3924('0x27')]]={'queue':_0x28fcc2[_0x3924('0x17')],'interface':_0x28fcc2[_0x3924('0x16')]};}}}catch(_0x55ffc1){logger['error'](_0x3924('0x3a'),_0x55ffc1[_0x3924('0x30')]);}};Acw['prototype'][_0x3924('0xa')]=function(_0x435057){try{if(this['channels'][_0x435057[_0x3924('0x27')]]&&_[_0x3924('0x3b')](this[_0x3924('0x7')][_0x435057[_0x3924('0x27')]][_0x3924('0x1f')])){logger[_0x3924('0x29')]('[%s][HANGUP:UNIQUEID]',_0x435057[_0x3924('0x27')]);this[_0x3924('0x15')](_0x435057[_0x3924('0x27')]);}else if(this[_0x3924('0x7')][_0x435057[_0x3924('0x3c')]]&&_[_0x3924('0x3b')](this[_0x3924('0x7')][_0x435057[_0x3924('0x3c')]][_0x3924('0x1f')])){logger[_0x3924('0x29')](_0x3924('0x3d'),_0x435057[_0x3924('0x3c')]);this['startAcw'](_0x435057['linkedid']);}}catch(_0x29c4d2){logger[_0x3924('0x2e')](_0x3924('0x3e'),_0x29c4d2[_0x3924('0x30')]);}};Acw['prototype']['syncHangup']=function(_0x299986){try{if(this[_0x3924('0x7')][_0x299986[_0x3924('0x27')]]&&this[_0x3924('0x7')][_0x299986[_0x3924('0x27')]][_0x3924('0x1f')]){logger[_0x3924('0x29')](_0x3924('0x3f'),_0x299986[_0x3924('0x27')]);this[_0x3924('0x15')](_0x299986[_0x3924('0x27')]);}else if(this[_0x3924('0x7')][_0x299986[_0x3924('0x3c')]]&&this[_0x3924('0x7')][_0x299986['linkedid']][_0x3924('0x1f')]){logger[_0x3924('0x29')](_0x3924('0x40'),_0x299986[_0x3924('0x3c')]);this[_0x3924('0x15')](_0x299986[_0x3924('0x3c')]);}}catch(_0x450586){logger[_0x3924('0x2e')]('[ACW][syncHangup]\x20%s',_0x450586['message']);}};Acw[_0x3924('0x41')][_0x3924('0xf')]=function(_0x1f1e78){try{if(!_[_0x3924('0x42')](this['channels'][_0x1f1e78['transfereeuniqueid']])){this[_0x3924('0x15')](_0x1f1e78['transfereeuniqueid']);if(this[_0x3924('0x7')][_0x1f1e78[_0x3924('0x43')]]){this[_0x3924('0x7')][_0x1f1e78['secondtransfereruniqueid']][_0x3924('0x1f')]=!![];this[_0x3924('0x7')][_0x1f1e78[_0x3924('0x44')]]=this[_0x3924('0x7')][_0x1f1e78[_0x3924('0x43')]];delete this[_0x3924('0x7')][_0x1f1e78[_0x3924('0x43')]];}}else if(!_[_0x3924('0x42')](this[_0x3924('0x7')][_0x1f1e78[_0x3924('0x44')]])){this[_0x3924('0x15')](_0x1f1e78[_0x3924('0x44')]);if(this[_0x3924('0x7')][_0x1f1e78[_0x3924('0x45')]]){this['channels'][_0x1f1e78[_0x3924('0x45')]][_0x3924('0x1f')]=!![];this[_0x3924('0x7')][_0x1f1e78[_0x3924('0x46')]]=this[_0x3924('0x7')][_0x1f1e78[_0x3924('0x45')]];delete this[_0x3924('0x7')][_0x1f1e78['origtransfereruniqueid']];}}}catch(_0x43a9b9){logger[_0x3924('0x2e')](_0x3924('0x47'),_0x43a9b9['message']);}};Acw[_0x3924('0x41')][_0x3924('0x11')]=function(_0x2babbf){try{if(this[_0x3924('0x7')][_0x2babbf[_0x3924('0x48')]]){logger['info'](_0x3924('0x49'),JSON[_0x3924('0x4a')](_0x2babbf[_0x3924('0x48')]));this[_0x3924('0x15')](_0x2babbf[_0x3924('0x48')]);}else if(this[_0x3924('0x7')][_0x2babbf[_0x3924('0x4b')]]){logger[_0x3924('0x29')](_0x3924('0x4c'),JSON[_0x3924('0x4a')](_0x2babbf[_0x3924('0x4b')]));this[_0x3924('0x15')](_0x2babbf[_0x3924('0x4b')]);}}catch(_0x1ea7d5){logger['error'](_0x3924('0x4d'),_0x1ea7d5[_0x3924('0x30')]);}};Acw[_0x3924('0x41')]['syncAgentRingNoAnswer']=function(_0x428a37){try{if(this[_0x3924('0x4')][_0x428a37[_0x3924('0x17')]]&&this[_0x3924('0x4')][_0x428a37['queue']][_0x3924('0x4e')]==='all'){if(this['agents'][_0x428a37[_0x3924('0x16')]]){logger[_0x3924('0x29')](_0x3924('0x4f'),_0x428a37[_0x3924('0x27')],_0x428a37[_0x3924('0x16')],_0x428a37[_0x3924('0x17')]);return RpcUser[_0x3924('0x21')](this[_0x3924('0x5')][_0x428a37[_0x3924('0x16')]],_0x3924('0x50'),_0x428a37['uniqueid']);}}}catch(_0x2c2ba0){logger['error'](_0x3924('0x51'),_0x2c2ba0[_0x3924('0x30')]);}};module[_0x3924('0x52')]=Acw;