2a30df5268b12493faabef60e5d91a419bb90cbd
[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 _0xf970=['message','[%s][TIMER][STOP][AGENT:%s]','saveUnpause','[ACW][STOP]\x20Interface\x20%s\x20doesn\x27t\x20have\x20timer','[ACW][TIMERS]','stringify','[ACW][STOP]\x20%s','mandatoryDisposition','[ACW][syncAgentConnect]\x20%s','[ACW][syncAgentConnectPreview]\x20%s','syncHangupRequest','linkedid','[%s][HANGUP:LINKEDID]','[ACW][syncHangupRequest]\x20%s','syncHangup','[%s][HANGUPATTENDEDTRANSFER:UNIQUEID]','[%s][HANGUPATTENDEDTRANSFER:LINKEDID]','[ACW][syncHangup]\x20%s','transfereeuniqueid','secondtransfereruniqueid','transfertargetuniqueid','isNil','origtransfereruniqueid','[ACW][syncAttendedTransfer]\x20%s','transfereruniqueid','transfererlinkedid','[%s][BLINDTRANSFER:LINKEDID]','[ACW][syncBlindTransfer]\x20%s','autopause','all','[%s][AUTOPAUSE][AGENT:%s][QUEUE:%]','Auto-Pause','[ACW][syncAgentRingNoAnswer]\x20%s','lodash','../ami','../../../config/logger','acw','../rpc/user','../rpc/voiceAgentReport','voiceQueues','agents','timers','channels','agentconnect','syncAgentConnect','bind','hanguprequest','hangup','agentringnoanswer','syncAgentRingNoAnswer','attendedtransfer','blindtransfer','syncBlindTransfer','custom:agentConnectPreview','milliseconds','diff','updateAcw','lastPauseAt','timer','update','then','info','[%s][UPDATE][ACWTIME:%s]','catch','[%s][UPDATE][ERRORS:%s]','finally','prototype','startAcw','interface','queue','name','mandatoryDispositionPause','resolve','getAgent','voicePause','[%s][INPAUSE][AGENT:%s][QUEUE:%s]','[%s][START][AGENT:%s][QUEUE:%s]','attended','destlinkedid','savePause','[%s][TIMER:%s][AGENT:%s][QUEUE:%s]','acwTimeout','stopAcw','format','YYYY-MM-DD\x20HH:mm:ss','uniqueid','error','[ACW][START]\x20%s'];(function(_0x164760,_0x5874b0){var _0x8b91b2=function(_0x40d20a){while(--_0x40d20a){_0x164760['push'](_0x164760['shift']());}};_0x8b91b2(++_0x5874b0);}(_0xf970,0x1d9));var _0x0f97=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0xf970[_0x3dd15e];return _0x231fd0;};'use strict';var _=require(_0x0f97('0x0'));var moment=require('moment');var ami=require(_0x0f97('0x1'));var logger=require(_0x0f97('0x2'))(_0x0f97('0x3'));var RpcUser=require(_0x0f97('0x4'));var RpcVoiceAgentReport=require(_0x0f97('0x5'));function Acw(_0x25e484){this[_0x0f97('0x6')]=_0x25e484['voiceQueues'];this[_0x0f97('0x7')]=_0x25e484[_0x0f97('0x7')];this[_0x0f97('0x8')]=_0x25e484[_0x0f97('0x8')];this[_0x0f97('0x9')]={};ami['on'](_0x0f97('0xa'),this[_0x0f97('0xb')][_0x0f97('0xc')](this));ami['on'](_0x0f97('0xd'),this['syncHangupRequest']['bind'](this));ami['on'](_0x0f97('0xe'),this['syncHangup'][_0x0f97('0xc')](this));ami['on'](_0x0f97('0xf'),this[_0x0f97('0x10')]['bind'](this));ami['on'](_0x0f97('0x11'),this['syncAttendedTransfer'][_0x0f97('0xc')](this));ami['on'](_0x0f97('0x12'),this[_0x0f97('0x13')][_0x0f97('0xc')](this));ami['on'](_0x0f97('0x14'),this['syncAgentConnectPreview'][_0x0f97('0xc')](this));}function getDiff(_0x2b586a){var _0x4544b4=moment()[_0x0f97('0x15')](0x0);var _0x2aeeed=moment(_0x2b586a)[_0x0f97('0x15')](0x0);return _0x4544b4[_0x0f97('0x16')](_0x2aeeed,'seconds');}Acw['prototype'][_0x0f97('0x17')]=function(_0x2392c0,_0x1448f9){var _0xe92b09=this;var _0x5e3f3a=getDiff(_0xe92b09['timers'][_0x2392c0][_0x0f97('0x18')]);clearTimeout(_0xe92b09[_0x0f97('0x8')][_0x2392c0][_0x0f97('0x19')]);_0xe92b09[_0x0f97('0x8')][_0x2392c0][_0x0f97('0x19')]=![];return RpcVoiceAgentReport[_0x0f97('0x1a')]({'acwtime':_0x5e3f3a},_0xe92b09['timers'][_0x2392c0]['uniqueid'],_0x2392c0)[_0x0f97('0x1b')](function(_0x132d2f){logger[_0x0f97('0x1c')](_0x0f97('0x1d'),_0x1448f9,_0x5e3f3a,_0x132d2f);})[_0x0f97('0x1e')](function(_0x3a91b4){logger['error'](_0x0f97('0x1f'),_0x1448f9,_0x3a91b4);})[_0x0f97('0x20')](function(){delete _0xe92b09[_0x0f97('0x8')][_0x2392c0];});};Acw[_0x0f97('0x21')][_0x0f97('0x22')]=function(_0x316e84){try{var _0x21784d=this;var _0x52dde8=this[_0x0f97('0x9')][_0x316e84][_0x0f97('0x23')];var _0xf2dab8=this['channels'][_0x316e84][_0x0f97('0x24')];var _0x25d1ef=this['voiceQueues'][_0xf2dab8];var _0xb5721e=![];var _0x15df5c='ACW';if(_0x25d1ef['mandatoryDisposition']&&_0x25d1ef['mandatoryDispositionPause'][_0x0f97('0x25')]){_0xb5721e=!![];_0x15df5c=_0x25d1ef[_0x0f97('0x26')]['name'];}if(!_0x21784d[_0x0f97('0x7')][_0x52dde8]){return Promise[_0x0f97('0x27')]();}return RpcUser[_0x0f97('0x28')](_0x21784d[_0x0f97('0x7')][_0x52dde8]['id'])[_0x0f97('0x1b')](function(_0x23f078){if(!_0x23f078||_0x23f078[_0x0f97('0x29')]){logger[_0x0f97('0x1c')](_0x0f97('0x2a'),_0x316e84,_0x52dde8,_0xf2dab8);return;}logger[_0x0f97('0x1c')](_0x0f97('0x2b'),_0x316e84,_0x52dde8,_0xf2dab8);var _0x4fe728=_0x21784d[_0x0f97('0x9')][_0x316e84][_0x0f97('0x2c')]&&_0x21784d[_0x0f97('0x9')][_0x316e84][_0x0f97('0x2d')]?_0x21784d[_0x0f97('0x9')][_0x316e84][_0x0f97('0x2d')]:_0x316e84;return RpcUser[_0x0f97('0x2e')](_0x21784d[_0x0f97('0x7')][_0x52dde8],_0x15df5c,_0x4fe728);})['then'](function(_0x481654){if(_0xb5721e||!_0x481654){return;}_0x21784d[_0x0f97('0x8')][_0x52dde8]={};logger[_0x0f97('0x1c')](_0x0f97('0x2f'),_0x316e84,_0x21784d[_0x0f97('0x6')][_0xf2dab8][_0x0f97('0x30')],_0x52dde8,_0xf2dab8);_0x21784d[_0x0f97('0x8')][_0x52dde8][_0x0f97('0x19')]=setTimeout(_0x21784d[_0x0f97('0x31')][_0x0f97('0xc')](_0x21784d,_0x52dde8),_0x21784d[_0x0f97('0x6')][_0xf2dab8][_0x0f97('0x30')]*0x3e8);_0x21784d['timers'][_0x52dde8][_0x0f97('0x18')]=moment()[_0x0f97('0x32')](_0x0f97('0x33'));_0x21784d[_0x0f97('0x8')][_0x52dde8][_0x0f97('0x34')]=_0x316e84;_0x21784d['timers'][_0x52dde8][_0x0f97('0x24')]=_0xf2dab8;_0x21784d['timers'][_0x52dde8][_0x0f97('0x17')]=_0x21784d['updateAcw'][_0x0f97('0xc')](_0x21784d,_0x52dde8,_0x316e84);})[_0x0f97('0x1e')](function(){logger[_0x0f97('0x35')](_0x0f97('0x2f'),_0x316e84,_0x21784d[_0x0f97('0x6')][_0xf2dab8]['acwTimeout'],_0x52dde8,_0xf2dab8);})['finally'](function(){delete _0x21784d[_0x0f97('0x9')][_0x316e84];});}catch(_0x428089){logger['error'](_0x0f97('0x36'),_0x428089[_0x0f97('0x37')]);}};Acw[_0x0f97('0x21')][_0x0f97('0x31')]=function(_0x52196f){try{var _0x39fbb3=this;if(_0x39fbb3[_0x0f97('0x8')][_0x52196f]){_0x39fbb3[_0x0f97('0x8')][_0x52196f][_0x0f97('0x19')]=![];var _0x38c42e=_0x39fbb3['timers'][_0x52196f][_0x0f97('0x34')];var _0x36effc=_0x39fbb3[_0x0f97('0x8')][_0x52196f][_0x0f97('0x24')];var _0x37bdfa=_0x39fbb3[_0x0f97('0x6')][_0x36effc]['acwTimeout'];logger['info'](_0x0f97('0x38'),_0x38c42e,_0x52196f);RpcUser[_0x0f97('0x39')](this[_0x0f97('0x7')][_0x52196f]);RpcVoiceAgentReport['update']({'acwtime':_0x37bdfa,'agentacw':!![]},_0x38c42e,_0x52196f)[_0x0f97('0x1b')](function(_0xb24a15){logger[_0x0f97('0x1c')]('[%s][UPDATE][ACWTIME:%s]',_0x38c42e,_0x37bdfa,_0xb24a15);})[_0x0f97('0x1e')](function(_0x1de27e){logger[_0x0f97('0x35')](_0x0f97('0x1f'),_0x38c42e,_0x1de27e);});}else{logger[_0x0f97('0x35')](_0x0f97('0x3a'),_0x52196f);if(_0x39fbb3[_0x0f97('0x8')]){logger[_0x0f97('0x1c')](_0x0f97('0x3b'),JSON[_0x0f97('0x3c')](_0x39fbb3[_0x0f97('0x8')]));}}}catch(_0x5c1cd1){logger[_0x0f97('0x35')](_0x0f97('0x3d'),_0x5c1cd1['message']);}};Acw[_0x0f97('0x21')]['syncAgentConnect']=function(_0x153777){try{if(this[_0x0f97('0x6')][_0x153777[_0x0f97('0x24')]]&&(this['voiceQueues'][_0x153777['queue']][_0x0f97('0x3')]||this[_0x0f97('0x6')][_0x153777[_0x0f97('0x24')]][_0x0f97('0x3e')])){if(this[_0x0f97('0x7')][_0x153777['interface']]){this['channels'][_0x153777[_0x0f97('0x34')]]={'queue':_0x153777[_0x0f97('0x24')],'interface':_0x153777[_0x0f97('0x23')],'destlinkedid':_0x153777[_0x0f97('0x2d')]};}}}catch(_0x2a5f07){logger[_0x0f97('0x35')](_0x0f97('0x3f'),_0x2a5f07[_0x0f97('0x37')]);}};Acw[_0x0f97('0x21')]['syncAgentConnectPreview']=function(_0x2dd379){try{if(this['voiceQueues'][_0x2dd379[_0x0f97('0x24')]]&&(this[_0x0f97('0x6')][_0x2dd379[_0x0f97('0x24')]]['acw']||this['voiceQueues'][_0x2dd379[_0x0f97('0x24')]][_0x0f97('0x3e')])){if(this[_0x0f97('0x7')][_0x2dd379['interface']]){this['channels'][_0x2dd379['uniqueid']]={'queue':_0x2dd379[_0x0f97('0x24')],'interface':_0x2dd379[_0x0f97('0x23')]};}}}catch(_0x1871b6){logger[_0x0f97('0x35')](_0x0f97('0x40'),_0x1871b6[_0x0f97('0x37')]);}};Acw[_0x0f97('0x21')][_0x0f97('0x41')]=function(_0x1c342d){try{if(this[_0x0f97('0x9')][_0x1c342d[_0x0f97('0x34')]]&&_['isUndefined'](this[_0x0f97('0x9')][_0x1c342d['uniqueid']]['attended'])){logger[_0x0f97('0x1c')]('[%s][HANGUP:UNIQUEID]',_0x1c342d[_0x0f97('0x34')]);this[_0x0f97('0x22')](_0x1c342d[_0x0f97('0x34')]);}else if(this[_0x0f97('0x9')][_0x1c342d[_0x0f97('0x42')]]&&_['isUndefined'](this['channels'][_0x1c342d[_0x0f97('0x42')]][_0x0f97('0x2c')])){logger['info'](_0x0f97('0x43'),_0x1c342d[_0x0f97('0x42')]);this[_0x0f97('0x22')](_0x1c342d[_0x0f97('0x42')]);}}catch(_0x4c18fe){logger[_0x0f97('0x35')](_0x0f97('0x44'),_0x4c18fe[_0x0f97('0x37')]);}};Acw[_0x0f97('0x21')][_0x0f97('0x45')]=function(_0x2a30b1){try{if(this[_0x0f97('0x9')][_0x2a30b1[_0x0f97('0x34')]]&&this[_0x0f97('0x9')][_0x2a30b1[_0x0f97('0x34')]][_0x0f97('0x2c')]){logger[_0x0f97('0x1c')](_0x0f97('0x46'),_0x2a30b1[_0x0f97('0x34')]);this['startAcw'](_0x2a30b1[_0x0f97('0x34')]);}else if(this['channels'][_0x2a30b1[_0x0f97('0x42')]]&&this[_0x0f97('0x9')][_0x2a30b1[_0x0f97('0x42')]]['attended']){logger[_0x0f97('0x1c')](_0x0f97('0x47'),_0x2a30b1[_0x0f97('0x42')]);this['startAcw'](_0x2a30b1['linkedid']);}}catch(_0x5f0f31){logger['error'](_0x0f97('0x48'),_0x5f0f31[_0x0f97('0x37')]);}};Acw[_0x0f97('0x21')]['syncAttendedTransfer']=function(_0x3e4a26){try{if(!_['isNil'](this[_0x0f97('0x9')][_0x3e4a26[_0x0f97('0x49')]])){this[_0x0f97('0x22')](_0x3e4a26[_0x0f97('0x49')]);if(this[_0x0f97('0x9')][_0x3e4a26[_0x0f97('0x4a')]]){this[_0x0f97('0x9')][_0x3e4a26[_0x0f97('0x4a')]][_0x0f97('0x2c')]=!![];this['channels'][_0x3e4a26[_0x0f97('0x4b')]]=this[_0x0f97('0x9')][_0x3e4a26[_0x0f97('0x4a')]];delete this[_0x0f97('0x9')][_0x3e4a26[_0x0f97('0x4a')]];}}else if(!_[_0x0f97('0x4c')](this[_0x0f97('0x9')][_0x3e4a26[_0x0f97('0x4b')]])){this['startAcw'](_0x3e4a26[_0x0f97('0x4b')]);if(this[_0x0f97('0x9')][_0x3e4a26['origtransfereruniqueid']]){this[_0x0f97('0x9')][_0x3e4a26[_0x0f97('0x4d')]][_0x0f97('0x2c')]=!![];this[_0x0f97('0x9')][_0x3e4a26['transfereeuniqueid']]=this[_0x0f97('0x9')][_0x3e4a26[_0x0f97('0x4d')]];delete this[_0x0f97('0x9')][_0x3e4a26[_0x0f97('0x4d')]];}}}catch(_0x320b96){logger[_0x0f97('0x35')](_0x0f97('0x4e'),_0x320b96[_0x0f97('0x37')]);}};Acw[_0x0f97('0x21')][_0x0f97('0x13')]=function(_0xc368b5){try{if(this[_0x0f97('0x9')][_0xc368b5[_0x0f97('0x4f')]]){logger[_0x0f97('0x1c')]('[%s][BLINDTRANSFER:UNIQUEID]',JSON[_0x0f97('0x3c')](_0xc368b5[_0x0f97('0x4f')]));this[_0x0f97('0x22')](_0xc368b5['transfereruniqueid']);}else if(this['channels'][_0xc368b5[_0x0f97('0x50')]]){logger['info'](_0x0f97('0x51'),JSON['stringify'](_0xc368b5[_0x0f97('0x50')]));this['startAcw'](_0xc368b5[_0x0f97('0x50')]);}}catch(_0x5788c6){logger[_0x0f97('0x35')](_0x0f97('0x52'),_0x5788c6[_0x0f97('0x37')]);}};Acw[_0x0f97('0x21')][_0x0f97('0x10')]=function(_0x21cb33){try{if(this['voiceQueues'][_0x21cb33['queue']]&&this[_0x0f97('0x6')][_0x21cb33['queue']][_0x0f97('0x53')]===_0x0f97('0x54')){if(this[_0x0f97('0x7')][_0x21cb33['interface']]){logger['info'](_0x0f97('0x55'),_0x21cb33[_0x0f97('0x34')],_0x21cb33['interface'],_0x21cb33[_0x0f97('0x24')]);return RpcUser[_0x0f97('0x2e')](this[_0x0f97('0x7')][_0x21cb33[_0x0f97('0x23')]],_0x0f97('0x56'),_0x21cb33[_0x0f97('0x34')]);}}}catch(_0x294ac8){logger[_0x0f97('0x35')](_0x0f97('0x57'),_0x294ac8['message']);}};module['exports']=Acw;