Built motion from commit 9d1906d1.|2.5.40
[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 _0xd450=['[%s][HANGUP:LINKEDID]','[ACW][syncHangupRequest]\x20%s','[%s][HANGUPATTENDEDTRANSFER:UNIQUEID]','[ACW][syncHangup]\x20%s','syncAttendedTransfer','isNil','transfereeuniqueid','secondtransfereruniqueid','transfertargetuniqueid','origtransfereruniqueid','[ACW][syncAttendedTransfer]\x20%s','syncBlindTransfer','[%s][BLINDTRANSFER:UNIQUEID]','transfereruniqueid','[%s][BLINDTRANSFER:LINKEDID]','stringify','transfererlinkedid','[ACW][syncBlindTransfer]\x20%s','autopause','all','[%s][AUTOPAUSE][AGENT:%s][QUEUE:%]','[ACW][syncAgentRingNoAnswer]\x20%s','lodash','moment','../ami','../../../config/logger','acw','../rpc/voiceAgentReport','voiceQueues','agents','timers','channels','agentconnect','syncAgentConnect','hanguprequest','syncHangupRequest','hangup','syncHangup','bind','agentringnoanswer','syncAgentRingNoAnswer','attendedtransfer','blindtransfer','syncAgentConnectPreview','milliseconds','diff','seconds','prototype','interface','ACW','mandatoryDisposition','mandatoryDispositionPause','name','QueuePause','then','voicePause','info','attended','destlinkedid','stopAcw','acwTimeout','lastPauseAt','YYYY-MM-DD\x20HH:mm:ss','uniqueid','queue','updateAcw','timer','catch','[%s][UPDATE][ERRORS:%s]','error','finally','[ACW][START]\x20%s','message','saveUnpause','[ACW][STOP]\x20Interface\x20%s\x20doesn\x27t\x20have\x20timer','[ACW][TIMERS]','[ACW][syncAgentConnect]\x20%s','[%s][HANGUP:UNIQUEID]','startAcw','linkedid'];(function(_0x126558,_0x143c9a){var _0x1f6d14=function(_0x2b0eea){while(--_0x2b0eea){_0x126558['push'](_0x126558['shift']());}};_0x1f6d14(++_0x143c9a);}(_0xd450,0x1a6));var _0x0d45=function(_0x55d07d,_0x38964d){_0x55d07d=_0x55d07d-0x0;var _0x3ce6f3=_0xd450[_0x55d07d];return _0x3ce6f3;};'use strict';var util=require('util');var _=require(_0x0d45('0x0'));var moment=require(_0x0d45('0x1'));var ami=require(_0x0d45('0x2'));var logger=require(_0x0d45('0x3'))(_0x0d45('0x4'));var RpcUser=require('../rpc/user');var RpcVoiceAgentReport=require(_0x0d45('0x5'));function Acw(_0xc58289){this[_0x0d45('0x6')]=_0xc58289['voiceQueues'];this[_0x0d45('0x7')]=_0xc58289[_0x0d45('0x7')];this[_0x0d45('0x8')]=_0xc58289[_0x0d45('0x8')];this[_0x0d45('0x9')]={};ami['on'](_0x0d45('0xa'),this[_0x0d45('0xb')]['bind'](this));ami['on'](_0x0d45('0xc'),this[_0x0d45('0xd')]['bind'](this));ami['on'](_0x0d45('0xe'),this[_0x0d45('0xf')][_0x0d45('0x10')](this));ami['on'](_0x0d45('0x11'),this[_0x0d45('0x12')]['bind'](this));ami['on'](_0x0d45('0x13'),this['syncAttendedTransfer'][_0x0d45('0x10')](this));ami['on'](_0x0d45('0x14'),this['syncBlindTransfer']['bind'](this));ami['on']('custom:agentConnectPreview',this[_0x0d45('0x15')][_0x0d45('0x10')](this));}function getDiff(_0x197008){var _0x5c087e=moment()[_0x0d45('0x16')](0x0);var _0x3143d7=moment(_0x197008)['milliseconds'](0x0);return _0x5c087e[_0x0d45('0x17')](_0x3143d7,_0x0d45('0x18'));}Acw[_0x0d45('0x19')]['startAcw']=function(_0xefac1c){try{var _0x3c0782=this;var _0x4a8b19=this[_0x0d45('0x9')][_0xefac1c][_0x0d45('0x1a')];var _0x5c6ae1=this[_0x0d45('0x9')][_0xefac1c]['queue'];var _0x1eebd7=this[_0x0d45('0x6')][_0x5c6ae1];var _0x1b5866=![];var _0x499c01=_0x0d45('0x1b');if(_0x1eebd7[_0x0d45('0x1c')]){if(_0x1eebd7[_0x0d45('0x1d')][_0x0d45('0x1e')]){_0x1b5866=!![];_0x499c01=_0x1eebd7[_0x0d45('0x1d')]['name'];}}ami['Action']({'action':_0x0d45('0x1f'),'interface':_0x4a8b19,'paused':!![],'reason':_0x499c01})[_0x0d45('0x20')](function(_0x4fdfc0){if(_0x3c0782[_0x0d45('0x7')][_0x4a8b19]){return RpcUser['getAgent'](_0x3c0782[_0x0d45('0x7')][_0x4a8b19]['id'])[_0x0d45('0x20')](function(_0x90b1b5){if(_0x90b1b5&&!_0x90b1b5[_0x0d45('0x21')]){logger[_0x0d45('0x22')]('[%s][START][AGENT:%s][QUEUE:%s]',_0xefac1c,_0x4a8b19,_0x5c6ae1);var _0x1911d6=_0x3c0782['channels'][_0xefac1c][_0x0d45('0x23')]&&_0x3c0782[_0x0d45('0x9')][_0xefac1c][_0x0d45('0x24')]?_0x3c0782[_0x0d45('0x9')][_0xefac1c][_0x0d45('0x24')]:_0xefac1c;return RpcUser['savePause'](_0x3c0782['agents'][_0x4a8b19],_0x499c01,_0x1911d6)[_0x0d45('0x20')](function(_0x585f83){if(!_0x1b5866){_0x3c0782[_0x0d45('0x8')][_0x4a8b19]={};logger[_0x0d45('0x22')]('[%s][TIMER:%s][AGENT:%s][QUEUE:%s]',_0xefac1c,_0x3c0782[_0x0d45('0x6')][_0x5c6ae1]['acwTimeout'],_0x4a8b19,_0x5c6ae1);_0x3c0782[_0x0d45('0x8')][_0x4a8b19]['timer']=setTimeout(_0x3c0782[_0x0d45('0x25')]['bind'](_0x3c0782,_0x4a8b19),_0x3c0782['voiceQueues'][_0x5c6ae1][_0x0d45('0x26')]*0x3e8);_0x3c0782[_0x0d45('0x8')][_0x4a8b19][_0x0d45('0x27')]=moment()['format'](_0x0d45('0x28'));_0x3c0782['timers'][_0x4a8b19][_0x0d45('0x29')]=_0xefac1c;_0x3c0782[_0x0d45('0x8')][_0x4a8b19][_0x0d45('0x2a')]=_0x5c6ae1;_0x3c0782['timers'][_0x4a8b19][_0x0d45('0x2b')]=function(){var _0x281374=getDiff(_0x3c0782[_0x0d45('0x8')][_0x4a8b19]['lastPauseAt']);clearTimeout(_0x3c0782['timers'][_0x4a8b19][_0x0d45('0x2c')]);_0x3c0782['timers'][_0x4a8b19][_0x0d45('0x2c')]=![];RpcVoiceAgentReport['update']({'acwtime':_0x281374},_0x3c0782[_0x0d45('0x8')][_0x4a8b19][_0x0d45('0x29')],_0x4a8b19)[_0x0d45('0x20')](function(_0x42d08f){logger['info']('[%s][UPDATE][ACWTIME:%s]',_0xefac1c,_0x281374,_0x42d08f);})[_0x0d45('0x2d')](function(_0x51fd30){logger['error'](_0x0d45('0x2e'),_0xefac1c,_0x51fd30);});delete _0x3c0782[_0x0d45('0x8')][_0x4a8b19];};}});}else{logger[_0x0d45('0x22')]('[%s][INPAUSE][AGENT:%s][QUEUE:%s]',_0xefac1c,_0x4a8b19,_0x5c6ae1);}});}})[_0x0d45('0x2d')](function(_0x3f801b){logger[_0x0d45('0x2f')]('[%s][TIMER:%s][AGENT:%s][QUEUE:%s]',_0xefac1c,_0x3c0782[_0x0d45('0x6')][_0x5c6ae1]['acwTimeout'],_0x4a8b19,_0x5c6ae1);})[_0x0d45('0x30')](function(){delete _0x3c0782[_0x0d45('0x9')][_0xefac1c];});}catch(_0x2b1674){logger[_0x0d45('0x2f')](_0x0d45('0x31'),_0x2b1674[_0x0d45('0x32')]);}};Acw['prototype']['stopAcw']=function(_0x4c2b23){try{var _0x16dceb=this;if(_0x16dceb['timers'][_0x4c2b23]){_0x16dceb[_0x0d45('0x8')][_0x4c2b23]['timer']=![];var _0x6a615a=_0x16dceb[_0x0d45('0x8')][_0x4c2b23][_0x0d45('0x29')];var _0x5b4459=_0x16dceb[_0x0d45('0x8')][_0x4c2b23][_0x0d45('0x2a')];var _0x22e175=_0x16dceb[_0x0d45('0x6')][_0x5b4459][_0x0d45('0x26')];logger['info']('[%s][TIMER][STOP][AGENT:%s]',_0x6a615a,_0x4c2b23);RpcUser[_0x0d45('0x33')](this['agents'][_0x4c2b23]);RpcVoiceAgentReport['update']({'acwtime':_0x22e175,'agentacw':!![]},_0x6a615a,_0x4c2b23)[_0x0d45('0x20')](function(_0x30ddb5){logger['info']('[%s][UPDATE][ACWTIME:%s]',_0x6a615a,_0x22e175,_0x30ddb5);})['catch'](function(_0x46212c){logger[_0x0d45('0x2f')]('[%s][UPDATE][ERRORS:%s]',_0x6a615a,_0x46212c);});}else{logger[_0x0d45('0x2f')](_0x0d45('0x34'),_0x4c2b23);if(_0x16dceb[_0x0d45('0x8')]){logger[_0x0d45('0x22')](_0x0d45('0x35'),JSON['stringify'](_0x16dceb[_0x0d45('0x8')]));}}}catch(_0xccb48b){logger[_0x0d45('0x2f')]('[ACW][STOP]\x20%s',_0xccb48b[_0x0d45('0x32')]);}};Acw[_0x0d45('0x19')][_0x0d45('0xb')]=function(_0x1393cd){try{if(this[_0x0d45('0x6')][_0x1393cd['queue']]&&(this[_0x0d45('0x6')][_0x1393cd[_0x0d45('0x2a')]]['acw']||this[_0x0d45('0x6')][_0x1393cd[_0x0d45('0x2a')]]['mandatoryDisposition'])){if(this[_0x0d45('0x7')][_0x1393cd[_0x0d45('0x1a')]]){this[_0x0d45('0x9')][_0x1393cd[_0x0d45('0x29')]]={'queue':_0x1393cd[_0x0d45('0x2a')],'interface':_0x1393cd['interface'],'destlinkedid':_0x1393cd[_0x0d45('0x24')]};}}}catch(_0x282d4f){logger['error'](_0x0d45('0x36'),_0x282d4f[_0x0d45('0x32')]);}};Acw[_0x0d45('0x19')]['syncAgentConnectPreview']=function(_0x33777e){try{if(this[_0x0d45('0x6')][_0x33777e['queue']]&&(this[_0x0d45('0x6')][_0x33777e[_0x0d45('0x2a')]]['acw']||this[_0x0d45('0x6')][_0x33777e[_0x0d45('0x2a')]]['mandatoryDisposition'])){if(this[_0x0d45('0x7')][_0x33777e[_0x0d45('0x1a')]]){this[_0x0d45('0x9')][_0x33777e[_0x0d45('0x29')]]={'queue':_0x33777e[_0x0d45('0x2a')],'interface':_0x33777e[_0x0d45('0x1a')]};}}}catch(_0x4b8fb1){logger[_0x0d45('0x2f')]('[ACW][syncAgentConnectPreview]\x20%s',_0x4b8fb1[_0x0d45('0x32')]);}};Acw[_0x0d45('0x19')][_0x0d45('0xd')]=function(_0x3b8046){try{if(this[_0x0d45('0x9')][_0x3b8046[_0x0d45('0x29')]]&&_['isUndefined'](this[_0x0d45('0x9')][_0x3b8046[_0x0d45('0x29')]][_0x0d45('0x23')])){logger['info'](_0x0d45('0x37'),_0x3b8046[_0x0d45('0x29')]);this[_0x0d45('0x38')](_0x3b8046[_0x0d45('0x29')]);}else if(this[_0x0d45('0x9')][_0x3b8046[_0x0d45('0x39')]]&&_['isUndefined'](this[_0x0d45('0x9')][_0x3b8046['linkedid']][_0x0d45('0x23')])){logger['info'](_0x0d45('0x3a'),_0x3b8046[_0x0d45('0x39')]);this['startAcw'](_0x3b8046[_0x0d45('0x39')]);}}catch(_0x248e40){logger[_0x0d45('0x2f')](_0x0d45('0x3b'),_0x248e40[_0x0d45('0x32')]);}};Acw[_0x0d45('0x19')][_0x0d45('0xf')]=function(_0x5afd56){try{if(this[_0x0d45('0x9')][_0x5afd56[_0x0d45('0x29')]]&&this[_0x0d45('0x9')][_0x5afd56[_0x0d45('0x29')]][_0x0d45('0x23')]){logger[_0x0d45('0x22')](_0x0d45('0x3c'),_0x5afd56[_0x0d45('0x29')]);this['startAcw'](_0x5afd56[_0x0d45('0x29')]);}else if(this[_0x0d45('0x9')][_0x5afd56[_0x0d45('0x39')]]&&this['channels'][_0x5afd56[_0x0d45('0x39')]]['attended']){logger[_0x0d45('0x22')]('[%s][HANGUPATTENDEDTRANSFER:LINKEDID]',_0x5afd56['linkedid']);this[_0x0d45('0x38')](_0x5afd56[_0x0d45('0x39')]);}}catch(_0x183929){logger[_0x0d45('0x2f')](_0x0d45('0x3d'),_0x183929['message']);}};Acw[_0x0d45('0x19')][_0x0d45('0x3e')]=function(_0x49f39c){try{if(!_[_0x0d45('0x3f')](this[_0x0d45('0x9')][_0x49f39c[_0x0d45('0x40')]])){this[_0x0d45('0x38')](_0x49f39c[_0x0d45('0x40')]);if(this[_0x0d45('0x9')][_0x49f39c[_0x0d45('0x41')]]){this['channels'][_0x49f39c[_0x0d45('0x41')]][_0x0d45('0x23')]=!![];this['channels'][_0x49f39c['transfertargetuniqueid']]=this[_0x0d45('0x9')][_0x49f39c[_0x0d45('0x41')]];delete this[_0x0d45('0x9')][_0x49f39c['secondtransfereruniqueid']];}}else if(!_[_0x0d45('0x3f')](this[_0x0d45('0x9')][_0x49f39c[_0x0d45('0x42')]])){this[_0x0d45('0x38')](_0x49f39c[_0x0d45('0x42')]);if(this[_0x0d45('0x9')][_0x49f39c['origtransfereruniqueid']]){this[_0x0d45('0x9')][_0x49f39c[_0x0d45('0x43')]]['attended']=!![];this[_0x0d45('0x9')][_0x49f39c['transfereeuniqueid']]=this['channels'][_0x49f39c['origtransfereruniqueid']];delete this['channels'][_0x49f39c[_0x0d45('0x43')]];}}}catch(_0x2c9128){logger['error'](_0x0d45('0x44'),_0x2c9128[_0x0d45('0x32')]);}};Acw['prototype'][_0x0d45('0x45')]=function(_0x1966ab){try{if(this[_0x0d45('0x9')][_0x1966ab['transfereruniqueid']]){logger[_0x0d45('0x22')](_0x0d45('0x46'),JSON['stringify'](_0x1966ab[_0x0d45('0x47')]));this['startAcw'](_0x1966ab['transfereruniqueid']);}else if(this[_0x0d45('0x9')][_0x1966ab['transfererlinkedid']]){logger['info'](_0x0d45('0x48'),JSON[_0x0d45('0x49')](_0x1966ab['transfererlinkedid']));this['startAcw'](_0x1966ab[_0x0d45('0x4a')]);}}catch(_0x287795){logger[_0x0d45('0x2f')](_0x0d45('0x4b'),_0x287795[_0x0d45('0x32')]);}};Acw[_0x0d45('0x19')]['syncAgentRingNoAnswer']=function(_0x21eb0f){try{if(this['voiceQueues'][_0x21eb0f['queue']]&&this[_0x0d45('0x6')][_0x21eb0f['queue']][_0x0d45('0x4c')]===_0x0d45('0x4d')){if(this[_0x0d45('0x7')][_0x21eb0f[_0x0d45('0x1a')]]){logger[_0x0d45('0x22')](_0x0d45('0x4e'),_0x21eb0f['uniqueid'],_0x21eb0f[_0x0d45('0x1a')],_0x21eb0f[_0x0d45('0x2a')]);return RpcUser['savePause'](this[_0x0d45('0x7')][_0x21eb0f[_0x0d45('0x1a')]],'Auto-Pause',_0x21eb0f[_0x0d45('0x29')]);}}}catch(_0x2a6ad0){logger[_0x0d45('0x2f')](_0x0d45('0x4f'),_0x2a6ad0[_0x0d45('0x32')]);}};module['exports']=Acw;