Built motion from commit e6806ed6.|2.6.0
[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 _0x46c6=['isUndefined','linkedid','[%s][HANGUP:LINKEDID]','[ACW][syncHangupRequest]\x20%s','[%s][HANGUPATTENDEDTRANSFER:UNIQUEID]','[%s][HANGUPATTENDEDTRANSFER:LINKEDID]','startAcw','[ACW][syncHangup]\x20%s','isNil','transfereeuniqueid','secondtransfereruniqueid','transfertargetuniqueid','origtransfereruniqueid','[ACW][syncAttendedTransfer]\x20%s','transfereruniqueid','[%s][BLINDTRANSFER:UNIQUEID]','stringify','transfererlinkedid','[ACW][syncBlindTransfer]\x20%s','autopause','all','[%s][AUTOPAUSE][AGENT:%s][QUEUE:%]','Auto-Pause','exports','util','../ami','acw','../rpc/user','voiceQueues','timers','channels','agentconnect','syncAgentConnect','bind','hanguprequest','hangup','syncHangup','agentringnoanswer','syncAgentRingNoAnswer','attendedtransfer','syncAttendedTransfer','syncBlindTransfer','custom:agentConnectPreview','syncAgentConnectPreview','milliseconds','diff','interface','queue','ACW','mandatoryDisposition','mandatoryDispositionPause','name','Action','QueuePause','then','agents','info','[%s][START][AGENT:%s][QUEUE:%s]','attended','destlinkedid','savePause','acwTimeout','stopAcw','lastPauseAt','YYYY-MM-DD\x20HH:mm:ss','uniqueid','updateAcw','update','[%s][UPDATE][ACWTIME:%s]','catch','error','[%s][UPDATE][ERRORS:%s]','[%s][INPAUSE][AGENT:%s][QUEUE:%s]','[%s][TIMER:%s][AGENT:%s][QUEUE:%s]','finally','[ACW][START]\x20%s','message','prototype','timer','[%s][TIMER][STOP][AGENT:%s]','saveUnpause','[ACW][STOP]\x20Interface\x20%s\x20doesn\x27t\x20have\x20timer','[ACW][TIMERS]','[ACW][STOP]\x20%s','[ACW][syncAgentConnect]\x20%s','[ACW][syncAgentConnectPreview]\x20%s','syncHangupRequest'];(function(_0x19950b,_0x53d0d7){var _0x3c6b41=function(_0x3924ad){while(--_0x3924ad){_0x19950b['push'](_0x19950b['shift']());}};_0x3c6b41(++_0x53d0d7);}(_0x46c6,0x11d));var _0x646c=function(_0x178e48,_0x3c9509){_0x178e48=_0x178e48-0x0;var _0x440d7e=_0x46c6[_0x178e48];return _0x440d7e;};'use strict';var util=require(_0x646c('0x0'));var _=require('lodash');var moment=require('moment');var ami=require(_0x646c('0x1'));var logger=require('../../../config/logger')(_0x646c('0x2'));var RpcUser=require(_0x646c('0x3'));var RpcVoiceAgentReport=require('../rpc/voiceAgentReport');function Acw(_0x4facdc){this['voiceQueues']=_0x4facdc[_0x646c('0x4')];this['agents']=_0x4facdc['agents'];this[_0x646c('0x5')]=_0x4facdc[_0x646c('0x5')];this[_0x646c('0x6')]={};ami['on'](_0x646c('0x7'),this[_0x646c('0x8')][_0x646c('0x9')](this));ami['on'](_0x646c('0xa'),this['syncHangupRequest'][_0x646c('0x9')](this));ami['on'](_0x646c('0xb'),this[_0x646c('0xc')][_0x646c('0x9')](this));ami['on'](_0x646c('0xd'),this[_0x646c('0xe')][_0x646c('0x9')](this));ami['on'](_0x646c('0xf'),this[_0x646c('0x10')]['bind'](this));ami['on']('blindtransfer',this[_0x646c('0x11')][_0x646c('0x9')](this));ami['on'](_0x646c('0x12'),this[_0x646c('0x13')][_0x646c('0x9')](this));}function getDiff(_0x41caba){var _0xf64e93=moment()[_0x646c('0x14')](0x0);var _0x498c5f=moment(_0x41caba)[_0x646c('0x14')](0x0);return _0xf64e93[_0x646c('0x15')](_0x498c5f,'seconds');}Acw['prototype']['startAcw']=function(_0x201636){try{var _0xf547e4=this;var _0x4294ff=this[_0x646c('0x6')][_0x201636][_0x646c('0x16')];var _0x43468a=this[_0x646c('0x6')][_0x201636][_0x646c('0x17')];var _0x482bdb=this[_0x646c('0x4')][_0x43468a];var _0x5dd666=![];var _0x47e630=_0x646c('0x18');if(_0x482bdb[_0x646c('0x19')]){if(_0x482bdb[_0x646c('0x1a')][_0x646c('0x1b')]){_0x5dd666=!![];_0x47e630=_0x482bdb['mandatoryDispositionPause'][_0x646c('0x1b')];}}ami[_0x646c('0x1c')]({'action':_0x646c('0x1d'),'interface':_0x4294ff,'paused':!![],'reason':_0x47e630})[_0x646c('0x1e')](function(_0x3025db){if(_0xf547e4[_0x646c('0x1f')][_0x4294ff]){return RpcUser['getAgent'](_0xf547e4[_0x646c('0x1f')][_0x4294ff]['id'])[_0x646c('0x1e')](function(_0x42a28d){if(_0x42a28d&&!_0x42a28d['voicePause']){logger[_0x646c('0x20')](_0x646c('0x21'),_0x201636,_0x4294ff,_0x43468a);var _0x320aae=_0xf547e4[_0x646c('0x6')][_0x201636][_0x646c('0x22')]&&_0xf547e4['channels'][_0x201636][_0x646c('0x23')]?_0xf547e4[_0x646c('0x6')][_0x201636]['destlinkedid']:_0x201636;return RpcUser[_0x646c('0x24')](_0xf547e4[_0x646c('0x1f')][_0x4294ff],_0x47e630,_0x320aae)['then'](function(_0x28d1de){if(!_0x5dd666){_0xf547e4['timers'][_0x4294ff]={};logger[_0x646c('0x20')]('[%s][TIMER:%s][AGENT:%s][QUEUE:%s]',_0x201636,_0xf547e4[_0x646c('0x4')][_0x43468a][_0x646c('0x25')],_0x4294ff,_0x43468a);_0xf547e4['timers'][_0x4294ff]['timer']=setTimeout(_0xf547e4[_0x646c('0x26')][_0x646c('0x9')](_0xf547e4,_0x4294ff),_0xf547e4[_0x646c('0x4')][_0x43468a][_0x646c('0x25')]*0x3e8);_0xf547e4[_0x646c('0x5')][_0x4294ff][_0x646c('0x27')]=moment()['format'](_0x646c('0x28'));_0xf547e4[_0x646c('0x5')][_0x4294ff][_0x646c('0x29')]=_0x201636;_0xf547e4['timers'][_0x4294ff][_0x646c('0x17')]=_0x43468a;_0xf547e4['timers'][_0x4294ff][_0x646c('0x2a')]=function(){var _0x399eb4=getDiff(_0xf547e4[_0x646c('0x5')][_0x4294ff][_0x646c('0x27')]);clearTimeout(_0xf547e4[_0x646c('0x5')][_0x4294ff]['timer']);_0xf547e4['timers'][_0x4294ff]['timer']=![];RpcVoiceAgentReport[_0x646c('0x2b')]({'acwtime':_0x399eb4},_0xf547e4[_0x646c('0x5')][_0x4294ff][_0x646c('0x29')],_0x4294ff)[_0x646c('0x1e')](function(_0x4193ab){logger[_0x646c('0x20')](_0x646c('0x2c'),_0x201636,_0x399eb4,_0x4193ab);})[_0x646c('0x2d')](function(_0x5af8aa){logger[_0x646c('0x2e')](_0x646c('0x2f'),_0x201636,_0x5af8aa);});delete _0xf547e4[_0x646c('0x5')][_0x4294ff];};}});}else{logger[_0x646c('0x20')](_0x646c('0x30'),_0x201636,_0x4294ff,_0x43468a);}});}})[_0x646c('0x2d')](function(_0x4698a5){logger[_0x646c('0x2e')](_0x646c('0x31'),_0x201636,_0xf547e4['voiceQueues'][_0x43468a][_0x646c('0x25')],_0x4294ff,_0x43468a);})[_0x646c('0x32')](function(){delete _0xf547e4[_0x646c('0x6')][_0x201636];});}catch(_0x54cf98){logger[_0x646c('0x2e')](_0x646c('0x33'),_0x54cf98[_0x646c('0x34')]);}};Acw[_0x646c('0x35')][_0x646c('0x26')]=function(_0xf7b4ad){try{var _0x23f687=this;if(_0x23f687[_0x646c('0x5')][_0xf7b4ad]){_0x23f687['timers'][_0xf7b4ad][_0x646c('0x36')]=![];var _0x40d88b=_0x23f687[_0x646c('0x5')][_0xf7b4ad][_0x646c('0x29')];var _0x567eb0=_0x23f687[_0x646c('0x5')][_0xf7b4ad]['queue'];var _0x5a1151=_0x23f687[_0x646c('0x4')][_0x567eb0][_0x646c('0x25')];logger['info'](_0x646c('0x37'),_0x40d88b,_0xf7b4ad);RpcUser[_0x646c('0x38')](this[_0x646c('0x1f')][_0xf7b4ad]);RpcVoiceAgentReport[_0x646c('0x2b')]({'acwtime':_0x5a1151,'agentacw':!![]},_0x40d88b,_0xf7b4ad)['then'](function(_0x304f97){logger[_0x646c('0x20')](_0x646c('0x2c'),_0x40d88b,_0x5a1151,_0x304f97);})['catch'](function(_0x17d506){logger[_0x646c('0x2e')](_0x646c('0x2f'),_0x40d88b,_0x17d506);});}else{logger['error'](_0x646c('0x39'),_0xf7b4ad);if(_0x23f687[_0x646c('0x5')]){logger['info'](_0x646c('0x3a'),JSON['stringify'](_0x23f687[_0x646c('0x5')]));}}}catch(_0xb5c4a3){logger[_0x646c('0x2e')](_0x646c('0x3b'),_0xb5c4a3[_0x646c('0x34')]);}};Acw[_0x646c('0x35')][_0x646c('0x8')]=function(_0x31cc68){try{if(this['voiceQueues'][_0x31cc68[_0x646c('0x17')]]&&(this[_0x646c('0x4')][_0x31cc68[_0x646c('0x17')]][_0x646c('0x2')]||this['voiceQueues'][_0x31cc68[_0x646c('0x17')]]['mandatoryDisposition'])){if(this[_0x646c('0x1f')][_0x31cc68[_0x646c('0x16')]]){this[_0x646c('0x6')][_0x31cc68[_0x646c('0x29')]]={'queue':_0x31cc68['queue'],'interface':_0x31cc68['interface'],'destlinkedid':_0x31cc68[_0x646c('0x23')]};}}}catch(_0x319bbe){logger[_0x646c('0x2e')](_0x646c('0x3c'),_0x319bbe['message']);}};Acw['prototype']['syncAgentConnectPreview']=function(_0x5e27b2){try{if(this[_0x646c('0x4')][_0x5e27b2[_0x646c('0x17')]]&&(this[_0x646c('0x4')][_0x5e27b2[_0x646c('0x17')]][_0x646c('0x2')]||this[_0x646c('0x4')][_0x5e27b2[_0x646c('0x17')]][_0x646c('0x19')])){if(this[_0x646c('0x1f')][_0x5e27b2[_0x646c('0x16')]]){this[_0x646c('0x6')][_0x5e27b2[_0x646c('0x29')]]={'queue':_0x5e27b2[_0x646c('0x17')],'interface':_0x5e27b2[_0x646c('0x16')]};}}}catch(_0x535a02){logger['error'](_0x646c('0x3d'),_0x535a02[_0x646c('0x34')]);}};Acw[_0x646c('0x35')][_0x646c('0x3e')]=function(_0x665898){try{if(this['channels'][_0x665898[_0x646c('0x29')]]&&_[_0x646c('0x3f')](this[_0x646c('0x6')][_0x665898[_0x646c('0x29')]]['attended'])){logger[_0x646c('0x20')]('[%s][HANGUP:UNIQUEID]',_0x665898[_0x646c('0x29')]);this['startAcw'](_0x665898[_0x646c('0x29')]);}else if(this[_0x646c('0x6')][_0x665898[_0x646c('0x40')]]&&_['isUndefined'](this['channels'][_0x665898['linkedid']][_0x646c('0x22')])){logger[_0x646c('0x20')](_0x646c('0x41'),_0x665898['linkedid']);this['startAcw'](_0x665898['linkedid']);}}catch(_0x5cf291){logger['error'](_0x646c('0x42'),_0x5cf291[_0x646c('0x34')]);}};Acw[_0x646c('0x35')][_0x646c('0xc')]=function(_0x422f47){try{if(this[_0x646c('0x6')][_0x422f47[_0x646c('0x29')]]&&this[_0x646c('0x6')][_0x422f47[_0x646c('0x29')]][_0x646c('0x22')]){logger[_0x646c('0x20')](_0x646c('0x43'),_0x422f47[_0x646c('0x29')]);this['startAcw'](_0x422f47[_0x646c('0x29')]);}else if(this[_0x646c('0x6')][_0x422f47[_0x646c('0x40')]]&&this['channels'][_0x422f47[_0x646c('0x40')]][_0x646c('0x22')]){logger[_0x646c('0x20')](_0x646c('0x44'),_0x422f47[_0x646c('0x40')]);this[_0x646c('0x45')](_0x422f47[_0x646c('0x40')]);}}catch(_0x1d63d4){logger['error'](_0x646c('0x46'),_0x1d63d4[_0x646c('0x34')]);}};Acw['prototype'][_0x646c('0x10')]=function(_0x1fccf5){try{if(!_[_0x646c('0x47')](this[_0x646c('0x6')][_0x1fccf5[_0x646c('0x48')]])){this['startAcw'](_0x1fccf5[_0x646c('0x48')]);if(this[_0x646c('0x6')][_0x1fccf5[_0x646c('0x49')]]){this[_0x646c('0x6')][_0x1fccf5[_0x646c('0x49')]][_0x646c('0x22')]=!![];this[_0x646c('0x6')][_0x1fccf5[_0x646c('0x4a')]]=this[_0x646c('0x6')][_0x1fccf5[_0x646c('0x49')]];delete this[_0x646c('0x6')][_0x1fccf5[_0x646c('0x49')]];}}else if(!_[_0x646c('0x47')](this[_0x646c('0x6')][_0x1fccf5[_0x646c('0x4a')]])){this['startAcw'](_0x1fccf5[_0x646c('0x4a')]);if(this[_0x646c('0x6')][_0x1fccf5['origtransfereruniqueid']]){this[_0x646c('0x6')][_0x1fccf5['origtransfereruniqueid']]['attended']=!![];this[_0x646c('0x6')][_0x1fccf5['transfereeuniqueid']]=this[_0x646c('0x6')][_0x1fccf5[_0x646c('0x4b')]];delete this[_0x646c('0x6')][_0x1fccf5['origtransfereruniqueid']];}}}catch(_0x501721){logger[_0x646c('0x2e')](_0x646c('0x4c'),_0x501721[_0x646c('0x34')]);}};Acw[_0x646c('0x35')][_0x646c('0x11')]=function(_0x52b3be){try{if(this[_0x646c('0x6')][_0x52b3be[_0x646c('0x4d')]]){logger[_0x646c('0x20')](_0x646c('0x4e'),JSON[_0x646c('0x4f')](_0x52b3be[_0x646c('0x4d')]));this[_0x646c('0x45')](_0x52b3be[_0x646c('0x4d')]);}else if(this['channels'][_0x52b3be['transfererlinkedid']]){logger[_0x646c('0x20')]('[%s][BLINDTRANSFER:LINKEDID]',JSON[_0x646c('0x4f')](_0x52b3be['transfererlinkedid']));this[_0x646c('0x45')](_0x52b3be[_0x646c('0x50')]);}}catch(_0x12295b){logger[_0x646c('0x2e')](_0x646c('0x51'),_0x12295b[_0x646c('0x34')]);}};Acw[_0x646c('0x35')][_0x646c('0xe')]=function(_0x496c33){try{if(this[_0x646c('0x4')][_0x496c33[_0x646c('0x17')]]&&this['voiceQueues'][_0x496c33[_0x646c('0x17')]][_0x646c('0x52')]===_0x646c('0x53')){if(this[_0x646c('0x1f')][_0x496c33['interface']]){logger[_0x646c('0x20')](_0x646c('0x54'),_0x496c33[_0x646c('0x29')],_0x496c33['interface'],_0x496c33[_0x646c('0x17')]);return RpcUser['savePause'](this[_0x646c('0x1f')][_0x496c33['interface']],_0x646c('0x55'),_0x496c33['uniqueid']);}}}catch(_0x294b65){logger['error']('[ACW][syncAgentRingNoAnswer]\x20%s',_0x294b65[_0x646c('0x34')]);}};module[_0x646c('0x56')]=Acw;