Built motion from commit c0cdc9d8.|2.6.28
[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 _0xeec8=['channels','agentconnect','syncAgentConnect','hanguprequest','syncHangupRequest','bind','hangup','syncAgentRingNoAnswer','syncBlindTransfer','milliseconds','diff','seconds','prototype','updateAcw','lastPauseAt','timers','timer','uniqueid','then','info','[%s][UPDATE][ACWTIME:%s]','catch','finally','startAcw','interface','queue','ACW','mandatoryDisposition','mandatoryDispositionPause','Action','QueuePause','getAgent','voicePause','[%s][INPAUSE][AGENT:%s][QUEUE:%s]','[%s][START][AGENT:%s][QUEUE:%s]','attended','destlinkedid','savePause','acwTimeout','stopAcw','format','YYYY-MM-DD\x20HH:mm:ss','[%s][TIMER:%s][AGENT:%s][QUEUE:%s]','[ACW][START]\x20%s','message','pauseType','saveUnpause','update','error','[%s][UPDATE][ERRORS:%s]','[ACW][STOP]\x20Interface\x20%s\x20doesn\x27t\x20have\x20timer','[ACW][TIMERS]','[ACW][STOP]\x20%s','[ACW][syncAgentConnect]\x20%s','syncAgentConnectPreview','[ACW][syncAgentConnectPreview]\x20%s','isUndefined','[%s][HANGUP:UNIQUEID]','linkedid','[ACW][syncHangupRequest]\x20%s','syncHangup','[%s][HANGUPATTENDEDTRANSFER:UNIQUEID]','[ACW][syncHangup]\x20%s','syncAttendedTransfer','isNil','transfereeuniqueid','secondtransfereruniqueid','transfertargetuniqueid','origtransfereruniqueid','[ACW][syncAttendedTransfer]\x20%s','transfereruniqueid','stringify','transfererlinkedid','[%s][BLINDTRANSFER:LINKEDID]','autopause','all','Auto-Pause','[ACW][syncAgentRingNoAnswer]\x20%s','exports','lodash','../ami','../../../config/logger','acw','../rpc/user','../rpc/voiceAgentReport','voiceQueues','agents'];(function(_0x149a64,_0x10e365){var _0x38d6c0=function(_0x1454c6){while(--_0x1454c6){_0x149a64['push'](_0x149a64['shift']());}};_0x38d6c0(++_0x10e365);}(_0xeec8,0xfd));var _0x8eec=function(_0x5ba745,_0x54d837){_0x5ba745=_0x5ba745-0x0;var _0x2595fb=_0xeec8[_0x5ba745];return _0x2595fb;};'use strict';var _=require(_0x8eec('0x0'));var moment=require('moment');var ami=require(_0x8eec('0x1'));var logger=require(_0x8eec('0x2'))(_0x8eec('0x3'));var RpcUser=require(_0x8eec('0x4'));var RpcVoiceAgentReport=require(_0x8eec('0x5'));function Acw(_0x57a5b5){this[_0x8eec('0x6')]=_0x57a5b5['voiceQueues'];this[_0x8eec('0x7')]=_0x57a5b5[_0x8eec('0x7')];this['timers']=_0x57a5b5['timers'];this[_0x8eec('0x8')]={};ami['on'](_0x8eec('0x9'),this[_0x8eec('0xa')]['bind'](this));ami['on'](_0x8eec('0xb'),this[_0x8eec('0xc')][_0x8eec('0xd')](this));ami['on'](_0x8eec('0xe'),this['syncHangup']['bind'](this));ami['on']('agentringnoanswer',this[_0x8eec('0xf')][_0x8eec('0xd')](this));ami['on']('attendedtransfer',this['syncAttendedTransfer'][_0x8eec('0xd')](this));ami['on']('blindtransfer',this[_0x8eec('0x10')]['bind'](this));ami['on']('custom:agentConnectPreview',this['syncAgentConnectPreview'][_0x8eec('0xd')](this));}function getDiff(_0x15d376){var _0x734fa9=moment()[_0x8eec('0x11')](0x0);var _0x351d7b=moment(_0x15d376)[_0x8eec('0x11')](0x0);return _0x734fa9[_0x8eec('0x12')](_0x351d7b,_0x8eec('0x13'));}Acw[_0x8eec('0x14')][_0x8eec('0x15')]=function(_0x4ff8ec,_0x3c9813){var _0x155753=this;var _0x2a5736=getDiff(_0x155753['timers'][_0x4ff8ec][_0x8eec('0x16')]);clearTimeout(_0x155753[_0x8eec('0x17')][_0x4ff8ec][_0x8eec('0x18')]);_0x155753[_0x8eec('0x17')][_0x4ff8ec][_0x8eec('0x18')]=![];return RpcVoiceAgentReport['update']({'acwtime':_0x2a5736},_0x155753['timers'][_0x4ff8ec][_0x8eec('0x19')],_0x4ff8ec)[_0x8eec('0x1a')](function(_0x19af6c){logger[_0x8eec('0x1b')](_0x8eec('0x1c'),_0x3c9813,_0x2a5736,_0x19af6c);})[_0x8eec('0x1d')](function(_0x341ce9){logger['error']('[%s][UPDATE][ERRORS:%s]',_0x3c9813,_0x341ce9);})[_0x8eec('0x1e')](function(){delete _0x155753['timers'][_0x4ff8ec];});};Acw[_0x8eec('0x14')][_0x8eec('0x1f')]=function(_0x244387){try{var _0x16a602=this;var _0x593fe1=this['channels'][_0x244387][_0x8eec('0x20')];var _0x42b5a5=this[_0x8eec('0x8')][_0x244387][_0x8eec('0x21')];var _0x1494b2=this[_0x8eec('0x6')][_0x42b5a5];var _0x56a22a=![];var _0x4292e1=_0x8eec('0x22');if(_0x1494b2[_0x8eec('0x23')]&&_0x1494b2[_0x8eec('0x24')]['name']){_0x56a22a=!![];_0x4292e1=_0x1494b2[_0x8eec('0x24')]['name'];}return ami[_0x8eec('0x25')]({'action':_0x8eec('0x26'),'interface':_0x593fe1,'paused':!![],'reason':_0x4292e1})[_0x8eec('0x1a')](function(){if(_0x16a602[_0x8eec('0x7')][_0x593fe1]){return RpcUser[_0x8eec('0x27')](_0x16a602[_0x8eec('0x7')][_0x593fe1]['id'])['then'](function(_0x19ac51){if(!_0x19ac51||_0x19ac51[_0x8eec('0x28')]){logger[_0x8eec('0x1b')](_0x8eec('0x29'),_0x244387,_0x593fe1,_0x42b5a5);return;}logger[_0x8eec('0x1b')](_0x8eec('0x2a'),_0x244387,_0x593fe1,_0x42b5a5);var _0x5a5476=_0x16a602[_0x8eec('0x8')][_0x244387][_0x8eec('0x2b')]&&_0x16a602[_0x8eec('0x8')][_0x244387][_0x8eec('0x2c')]?_0x16a602['channels'][_0x244387][_0x8eec('0x2c')]:_0x244387;return RpcUser[_0x8eec('0x2d')](_0x16a602[_0x8eec('0x7')][_0x593fe1],_0x4292e1,_0x5a5476)[_0x8eec('0x1a')](function(_0x17aba9){_0x16a602[_0x8eec('0x6')][_0x42b5a5]['available']-=0x1;_0x16a602[_0x8eec('0x6')][_0x42b5a5]['paused']+=0x1;return _0x17aba9;});})[_0x8eec('0x1a')](function(_0x6279c5){if(_0x56a22a||!_0x6279c5){return;}_0x16a602[_0x8eec('0x17')][_0x593fe1]={};logger[_0x8eec('0x1b')]('[%s][TIMER:%s][AGENT:%s][QUEUE:%s]',_0x244387,_0x16a602[_0x8eec('0x6')][_0x42b5a5][_0x8eec('0x2e')],_0x593fe1,_0x42b5a5);_0x16a602[_0x8eec('0x17')][_0x593fe1][_0x8eec('0x18')]=setTimeout(_0x16a602[_0x8eec('0x2f')][_0x8eec('0xd')](_0x16a602,_0x593fe1),_0x16a602[_0x8eec('0x6')][_0x42b5a5][_0x8eec('0x2e')]*0x3e8);_0x16a602['timers'][_0x593fe1][_0x8eec('0x16')]=moment()[_0x8eec('0x30')](_0x8eec('0x31'));_0x16a602[_0x8eec('0x17')][_0x593fe1][_0x8eec('0x19')]=_0x244387;_0x16a602[_0x8eec('0x17')][_0x593fe1][_0x8eec('0x21')]=_0x42b5a5;_0x16a602['timers'][_0x593fe1]['updateAcw']=_0x16a602[_0x8eec('0x15')]['bind'](_0x16a602,_0x593fe1,_0x244387);});}})['catch'](function(){logger['error'](_0x8eec('0x32'),_0x244387,_0x16a602[_0x8eec('0x6')][_0x42b5a5][_0x8eec('0x2e')],_0x593fe1,_0x42b5a5);})[_0x8eec('0x1e')](function(){delete _0x16a602['channels'][_0x244387];});}catch(_0x35eb2d){logger['error'](_0x8eec('0x33'),_0x35eb2d[_0x8eec('0x34')]);}};Acw['prototype'][_0x8eec('0x2f')]=function(_0x212570){try{var _0x24ba53=this;if(_0x24ba53[_0x8eec('0x17')][_0x212570]){_0x24ba53[_0x8eec('0x17')][_0x212570][_0x8eec('0x18')]=![];var _0x724b23=_0x24ba53[_0x8eec('0x17')][_0x212570]['uniqueid'];var _0x3077b3=_0x24ba53[_0x8eec('0x17')][_0x212570][_0x8eec('0x21')];var _0x10d6f7=_0x24ba53[_0x8eec('0x6')][_0x3077b3][_0x8eec('0x2e')];logger['info']('[%s][TIMER][STOP][AGENT:%s]',_0x724b23,_0x212570);RpcUser['getAgent'](this[_0x8eec('0x7')][_0x212570]['id'])[_0x8eec('0x1a')](function(_0x58aca5){if(_0x58aca5[_0x8eec('0x35')]==='ACW'){return RpcUser[_0x8eec('0x36')](_0x24ba53[_0x8eec('0x7')][_0x212570]);}});RpcVoiceAgentReport[_0x8eec('0x37')]({'acwtime':_0x10d6f7,'agentacw':!![]},_0x724b23,_0x212570)[_0x8eec('0x1a')](function(_0x1e9bf3){logger[_0x8eec('0x1b')](_0x8eec('0x1c'),_0x724b23,_0x10d6f7,_0x1e9bf3);})[_0x8eec('0x1d')](function(_0x4cd907){logger[_0x8eec('0x38')](_0x8eec('0x39'),_0x724b23,_0x4cd907);});}else{logger[_0x8eec('0x38')](_0x8eec('0x3a'),_0x212570);if(_0x24ba53['timers']){logger[_0x8eec('0x1b')](_0x8eec('0x3b'),JSON['stringify'](_0x24ba53[_0x8eec('0x17')]));}}}catch(_0x4e0c60){logger[_0x8eec('0x38')](_0x8eec('0x3c'),_0x4e0c60['message']);}};Acw[_0x8eec('0x14')][_0x8eec('0xa')]=function(_0x1cb2ff){try{if(this[_0x8eec('0x6')][_0x1cb2ff[_0x8eec('0x21')]]&&(this[_0x8eec('0x6')][_0x1cb2ff['queue']][_0x8eec('0x3')]||this[_0x8eec('0x6')][_0x1cb2ff['queue']]['mandatoryDisposition'])){if(this[_0x8eec('0x7')][_0x1cb2ff[_0x8eec('0x20')]]){this[_0x8eec('0x8')][_0x1cb2ff[_0x8eec('0x19')]]={'queue':_0x1cb2ff[_0x8eec('0x21')],'interface':_0x1cb2ff[_0x8eec('0x20')],'destlinkedid':_0x1cb2ff['destlinkedid']};}}}catch(_0x2b0a11){logger[_0x8eec('0x38')](_0x8eec('0x3d'),_0x2b0a11[_0x8eec('0x34')]);}};Acw['prototype'][_0x8eec('0x3e')]=function(_0x3302ca){try{if(this['voiceQueues'][_0x3302ca[_0x8eec('0x21')]]&&(this[_0x8eec('0x6')][_0x3302ca[_0x8eec('0x21')]][_0x8eec('0x3')]||this['voiceQueues'][_0x3302ca[_0x8eec('0x21')]]['mandatoryDisposition'])){if(this[_0x8eec('0x7')][_0x3302ca['interface']]){this[_0x8eec('0x8')][_0x3302ca[_0x8eec('0x19')]]={'queue':_0x3302ca[_0x8eec('0x21')],'interface':_0x3302ca[_0x8eec('0x20')]};}}}catch(_0x4732cd){logger['error'](_0x8eec('0x3f'),_0x4732cd[_0x8eec('0x34')]);}};Acw[_0x8eec('0x14')][_0x8eec('0xc')]=function(_0x12eeeb){try{if(this[_0x8eec('0x8')][_0x12eeeb['uniqueid']]&&_[_0x8eec('0x40')](this[_0x8eec('0x8')][_0x12eeeb[_0x8eec('0x19')]][_0x8eec('0x2b')])){logger[_0x8eec('0x1b')](_0x8eec('0x41'),_0x12eeeb[_0x8eec('0x19')]);this['startAcw'](_0x12eeeb['uniqueid']);}else if(this[_0x8eec('0x8')][_0x12eeeb[_0x8eec('0x42')]]&&_[_0x8eec('0x40')](this[_0x8eec('0x8')][_0x12eeeb[_0x8eec('0x42')]][_0x8eec('0x2b')])){logger[_0x8eec('0x1b')]('[%s][HANGUP:LINKEDID]',_0x12eeeb[_0x8eec('0x42')]);this[_0x8eec('0x1f')](_0x12eeeb[_0x8eec('0x42')]);}}catch(_0x17f739){logger[_0x8eec('0x38')](_0x8eec('0x43'),_0x17f739[_0x8eec('0x34')]);}};Acw['prototype'][_0x8eec('0x44')]=function(_0x50719f){try{if(this[_0x8eec('0x8')][_0x50719f['uniqueid']]&&this['channels'][_0x50719f[_0x8eec('0x19')]][_0x8eec('0x2b')]){logger[_0x8eec('0x1b')](_0x8eec('0x45'),_0x50719f[_0x8eec('0x19')]);this[_0x8eec('0x1f')](_0x50719f[_0x8eec('0x19')]);}else if(this[_0x8eec('0x8')][_0x50719f[_0x8eec('0x42')]]&&this[_0x8eec('0x8')][_0x50719f[_0x8eec('0x42')]][_0x8eec('0x2b')]){logger[_0x8eec('0x1b')]('[%s][HANGUPATTENDEDTRANSFER:LINKEDID]',_0x50719f['linkedid']);this[_0x8eec('0x1f')](_0x50719f['linkedid']);}}catch(_0x4d39d1){logger[_0x8eec('0x38')](_0x8eec('0x46'),_0x4d39d1['message']);}};Acw['prototype'][_0x8eec('0x47')]=function(_0x260c18){try{if(!_[_0x8eec('0x48')](this['channels'][_0x260c18[_0x8eec('0x49')]])){this[_0x8eec('0x1f')](_0x260c18[_0x8eec('0x49')]);if(this['channels'][_0x260c18[_0x8eec('0x4a')]]){this[_0x8eec('0x8')][_0x260c18[_0x8eec('0x4a')]][_0x8eec('0x2b')]=!![];this['channels'][_0x260c18[_0x8eec('0x4b')]]=this[_0x8eec('0x8')][_0x260c18['secondtransfereruniqueid']];delete this[_0x8eec('0x8')][_0x260c18[_0x8eec('0x4a')]];}}else if(!_[_0x8eec('0x48')](this[_0x8eec('0x8')][_0x260c18[_0x8eec('0x4b')]])){this[_0x8eec('0x1f')](_0x260c18[_0x8eec('0x4b')]);if(this[_0x8eec('0x8')][_0x260c18['origtransfereruniqueid']]){this[_0x8eec('0x8')][_0x260c18[_0x8eec('0x4c')]][_0x8eec('0x2b')]=!![];this[_0x8eec('0x8')][_0x260c18[_0x8eec('0x49')]]=this[_0x8eec('0x8')][_0x260c18[_0x8eec('0x4c')]];delete this[_0x8eec('0x8')][_0x260c18[_0x8eec('0x4c')]];}}}catch(_0x92aab9){logger['error'](_0x8eec('0x4d'),_0x92aab9['message']);}};Acw[_0x8eec('0x14')][_0x8eec('0x10')]=function(_0x5b008f){try{if(this[_0x8eec('0x8')][_0x5b008f[_0x8eec('0x4e')]]){logger[_0x8eec('0x1b')]('[%s][BLINDTRANSFER:UNIQUEID]',JSON[_0x8eec('0x4f')](_0x5b008f[_0x8eec('0x4e')]));this[_0x8eec('0x1f')](_0x5b008f[_0x8eec('0x4e')]);}else if(this['channels'][_0x5b008f[_0x8eec('0x50')]]){logger[_0x8eec('0x1b')](_0x8eec('0x51'),JSON[_0x8eec('0x4f')](_0x5b008f[_0x8eec('0x50')]));this['startAcw'](_0x5b008f['transfererlinkedid']);}}catch(_0x3bcbc5){logger[_0x8eec('0x38')]('[ACW][syncBlindTransfer]\x20%s',_0x3bcbc5['message']);}};Acw[_0x8eec('0x14')][_0x8eec('0xf')]=function(_0x3990aa){try{if(this[_0x8eec('0x6')][_0x3990aa[_0x8eec('0x21')]]&&this['voiceQueues'][_0x3990aa['queue']][_0x8eec('0x52')]===_0x8eec('0x53')){if(this['agents'][_0x3990aa[_0x8eec('0x20')]]){logger['info']('[%s][AUTOPAUSE][AGENT:%s][QUEUE:%]',_0x3990aa[_0x8eec('0x19')],_0x3990aa[_0x8eec('0x20')],_0x3990aa[_0x8eec('0x21')]);return RpcUser[_0x8eec('0x2d')](this[_0x8eec('0x7')][_0x3990aa['interface']],_0x8eec('0x54'),_0x3990aa[_0x8eec('0x19')]);}}}catch(_0x3b5917){logger[_0x8eec('0x38')](_0x8eec('0x55'),_0x3b5917[_0x8eec('0x34')]);}};module[_0x8eec('0x56')]=Acw;