Built motion from commit fe909640.|2.6.8
[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 _0xee29=['stringify','[ACW][STOP]\x20%s','[ACW][syncAgentConnect]\x20%s','[ACW][syncAgentConnectPreview]\x20%s','isUndefined','attended','[%s][HANGUP:UNIQUEID]','linkedid','[%s][HANGUP:LINKEDID]','[ACW][syncHangupRequest]\x20%s','syncHangup','[%s][HANGUPATTENDEDTRANSFER:UNIQUEID]','isNil','transfereeuniqueid','transfertargetuniqueid','secondtransfereruniqueid','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','util','moment','../ami','../../../config/logger','acw','../rpc/user','../rpc/voiceAgentReport','voiceQueues','agents','timers','syncAgentConnect','bind','hanguprequest','syncHangupRequest','hangup','agentringnoanswer','syncAgentRingNoAnswer','attendedtransfer','syncAttendedTransfer','syncBlindTransfer','custom:agentConnectPreview','syncAgentConnectPreview','milliseconds','diff','seconds','prototype','startAcw','channels','interface','queue','ACW','mandatoryDisposition','mandatoryDispositionPause','name','Action','QueuePause','then','getAgent','voicePause','info','[%s][START][AGENT:%s][QUEUE:%s]','destlinkedid','[%s][TIMER:%s][AGENT:%s][QUEUE:%s]','timer','stopAcw','acwTimeout','lastPauseAt','format','YYYY-MM-DD\x20HH:mm:ss','uniqueid','update','[%s][UPDATE][ACWTIME:%s]','error','[%s][INPAUSE][AGENT:%s][QUEUE:%s]','finally','message','[%s][TIMER][STOP][AGENT:%s]','catch','[%s][UPDATE][ERRORS:%s]','[ACW][STOP]\x20Interface\x20%s\x20doesn\x27t\x20have\x20timer','[ACW][TIMERS]'];(function(_0x45d3f0,_0x4be53f){var _0x314b79=function(_0x563d32){while(--_0x563d32){_0x45d3f0['push'](_0x45d3f0['shift']());}};_0x314b79(++_0x4be53f);}(_0xee29,0x73));var _0x9ee2=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0xee29[_0x3dd15e];return _0x231fd0;};'use strict';var util=require(_0x9ee2('0x0'));var _=require('lodash');var moment=require(_0x9ee2('0x1'));var ami=require(_0x9ee2('0x2'));var logger=require(_0x9ee2('0x3'))(_0x9ee2('0x4'));var RpcUser=require(_0x9ee2('0x5'));var RpcVoiceAgentReport=require(_0x9ee2('0x6'));function Acw(_0x10882e){this[_0x9ee2('0x7')]=_0x10882e[_0x9ee2('0x7')];this[_0x9ee2('0x8')]=_0x10882e[_0x9ee2('0x8')];this[_0x9ee2('0x9')]=_0x10882e[_0x9ee2('0x9')];this['channels']={};ami['on']('agentconnect',this[_0x9ee2('0xa')][_0x9ee2('0xb')](this));ami['on'](_0x9ee2('0xc'),this[_0x9ee2('0xd')]['bind'](this));ami['on'](_0x9ee2('0xe'),this['syncHangup'][_0x9ee2('0xb')](this));ami['on'](_0x9ee2('0xf'),this[_0x9ee2('0x10')][_0x9ee2('0xb')](this));ami['on'](_0x9ee2('0x11'),this[_0x9ee2('0x12')][_0x9ee2('0xb')](this));ami['on']('blindtransfer',this[_0x9ee2('0x13')][_0x9ee2('0xb')](this));ami['on'](_0x9ee2('0x14'),this[_0x9ee2('0x15')][_0x9ee2('0xb')](this));}function getDiff(_0xa45dfc){var _0x446628=moment()[_0x9ee2('0x16')](0x0);var _0x36e6a3=moment(_0xa45dfc)['milliseconds'](0x0);return _0x446628[_0x9ee2('0x17')](_0x36e6a3,_0x9ee2('0x18'));}Acw[_0x9ee2('0x19')][_0x9ee2('0x1a')]=function(_0x1ff341){try{var _0x2430c3=this;var _0xadaf8c=this[_0x9ee2('0x1b')][_0x1ff341][_0x9ee2('0x1c')];var _0x599717=this[_0x9ee2('0x1b')][_0x1ff341][_0x9ee2('0x1d')];var _0x5c5bb9=this[_0x9ee2('0x7')][_0x599717];var _0x11e961=![];var _0x438535=_0x9ee2('0x1e');if(_0x5c5bb9[_0x9ee2('0x1f')]){if(_0x5c5bb9[_0x9ee2('0x20')][_0x9ee2('0x21')]){_0x11e961=!![];_0x438535=_0x5c5bb9[_0x9ee2('0x20')]['name'];}}ami[_0x9ee2('0x22')]({'action':_0x9ee2('0x23'),'interface':_0xadaf8c,'paused':!![],'reason':_0x438535})[_0x9ee2('0x24')](function(_0x349948){if(_0x2430c3['agents'][_0xadaf8c]){return RpcUser[_0x9ee2('0x25')](_0x2430c3[_0x9ee2('0x8')][_0xadaf8c]['id'])[_0x9ee2('0x24')](function(_0x3b726c){if(_0x3b726c&&!_0x3b726c[_0x9ee2('0x26')]){logger[_0x9ee2('0x27')](_0x9ee2('0x28'),_0x1ff341,_0xadaf8c,_0x599717);var _0x45a64f=_0x2430c3[_0x9ee2('0x1b')][_0x1ff341]['attended']&&_0x2430c3[_0x9ee2('0x1b')][_0x1ff341][_0x9ee2('0x29')]?_0x2430c3['channels'][_0x1ff341]['destlinkedid']:_0x1ff341;return RpcUser['savePause'](_0x2430c3[_0x9ee2('0x8')][_0xadaf8c],_0x438535,_0x45a64f)[_0x9ee2('0x24')](function(_0x4a308b){if(!_0x11e961){_0x2430c3[_0x9ee2('0x9')][_0xadaf8c]={};logger[_0x9ee2('0x27')](_0x9ee2('0x2a'),_0x1ff341,_0x2430c3[_0x9ee2('0x7')][_0x599717]['acwTimeout'],_0xadaf8c,_0x599717);_0x2430c3['timers'][_0xadaf8c][_0x9ee2('0x2b')]=setTimeout(_0x2430c3[_0x9ee2('0x2c')][_0x9ee2('0xb')](_0x2430c3,_0xadaf8c),_0x2430c3[_0x9ee2('0x7')][_0x599717][_0x9ee2('0x2d')]*0x3e8);_0x2430c3['timers'][_0xadaf8c][_0x9ee2('0x2e')]=moment()[_0x9ee2('0x2f')](_0x9ee2('0x30'));_0x2430c3['timers'][_0xadaf8c][_0x9ee2('0x31')]=_0x1ff341;_0x2430c3[_0x9ee2('0x9')][_0xadaf8c][_0x9ee2('0x1d')]=_0x599717;_0x2430c3['timers'][_0xadaf8c]['updateAcw']=function(){var _0x198bc5=getDiff(_0x2430c3[_0x9ee2('0x9')][_0xadaf8c][_0x9ee2('0x2e')]);clearTimeout(_0x2430c3[_0x9ee2('0x9')][_0xadaf8c][_0x9ee2('0x2b')]);_0x2430c3[_0x9ee2('0x9')][_0xadaf8c]['timer']=![];RpcVoiceAgentReport[_0x9ee2('0x32')]({'acwtime':_0x198bc5},_0x2430c3['timers'][_0xadaf8c]['uniqueid'],_0xadaf8c)[_0x9ee2('0x24')](function(_0x205454){logger[_0x9ee2('0x27')](_0x9ee2('0x33'),_0x1ff341,_0x198bc5,_0x205454);})['catch'](function(_0x213b64){logger[_0x9ee2('0x34')]('[%s][UPDATE][ERRORS:%s]',_0x1ff341,_0x213b64);});delete _0x2430c3[_0x9ee2('0x9')][_0xadaf8c];};}});}else{logger[_0x9ee2('0x27')](_0x9ee2('0x35'),_0x1ff341,_0xadaf8c,_0x599717);}});}})['catch'](function(_0x234135){logger[_0x9ee2('0x34')]('[%s][TIMER:%s][AGENT:%s][QUEUE:%s]',_0x1ff341,_0x2430c3[_0x9ee2('0x7')][_0x599717][_0x9ee2('0x2d')],_0xadaf8c,_0x599717);})[_0x9ee2('0x36')](function(){delete _0x2430c3[_0x9ee2('0x1b')][_0x1ff341];});}catch(_0x7f1dc8){logger['error']('[ACW][START]\x20%s',_0x7f1dc8[_0x9ee2('0x37')]);}};Acw[_0x9ee2('0x19')]['stopAcw']=function(_0x39f58a){try{var _0x1b3f4d=this;if(_0x1b3f4d[_0x9ee2('0x9')][_0x39f58a]){_0x1b3f4d['timers'][_0x39f58a][_0x9ee2('0x2b')]=![];var _0x132078=_0x1b3f4d[_0x9ee2('0x9')][_0x39f58a][_0x9ee2('0x31')];var _0x7be8e6=_0x1b3f4d[_0x9ee2('0x9')][_0x39f58a][_0x9ee2('0x1d')];var _0x51ea18=_0x1b3f4d[_0x9ee2('0x7')][_0x7be8e6]['acwTimeout'];logger[_0x9ee2('0x27')](_0x9ee2('0x38'),_0x132078,_0x39f58a);RpcUser['saveUnpause'](this[_0x9ee2('0x8')][_0x39f58a]);RpcVoiceAgentReport[_0x9ee2('0x32')]({'acwtime':_0x51ea18,'agentacw':!![]},_0x132078,_0x39f58a)[_0x9ee2('0x24')](function(_0x2cb77f){logger[_0x9ee2('0x27')](_0x9ee2('0x33'),_0x132078,_0x51ea18,_0x2cb77f);})[_0x9ee2('0x39')](function(_0xc560b2){logger[_0x9ee2('0x34')](_0x9ee2('0x3a'),_0x132078,_0xc560b2);});}else{logger[_0x9ee2('0x34')](_0x9ee2('0x3b'),_0x39f58a);if(_0x1b3f4d[_0x9ee2('0x9')]){logger[_0x9ee2('0x27')](_0x9ee2('0x3c'),JSON[_0x9ee2('0x3d')](_0x1b3f4d[_0x9ee2('0x9')]));}}}catch(_0x18588b){logger[_0x9ee2('0x34')](_0x9ee2('0x3e'),_0x18588b[_0x9ee2('0x37')]);}};Acw[_0x9ee2('0x19')][_0x9ee2('0xa')]=function(_0x421595){try{if(this['voiceQueues'][_0x421595[_0x9ee2('0x1d')]]&&(this[_0x9ee2('0x7')][_0x421595[_0x9ee2('0x1d')]][_0x9ee2('0x4')]||this[_0x9ee2('0x7')][_0x421595['queue']][_0x9ee2('0x1f')])){if(this['agents'][_0x421595[_0x9ee2('0x1c')]]){this[_0x9ee2('0x1b')][_0x421595[_0x9ee2('0x31')]]={'queue':_0x421595[_0x9ee2('0x1d')],'interface':_0x421595[_0x9ee2('0x1c')],'destlinkedid':_0x421595[_0x9ee2('0x29')]};}}}catch(_0x3283d3){logger[_0x9ee2('0x34')](_0x9ee2('0x3f'),_0x3283d3[_0x9ee2('0x37')]);}};Acw['prototype'][_0x9ee2('0x15')]=function(_0x12fd4d){try{if(this[_0x9ee2('0x7')][_0x12fd4d[_0x9ee2('0x1d')]]&&(this[_0x9ee2('0x7')][_0x12fd4d[_0x9ee2('0x1d')]]['acw']||this[_0x9ee2('0x7')][_0x12fd4d[_0x9ee2('0x1d')]][_0x9ee2('0x1f')])){if(this[_0x9ee2('0x8')][_0x12fd4d[_0x9ee2('0x1c')]]){this['channels'][_0x12fd4d[_0x9ee2('0x31')]]={'queue':_0x12fd4d['queue'],'interface':_0x12fd4d[_0x9ee2('0x1c')]};}}}catch(_0x2dfc3a){logger[_0x9ee2('0x34')](_0x9ee2('0x40'),_0x2dfc3a[_0x9ee2('0x37')]);}};Acw[_0x9ee2('0x19')][_0x9ee2('0xd')]=function(_0x15eff2){try{if(this['channels'][_0x15eff2['uniqueid']]&&_[_0x9ee2('0x41')](this[_0x9ee2('0x1b')][_0x15eff2['uniqueid']][_0x9ee2('0x42')])){logger['info'](_0x9ee2('0x43'),_0x15eff2[_0x9ee2('0x31')]);this['startAcw'](_0x15eff2[_0x9ee2('0x31')]);}else if(this[_0x9ee2('0x1b')][_0x15eff2[_0x9ee2('0x44')]]&&_['isUndefined'](this[_0x9ee2('0x1b')][_0x15eff2['linkedid']]['attended'])){logger['info'](_0x9ee2('0x45'),_0x15eff2[_0x9ee2('0x44')]);this['startAcw'](_0x15eff2[_0x9ee2('0x44')]);}}catch(_0x2f83f2){logger[_0x9ee2('0x34')](_0x9ee2('0x46'),_0x2f83f2['message']);}};Acw[_0x9ee2('0x19')][_0x9ee2('0x47')]=function(_0x2b72e7){try{if(this['channels'][_0x2b72e7[_0x9ee2('0x31')]]&&this[_0x9ee2('0x1b')][_0x2b72e7['uniqueid']][_0x9ee2('0x42')]){logger[_0x9ee2('0x27')](_0x9ee2('0x48'),_0x2b72e7['uniqueid']);this[_0x9ee2('0x1a')](_0x2b72e7[_0x9ee2('0x31')]);}else if(this[_0x9ee2('0x1b')][_0x2b72e7[_0x9ee2('0x44')]]&&this['channels'][_0x2b72e7[_0x9ee2('0x44')]]['attended']){logger['info']('[%s][HANGUPATTENDEDTRANSFER:LINKEDID]',_0x2b72e7['linkedid']);this['startAcw'](_0x2b72e7[_0x9ee2('0x44')]);}}catch(_0x151eb0){logger[_0x9ee2('0x34')]('[ACW][syncHangup]\x20%s',_0x151eb0[_0x9ee2('0x37')]);}};Acw[_0x9ee2('0x19')][_0x9ee2('0x12')]=function(_0x3818f0){try{if(!_[_0x9ee2('0x49')](this['channels'][_0x3818f0[_0x9ee2('0x4a')]])){this[_0x9ee2('0x1a')](_0x3818f0['transfereeuniqueid']);if(this[_0x9ee2('0x1b')][_0x3818f0['secondtransfereruniqueid']]){this[_0x9ee2('0x1b')][_0x3818f0['secondtransfereruniqueid']][_0x9ee2('0x42')]=!![];this[_0x9ee2('0x1b')][_0x3818f0[_0x9ee2('0x4b')]]=this[_0x9ee2('0x1b')][_0x3818f0[_0x9ee2('0x4c')]];delete this[_0x9ee2('0x1b')][_0x3818f0[_0x9ee2('0x4c')]];}}else if(!_[_0x9ee2('0x49')](this[_0x9ee2('0x1b')][_0x3818f0[_0x9ee2('0x4b')]])){this[_0x9ee2('0x1a')](_0x3818f0['transfertargetuniqueid']);if(this[_0x9ee2('0x1b')][_0x3818f0[_0x9ee2('0x4d')]]){this[_0x9ee2('0x1b')][_0x3818f0['origtransfereruniqueid']][_0x9ee2('0x42')]=!![];this[_0x9ee2('0x1b')][_0x3818f0[_0x9ee2('0x4a')]]=this[_0x9ee2('0x1b')][_0x3818f0['origtransfereruniqueid']];delete this[_0x9ee2('0x1b')][_0x3818f0[_0x9ee2('0x4d')]];}}}catch(_0x32b0e2){logger[_0x9ee2('0x34')]('[ACW][syncAttendedTransfer]\x20%s',_0x32b0e2[_0x9ee2('0x37')]);}};Acw[_0x9ee2('0x19')][_0x9ee2('0x13')]=function(_0x6fef4e){try{if(this[_0x9ee2('0x1b')][_0x6fef4e[_0x9ee2('0x4e')]]){logger['info'](_0x9ee2('0x4f'),JSON[_0x9ee2('0x3d')](_0x6fef4e[_0x9ee2('0x4e')]));this[_0x9ee2('0x1a')](_0x6fef4e[_0x9ee2('0x4e')]);}else if(this['channels'][_0x6fef4e[_0x9ee2('0x50')]]){logger[_0x9ee2('0x27')](_0x9ee2('0x51'),JSON[_0x9ee2('0x3d')](_0x6fef4e[_0x9ee2('0x50')]));this[_0x9ee2('0x1a')](_0x6fef4e['transfererlinkedid']);}}catch(_0x1c0b30){logger[_0x9ee2('0x34')](_0x9ee2('0x52'),_0x1c0b30['message']);}};Acw['prototype'][_0x9ee2('0x10')]=function(_0x39461a){try{if(this[_0x9ee2('0x7')][_0x39461a[_0x9ee2('0x1d')]]&&this[_0x9ee2('0x7')][_0x39461a[_0x9ee2('0x1d')]]['autopause']===_0x9ee2('0x53')){if(this['agents'][_0x39461a[_0x9ee2('0x1c')]]){logger[_0x9ee2('0x27')](_0x9ee2('0x54'),_0x39461a[_0x9ee2('0x31')],_0x39461a[_0x9ee2('0x1c')],_0x39461a[_0x9ee2('0x1d')]);return RpcUser['savePause'](this[_0x9ee2('0x8')][_0x39461a[_0x9ee2('0x1c')]],_0x9ee2('0x55'),_0x39461a[_0x9ee2('0x31')]);}}}catch(_0x1b5cca){logger['error'](_0x9ee2('0x56'),_0x1b5cca['message']);}};module[_0x9ee2('0x57')]=Acw;