Built motion from commit ab870f9e.|2.5.44
[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 _0x15e0=['secondtransfereruniqueid','transfertargetuniqueid','origtransfereruniqueid','transfereruniqueid','[%s][BLINDTRANSFER:UNIQUEID]','transfererlinkedid','[ACW][syncBlindTransfer]\x20%s','autopause','all','[%s][AUTOPAUSE][AGENT:%s][QUEUE:%]','savePause','util','lodash','moment','../ami','acw','../rpc/user','../rpc/voiceAgentReport','voiceQueues','agents','timers','agentconnect','syncAgentConnect','bind','hanguprequest','syncHangupRequest','hangup','syncHangup','agentringnoanswer','attendedtransfer','syncAttendedTransfer','blindtransfer','syncBlindTransfer','custom:agentConnectPreview','syncAgentConnectPreview','milliseconds','diff','seconds','startAcw','channels','queue','ACW','mandatoryDisposition','mandatoryDispositionPause','name','QueuePause','then','getAgent','voicePause','info','[%s][START][AGENT:%s][QUEUE:%s]','destlinkedid','acwTimeout','timer','stopAcw','format','updateAcw','lastPauseAt','update','uniqueid','catch','[%s][UPDATE][ERRORS:%s]','[%s][INPAUSE][AGENT:%s][QUEUE:%s]','error','[%s][TIMER:%s][AGENT:%s][QUEUE:%s]','finally','prototype','saveUnpause','[ACW][TIMERS]','stringify','[ACW][STOP]\x20%s','message','interface','[ACW][syncAgentConnect]\x20%s','isUndefined','attended','linkedid','[%s][HANGUP:LINKEDID]','isNil','transfereeuniqueid'];(function(_0x43d6b8,_0x15d2a7){var _0x45673c=function(_0x4aa501){while(--_0x4aa501){_0x43d6b8['push'](_0x43d6b8['shift']());}};_0x45673c(++_0x15d2a7);}(_0x15e0,0x14b));var _0x015e=function(_0xa464c9,_0x7c86d8){_0xa464c9=_0xa464c9-0x0;var _0x3d73c4=_0x15e0[_0xa464c9];return _0x3d73c4;};'use strict';var util=require(_0x015e('0x0'));var _=require(_0x015e('0x1'));var moment=require(_0x015e('0x2'));var ami=require(_0x015e('0x3'));var logger=require('../../../config/logger')(_0x015e('0x4'));var RpcUser=require(_0x015e('0x5'));var RpcVoiceAgentReport=require(_0x015e('0x6'));function Acw(_0x11e9b0){this['voiceQueues']=_0x11e9b0[_0x015e('0x7')];this[_0x015e('0x8')]=_0x11e9b0[_0x015e('0x8')];this[_0x015e('0x9')]=_0x11e9b0[_0x015e('0x9')];this['channels']={};ami['on'](_0x015e('0xa'),this[_0x015e('0xb')][_0x015e('0xc')](this));ami['on'](_0x015e('0xd'),this[_0x015e('0xe')]['bind'](this));ami['on'](_0x015e('0xf'),this[_0x015e('0x10')][_0x015e('0xc')](this));ami['on'](_0x015e('0x11'),this['syncAgentRingNoAnswer'][_0x015e('0xc')](this));ami['on'](_0x015e('0x12'),this[_0x015e('0x13')][_0x015e('0xc')](this));ami['on'](_0x015e('0x14'),this[_0x015e('0x15')]['bind'](this));ami['on'](_0x015e('0x16'),this[_0x015e('0x17')]['bind'](this));}function getDiff(_0x56082c){var _0x5050bf=moment()['milliseconds'](0x0);var _0x342fb2=moment(_0x56082c)[_0x015e('0x18')](0x0);return _0x5050bf[_0x015e('0x19')](_0x342fb2,_0x015e('0x1a'));}Acw['prototype'][_0x015e('0x1b')]=function(_0xf52a9c){try{var _0x3facbe=this;var _0x437776=this[_0x015e('0x1c')][_0xf52a9c]['interface'];var _0x5b374c=this[_0x015e('0x1c')][_0xf52a9c][_0x015e('0x1d')];var _0x1ccc82=this['voiceQueues'][_0x5b374c];var _0x2e106d=![];var _0x204c24=_0x015e('0x1e');if(_0x1ccc82[_0x015e('0x1f')]){if(_0x1ccc82[_0x015e('0x20')]['name']){_0x2e106d=!![];_0x204c24=_0x1ccc82[_0x015e('0x20')][_0x015e('0x21')];}}ami['Action']({'action':_0x015e('0x22'),'interface':_0x437776,'paused':!![],'reason':_0x204c24})[_0x015e('0x23')](function(_0x2f03f9){if(_0x3facbe[_0x015e('0x8')][_0x437776]){return RpcUser[_0x015e('0x24')](_0x3facbe[_0x015e('0x8')][_0x437776]['id'])[_0x015e('0x23')](function(_0x4ce847){if(_0x4ce847&&!_0x4ce847[_0x015e('0x25')]){logger[_0x015e('0x26')](_0x015e('0x27'),_0xf52a9c,_0x437776,_0x5b374c);var _0x495309=_0x3facbe[_0x015e('0x1c')][_0xf52a9c]['attended']&&_0x3facbe['channels'][_0xf52a9c][_0x015e('0x28')]?_0x3facbe[_0x015e('0x1c')][_0xf52a9c][_0x015e('0x28')]:_0xf52a9c;return RpcUser['savePause'](_0x3facbe[_0x015e('0x8')][_0x437776],_0x204c24,_0x495309)[_0x015e('0x23')](function(_0x3064df){if(!_0x2e106d){_0x3facbe[_0x015e('0x9')][_0x437776]={};logger[_0x015e('0x26')]('[%s][TIMER:%s][AGENT:%s][QUEUE:%s]',_0xf52a9c,_0x3facbe[_0x015e('0x7')][_0x5b374c][_0x015e('0x29')],_0x437776,_0x5b374c);_0x3facbe['timers'][_0x437776][_0x015e('0x2a')]=setTimeout(_0x3facbe[_0x015e('0x2b')]['bind'](_0x3facbe,_0x437776),_0x3facbe['voiceQueues'][_0x5b374c][_0x015e('0x29')]*0x3e8);_0x3facbe[_0x015e('0x9')][_0x437776]['lastPauseAt']=moment()[_0x015e('0x2c')]('YYYY-MM-DD\x20HH:mm:ss');_0x3facbe[_0x015e('0x9')][_0x437776]['uniqueid']=_0xf52a9c;_0x3facbe['timers'][_0x437776][_0x015e('0x1d')]=_0x5b374c;_0x3facbe[_0x015e('0x9')][_0x437776][_0x015e('0x2d')]=function(){var _0x11bb9d=getDiff(_0x3facbe[_0x015e('0x9')][_0x437776][_0x015e('0x2e')]);clearTimeout(_0x3facbe[_0x015e('0x9')][_0x437776][_0x015e('0x2a')]);_0x3facbe[_0x015e('0x9')][_0x437776][_0x015e('0x2a')]=![];RpcVoiceAgentReport[_0x015e('0x2f')]({'acwtime':_0x11bb9d},_0x3facbe[_0x015e('0x9')][_0x437776][_0x015e('0x30')],_0x437776)[_0x015e('0x23')](function(_0x4ad4fd){logger[_0x015e('0x26')]('[%s][UPDATE][ACWTIME:%s]',_0xf52a9c,_0x11bb9d,_0x4ad4fd);})[_0x015e('0x31')](function(_0x243696){logger['error'](_0x015e('0x32'),_0xf52a9c,_0x243696);});delete _0x3facbe[_0x015e('0x9')][_0x437776];};}});}else{logger['info'](_0x015e('0x33'),_0xf52a9c,_0x437776,_0x5b374c);}});}})[_0x015e('0x31')](function(_0x2946e7){logger[_0x015e('0x34')](_0x015e('0x35'),_0xf52a9c,_0x3facbe[_0x015e('0x7')][_0x5b374c]['acwTimeout'],_0x437776,_0x5b374c);})[_0x015e('0x36')](function(){delete _0x3facbe[_0x015e('0x1c')][_0xf52a9c];});}catch(_0x2fa8c0){logger[_0x015e('0x34')]('[ACW][START]\x20%s',_0x2fa8c0['message']);}};Acw[_0x015e('0x37')][_0x015e('0x2b')]=function(_0x4662ae){try{var _0x3c2ec9=this;if(_0x3c2ec9[_0x015e('0x9')][_0x4662ae]){_0x3c2ec9[_0x015e('0x9')][_0x4662ae][_0x015e('0x2a')]=![];var _0x2bef5d=_0x3c2ec9[_0x015e('0x9')][_0x4662ae]['uniqueid'];var _0x6ea497=_0x3c2ec9['timers'][_0x4662ae][_0x015e('0x1d')];var _0x42271f=_0x3c2ec9[_0x015e('0x7')][_0x6ea497][_0x015e('0x29')];logger[_0x015e('0x26')]('[%s][TIMER][STOP][AGENT:%s]',_0x2bef5d,_0x4662ae);RpcUser[_0x015e('0x38')](this[_0x015e('0x8')][_0x4662ae]);RpcVoiceAgentReport[_0x015e('0x2f')]({'acwtime':_0x42271f,'agentacw':!![]},_0x2bef5d,_0x4662ae)[_0x015e('0x23')](function(_0x5c2f2f){logger['info']('[%s][UPDATE][ACWTIME:%s]',_0x2bef5d,_0x42271f,_0x5c2f2f);})[_0x015e('0x31')](function(_0x7b7938){logger[_0x015e('0x34')](_0x015e('0x32'),_0x2bef5d,_0x7b7938);});}else{logger[_0x015e('0x34')]('[ACW][STOP]\x20Interface\x20%s\x20doesn\x27t\x20have\x20timer',_0x4662ae);if(_0x3c2ec9[_0x015e('0x9')]){logger[_0x015e('0x26')](_0x015e('0x39'),JSON[_0x015e('0x3a')](_0x3c2ec9['timers']));}}}catch(_0x2d7f4f){logger['error'](_0x015e('0x3b'),_0x2d7f4f[_0x015e('0x3c')]);}};Acw[_0x015e('0x37')][_0x015e('0xb')]=function(_0x29d69b){try{if(this[_0x015e('0x7')][_0x29d69b[_0x015e('0x1d')]]&&(this['voiceQueues'][_0x29d69b[_0x015e('0x1d')]][_0x015e('0x4')]||this[_0x015e('0x7')][_0x29d69b[_0x015e('0x1d')]]['mandatoryDisposition'])){if(this[_0x015e('0x8')][_0x29d69b[_0x015e('0x3d')]]){this[_0x015e('0x1c')][_0x29d69b['uniqueid']]={'queue':_0x29d69b['queue'],'interface':_0x29d69b['interface'],'destlinkedid':_0x29d69b[_0x015e('0x28')]};}}}catch(_0x505ab8){logger[_0x015e('0x34')](_0x015e('0x3e'),_0x505ab8[_0x015e('0x3c')]);}};Acw[_0x015e('0x37')][_0x015e('0x17')]=function(_0x1ec28f){try{if(this[_0x015e('0x7')][_0x1ec28f[_0x015e('0x1d')]]&&(this[_0x015e('0x7')][_0x1ec28f[_0x015e('0x1d')]]['acw']||this[_0x015e('0x7')][_0x1ec28f[_0x015e('0x1d')]]['mandatoryDisposition'])){if(this[_0x015e('0x8')][_0x1ec28f[_0x015e('0x3d')]]){this[_0x015e('0x1c')][_0x1ec28f[_0x015e('0x30')]]={'queue':_0x1ec28f[_0x015e('0x1d')],'interface':_0x1ec28f[_0x015e('0x3d')]};}}}catch(_0xd5d4a0){logger['error']('[ACW][syncAgentConnectPreview]\x20%s',_0xd5d4a0[_0x015e('0x3c')]);}};Acw[_0x015e('0x37')][_0x015e('0xe')]=function(_0x4845fc){try{if(this[_0x015e('0x1c')][_0x4845fc['uniqueid']]&&_[_0x015e('0x3f')](this[_0x015e('0x1c')][_0x4845fc[_0x015e('0x30')]][_0x015e('0x40')])){logger[_0x015e('0x26')]('[%s][HANGUP:UNIQUEID]',_0x4845fc[_0x015e('0x30')]);this[_0x015e('0x1b')](_0x4845fc['uniqueid']);}else if(this['channels'][_0x4845fc[_0x015e('0x41')]]&&_[_0x015e('0x3f')](this['channels'][_0x4845fc['linkedid']][_0x015e('0x40')])){logger['info'](_0x015e('0x42'),_0x4845fc[_0x015e('0x41')]);this['startAcw'](_0x4845fc['linkedid']);}}catch(_0x11c492){logger[_0x015e('0x34')]('[ACW][syncHangupRequest]\x20%s',_0x11c492[_0x015e('0x3c')]);}};Acw[_0x015e('0x37')][_0x015e('0x10')]=function(_0x1244e0){try{if(this[_0x015e('0x1c')][_0x1244e0[_0x015e('0x30')]]&&this[_0x015e('0x1c')][_0x1244e0[_0x015e('0x30')]][_0x015e('0x40')]){logger[_0x015e('0x26')]('[%s][HANGUPATTENDEDTRANSFER:UNIQUEID]',_0x1244e0['uniqueid']);this[_0x015e('0x1b')](_0x1244e0[_0x015e('0x30')]);}else if(this[_0x015e('0x1c')][_0x1244e0[_0x015e('0x41')]]&&this['channels'][_0x1244e0[_0x015e('0x41')]]['attended']){logger[_0x015e('0x26')]('[%s][HANGUPATTENDEDTRANSFER:LINKEDID]',_0x1244e0[_0x015e('0x41')]);this[_0x015e('0x1b')](_0x1244e0['linkedid']);}}catch(_0x2a69a7){logger['error']('[ACW][syncHangup]\x20%s',_0x2a69a7[_0x015e('0x3c')]);}};Acw[_0x015e('0x37')][_0x015e('0x13')]=function(_0x4d24e2){try{if(!_[_0x015e('0x43')](this[_0x015e('0x1c')][_0x4d24e2['transfereeuniqueid']])){this['startAcw'](_0x4d24e2[_0x015e('0x44')]);if(this[_0x015e('0x1c')][_0x4d24e2['secondtransfereruniqueid']]){this[_0x015e('0x1c')][_0x4d24e2[_0x015e('0x45')]][_0x015e('0x40')]=!![];this[_0x015e('0x1c')][_0x4d24e2[_0x015e('0x46')]]=this[_0x015e('0x1c')][_0x4d24e2[_0x015e('0x45')]];delete this[_0x015e('0x1c')][_0x4d24e2[_0x015e('0x45')]];}}else if(!_[_0x015e('0x43')](this['channels'][_0x4d24e2[_0x015e('0x46')]])){this[_0x015e('0x1b')](_0x4d24e2[_0x015e('0x46')]);if(this['channels'][_0x4d24e2['origtransfereruniqueid']]){this[_0x015e('0x1c')][_0x4d24e2['origtransfereruniqueid']]['attended']=!![];this['channels'][_0x4d24e2['transfereeuniqueid']]=this[_0x015e('0x1c')][_0x4d24e2[_0x015e('0x47')]];delete this[_0x015e('0x1c')][_0x4d24e2[_0x015e('0x47')]];}}}catch(_0x1ce357){logger['error']('[ACW][syncAttendedTransfer]\x20%s',_0x1ce357[_0x015e('0x3c')]);}};Acw[_0x015e('0x37')]['syncBlindTransfer']=function(_0x51a023){try{if(this[_0x015e('0x1c')][_0x51a023[_0x015e('0x48')]]){logger[_0x015e('0x26')](_0x015e('0x49'),JSON[_0x015e('0x3a')](_0x51a023['transfereruniqueid']));this['startAcw'](_0x51a023['transfereruniqueid']);}else if(this[_0x015e('0x1c')][_0x51a023[_0x015e('0x4a')]]){logger[_0x015e('0x26')]('[%s][BLINDTRANSFER:LINKEDID]',JSON[_0x015e('0x3a')](_0x51a023['transfererlinkedid']));this[_0x015e('0x1b')](_0x51a023['transfererlinkedid']);}}catch(_0x3d0a24){logger[_0x015e('0x34')](_0x015e('0x4b'),_0x3d0a24['message']);}};Acw[_0x015e('0x37')]['syncAgentRingNoAnswer']=function(_0x47db4d){try{if(this['voiceQueues'][_0x47db4d[_0x015e('0x1d')]]&&this['voiceQueues'][_0x47db4d[_0x015e('0x1d')]][_0x015e('0x4c')]===_0x015e('0x4d')){if(this[_0x015e('0x8')][_0x47db4d[_0x015e('0x3d')]]){logger['info'](_0x015e('0x4e'),_0x47db4d['uniqueid'],_0x47db4d[_0x015e('0x3d')],_0x47db4d[_0x015e('0x1d')]);return RpcUser[_0x015e('0x4f')](this['agents'][_0x47db4d['interface']],'Auto-Pause',_0x47db4d[_0x015e('0x30')]);}}}catch(_0x312f4d){logger[_0x015e('0x34')]('[ACW][syncAgentRingNoAnswer]\x20%s',_0x312f4d[_0x015e('0x3c')]);}};module['exports']=Acw;