Built motion from commit 3d3e98f2.|2.6.29
[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 _0x4213=['[ACW][TIMERS]','[ACW][STOP]\x20%s','[ACW][syncAgentConnect]\x20%s','message','[ACW][syncAgentConnectPreview]\x20%s','[%s][HANGUP:UNIQUEID]','isUndefined','linkedid','attended','[%s][HANGUP:LINKEDID]','syncHangup','[%s][HANGUPATTENDEDTRANSFER:UNIQUEID]','[%s][HANGUPATTENDEDTRANSFER:LINKEDID]','[ACW][syncHangup]\x20%s','isNil','transfereeuniqueid','secondtransfereruniqueid','transfertargetuniqueid','origtransfereruniqueid','[ACW][syncAttendedTransfer]\x20%s','transfereruniqueid','[%s][BLINDTRANSFER:UNIQUEID]','stringify','transfererlinkedid','syncAgentRingNoAnswer','autopause','all','savePause','Auto-Pause','[ACW][syncAgentRingNoAnswer]\x20%s','exports','lodash','moment','../ami','../../../config/logger','acw','../rpc/user','../rpc/voiceAgentReport','voiceQueues','agents','timers','agentconnect','syncAgentConnect','bind','hanguprequest','syncHangupRequest','hangup','agentringnoanswer','attendedtransfer','syncAttendedTransfer','blindtransfer','syncBlindTransfer','syncAgentConnectPreview','milliseconds','seconds','updateAcw','lastPauseAt','timer','update','uniqueid','then','info','[%s][UPDATE][ACWTIME:%s]','catch','error','prototype','startAcw','channels','interface','queue','ACW','mandatoryDisposition','mandatoryDispositionPause','Action','getAgent','voicePause','destlinkedid','available','paused','[%s][TIMER:%s][AGENT:%s][QUEUE:%s]','acwTimeout','format','YYYY-MM-DD\x20HH:mm:ss','finally','[%s][TIMER][STOP][AGENT:%s]','pauseType','[%s][UPDATE][ERRORS:%s]','[ACW][STOP]\x20Interface\x20%s\x20doesn\x27t\x20have\x20timer'];(function(_0x589370,_0x5c801c){var _0x336554=function(_0x555b19){while(--_0x555b19){_0x589370['push'](_0x589370['shift']());}};_0x336554(++_0x5c801c);}(_0x4213,0x77));var _0x3421=function(_0x3e5f2c,_0x54a371){_0x3e5f2c=_0x3e5f2c-0x0;var _0x4bc57e=_0x4213[_0x3e5f2c];return _0x4bc57e;};'use strict';var _=require(_0x3421('0x0'));var moment=require(_0x3421('0x1'));var ami=require(_0x3421('0x2'));var logger=require(_0x3421('0x3'))(_0x3421('0x4'));var RpcUser=require(_0x3421('0x5'));var RpcVoiceAgentReport=require(_0x3421('0x6'));function Acw(_0x5a303d){this[_0x3421('0x7')]=_0x5a303d['voiceQueues'];this[_0x3421('0x8')]=_0x5a303d[_0x3421('0x8')];this[_0x3421('0x9')]=_0x5a303d[_0x3421('0x9')];this['channels']={};ami['on'](_0x3421('0xa'),this[_0x3421('0xb')][_0x3421('0xc')](this));ami['on'](_0x3421('0xd'),this[_0x3421('0xe')]['bind'](this));ami['on'](_0x3421('0xf'),this['syncHangup']['bind'](this));ami['on'](_0x3421('0x10'),this['syncAgentRingNoAnswer'][_0x3421('0xc')](this));ami['on'](_0x3421('0x11'),this[_0x3421('0x12')][_0x3421('0xc')](this));ami['on'](_0x3421('0x13'),this[_0x3421('0x14')][_0x3421('0xc')](this));ami['on']('custom:agentConnectPreview',this[_0x3421('0x15')][_0x3421('0xc')](this));}function getDiff(_0xb4ea90){var _0x15eef0=moment()[_0x3421('0x16')](0x0);var _0x3f4672=moment(_0xb4ea90)[_0x3421('0x16')](0x0);return _0x15eef0['diff'](_0x3f4672,_0x3421('0x17'));}Acw['prototype'][_0x3421('0x18')]=function(_0x5257ad,_0x59ae45){var _0x1e33ab=this;var _0x4c6f7b=getDiff(_0x1e33ab[_0x3421('0x9')][_0x5257ad][_0x3421('0x19')]);clearTimeout(_0x1e33ab['timers'][_0x5257ad][_0x3421('0x1a')]);_0x1e33ab[_0x3421('0x9')][_0x5257ad][_0x3421('0x1a')]=![];return RpcVoiceAgentReport[_0x3421('0x1b')]({'acwtime':_0x4c6f7b},_0x1e33ab[_0x3421('0x9')][_0x5257ad][_0x3421('0x1c')],_0x5257ad)[_0x3421('0x1d')](function(_0x66a57a){logger[_0x3421('0x1e')](_0x3421('0x1f'),_0x59ae45,_0x4c6f7b,_0x66a57a);})[_0x3421('0x20')](function(_0x50d9a5){logger[_0x3421('0x21')]('[%s][UPDATE][ERRORS:%s]',_0x59ae45,_0x50d9a5);})['finally'](function(){delete _0x1e33ab['timers'][_0x5257ad];});};Acw[_0x3421('0x22')][_0x3421('0x23')]=function(_0x45f826){try{var _0x256cc5=this;var _0x132e8e=this[_0x3421('0x24')][_0x45f826][_0x3421('0x25')];var _0x705591=this[_0x3421('0x24')][_0x45f826][_0x3421('0x26')];var _0x48fb3d=this['voiceQueues'][_0x705591];var _0x494423=![];var _0x3fef90=_0x3421('0x27');if(_0x48fb3d[_0x3421('0x28')]&&_0x48fb3d['mandatoryDispositionPause']['name']){_0x494423=!![];_0x3fef90=_0x48fb3d[_0x3421('0x29')]['name'];}return ami[_0x3421('0x2a')]({'action':'QueuePause','interface':_0x132e8e,'paused':!![],'reason':_0x3fef90})[_0x3421('0x1d')](function(){if(_0x256cc5[_0x3421('0x8')][_0x132e8e]){return RpcUser[_0x3421('0x2b')](_0x256cc5[_0x3421('0x8')][_0x132e8e]['id'])[_0x3421('0x1d')](function(_0x5df4dc){if(!_0x5df4dc||_0x5df4dc[_0x3421('0x2c')]){logger['info']('[%s][INPAUSE][AGENT:%s][QUEUE:%s]',_0x45f826,_0x132e8e,_0x705591);return;}logger[_0x3421('0x1e')]('[%s][START][AGENT:%s][QUEUE:%s]',_0x45f826,_0x132e8e,_0x705591);var _0x5074a2=_0x256cc5[_0x3421('0x24')][_0x45f826]['attended']&&_0x256cc5[_0x3421('0x24')][_0x45f826]['destlinkedid']?_0x256cc5[_0x3421('0x24')][_0x45f826][_0x3421('0x2d')]:_0x45f826;return RpcUser['savePause'](_0x256cc5[_0x3421('0x8')][_0x132e8e],_0x3fef90,_0x5074a2)[_0x3421('0x1d')](function(_0x420349){_0x256cc5['voiceQueues'][_0x705591][_0x3421('0x2e')]-=0x1;_0x256cc5['voiceQueues'][_0x705591][_0x3421('0x2f')]+=0x1;return _0x420349;});})[_0x3421('0x1d')](function(_0x1045ab){if(_0x494423||!_0x1045ab){return;}_0x256cc5[_0x3421('0x9')][_0x132e8e]={};logger[_0x3421('0x1e')](_0x3421('0x30'),_0x45f826,_0x256cc5[_0x3421('0x7')][_0x705591][_0x3421('0x31')],_0x132e8e,_0x705591);_0x256cc5[_0x3421('0x9')][_0x132e8e][_0x3421('0x1a')]=setTimeout(_0x256cc5['stopAcw']['bind'](_0x256cc5,_0x132e8e),_0x256cc5[_0x3421('0x7')][_0x705591][_0x3421('0x31')]*0x3e8);_0x256cc5['timers'][_0x132e8e][_0x3421('0x19')]=moment()[_0x3421('0x32')](_0x3421('0x33'));_0x256cc5[_0x3421('0x9')][_0x132e8e][_0x3421('0x1c')]=_0x45f826;_0x256cc5['timers'][_0x132e8e][_0x3421('0x26')]=_0x705591;_0x256cc5[_0x3421('0x9')][_0x132e8e][_0x3421('0x18')]=_0x256cc5['updateAcw'][_0x3421('0xc')](_0x256cc5,_0x132e8e,_0x45f826);});}})['catch'](function(){logger[_0x3421('0x21')](_0x3421('0x30'),_0x45f826,_0x256cc5[_0x3421('0x7')][_0x705591][_0x3421('0x31')],_0x132e8e,_0x705591);})[_0x3421('0x34')](function(){delete _0x256cc5[_0x3421('0x24')][_0x45f826];});}catch(_0x22f45e){logger['error']('[ACW][START]\x20%s',_0x22f45e['message']);}};Acw[_0x3421('0x22')]['stopAcw']=function(_0x5a56b8){try{var _0xbe9181=this;if(_0xbe9181['timers'][_0x5a56b8]){_0xbe9181[_0x3421('0x9')][_0x5a56b8][_0x3421('0x1a')]=![];var _0x497aa3=_0xbe9181[_0x3421('0x9')][_0x5a56b8][_0x3421('0x1c')];var _0x83cb95=_0xbe9181[_0x3421('0x9')][_0x5a56b8]['queue'];var _0x39990d=_0xbe9181[_0x3421('0x7')][_0x83cb95][_0x3421('0x31')];logger[_0x3421('0x1e')](_0x3421('0x35'),_0x497aa3,_0x5a56b8);RpcUser['getAgent'](this[_0x3421('0x8')][_0x5a56b8]['id'])[_0x3421('0x1d')](function(_0x5e3a2f){if(_0x5e3a2f[_0x3421('0x36')]==='ACW'){return RpcUser['saveUnpause'](_0xbe9181['agents'][_0x5a56b8]);}});RpcVoiceAgentReport[_0x3421('0x1b')]({'acwtime':_0x39990d,'agentacw':!![]},_0x497aa3,_0x5a56b8)[_0x3421('0x1d')](function(_0x41bdb7){logger[_0x3421('0x1e')](_0x3421('0x1f'),_0x497aa3,_0x39990d,_0x41bdb7);})[_0x3421('0x20')](function(_0xe7fdfb){logger[_0x3421('0x21')](_0x3421('0x37'),_0x497aa3,_0xe7fdfb);});}else{logger[_0x3421('0x21')](_0x3421('0x38'),_0x5a56b8);if(_0xbe9181[_0x3421('0x9')]){logger[_0x3421('0x1e')](_0x3421('0x39'),JSON['stringify'](_0xbe9181[_0x3421('0x9')]));}}}catch(_0x2e7c59){logger[_0x3421('0x21')](_0x3421('0x3a'),_0x2e7c59['message']);}};Acw[_0x3421('0x22')]['syncAgentConnect']=function(_0x2e8761){try{if(this[_0x3421('0x7')][_0x2e8761[_0x3421('0x26')]]&&(this[_0x3421('0x7')][_0x2e8761[_0x3421('0x26')]][_0x3421('0x4')]||this[_0x3421('0x7')][_0x2e8761[_0x3421('0x26')]][_0x3421('0x28')])){if(this[_0x3421('0x8')][_0x2e8761[_0x3421('0x25')]]){this[_0x3421('0x24')][_0x2e8761[_0x3421('0x1c')]]={'queue':_0x2e8761['queue'],'interface':_0x2e8761[_0x3421('0x25')],'destlinkedid':_0x2e8761['destlinkedid']};}}}catch(_0x1a029b){logger[_0x3421('0x21')](_0x3421('0x3b'),_0x1a029b[_0x3421('0x3c')]);}};Acw[_0x3421('0x22')][_0x3421('0x15')]=function(_0x2a11a3){try{if(this[_0x3421('0x7')][_0x2a11a3[_0x3421('0x26')]]&&(this[_0x3421('0x7')][_0x2a11a3['queue']][_0x3421('0x4')]||this[_0x3421('0x7')][_0x2a11a3[_0x3421('0x26')]]['mandatoryDisposition'])){if(this['agents'][_0x2a11a3[_0x3421('0x25')]]){this[_0x3421('0x24')][_0x2a11a3[_0x3421('0x1c')]]={'queue':_0x2a11a3['queue'],'interface':_0x2a11a3[_0x3421('0x25')]};}}}catch(_0x18eba6){logger[_0x3421('0x21')](_0x3421('0x3d'),_0x18eba6['message']);}};Acw[_0x3421('0x22')][_0x3421('0xe')]=function(_0x3f7ff3){try{if(this['channels'][_0x3f7ff3['uniqueid']]&&_['isUndefined'](this[_0x3421('0x24')][_0x3f7ff3[_0x3421('0x1c')]]['attended'])){logger['info'](_0x3421('0x3e'),_0x3f7ff3[_0x3421('0x1c')]);this[_0x3421('0x23')](_0x3f7ff3[_0x3421('0x1c')]);}else if(this[_0x3421('0x24')][_0x3f7ff3['linkedid']]&&_[_0x3421('0x3f')](this[_0x3421('0x24')][_0x3f7ff3[_0x3421('0x40')]][_0x3421('0x41')])){logger['info'](_0x3421('0x42'),_0x3f7ff3[_0x3421('0x40')]);this[_0x3421('0x23')](_0x3f7ff3['linkedid']);}}catch(_0x5f97d5){logger['error']('[ACW][syncHangupRequest]\x20%s',_0x5f97d5[_0x3421('0x3c')]);}};Acw['prototype'][_0x3421('0x43')]=function(_0x7e0c6c){try{if(this[_0x3421('0x24')][_0x7e0c6c['uniqueid']]&&this[_0x3421('0x24')][_0x7e0c6c[_0x3421('0x1c')]][_0x3421('0x41')]){logger[_0x3421('0x1e')](_0x3421('0x44'),_0x7e0c6c[_0x3421('0x1c')]);this[_0x3421('0x23')](_0x7e0c6c[_0x3421('0x1c')]);}else if(this[_0x3421('0x24')][_0x7e0c6c['linkedid']]&&this[_0x3421('0x24')][_0x7e0c6c[_0x3421('0x40')]]['attended']){logger[_0x3421('0x1e')](_0x3421('0x45'),_0x7e0c6c[_0x3421('0x40')]);this['startAcw'](_0x7e0c6c[_0x3421('0x40')]);}}catch(_0x27085d){logger[_0x3421('0x21')](_0x3421('0x46'),_0x27085d[_0x3421('0x3c')]);}};Acw[_0x3421('0x22')][_0x3421('0x12')]=function(_0x3254aa){try{if(!_[_0x3421('0x47')](this[_0x3421('0x24')][_0x3254aa[_0x3421('0x48')]])){this[_0x3421('0x23')](_0x3254aa[_0x3421('0x48')]);if(this[_0x3421('0x24')][_0x3254aa[_0x3421('0x49')]]){this['channels'][_0x3254aa[_0x3421('0x49')]][_0x3421('0x41')]=!![];this[_0x3421('0x24')][_0x3254aa[_0x3421('0x4a')]]=this[_0x3421('0x24')][_0x3254aa[_0x3421('0x49')]];delete this[_0x3421('0x24')][_0x3254aa[_0x3421('0x49')]];}}else if(!_['isNil'](this[_0x3421('0x24')][_0x3254aa['transfertargetuniqueid']])){this[_0x3421('0x23')](_0x3254aa[_0x3421('0x4a')]);if(this[_0x3421('0x24')][_0x3254aa[_0x3421('0x4b')]]){this['channels'][_0x3254aa[_0x3421('0x4b')]][_0x3421('0x41')]=!![];this[_0x3421('0x24')][_0x3254aa[_0x3421('0x48')]]=this[_0x3421('0x24')][_0x3254aa[_0x3421('0x4b')]];delete this['channels'][_0x3254aa[_0x3421('0x4b')]];}}}catch(_0x1d23f1){logger[_0x3421('0x21')](_0x3421('0x4c'),_0x1d23f1[_0x3421('0x3c')]);}};Acw[_0x3421('0x22')][_0x3421('0x14')]=function(_0x3d7c9a){try{if(this['channels'][_0x3d7c9a[_0x3421('0x4d')]]){logger[_0x3421('0x1e')](_0x3421('0x4e'),JSON[_0x3421('0x4f')](_0x3d7c9a[_0x3421('0x4d')]));this['startAcw'](_0x3d7c9a['transfereruniqueid']);}else if(this[_0x3421('0x24')][_0x3d7c9a[_0x3421('0x50')]]){logger[_0x3421('0x1e')]('[%s][BLINDTRANSFER:LINKEDID]',JSON[_0x3421('0x4f')](_0x3d7c9a['transfererlinkedid']));this[_0x3421('0x23')](_0x3d7c9a['transfererlinkedid']);}}catch(_0x4f23c5){logger['error']('[ACW][syncBlindTransfer]\x20%s',_0x4f23c5['message']);}};Acw[_0x3421('0x22')][_0x3421('0x51')]=function(_0x2f64a4){try{if(this[_0x3421('0x7')][_0x2f64a4[_0x3421('0x26')]]&&this[_0x3421('0x7')][_0x2f64a4[_0x3421('0x26')]][_0x3421('0x52')]===_0x3421('0x53')){if(this[_0x3421('0x8')][_0x2f64a4['interface']]){logger[_0x3421('0x1e')]('[%s][AUTOPAUSE][AGENT:%s][QUEUE:%]',_0x2f64a4[_0x3421('0x1c')],_0x2f64a4[_0x3421('0x25')],_0x2f64a4[_0x3421('0x26')]);return RpcUser[_0x3421('0x54')](this[_0x3421('0x8')][_0x2f64a4[_0x3421('0x25')]],_0x3421('0x55'),_0x2f64a4[_0x3421('0x1c')]);}}}catch(_0x475c8e){logger['error'](_0x3421('0x56'),_0x475c8e[_0x3421('0x3c')]);}};module[_0x3421('0x57')]=Acw;