Built motion from commit ce9a7520.|2.5.39
[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 _0x01b9=['[ACW][TIMERS]','[ACW][STOP]\x20%s','[ACW][syncAgentConnect]\x20%s','syncAgentConnectPreview','[ACW][syncAgentConnectPreview]\x20%s','linkedid','isUndefined','[ACW][syncHangupRequest]\x20%s','syncHangup','[%s][HANGUPATTENDEDTRANSFER:UNIQUEID]','[%s][HANGUPATTENDEDTRANSFER:LINKEDID]','[ACW][syncHangup]\x20%s','isNil','transfereeuniqueid','secondtransfereruniqueid','transfertargetuniqueid','origtransfereruniqueid','transfereruniqueid','[%s][BLINDTRANSFER:UNIQUEID]','stringify','transfererlinkedid','[%s][BLINDTRANSFER:LINKEDID]','all','[%s][AUTOPAUSE][AGENT:%s][QUEUE:%]','savePause','Auto-Pause','exports','lodash','../../../config/logger','acw','../rpc/user','../rpc/voiceAgentReport','voiceQueues','agents','timers','channels','agentconnect','syncAgentConnect','bind','syncHangupRequest','hangup','agentringnoanswer','syncAgentRingNoAnswer','syncAttendedTransfer','blindtransfer','syncBlindTransfer','custom:agentConnectPreview','milliseconds','seconds','prototype','startAcw','interface','queue','mandatoryDisposition','mandatoryDispositionPause','Action','getAgent','voicePause','info','[%s][START][AGENT:%s][QUEUE:%s]','attended','destlinkedid','then','[%s][TIMER:%s][AGENT:%s][QUEUE:%s]','acwTimeout','timer','stopAcw','YYYY-MM-DD\x20HH:mm:ss','uniqueid','updateAcw','lastPauseAt','update','catch','[%s][UPDATE][ERRORS:%s]','[%s][INPAUSE][AGENT:%s][QUEUE:%s]','finally','[ACW][START]\x20%s','message','[%s][UPDATE][ACWTIME:%s]','error','[ACW][STOP]\x20Interface\x20%s\x20doesn\x27t\x20have\x20timer'];(function(_0x162c16,_0x2d1ea4){var _0x4deade=function(_0x53f958){while(--_0x53f958){_0x162c16['push'](_0x162c16['shift']());}};_0x4deade(++_0x2d1ea4);}(_0x01b9,0x6c));var _0x901b=function(_0x4fbab6,_0x4de7d9){_0x4fbab6=_0x4fbab6-0x0;var _0x417c46=_0x01b9[_0x4fbab6];return _0x417c46;};'use strict';var util=require('util');var _=require(_0x901b('0x0'));var moment=require('moment');var ami=require('../ami');var logger=require(_0x901b('0x1'))(_0x901b('0x2'));var RpcUser=require(_0x901b('0x3'));var RpcVoiceAgentReport=require(_0x901b('0x4'));function Acw(_0x1a9834){this['voiceQueues']=_0x1a9834[_0x901b('0x5')];this['agents']=_0x1a9834[_0x901b('0x6')];this[_0x901b('0x7')]=_0x1a9834[_0x901b('0x7')];this[_0x901b('0x8')]={};ami['on'](_0x901b('0x9'),this[_0x901b('0xa')][_0x901b('0xb')](this));ami['on']('hanguprequest',this[_0x901b('0xc')][_0x901b('0xb')](this));ami['on'](_0x901b('0xd'),this['syncHangup'][_0x901b('0xb')](this));ami['on'](_0x901b('0xe'),this[_0x901b('0xf')][_0x901b('0xb')](this));ami['on']('attendedtransfer',this[_0x901b('0x10')]['bind'](this));ami['on'](_0x901b('0x11'),this[_0x901b('0x12')][_0x901b('0xb')](this));ami['on'](_0x901b('0x13'),this['syncAgentConnectPreview']['bind'](this));}function getDiff(_0x2cfe79){var _0xc4b7b2=moment()[_0x901b('0x14')](0x0);var _0x121e99=moment(_0x2cfe79)['milliseconds'](0x0);return _0xc4b7b2['diff'](_0x121e99,_0x901b('0x15'));}Acw[_0x901b('0x16')][_0x901b('0x17')]=function(_0x195ce3){try{var _0x13f95d=this;var _0x23aa02=this['channels'][_0x195ce3][_0x901b('0x18')];var _0x2b5173=this['channels'][_0x195ce3][_0x901b('0x19')];var _0x38f9b5=this['voiceQueues'][_0x2b5173];var _0x9da0e5=![];var _0x9c533='ACW';if(_0x38f9b5[_0x901b('0x1a')]){if(_0x38f9b5['mandatoryDispositionPause']['name']){_0x9da0e5=!![];_0x9c533=_0x38f9b5[_0x901b('0x1b')]['name'];}}ami[_0x901b('0x1c')]({'action':'QueuePause','interface':_0x23aa02,'paused':!![],'reason':_0x9c533})['then'](function(_0x3de16d){if(_0x13f95d[_0x901b('0x6')][_0x23aa02]){return RpcUser[_0x901b('0x1d')](_0x13f95d[_0x901b('0x6')][_0x23aa02]['id'])['then'](function(_0x5c76bf){if(_0x5c76bf&&!_0x5c76bf[_0x901b('0x1e')]){logger[_0x901b('0x1f')](_0x901b('0x20'),_0x195ce3,_0x23aa02,_0x2b5173);var _0x1a9782=_0x13f95d[_0x901b('0x8')][_0x195ce3][_0x901b('0x21')]&&_0x13f95d[_0x901b('0x8')][_0x195ce3][_0x901b('0x22')]?_0x13f95d[_0x901b('0x8')][_0x195ce3]['destlinkedid']:_0x195ce3;return RpcUser['savePause'](_0x13f95d['agents'][_0x23aa02],_0x9c533,_0x1a9782)[_0x901b('0x23')](function(_0x3fc29f){if(!_0x9da0e5){_0x13f95d['timers'][_0x23aa02]={};logger[_0x901b('0x1f')](_0x901b('0x24'),_0x195ce3,_0x13f95d['voiceQueues'][_0x2b5173][_0x901b('0x25')],_0x23aa02,_0x2b5173);_0x13f95d['timers'][_0x23aa02][_0x901b('0x26')]=setTimeout(_0x13f95d[_0x901b('0x27')][_0x901b('0xb')](_0x13f95d,_0x23aa02),_0x13f95d[_0x901b('0x5')][_0x2b5173][_0x901b('0x25')]*0x3e8);_0x13f95d[_0x901b('0x7')][_0x23aa02]['lastPauseAt']=moment()['format'](_0x901b('0x28'));_0x13f95d[_0x901b('0x7')][_0x23aa02][_0x901b('0x29')]=_0x195ce3;_0x13f95d[_0x901b('0x7')][_0x23aa02][_0x901b('0x19')]=_0x2b5173;_0x13f95d['timers'][_0x23aa02][_0x901b('0x2a')]=function(){var _0x167998=getDiff(_0x13f95d['timers'][_0x23aa02][_0x901b('0x2b')]);clearTimeout(_0x13f95d[_0x901b('0x7')][_0x23aa02][_0x901b('0x26')]);_0x13f95d[_0x901b('0x7')][_0x23aa02][_0x901b('0x26')]=![];RpcVoiceAgentReport[_0x901b('0x2c')]({'acwtime':_0x167998},_0x13f95d[_0x901b('0x7')][_0x23aa02][_0x901b('0x29')],_0x23aa02)[_0x901b('0x23')](function(_0x28cb4c){logger['info']('[%s][UPDATE][ACWTIME:%s]',_0x195ce3,_0x167998,_0x28cb4c);})[_0x901b('0x2d')](function(_0x107274){logger['error'](_0x901b('0x2e'),_0x195ce3,_0x107274);});delete _0x13f95d['timers'][_0x23aa02];};}});}else{logger[_0x901b('0x1f')](_0x901b('0x2f'),_0x195ce3,_0x23aa02,_0x2b5173);}});}})[_0x901b('0x2d')](function(_0x182f11){logger['error'](_0x901b('0x24'),_0x195ce3,_0x13f95d[_0x901b('0x5')][_0x2b5173][_0x901b('0x25')],_0x23aa02,_0x2b5173);})[_0x901b('0x30')](function(){delete _0x13f95d[_0x901b('0x8')][_0x195ce3];});}catch(_0xb70e9b){logger['error'](_0x901b('0x31'),_0xb70e9b[_0x901b('0x32')]);}};Acw[_0x901b('0x16')][_0x901b('0x27')]=function(_0x5525bb){try{var _0x4e9225=this;if(_0x4e9225[_0x901b('0x7')][_0x5525bb]){_0x4e9225['timers'][_0x5525bb][_0x901b('0x26')]=![];var _0x19d880=_0x4e9225[_0x901b('0x7')][_0x5525bb][_0x901b('0x29')];var _0xd827fa=_0x4e9225[_0x901b('0x7')][_0x5525bb][_0x901b('0x19')];var _0x79fd5f=_0x4e9225[_0x901b('0x5')][_0xd827fa][_0x901b('0x25')];logger[_0x901b('0x1f')]('[%s][TIMER][STOP][AGENT:%s]',_0x19d880,_0x5525bb);RpcUser['saveUnpause'](this[_0x901b('0x6')][_0x5525bb]);RpcVoiceAgentReport['update']({'acwtime':_0x79fd5f,'agentacw':!![]},_0x19d880,_0x5525bb)['then'](function(_0xd4a57f){logger[_0x901b('0x1f')](_0x901b('0x33'),_0x19d880,_0x79fd5f,_0xd4a57f);})['catch'](function(_0x396969){logger['error'](_0x901b('0x2e'),_0x19d880,_0x396969);});}else{logger[_0x901b('0x34')](_0x901b('0x35'),_0x5525bb);if(_0x4e9225[_0x901b('0x7')]){logger['info'](_0x901b('0x36'),JSON['stringify'](_0x4e9225[_0x901b('0x7')]));}}}catch(_0x59a07e){logger['error'](_0x901b('0x37'),_0x59a07e['message']);}};Acw[_0x901b('0x16')][_0x901b('0xa')]=function(_0x95c96c){try{if(this[_0x901b('0x5')][_0x95c96c['queue']]&&(this[_0x901b('0x5')][_0x95c96c['queue']][_0x901b('0x2')]||this['voiceQueues'][_0x95c96c[_0x901b('0x19')]]['mandatoryDisposition'])){if(this[_0x901b('0x6')][_0x95c96c['interface']]){this[_0x901b('0x8')][_0x95c96c[_0x901b('0x29')]]={'queue':_0x95c96c[_0x901b('0x19')],'interface':_0x95c96c[_0x901b('0x18')],'destlinkedid':_0x95c96c['destlinkedid']};}}}catch(_0x1c10bb){logger['error'](_0x901b('0x38'),_0x1c10bb[_0x901b('0x32')]);}};Acw[_0x901b('0x16')][_0x901b('0x39')]=function(_0x2f7aa5){try{if(this[_0x901b('0x5')][_0x2f7aa5[_0x901b('0x19')]]&&(this['voiceQueues'][_0x2f7aa5[_0x901b('0x19')]][_0x901b('0x2')]||this[_0x901b('0x5')][_0x2f7aa5['queue']][_0x901b('0x1a')])){if(this[_0x901b('0x6')][_0x2f7aa5[_0x901b('0x18')]]){this['channels'][_0x2f7aa5['uniqueid']]={'queue':_0x2f7aa5['queue'],'interface':_0x2f7aa5[_0x901b('0x18')]};}}}catch(_0x5a20af){logger[_0x901b('0x34')](_0x901b('0x3a'),_0x5a20af[_0x901b('0x32')]);}};Acw[_0x901b('0x16')][_0x901b('0xc')]=function(_0xd40310){try{if(this[_0x901b('0x8')][_0xd40310['uniqueid']]&&_['isUndefined'](this[_0x901b('0x8')][_0xd40310[_0x901b('0x29')]]['attended'])){logger[_0x901b('0x1f')]('[%s][HANGUP:UNIQUEID]',_0xd40310['uniqueid']);this[_0x901b('0x17')](_0xd40310[_0x901b('0x29')]);}else if(this[_0x901b('0x8')][_0xd40310[_0x901b('0x3b')]]&&_[_0x901b('0x3c')](this[_0x901b('0x8')][_0xd40310[_0x901b('0x3b')]][_0x901b('0x21')])){logger[_0x901b('0x1f')]('[%s][HANGUP:LINKEDID]',_0xd40310[_0x901b('0x3b')]);this[_0x901b('0x17')](_0xd40310[_0x901b('0x3b')]);}}catch(_0x44902d){logger['error'](_0x901b('0x3d'),_0x44902d['message']);}};Acw['prototype'][_0x901b('0x3e')]=function(_0x834f30){try{if(this[_0x901b('0x8')][_0x834f30[_0x901b('0x29')]]&&this['channels'][_0x834f30[_0x901b('0x29')]][_0x901b('0x21')]){logger[_0x901b('0x1f')](_0x901b('0x3f'),_0x834f30['uniqueid']);this[_0x901b('0x17')](_0x834f30[_0x901b('0x29')]);}else if(this['channels'][_0x834f30[_0x901b('0x3b')]]&&this['channels'][_0x834f30['linkedid']][_0x901b('0x21')]){logger[_0x901b('0x1f')](_0x901b('0x40'),_0x834f30['linkedid']);this[_0x901b('0x17')](_0x834f30[_0x901b('0x3b')]);}}catch(_0x46720a){logger['error'](_0x901b('0x41'),_0x46720a[_0x901b('0x32')]);}};Acw['prototype'][_0x901b('0x10')]=function(_0x3d18b2){try{if(!_[_0x901b('0x42')](this[_0x901b('0x8')][_0x3d18b2[_0x901b('0x43')]])){this['startAcw'](_0x3d18b2[_0x901b('0x43')]);if(this[_0x901b('0x8')][_0x3d18b2[_0x901b('0x44')]]){this['channels'][_0x3d18b2[_0x901b('0x44')]][_0x901b('0x21')]=!![];this[_0x901b('0x8')][_0x3d18b2[_0x901b('0x45')]]=this[_0x901b('0x8')][_0x3d18b2['secondtransfereruniqueid']];delete this[_0x901b('0x8')][_0x3d18b2[_0x901b('0x44')]];}}else if(!_[_0x901b('0x42')](this[_0x901b('0x8')][_0x3d18b2[_0x901b('0x45')]])){this[_0x901b('0x17')](_0x3d18b2[_0x901b('0x45')]);if(this[_0x901b('0x8')][_0x3d18b2[_0x901b('0x46')]]){this[_0x901b('0x8')][_0x3d18b2['origtransfereruniqueid']][_0x901b('0x21')]=!![];this[_0x901b('0x8')][_0x3d18b2['transfereeuniqueid']]=this['channels'][_0x3d18b2[_0x901b('0x46')]];delete this['channels'][_0x3d18b2[_0x901b('0x46')]];}}}catch(_0x50dd80){logger[_0x901b('0x34')]('[ACW][syncAttendedTransfer]\x20%s',_0x50dd80['message']);}};Acw['prototype'][_0x901b('0x12')]=function(_0x54ba9e){try{if(this[_0x901b('0x8')][_0x54ba9e[_0x901b('0x47')]]){logger[_0x901b('0x1f')](_0x901b('0x48'),JSON[_0x901b('0x49')](_0x54ba9e[_0x901b('0x47')]));this[_0x901b('0x17')](_0x54ba9e[_0x901b('0x47')]);}else if(this['channels'][_0x54ba9e[_0x901b('0x4a')]]){logger[_0x901b('0x1f')](_0x901b('0x4b'),JSON[_0x901b('0x49')](_0x54ba9e['transfererlinkedid']));this['startAcw'](_0x54ba9e[_0x901b('0x4a')]);}}catch(_0x12a2af){logger[_0x901b('0x34')]('[ACW][syncBlindTransfer]\x20%s',_0x12a2af[_0x901b('0x32')]);}};Acw[_0x901b('0x16')][_0x901b('0xf')]=function(_0x38eb90){try{if(this[_0x901b('0x5')][_0x38eb90['queue']]&&this[_0x901b('0x5')][_0x38eb90['queue']]['autopause']===_0x901b('0x4c')){if(this['agents'][_0x38eb90[_0x901b('0x18')]]){logger['info'](_0x901b('0x4d'),_0x38eb90[_0x901b('0x29')],_0x38eb90[_0x901b('0x18')],_0x38eb90[_0x901b('0x19')]);return RpcUser[_0x901b('0x4e')](this[_0x901b('0x6')][_0x38eb90[_0x901b('0x18')]],_0x901b('0x4f'),_0x38eb90[_0x901b('0x29')]);}}}catch(_0x3ae1df){logger[_0x901b('0x34')]('[ACW][syncAgentRingNoAnswer]\x20%s',_0x3ae1df[_0x901b('0x32')]);}};module[_0x901b('0x50')]=Acw;