Built motion from commit 0900f080.|2.5.45
[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 _0x6fcf=['stringify','transfererlinkedid','[%s][BLINDTRANSFER:LINKEDID]','[ACW][syncBlindTransfer]\x20%s','autopause','all','[%s][AUTOPAUSE][AGENT:%s][QUEUE:%]','Auto-Pause','[ACW][syncAgentRingNoAnswer]\x20%s','exports','util','../ami','acw','../rpc/voiceAgentReport','voiceQueues','agents','timers','agentconnect','syncAgentConnect','hanguprequest','syncHangupRequest','bind','hangup','syncHangup','syncAgentRingNoAnswer','syncAttendedTransfer','custom:agentConnectPreview','syncAgentConnectPreview','milliseconds','startAcw','channels','queue','ACW','mandatoryDispositionPause','name','Action','QueuePause','then','getAgent','voicePause','info','[%s][START][AGENT:%s][QUEUE:%s]','savePause','timer','stopAcw','lastPauseAt','format','YYYY-MM-DD\x20HH:mm:ss','uniqueid','update','[%s][UPDATE][ACWTIME:%s]','error','[%s][UPDATE][ERRORS:%s]','[%s][INPAUSE][AGENT:%s][QUEUE:%s]','acwTimeout','[ACW][START]\x20%s','message','prototype','[%s][TIMER][STOP][AGENT:%s]','saveUnpause','catch','[ACW][TIMERS]','[ACW][STOP]\x20%s','mandatoryDisposition','interface','destlinkedid','[ACW][syncAgentConnect]\x20%s','[ACW][syncAgentConnectPreview]\x20%s','attended','[%s][HANGUP:UNIQUEID]','linkedid','isUndefined','[%s][HANGUP:LINKEDID]','[ACW][syncHangupRequest]\x20%s','[%s][HANGUPATTENDEDTRANSFER:UNIQUEID]','[%s][HANGUPATTENDEDTRANSFER:LINKEDID]','isNil','transfereeuniqueid','secondtransfereruniqueid','transfertargetuniqueid','origtransfereruniqueid','[ACW][syncAttendedTransfer]\x20%s','syncBlindTransfer','transfereruniqueid'];(function(_0x55f8b4,_0x43f30d){var _0x2475f9=function(_0xdd6f4a){while(--_0xdd6f4a){_0x55f8b4['push'](_0x55f8b4['shift']());}};_0x2475f9(++_0x43f30d);}(_0x6fcf,0x1ae));var _0xf6fc=function(_0x2f3848,_0x48564d){_0x2f3848=_0x2f3848-0x0;var _0x102668=_0x6fcf[_0x2f3848];return _0x102668;};'use strict';var util=require(_0xf6fc('0x0'));var _=require('lodash');var moment=require('moment');var ami=require(_0xf6fc('0x1'));var logger=require('../../../config/logger')(_0xf6fc('0x2'));var RpcUser=require('../rpc/user');var RpcVoiceAgentReport=require(_0xf6fc('0x3'));function Acw(_0x3a7904){this[_0xf6fc('0x4')]=_0x3a7904[_0xf6fc('0x4')];this['agents']=_0x3a7904[_0xf6fc('0x5')];this[_0xf6fc('0x6')]=_0x3a7904['timers'];this['channels']={};ami['on'](_0xf6fc('0x7'),this[_0xf6fc('0x8')]['bind'](this));ami['on'](_0xf6fc('0x9'),this[_0xf6fc('0xa')][_0xf6fc('0xb')](this));ami['on'](_0xf6fc('0xc'),this[_0xf6fc('0xd')]['bind'](this));ami['on']('agentringnoanswer',this[_0xf6fc('0xe')]['bind'](this));ami['on']('attendedtransfer',this[_0xf6fc('0xf')][_0xf6fc('0xb')](this));ami['on']('blindtransfer',this['syncBlindTransfer'][_0xf6fc('0xb')](this));ami['on'](_0xf6fc('0x10'),this[_0xf6fc('0x11')][_0xf6fc('0xb')](this));}function getDiff(_0x19159c){var _0x1b66de=moment()[_0xf6fc('0x12')](0x0);var _0x49c41e=moment(_0x19159c)[_0xf6fc('0x12')](0x0);return _0x1b66de['diff'](_0x49c41e,'seconds');}Acw['prototype'][_0xf6fc('0x13')]=function(_0x17de52){try{var _0x450b99=this;var _0x557a2f=this[_0xf6fc('0x14')][_0x17de52]['interface'];var _0x39f76c=this[_0xf6fc('0x14')][_0x17de52][_0xf6fc('0x15')];var _0x4a55a3=this[_0xf6fc('0x4')][_0x39f76c];var _0x59b00b=![];var _0x3e9ed9=_0xf6fc('0x16');if(_0x4a55a3['mandatoryDisposition']){if(_0x4a55a3[_0xf6fc('0x17')][_0xf6fc('0x18')]){_0x59b00b=!![];_0x3e9ed9=_0x4a55a3['mandatoryDispositionPause'][_0xf6fc('0x18')];}}ami[_0xf6fc('0x19')]({'action':_0xf6fc('0x1a'),'interface':_0x557a2f,'paused':!![],'reason':_0x3e9ed9})[_0xf6fc('0x1b')](function(_0x335d9e){if(_0x450b99[_0xf6fc('0x5')][_0x557a2f]){return RpcUser[_0xf6fc('0x1c')](_0x450b99['agents'][_0x557a2f]['id'])[_0xf6fc('0x1b')](function(_0x100737){if(_0x100737&&!_0x100737[_0xf6fc('0x1d')]){logger[_0xf6fc('0x1e')](_0xf6fc('0x1f'),_0x17de52,_0x557a2f,_0x39f76c);var _0x517512=_0x450b99[_0xf6fc('0x14')][_0x17de52]['attended']&&_0x450b99[_0xf6fc('0x14')][_0x17de52]['destlinkedid']?_0x450b99[_0xf6fc('0x14')][_0x17de52]['destlinkedid']:_0x17de52;return RpcUser[_0xf6fc('0x20')](_0x450b99[_0xf6fc('0x5')][_0x557a2f],_0x3e9ed9,_0x517512)[_0xf6fc('0x1b')](function(_0x1d90b9){if(!_0x59b00b){_0x450b99['timers'][_0x557a2f]={};logger[_0xf6fc('0x1e')]('[%s][TIMER:%s][AGENT:%s][QUEUE:%s]',_0x17de52,_0x450b99['voiceQueues'][_0x39f76c]['acwTimeout'],_0x557a2f,_0x39f76c);_0x450b99['timers'][_0x557a2f][_0xf6fc('0x21')]=setTimeout(_0x450b99[_0xf6fc('0x22')][_0xf6fc('0xb')](_0x450b99,_0x557a2f),_0x450b99[_0xf6fc('0x4')][_0x39f76c]['acwTimeout']*0x3e8);_0x450b99['timers'][_0x557a2f][_0xf6fc('0x23')]=moment()[_0xf6fc('0x24')](_0xf6fc('0x25'));_0x450b99[_0xf6fc('0x6')][_0x557a2f][_0xf6fc('0x26')]=_0x17de52;_0x450b99['timers'][_0x557a2f][_0xf6fc('0x15')]=_0x39f76c;_0x450b99[_0xf6fc('0x6')][_0x557a2f]['updateAcw']=function(){var _0xc3a753=getDiff(_0x450b99[_0xf6fc('0x6')][_0x557a2f]['lastPauseAt']);clearTimeout(_0x450b99[_0xf6fc('0x6')][_0x557a2f][_0xf6fc('0x21')]);_0x450b99[_0xf6fc('0x6')][_0x557a2f][_0xf6fc('0x21')]=![];RpcVoiceAgentReport[_0xf6fc('0x27')]({'acwtime':_0xc3a753},_0x450b99['timers'][_0x557a2f]['uniqueid'],_0x557a2f)[_0xf6fc('0x1b')](function(_0xa920db){logger[_0xf6fc('0x1e')](_0xf6fc('0x28'),_0x17de52,_0xc3a753,_0xa920db);})['catch'](function(_0x3547a1){logger[_0xf6fc('0x29')](_0xf6fc('0x2a'),_0x17de52,_0x3547a1);});delete _0x450b99[_0xf6fc('0x6')][_0x557a2f];};}});}else{logger[_0xf6fc('0x1e')](_0xf6fc('0x2b'),_0x17de52,_0x557a2f,_0x39f76c);}});}})['catch'](function(_0xda9693){logger[_0xf6fc('0x29')]('[%s][TIMER:%s][AGENT:%s][QUEUE:%s]',_0x17de52,_0x450b99[_0xf6fc('0x4')][_0x39f76c][_0xf6fc('0x2c')],_0x557a2f,_0x39f76c);})['finally'](function(){delete _0x450b99[_0xf6fc('0x14')][_0x17de52];});}catch(_0x249386){logger['error'](_0xf6fc('0x2d'),_0x249386[_0xf6fc('0x2e')]);}};Acw[_0xf6fc('0x2f')][_0xf6fc('0x22')]=function(_0x36c346){try{var _0x53c432=this;if(_0x53c432['timers'][_0x36c346]){_0x53c432[_0xf6fc('0x6')][_0x36c346][_0xf6fc('0x21')]=![];var _0x5bea27=_0x53c432[_0xf6fc('0x6')][_0x36c346][_0xf6fc('0x26')];var _0x32886d=_0x53c432[_0xf6fc('0x6')][_0x36c346]['queue'];var _0x2abf1f=_0x53c432[_0xf6fc('0x4')][_0x32886d][_0xf6fc('0x2c')];logger['info'](_0xf6fc('0x30'),_0x5bea27,_0x36c346);RpcUser[_0xf6fc('0x31')](this[_0xf6fc('0x5')][_0x36c346]);RpcVoiceAgentReport[_0xf6fc('0x27')]({'acwtime':_0x2abf1f,'agentacw':!![]},_0x5bea27,_0x36c346)[_0xf6fc('0x1b')](function(_0x280a27){logger[_0xf6fc('0x1e')]('[%s][UPDATE][ACWTIME:%s]',_0x5bea27,_0x2abf1f,_0x280a27);})[_0xf6fc('0x32')](function(_0x511a82){logger[_0xf6fc('0x29')](_0xf6fc('0x2a'),_0x5bea27,_0x511a82);});}else{logger[_0xf6fc('0x29')]('[ACW][STOP]\x20Interface\x20%s\x20doesn\x27t\x20have\x20timer',_0x36c346);if(_0x53c432[_0xf6fc('0x6')]){logger[_0xf6fc('0x1e')](_0xf6fc('0x33'),JSON['stringify'](_0x53c432['timers']));}}}catch(_0x2b9bf5){logger[_0xf6fc('0x29')](_0xf6fc('0x34'),_0x2b9bf5[_0xf6fc('0x2e')]);}};Acw[_0xf6fc('0x2f')][_0xf6fc('0x8')]=function(_0x19117e){try{if(this[_0xf6fc('0x4')][_0x19117e['queue']]&&(this[_0xf6fc('0x4')][_0x19117e[_0xf6fc('0x15')]][_0xf6fc('0x2')]||this[_0xf6fc('0x4')][_0x19117e[_0xf6fc('0x15')]][_0xf6fc('0x35')])){if(this[_0xf6fc('0x5')][_0x19117e['interface']]){this[_0xf6fc('0x14')][_0x19117e[_0xf6fc('0x26')]]={'queue':_0x19117e['queue'],'interface':_0x19117e[_0xf6fc('0x36')],'destlinkedid':_0x19117e[_0xf6fc('0x37')]};}}}catch(_0x1960a4){logger[_0xf6fc('0x29')](_0xf6fc('0x38'),_0x1960a4[_0xf6fc('0x2e')]);}};Acw[_0xf6fc('0x2f')][_0xf6fc('0x11')]=function(_0x4e0498){try{if(this[_0xf6fc('0x4')][_0x4e0498[_0xf6fc('0x15')]]&&(this[_0xf6fc('0x4')][_0x4e0498[_0xf6fc('0x15')]][_0xf6fc('0x2')]||this[_0xf6fc('0x4')][_0x4e0498[_0xf6fc('0x15')]][_0xf6fc('0x35')])){if(this['agents'][_0x4e0498[_0xf6fc('0x36')]]){this[_0xf6fc('0x14')][_0x4e0498[_0xf6fc('0x26')]]={'queue':_0x4e0498[_0xf6fc('0x15')],'interface':_0x4e0498['interface']};}}}catch(_0x441c7e){logger[_0xf6fc('0x29')](_0xf6fc('0x39'),_0x441c7e[_0xf6fc('0x2e')]);}};Acw[_0xf6fc('0x2f')][_0xf6fc('0xa')]=function(_0x4179a7){try{if(this['channels'][_0x4179a7[_0xf6fc('0x26')]]&&_['isUndefined'](this[_0xf6fc('0x14')][_0x4179a7['uniqueid']][_0xf6fc('0x3a')])){logger[_0xf6fc('0x1e')](_0xf6fc('0x3b'),_0x4179a7[_0xf6fc('0x26')]);this[_0xf6fc('0x13')](_0x4179a7[_0xf6fc('0x26')]);}else if(this[_0xf6fc('0x14')][_0x4179a7[_0xf6fc('0x3c')]]&&_[_0xf6fc('0x3d')](this['channels'][_0x4179a7[_0xf6fc('0x3c')]][_0xf6fc('0x3a')])){logger[_0xf6fc('0x1e')](_0xf6fc('0x3e'),_0x4179a7[_0xf6fc('0x3c')]);this[_0xf6fc('0x13')](_0x4179a7[_0xf6fc('0x3c')]);}}catch(_0x3c7ff3){logger['error'](_0xf6fc('0x3f'),_0x3c7ff3[_0xf6fc('0x2e')]);}};Acw[_0xf6fc('0x2f')][_0xf6fc('0xd')]=function(_0x591a8c){try{if(this[_0xf6fc('0x14')][_0x591a8c[_0xf6fc('0x26')]]&&this[_0xf6fc('0x14')][_0x591a8c[_0xf6fc('0x26')]][_0xf6fc('0x3a')]){logger[_0xf6fc('0x1e')](_0xf6fc('0x40'),_0x591a8c[_0xf6fc('0x26')]);this[_0xf6fc('0x13')](_0x591a8c['uniqueid']);}else if(this[_0xf6fc('0x14')][_0x591a8c['linkedid']]&&this[_0xf6fc('0x14')][_0x591a8c[_0xf6fc('0x3c')]][_0xf6fc('0x3a')]){logger['info'](_0xf6fc('0x41'),_0x591a8c[_0xf6fc('0x3c')]);this['startAcw'](_0x591a8c[_0xf6fc('0x3c')]);}}catch(_0x46672e){logger[_0xf6fc('0x29')]('[ACW][syncHangup]\x20%s',_0x46672e[_0xf6fc('0x2e')]);}};Acw[_0xf6fc('0x2f')][_0xf6fc('0xf')]=function(_0x1b0483){try{if(!_[_0xf6fc('0x42')](this[_0xf6fc('0x14')][_0x1b0483[_0xf6fc('0x43')]])){this[_0xf6fc('0x13')](_0x1b0483[_0xf6fc('0x43')]);if(this[_0xf6fc('0x14')][_0x1b0483[_0xf6fc('0x44')]]){this['channels'][_0x1b0483[_0xf6fc('0x44')]][_0xf6fc('0x3a')]=!![];this[_0xf6fc('0x14')][_0x1b0483[_0xf6fc('0x45')]]=this[_0xf6fc('0x14')][_0x1b0483['secondtransfereruniqueid']];delete this[_0xf6fc('0x14')][_0x1b0483[_0xf6fc('0x44')]];}}else if(!_[_0xf6fc('0x42')](this[_0xf6fc('0x14')][_0x1b0483['transfertargetuniqueid']])){this[_0xf6fc('0x13')](_0x1b0483[_0xf6fc('0x45')]);if(this[_0xf6fc('0x14')][_0x1b0483['origtransfereruniqueid']]){this['channels'][_0x1b0483[_0xf6fc('0x46')]][_0xf6fc('0x3a')]=!![];this[_0xf6fc('0x14')][_0x1b0483[_0xf6fc('0x43')]]=this[_0xf6fc('0x14')][_0x1b0483[_0xf6fc('0x46')]];delete this[_0xf6fc('0x14')][_0x1b0483[_0xf6fc('0x46')]];}}}catch(_0x42fc97){logger[_0xf6fc('0x29')](_0xf6fc('0x47'),_0x42fc97['message']);}};Acw['prototype'][_0xf6fc('0x48')]=function(_0x49e0ea){try{if(this[_0xf6fc('0x14')][_0x49e0ea[_0xf6fc('0x49')]]){logger[_0xf6fc('0x1e')]('[%s][BLINDTRANSFER:UNIQUEID]',JSON[_0xf6fc('0x4a')](_0x49e0ea[_0xf6fc('0x49')]));this[_0xf6fc('0x13')](_0x49e0ea[_0xf6fc('0x49')]);}else if(this[_0xf6fc('0x14')][_0x49e0ea[_0xf6fc('0x4b')]]){logger[_0xf6fc('0x1e')](_0xf6fc('0x4c'),JSON[_0xf6fc('0x4a')](_0x49e0ea[_0xf6fc('0x4b')]));this[_0xf6fc('0x13')](_0x49e0ea[_0xf6fc('0x4b')]);}}catch(_0x5316c1){logger['error'](_0xf6fc('0x4d'),_0x5316c1[_0xf6fc('0x2e')]);}};Acw[_0xf6fc('0x2f')]['syncAgentRingNoAnswer']=function(_0x1cac02){try{if(this[_0xf6fc('0x4')][_0x1cac02[_0xf6fc('0x15')]]&&this[_0xf6fc('0x4')][_0x1cac02[_0xf6fc('0x15')]][_0xf6fc('0x4e')]===_0xf6fc('0x4f')){if(this[_0xf6fc('0x5')][_0x1cac02[_0xf6fc('0x36')]]){logger[_0xf6fc('0x1e')](_0xf6fc('0x50'),_0x1cac02[_0xf6fc('0x26')],_0x1cac02[_0xf6fc('0x36')],_0x1cac02[_0xf6fc('0x15')]);return RpcUser[_0xf6fc('0x20')](this[_0xf6fc('0x5')][_0x1cac02[_0xf6fc('0x36')]],_0xf6fc('0x51'),_0x1cac02[_0xf6fc('0x26')]);}}}catch(_0x12eb42){logger['error'](_0xf6fc('0x52'),_0x12eb42[_0xf6fc('0x2e')]);}};module[_0xf6fc('0x53')]=Acw;