Built motion from commit eddce310.|2.6.12
[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 _0x74bd=['agentringnoanswer','syncAgentRingNoAnswer','syncAttendedTransfer','blindtransfer','syncBlindTransfer','custom:agentConnectPreview','syncAgentConnectPreview','milliseconds','seconds','prototype','interface','queue','ACW','mandatoryDisposition','mandatoryDispositionPause','name','QueuePause','getAgent','info','[%s][START][AGENT:%s][QUEUE:%s]','attended','destlinkedid','savePause','acwTimeout','timer','stopAcw','lastPauseAt','YYYY-MM-DD\x20HH:mm:ss','uniqueid','updateAcw','update','[%s][UPDATE][ACWTIME:%s]','catch','[%s][UPDATE][ERRORS:%s]','[%s][INPAUSE][AGENT:%s][QUEUE:%s]','[%s][TIMER:%s][AGENT:%s][QUEUE:%s]','finally','error','message','[%s][TIMER][STOP][AGENT:%s]','then','[ACW][STOP]\x20Interface\x20%s\x20doesn\x27t\x20have\x20timer','stringify','[ACW][STOP]\x20%s','[ACW][syncAgentConnect]\x20%s','[ACW][syncAgentConnectPreview]\x20%s','isUndefined','[%s][HANGUP:UNIQUEID]','startAcw','linkedid','[ACW][syncHangupRequest]\x20%s','[%s][HANGUPATTENDEDTRANSFER:UNIQUEID]','[%s][HANGUPATTENDEDTRANSFER:LINKEDID]','[ACW][syncHangup]\x20%s','isNil','transfereeuniqueid','secondtransfereruniqueid','transfertargetuniqueid','origtransfereruniqueid','[%s][BLINDTRANSFER:UNIQUEID]','transfereruniqueid','transfererlinkedid','[ACW][syncBlindTransfer]\x20%s','autopause','all','[%s][AUTOPAUSE][AGENT:%s][QUEUE:%]','Auto-Pause','[ACW][syncAgentRingNoAnswer]\x20%s','lodash','moment','../ami','../../../config/logger','acw','../rpc/voiceAgentReport','voiceQueues','agents','timers','channels','agentconnect','syncAgentConnect','bind','hanguprequest','hangup','syncHangup'];(function(_0x173cea,_0x581723){var _0x3b7c63=function(_0x14ef0f){while(--_0x14ef0f){_0x173cea['push'](_0x173cea['shift']());}};_0x3b7c63(++_0x581723);}(_0x74bd,0x140));var _0xd74b=function(_0x2ddb6d,_0x25d45b){_0x2ddb6d=_0x2ddb6d-0x0;var _0x56c103=_0x74bd[_0x2ddb6d];return _0x56c103;};'use strict';var _=require(_0xd74b('0x0'));var moment=require(_0xd74b('0x1'));var ami=require(_0xd74b('0x2'));var logger=require(_0xd74b('0x3'))(_0xd74b('0x4'));var RpcUser=require('../rpc/user');var RpcVoiceAgentReport=require(_0xd74b('0x5'));function Acw(_0x190b97){this[_0xd74b('0x6')]=_0x190b97[_0xd74b('0x6')];this[_0xd74b('0x7')]=_0x190b97['agents'];this[_0xd74b('0x8')]=_0x190b97[_0xd74b('0x8')];this[_0xd74b('0x9')]={};ami['on'](_0xd74b('0xa'),this[_0xd74b('0xb')][_0xd74b('0xc')](this));ami['on'](_0xd74b('0xd'),this['syncHangupRequest']['bind'](this));ami['on'](_0xd74b('0xe'),this[_0xd74b('0xf')]['bind'](this));ami['on'](_0xd74b('0x10'),this[_0xd74b('0x11')][_0xd74b('0xc')](this));ami['on']('attendedtransfer',this[_0xd74b('0x12')]['bind'](this));ami['on'](_0xd74b('0x13'),this[_0xd74b('0x14')][_0xd74b('0xc')](this));ami['on'](_0xd74b('0x15'),this[_0xd74b('0x16')]['bind'](this));}function getDiff(_0x39c477){var _0x12dfe1=moment()[_0xd74b('0x17')](0x0);var _0x3e1c0d=moment(_0x39c477)[_0xd74b('0x17')](0x0);return _0x12dfe1['diff'](_0x3e1c0d,_0xd74b('0x18'));}Acw[_0xd74b('0x19')]['startAcw']=function(_0x470016){try{var _0x3f7229=this;var _0x6c0813=this[_0xd74b('0x9')][_0x470016][_0xd74b('0x1a')];var _0x25edea=this['channels'][_0x470016][_0xd74b('0x1b')];var _0x1d901d=this[_0xd74b('0x6')][_0x25edea];var _0x4cd8eb=![];var _0x41f7e8=_0xd74b('0x1c');if(_0x1d901d[_0xd74b('0x1d')]){if(_0x1d901d['mandatoryDispositionPause']['name']){_0x4cd8eb=!![];_0x41f7e8=_0x1d901d[_0xd74b('0x1e')][_0xd74b('0x1f')];}}return ami['Action']({'action':_0xd74b('0x20'),'interface':_0x6c0813,'paused':!![],'reason':_0x41f7e8})['then'](function(){if(_0x3f7229[_0xd74b('0x7')][_0x6c0813]){return RpcUser[_0xd74b('0x21')](_0x3f7229[_0xd74b('0x7')][_0x6c0813]['id'])['then'](function(_0xf60799){if(_0xf60799&&!_0xf60799['voicePause']){logger[_0xd74b('0x22')](_0xd74b('0x23'),_0x470016,_0x6c0813,_0x25edea);var _0x3a6bcc=_0x3f7229['channels'][_0x470016][_0xd74b('0x24')]&&_0x3f7229[_0xd74b('0x9')][_0x470016][_0xd74b('0x25')]?_0x3f7229['channels'][_0x470016][_0xd74b('0x25')]:_0x470016;return RpcUser[_0xd74b('0x26')](_0x3f7229[_0xd74b('0x7')][_0x6c0813],_0x41f7e8,_0x3a6bcc)['then'](function(){if(!_0x4cd8eb){_0x3f7229[_0xd74b('0x8')][_0x6c0813]={};logger[_0xd74b('0x22')]('[%s][TIMER:%s][AGENT:%s][QUEUE:%s]',_0x470016,_0x3f7229['voiceQueues'][_0x25edea][_0xd74b('0x27')],_0x6c0813,_0x25edea);_0x3f7229['timers'][_0x6c0813][_0xd74b('0x28')]=setTimeout(_0x3f7229[_0xd74b('0x29')]['bind'](_0x3f7229,_0x6c0813),_0x3f7229[_0xd74b('0x6')][_0x25edea][_0xd74b('0x27')]*0x3e8);_0x3f7229[_0xd74b('0x8')][_0x6c0813][_0xd74b('0x2a')]=moment()['format'](_0xd74b('0x2b'));_0x3f7229[_0xd74b('0x8')][_0x6c0813][_0xd74b('0x2c')]=_0x470016;_0x3f7229['timers'][_0x6c0813][_0xd74b('0x1b')]=_0x25edea;_0x3f7229['timers'][_0x6c0813][_0xd74b('0x2d')]=function(){var _0x4d1bb1=getDiff(_0x3f7229[_0xd74b('0x8')][_0x6c0813][_0xd74b('0x2a')]);clearTimeout(_0x3f7229['timers'][_0x6c0813][_0xd74b('0x28')]);_0x3f7229[_0xd74b('0x8')][_0x6c0813][_0xd74b('0x28')]=![];RpcVoiceAgentReport[_0xd74b('0x2e')]({'acwtime':_0x4d1bb1},_0x3f7229[_0xd74b('0x8')][_0x6c0813][_0xd74b('0x2c')],_0x6c0813)['then'](function(_0x5361ce){logger[_0xd74b('0x22')](_0xd74b('0x2f'),_0x470016,_0x4d1bb1,_0x5361ce);})[_0xd74b('0x30')](function(_0x11894d){logger['error'](_0xd74b('0x31'),_0x470016,_0x11894d);});delete _0x3f7229['timers'][_0x6c0813];};}});}else{logger[_0xd74b('0x22')](_0xd74b('0x32'),_0x470016,_0x6c0813,_0x25edea);}});}})['catch'](function(){logger['error'](_0xd74b('0x33'),_0x470016,_0x3f7229[_0xd74b('0x6')][_0x25edea][_0xd74b('0x27')],_0x6c0813,_0x25edea);})[_0xd74b('0x34')](function(){delete _0x3f7229[_0xd74b('0x9')][_0x470016];});}catch(_0x33caaa){logger[_0xd74b('0x35')]('[ACW][START]\x20%s',_0x33caaa[_0xd74b('0x36')]);}};Acw['prototype'][_0xd74b('0x29')]=function(_0x50895d){try{var _0x19b19d=this;if(_0x19b19d[_0xd74b('0x8')][_0x50895d]){_0x19b19d[_0xd74b('0x8')][_0x50895d][_0xd74b('0x28')]=![];var _0x28dba9=_0x19b19d['timers'][_0x50895d][_0xd74b('0x2c')];var _0x4b3584=_0x19b19d['timers'][_0x50895d][_0xd74b('0x1b')];var _0x36b4d9=_0x19b19d[_0xd74b('0x6')][_0x4b3584]['acwTimeout'];logger['info'](_0xd74b('0x37'),_0x28dba9,_0x50895d);RpcUser['saveUnpause'](this[_0xd74b('0x7')][_0x50895d]);RpcVoiceAgentReport[_0xd74b('0x2e')]({'acwtime':_0x36b4d9,'agentacw':!![]},_0x28dba9,_0x50895d)[_0xd74b('0x38')](function(_0x6cab9c){logger[_0xd74b('0x22')]('[%s][UPDATE][ACWTIME:%s]',_0x28dba9,_0x36b4d9,_0x6cab9c);})[_0xd74b('0x30')](function(_0x4eb291){logger['error']('[%s][UPDATE][ERRORS:%s]',_0x28dba9,_0x4eb291);});}else{logger[_0xd74b('0x35')](_0xd74b('0x39'),_0x50895d);if(_0x19b19d['timers']){logger[_0xd74b('0x22')]('[ACW][TIMERS]',JSON[_0xd74b('0x3a')](_0x19b19d[_0xd74b('0x8')]));}}}catch(_0x44ea09){logger[_0xd74b('0x35')](_0xd74b('0x3b'),_0x44ea09[_0xd74b('0x36')]);}};Acw[_0xd74b('0x19')][_0xd74b('0xb')]=function(_0x44eddb){try{if(this[_0xd74b('0x6')][_0x44eddb[_0xd74b('0x1b')]]&&(this[_0xd74b('0x6')][_0x44eddb[_0xd74b('0x1b')]]['acw']||this['voiceQueues'][_0x44eddb['queue']][_0xd74b('0x1d')])){if(this[_0xd74b('0x7')][_0x44eddb['interface']]){this['channels'][_0x44eddb['uniqueid']]={'queue':_0x44eddb['queue'],'interface':_0x44eddb['interface'],'destlinkedid':_0x44eddb[_0xd74b('0x25')]};}}}catch(_0x3c160d){logger['error'](_0xd74b('0x3c'),_0x3c160d['message']);}};Acw[_0xd74b('0x19')][_0xd74b('0x16')]=function(_0x410647){try{if(this['voiceQueues'][_0x410647[_0xd74b('0x1b')]]&&(this['voiceQueues'][_0x410647[_0xd74b('0x1b')]][_0xd74b('0x4')]||this['voiceQueues'][_0x410647[_0xd74b('0x1b')]][_0xd74b('0x1d')])){if(this[_0xd74b('0x7')][_0x410647[_0xd74b('0x1a')]]){this[_0xd74b('0x9')][_0x410647[_0xd74b('0x2c')]]={'queue':_0x410647['queue'],'interface':_0x410647['interface']};}}}catch(_0x5a467c){logger[_0xd74b('0x35')](_0xd74b('0x3d'),_0x5a467c[_0xd74b('0x36')]);}};Acw[_0xd74b('0x19')]['syncHangupRequest']=function(_0xe84b97){try{if(this['channels'][_0xe84b97[_0xd74b('0x2c')]]&&_[_0xd74b('0x3e')](this['channels'][_0xe84b97[_0xd74b('0x2c')]][_0xd74b('0x24')])){logger[_0xd74b('0x22')](_0xd74b('0x3f'),_0xe84b97[_0xd74b('0x2c')]);this[_0xd74b('0x40')](_0xe84b97[_0xd74b('0x2c')]);}else if(this[_0xd74b('0x9')][_0xe84b97[_0xd74b('0x41')]]&&_[_0xd74b('0x3e')](this[_0xd74b('0x9')][_0xe84b97[_0xd74b('0x41')]][_0xd74b('0x24')])){logger[_0xd74b('0x22')]('[%s][HANGUP:LINKEDID]',_0xe84b97[_0xd74b('0x41')]);this['startAcw'](_0xe84b97[_0xd74b('0x41')]);}}catch(_0x5aaedc){logger[_0xd74b('0x35')](_0xd74b('0x42'),_0x5aaedc[_0xd74b('0x36')]);}};Acw[_0xd74b('0x19')][_0xd74b('0xf')]=function(_0x5d2f6d){try{if(this[_0xd74b('0x9')][_0x5d2f6d[_0xd74b('0x2c')]]&&this[_0xd74b('0x9')][_0x5d2f6d[_0xd74b('0x2c')]]['attended']){logger[_0xd74b('0x22')](_0xd74b('0x43'),_0x5d2f6d['uniqueid']);this['startAcw'](_0x5d2f6d[_0xd74b('0x2c')]);}else if(this['channels'][_0x5d2f6d[_0xd74b('0x41')]]&&this[_0xd74b('0x9')][_0x5d2f6d[_0xd74b('0x41')]][_0xd74b('0x24')]){logger[_0xd74b('0x22')](_0xd74b('0x44'),_0x5d2f6d[_0xd74b('0x41')]);this[_0xd74b('0x40')](_0x5d2f6d['linkedid']);}}catch(_0x5b6cac){logger[_0xd74b('0x35')](_0xd74b('0x45'),_0x5b6cac[_0xd74b('0x36')]);}};Acw[_0xd74b('0x19')][_0xd74b('0x12')]=function(_0x2c02cc){try{if(!_[_0xd74b('0x46')](this[_0xd74b('0x9')][_0x2c02cc[_0xd74b('0x47')]])){this[_0xd74b('0x40')](_0x2c02cc[_0xd74b('0x47')]);if(this[_0xd74b('0x9')][_0x2c02cc[_0xd74b('0x48')]]){this[_0xd74b('0x9')][_0x2c02cc[_0xd74b('0x48')]][_0xd74b('0x24')]=!![];this[_0xd74b('0x9')][_0x2c02cc[_0xd74b('0x49')]]=this[_0xd74b('0x9')][_0x2c02cc[_0xd74b('0x48')]];delete this['channels'][_0x2c02cc[_0xd74b('0x48')]];}}else if(!_[_0xd74b('0x46')](this[_0xd74b('0x9')][_0x2c02cc['transfertargetuniqueid']])){this['startAcw'](_0x2c02cc['transfertargetuniqueid']);if(this[_0xd74b('0x9')][_0x2c02cc[_0xd74b('0x4a')]]){this['channels'][_0x2c02cc[_0xd74b('0x4a')]][_0xd74b('0x24')]=!![];this[_0xd74b('0x9')][_0x2c02cc[_0xd74b('0x47')]]=this[_0xd74b('0x9')][_0x2c02cc[_0xd74b('0x4a')]];delete this['channels'][_0x2c02cc[_0xd74b('0x4a')]];}}}catch(_0x20c7f8){logger[_0xd74b('0x35')]('[ACW][syncAttendedTransfer]\x20%s',_0x20c7f8['message']);}};Acw[_0xd74b('0x19')][_0xd74b('0x14')]=function(_0x54ff45){try{if(this[_0xd74b('0x9')][_0x54ff45['transfereruniqueid']]){logger[_0xd74b('0x22')](_0xd74b('0x4b'),JSON[_0xd74b('0x3a')](_0x54ff45[_0xd74b('0x4c')]));this['startAcw'](_0x54ff45[_0xd74b('0x4c')]);}else if(this['channels'][_0x54ff45['transfererlinkedid']]){logger[_0xd74b('0x22')]('[%s][BLINDTRANSFER:LINKEDID]',JSON[_0xd74b('0x3a')](_0x54ff45[_0xd74b('0x4d')]));this[_0xd74b('0x40')](_0x54ff45[_0xd74b('0x4d')]);}}catch(_0x3bf2e9){logger[_0xd74b('0x35')](_0xd74b('0x4e'),_0x3bf2e9['message']);}};Acw['prototype']['syncAgentRingNoAnswer']=function(_0x46ed72){try{if(this[_0xd74b('0x6')][_0x46ed72['queue']]&&this[_0xd74b('0x6')][_0x46ed72['queue']][_0xd74b('0x4f')]===_0xd74b('0x50')){if(this[_0xd74b('0x7')][_0x46ed72[_0xd74b('0x1a')]]){logger[_0xd74b('0x22')](_0xd74b('0x51'),_0x46ed72[_0xd74b('0x2c')],_0x46ed72['interface'],_0x46ed72[_0xd74b('0x1b')]);return RpcUser[_0xd74b('0x26')](this[_0xd74b('0x7')][_0x46ed72[_0xd74b('0x1a')]],_0xd74b('0x52'),_0x46ed72['uniqueid']);}}}catch(_0x503450){logger[_0xd74b('0x35')](_0xd74b('0x53'),_0x503450[_0xd74b('0x36')]);}};module['exports']=Acw;