Built motion from commit 21186556.|2.6.19
[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 _0x6691=['acwTimeout','stopAcw','format','catch','[ACW][START]\x20%s','[%s][TIMER][STOP][AGENT:%s]','saveUnpause','[ACW][STOP]\x20Interface\x20%s\x20doesn\x27t\x20have\x20timer','[ACW][TIMERS]','stringify','[ACW][STOP]\x20%s','message','syncAgentConnect','interface','destlinkedid','[ACW][syncAgentConnect]\x20%s','mandatoryDisposition','syncHangupRequest','isUndefined','linkedid','[%s][HANGUP:LINKEDID]','[ACW][syncHangupRequest]\x20%s','[%s][HANGUPATTENDEDTRANSFER:UNIQUEID]','[%s][HANGUPATTENDEDTRANSFER:LINKEDID]','[ACW][syncHangup]\x20%s','transfereeuniqueid','secondtransfereruniqueid','transfertargetuniqueid','isNil','origtransfereruniqueid','transfereruniqueid','[%s][BLINDTRANSFER:UNIQUEID]','transfererlinkedid','[%s][BLINDTRANSFER:LINKEDID]','[ACW][syncBlindTransfer]\x20%s','all','[%s][AUTOPAUSE][AGENT:%s][QUEUE:%]','Auto-Pause','[ACW][syncAgentRingNoAnswer]\x20%s','exports','lodash','moment','../ami','../../../config/logger','acw','../rpc/user','../rpc/voiceAgentReport','voiceQueues','agents','timers','channels','hanguprequest','syncHangup','agentringnoanswer','syncAgentRingNoAnswer','bind','attendedtransfer','syncAttendedTransfer','blindtransfer','syncBlindTransfer','custom:agentConnectPreview','syncAgentConnectPreview','milliseconds','diff','seconds','prototype','updateAcw','lastPauseAt','timer','update','uniqueid','then','info','[%s][UPDATE][ACWTIME:%s]','error','finally','startAcw','queue','ACW','mandatoryDispositionPause','name','resolve','getAgent','voicePause','attended','savePause','[%s][TIMER:%s][AGENT:%s][QUEUE:%s]'];(function(_0x6cf19c,_0x2f3f02){var _0xce14f3=function(_0x474587){while(--_0x474587){_0x6cf19c['push'](_0x6cf19c['shift']());}};_0xce14f3(++_0x2f3f02);}(_0x6691,0x12d));var _0x1669=function(_0x5b644e,_0x2e5e07){_0x5b644e=_0x5b644e-0x0;var _0x49c6bf=_0x6691[_0x5b644e];return _0x49c6bf;};'use strict';var _=require(_0x1669('0x0'));var moment=require(_0x1669('0x1'));var ami=require(_0x1669('0x2'));var logger=require(_0x1669('0x3'))(_0x1669('0x4'));var RpcUser=require(_0x1669('0x5'));var RpcVoiceAgentReport=require(_0x1669('0x6'));function Acw(_0x455cbd){this[_0x1669('0x7')]=_0x455cbd[_0x1669('0x7')];this['agents']=_0x455cbd[_0x1669('0x8')];this[_0x1669('0x9')]=_0x455cbd[_0x1669('0x9')];this[_0x1669('0xa')]={};ami['on']('agentconnect',this['syncAgentConnect']['bind'](this));ami['on'](_0x1669('0xb'),this['syncHangupRequest']['bind'](this));ami['on']('hangup',this[_0x1669('0xc')]['bind'](this));ami['on'](_0x1669('0xd'),this[_0x1669('0xe')][_0x1669('0xf')](this));ami['on'](_0x1669('0x10'),this[_0x1669('0x11')][_0x1669('0xf')](this));ami['on'](_0x1669('0x12'),this[_0x1669('0x13')][_0x1669('0xf')](this));ami['on'](_0x1669('0x14'),this[_0x1669('0x15')][_0x1669('0xf')](this));}function getDiff(_0x3a484a){var _0x182520=moment()[_0x1669('0x16')](0x0);var _0x355ac3=moment(_0x3a484a)[_0x1669('0x16')](0x0);return _0x182520[_0x1669('0x17')](_0x355ac3,_0x1669('0x18'));}Acw[_0x1669('0x19')][_0x1669('0x1a')]=function(_0x31b2be,_0x1f9ea6){var _0x4d2f66=this;var _0x21a5d2=getDiff(_0x4d2f66[_0x1669('0x9')][_0x31b2be][_0x1669('0x1b')]);clearTimeout(_0x4d2f66[_0x1669('0x9')][_0x31b2be][_0x1669('0x1c')]);_0x4d2f66['timers'][_0x31b2be]['timer']=![];return RpcVoiceAgentReport[_0x1669('0x1d')]({'acwtime':_0x21a5d2},_0x4d2f66[_0x1669('0x9')][_0x31b2be][_0x1669('0x1e')],_0x31b2be)[_0x1669('0x1f')](function(_0x214b8b){logger[_0x1669('0x20')](_0x1669('0x21'),_0x1f9ea6,_0x21a5d2,_0x214b8b);})['catch'](function(_0x31483f){logger[_0x1669('0x22')]('[%s][UPDATE][ERRORS:%s]',_0x1f9ea6,_0x31483f);})[_0x1669('0x23')](function(){delete _0x4d2f66[_0x1669('0x9')][_0x31b2be];});};Acw['prototype'][_0x1669('0x24')]=function(_0x2d6f16){try{var _0x2e95c3=this;var _0x17c227=this[_0x1669('0xa')][_0x2d6f16]['interface'];var _0x41bc1e=this[_0x1669('0xa')][_0x2d6f16][_0x1669('0x25')];var _0x5796f2=this[_0x1669('0x7')][_0x41bc1e];var _0x553b09=![];var _0x50b7b2=_0x1669('0x26');if(_0x5796f2['mandatoryDisposition']&&_0x5796f2[_0x1669('0x27')][_0x1669('0x28')]){_0x553b09=!![];_0x50b7b2=_0x5796f2[_0x1669('0x27')][_0x1669('0x28')];}if(!_0x2e95c3[_0x1669('0x8')][_0x17c227]){return Promise[_0x1669('0x29')]();}return RpcUser[_0x1669('0x2a')](_0x2e95c3['agents'][_0x17c227]['id'])[_0x1669('0x1f')](function(_0x597c69){if(!_0x597c69||_0x597c69[_0x1669('0x2b')]){logger[_0x1669('0x20')]('[%s][INPAUSE][AGENT:%s][QUEUE:%s]',_0x2d6f16,_0x17c227,_0x41bc1e);return;}logger[_0x1669('0x20')]('[%s][START][AGENT:%s][QUEUE:%s]',_0x2d6f16,_0x17c227,_0x41bc1e);var _0x29aff9=_0x2e95c3[_0x1669('0xa')][_0x2d6f16][_0x1669('0x2c')]&&_0x2e95c3[_0x1669('0xa')][_0x2d6f16]['destlinkedid']?_0x2e95c3['channels'][_0x2d6f16]['destlinkedid']:_0x2d6f16;return RpcUser[_0x1669('0x2d')](_0x2e95c3[_0x1669('0x8')][_0x17c227],_0x50b7b2,_0x29aff9);})[_0x1669('0x1f')](function(_0x1eaa0c){if(_0x553b09||!_0x1eaa0c){return;}_0x2e95c3[_0x1669('0x9')][_0x17c227]={};logger['info'](_0x1669('0x2e'),_0x2d6f16,_0x2e95c3[_0x1669('0x7')][_0x41bc1e][_0x1669('0x2f')],_0x17c227,_0x41bc1e);_0x2e95c3[_0x1669('0x9')][_0x17c227][_0x1669('0x1c')]=setTimeout(_0x2e95c3[_0x1669('0x30')][_0x1669('0xf')](_0x2e95c3,_0x17c227),_0x2e95c3[_0x1669('0x7')][_0x41bc1e]['acwTimeout']*0x3e8);_0x2e95c3[_0x1669('0x9')][_0x17c227]['lastPauseAt']=moment()[_0x1669('0x31')]('YYYY-MM-DD\x20HH:mm:ss');_0x2e95c3['timers'][_0x17c227][_0x1669('0x1e')]=_0x2d6f16;_0x2e95c3[_0x1669('0x9')][_0x17c227][_0x1669('0x25')]=_0x41bc1e;_0x2e95c3[_0x1669('0x9')][_0x17c227][_0x1669('0x1a')]=_0x2e95c3[_0x1669('0x1a')][_0x1669('0xf')](_0x2e95c3,_0x17c227,_0x2d6f16);})[_0x1669('0x32')](function(){logger[_0x1669('0x22')]('[%s][TIMER:%s][AGENT:%s][QUEUE:%s]',_0x2d6f16,_0x2e95c3[_0x1669('0x7')][_0x41bc1e][_0x1669('0x2f')],_0x17c227,_0x41bc1e);})[_0x1669('0x23')](function(){delete _0x2e95c3[_0x1669('0xa')][_0x2d6f16];});}catch(_0x3b1fb2){logger[_0x1669('0x22')](_0x1669('0x33'),_0x3b1fb2['message']);}};Acw[_0x1669('0x19')][_0x1669('0x30')]=function(_0x373c81){try{var _0x13ec42=this;if(_0x13ec42[_0x1669('0x9')][_0x373c81]){_0x13ec42[_0x1669('0x9')][_0x373c81]['timer']=![];var _0x5c2629=_0x13ec42['timers'][_0x373c81][_0x1669('0x1e')];var _0x2439d8=_0x13ec42[_0x1669('0x9')][_0x373c81][_0x1669('0x25')];var _0x3d996b=_0x13ec42[_0x1669('0x7')][_0x2439d8][_0x1669('0x2f')];logger['info'](_0x1669('0x34'),_0x5c2629,_0x373c81);RpcUser[_0x1669('0x35')](this['agents'][_0x373c81]);RpcVoiceAgentReport['update']({'acwtime':_0x3d996b,'agentacw':!![]},_0x5c2629,_0x373c81)[_0x1669('0x1f')](function(_0x36d2f3){logger[_0x1669('0x20')](_0x1669('0x21'),_0x5c2629,_0x3d996b,_0x36d2f3);})[_0x1669('0x32')](function(_0x52747f){logger[_0x1669('0x22')]('[%s][UPDATE][ERRORS:%s]',_0x5c2629,_0x52747f);});}else{logger['error'](_0x1669('0x36'),_0x373c81);if(_0x13ec42['timers']){logger[_0x1669('0x20')](_0x1669('0x37'),JSON[_0x1669('0x38')](_0x13ec42[_0x1669('0x9')]));}}}catch(_0x5e21eb){logger[_0x1669('0x22')](_0x1669('0x39'),_0x5e21eb[_0x1669('0x3a')]);}};Acw['prototype'][_0x1669('0x3b')]=function(_0x297c30){try{if(this[_0x1669('0x7')][_0x297c30[_0x1669('0x25')]]&&(this[_0x1669('0x7')][_0x297c30[_0x1669('0x25')]][_0x1669('0x4')]||this['voiceQueues'][_0x297c30[_0x1669('0x25')]]['mandatoryDisposition'])){if(this[_0x1669('0x8')][_0x297c30['interface']]){this[_0x1669('0xa')][_0x297c30[_0x1669('0x1e')]]={'queue':_0x297c30[_0x1669('0x25')],'interface':_0x297c30[_0x1669('0x3c')],'destlinkedid':_0x297c30[_0x1669('0x3d')]};}}}catch(_0xa4b268){logger['error'](_0x1669('0x3e'),_0xa4b268[_0x1669('0x3a')]);}};Acw[_0x1669('0x19')]['syncAgentConnectPreview']=function(_0x58f3e1){try{if(this['voiceQueues'][_0x58f3e1['queue']]&&(this[_0x1669('0x7')][_0x58f3e1[_0x1669('0x25')]][_0x1669('0x4')]||this['voiceQueues'][_0x58f3e1['queue']][_0x1669('0x3f')])){if(this['agents'][_0x58f3e1[_0x1669('0x3c')]]){this[_0x1669('0xa')][_0x58f3e1[_0x1669('0x1e')]]={'queue':_0x58f3e1[_0x1669('0x25')],'interface':_0x58f3e1[_0x1669('0x3c')]};}}}catch(_0x2ad0eb){logger[_0x1669('0x22')]('[ACW][syncAgentConnectPreview]\x20%s',_0x2ad0eb[_0x1669('0x3a')]);}};Acw['prototype'][_0x1669('0x40')]=function(_0x48b609){try{if(this['channels'][_0x48b609[_0x1669('0x1e')]]&&_[_0x1669('0x41')](this[_0x1669('0xa')][_0x48b609[_0x1669('0x1e')]][_0x1669('0x2c')])){logger[_0x1669('0x20')]('[%s][HANGUP:UNIQUEID]',_0x48b609[_0x1669('0x1e')]);this[_0x1669('0x24')](_0x48b609['uniqueid']);}else if(this[_0x1669('0xa')][_0x48b609[_0x1669('0x42')]]&&_['isUndefined'](this['channels'][_0x48b609[_0x1669('0x42')]][_0x1669('0x2c')])){logger[_0x1669('0x20')](_0x1669('0x43'),_0x48b609['linkedid']);this[_0x1669('0x24')](_0x48b609[_0x1669('0x42')]);}}catch(_0x13a606){logger['error'](_0x1669('0x44'),_0x13a606['message']);}};Acw['prototype'][_0x1669('0xc')]=function(_0x4a98a7){try{if(this['channels'][_0x4a98a7[_0x1669('0x1e')]]&&this['channels'][_0x4a98a7[_0x1669('0x1e')]][_0x1669('0x2c')]){logger[_0x1669('0x20')](_0x1669('0x45'),_0x4a98a7['uniqueid']);this[_0x1669('0x24')](_0x4a98a7['uniqueid']);}else if(this['channels'][_0x4a98a7['linkedid']]&&this[_0x1669('0xa')][_0x4a98a7[_0x1669('0x42')]][_0x1669('0x2c')]){logger[_0x1669('0x20')](_0x1669('0x46'),_0x4a98a7[_0x1669('0x42')]);this[_0x1669('0x24')](_0x4a98a7[_0x1669('0x42')]);}}catch(_0x43636c){logger[_0x1669('0x22')](_0x1669('0x47'),_0x43636c[_0x1669('0x3a')]);}};Acw['prototype'][_0x1669('0x11')]=function(_0x516a48){try{if(!_['isNil'](this[_0x1669('0xa')][_0x516a48['transfereeuniqueid']])){this[_0x1669('0x24')](_0x516a48[_0x1669('0x48')]);if(this[_0x1669('0xa')][_0x516a48[_0x1669('0x49')]]){this['channels'][_0x516a48['secondtransfereruniqueid']]['attended']=!![];this[_0x1669('0xa')][_0x516a48[_0x1669('0x4a')]]=this[_0x1669('0xa')][_0x516a48['secondtransfereruniqueid']];delete this['channels'][_0x516a48[_0x1669('0x49')]];}}else if(!_[_0x1669('0x4b')](this[_0x1669('0xa')][_0x516a48[_0x1669('0x4a')]])){this['startAcw'](_0x516a48[_0x1669('0x4a')]);if(this[_0x1669('0xa')][_0x516a48[_0x1669('0x4c')]]){this[_0x1669('0xa')][_0x516a48[_0x1669('0x4c')]]['attended']=!![];this['channels'][_0x516a48['transfereeuniqueid']]=this[_0x1669('0xa')][_0x516a48[_0x1669('0x4c')]];delete this[_0x1669('0xa')][_0x516a48['origtransfereruniqueid']];}}}catch(_0x5e29f0){logger['error']('[ACW][syncAttendedTransfer]\x20%s',_0x5e29f0[_0x1669('0x3a')]);}};Acw[_0x1669('0x19')][_0x1669('0x13')]=function(_0x3c0b3c){try{if(this['channels'][_0x3c0b3c[_0x1669('0x4d')]]){logger[_0x1669('0x20')](_0x1669('0x4e'),JSON[_0x1669('0x38')](_0x3c0b3c[_0x1669('0x4d')]));this['startAcw'](_0x3c0b3c['transfereruniqueid']);}else if(this[_0x1669('0xa')][_0x3c0b3c[_0x1669('0x4f')]]){logger['info'](_0x1669('0x50'),JSON[_0x1669('0x38')](_0x3c0b3c[_0x1669('0x4f')]));this[_0x1669('0x24')](_0x3c0b3c['transfererlinkedid']);}}catch(_0x5854ae){logger[_0x1669('0x22')](_0x1669('0x51'),_0x5854ae[_0x1669('0x3a')]);}};Acw[_0x1669('0x19')][_0x1669('0xe')]=function(_0x413697){try{if(this[_0x1669('0x7')][_0x413697['queue']]&&this[_0x1669('0x7')][_0x413697[_0x1669('0x25')]]['autopause']===_0x1669('0x52')){if(this[_0x1669('0x8')][_0x413697['interface']]){logger['info'](_0x1669('0x53'),_0x413697[_0x1669('0x1e')],_0x413697[_0x1669('0x3c')],_0x413697[_0x1669('0x25')]);return RpcUser[_0x1669('0x2d')](this[_0x1669('0x8')][_0x413697[_0x1669('0x3c')]],_0x1669('0x54'),_0x413697[_0x1669('0x1e')]);}}}catch(_0xae224c){logger[_0x1669('0x22')](_0x1669('0x55'),_0xae224c[_0x1669('0x3a')]);}};module[_0x1669('0x56')]=Acw;