7b6356de15ff1e08242a3f3b53d00baed410babe
[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 _0x9bfd=['finally','[ACW][START]\x20%s','message','[%s][TIMER][STOP][AGENT:%s]','saveUnpause','error','[ACW][STOP]\x20Interface\x20%s\x20doesn\x27t\x20have\x20timer','[ACW][TIMERS]','stringify','[ACW][STOP]\x20%s','acw','[ACW][syncAgentConnectPreview]\x20%s','syncHangupRequest','attended','[%s][HANGUP:UNIQUEID]','isUndefined','linkedid','[ACW][syncHangupRequest]\x20%s','[%s][HANGUPATTENDEDTRANSFER:UNIQUEID]','[%s][HANGUPATTENDEDTRANSFER:LINKEDID]','[ACW][syncHangup]\x20%s','transfereeuniqueid','secondtransfereruniqueid','transfertargetuniqueid','isNil','origtransfereruniqueid','[ACW][syncAttendedTransfer]\x20%s','transfereruniqueid','[%s][BLINDTRANSFER:UNIQUEID]','transfererlinkedid','[ACW][syncBlindTransfer]\x20%s','autopause','all','[%s][AUTOPAUSE][AGENT:%s][QUEUE:%]','Auto-Pause','[ACW][syncAgentRingNoAnswer]\x20%s','exports','lodash','../ami','../../../config/logger','../rpc/user','../rpc/voiceAgentReport','agents','timers','channels','agentconnect','syncAgentConnect','bind','hanguprequest','hangup','syncHangup','agentringnoanswer','syncAgentRingNoAnswer','attendedtransfer','syncAttendedTransfer','syncBlindTransfer','custom:agentConnectPreview','syncAgentConnectPreview','milliseconds','diff','prototype','startAcw','interface','queue','voiceQueues','ACW','mandatoryDisposition','mandatoryDispositionPause','name','then','getAgent','info','[%s][START][AGENT:%s][QUEUE:%s]','destlinkedid','savePause','[%s][TIMER:%s][AGENT:%s][QUEUE:%s]','acwTimeout','stopAcw','lastPauseAt','YYYY-MM-DD\x20HH:mm:ss','uniqueid','updateAcw','timer','update','[%s][UPDATE][ACWTIME:%s]','catch','[%s][UPDATE][ERRORS:%s]'];(function(_0x20a584,_0xe384a5){var _0x4b41a8=function(_0x2127c6){while(--_0x2127c6){_0x20a584['push'](_0x20a584['shift']());}};_0x4b41a8(++_0xe384a5);}(_0x9bfd,0x181));var _0xd9bf=function(_0xca95cd,_0x143af0){_0xca95cd=_0xca95cd-0x0;var _0x511417=_0x9bfd[_0xca95cd];return _0x511417;};'use strict';var util=require('util');var _=require(_0xd9bf('0x0'));var moment=require('moment');var ami=require(_0xd9bf('0x1'));var logger=require(_0xd9bf('0x2'))('acw');var RpcUser=require(_0xd9bf('0x3'));var RpcVoiceAgentReport=require(_0xd9bf('0x4'));function Acw(_0x1ed35e){this['voiceQueues']=_0x1ed35e['voiceQueues'];this['agents']=_0x1ed35e[_0xd9bf('0x5')];this[_0xd9bf('0x6')]=_0x1ed35e['timers'];this[_0xd9bf('0x7')]={};ami['on'](_0xd9bf('0x8'),this[_0xd9bf('0x9')][_0xd9bf('0xa')](this));ami['on'](_0xd9bf('0xb'),this['syncHangupRequest'][_0xd9bf('0xa')](this));ami['on'](_0xd9bf('0xc'),this[_0xd9bf('0xd')][_0xd9bf('0xa')](this));ami['on'](_0xd9bf('0xe'),this[_0xd9bf('0xf')][_0xd9bf('0xa')](this));ami['on'](_0xd9bf('0x10'),this[_0xd9bf('0x11')]['bind'](this));ami['on']('blindtransfer',this[_0xd9bf('0x12')][_0xd9bf('0xa')](this));ami['on'](_0xd9bf('0x13'),this[_0xd9bf('0x14')]['bind'](this));}function getDiff(_0x17ad83){var _0x1702ec=moment()[_0xd9bf('0x15')](0x0);var _0x3f7daa=moment(_0x17ad83)[_0xd9bf('0x15')](0x0);return _0x1702ec[_0xd9bf('0x16')](_0x3f7daa,'seconds');}Acw[_0xd9bf('0x17')][_0xd9bf('0x18')]=function(_0x5192d0){try{var _0x2560d8=this;var _0xb8f907=this[_0xd9bf('0x7')][_0x5192d0][_0xd9bf('0x19')];var _0x4234f2=this[_0xd9bf('0x7')][_0x5192d0][_0xd9bf('0x1a')];var _0x57332a=this[_0xd9bf('0x1b')][_0x4234f2];var _0x758c39=![];var _0x529be1=_0xd9bf('0x1c');if(_0x57332a[_0xd9bf('0x1d')]){if(_0x57332a[_0xd9bf('0x1e')]['name']){_0x758c39=!![];_0x529be1=_0x57332a['mandatoryDispositionPause'][_0xd9bf('0x1f')];}}ami['Action']({'action':'QueuePause','interface':_0xb8f907,'paused':!![],'reason':_0x529be1})[_0xd9bf('0x20')](function(_0x46a07d){if(_0x2560d8[_0xd9bf('0x5')][_0xb8f907]){return RpcUser[_0xd9bf('0x21')](_0x2560d8[_0xd9bf('0x5')][_0xb8f907]['id'])[_0xd9bf('0x20')](function(_0x8ab322){if(_0x8ab322&&!_0x8ab322['voicePause']){logger[_0xd9bf('0x22')](_0xd9bf('0x23'),_0x5192d0,_0xb8f907,_0x4234f2);var _0x1cf73f=_0x2560d8['channels'][_0x5192d0]['attended']&&_0x2560d8[_0xd9bf('0x7')][_0x5192d0][_0xd9bf('0x24')]?_0x2560d8['channels'][_0x5192d0][_0xd9bf('0x24')]:_0x5192d0;return RpcUser[_0xd9bf('0x25')](_0x2560d8[_0xd9bf('0x5')][_0xb8f907],_0x529be1,_0x1cf73f)['then'](function(_0x51e215){if(!_0x758c39){_0x2560d8[_0xd9bf('0x6')][_0xb8f907]={};logger['info'](_0xd9bf('0x26'),_0x5192d0,_0x2560d8[_0xd9bf('0x1b')][_0x4234f2][_0xd9bf('0x27')],_0xb8f907,_0x4234f2);_0x2560d8[_0xd9bf('0x6')][_0xb8f907]['timer']=setTimeout(_0x2560d8[_0xd9bf('0x28')]['bind'](_0x2560d8,_0xb8f907),_0x2560d8[_0xd9bf('0x1b')][_0x4234f2][_0xd9bf('0x27')]*0x3e8);_0x2560d8[_0xd9bf('0x6')][_0xb8f907][_0xd9bf('0x29')]=moment()['format'](_0xd9bf('0x2a'));_0x2560d8[_0xd9bf('0x6')][_0xb8f907][_0xd9bf('0x2b')]=_0x5192d0;_0x2560d8[_0xd9bf('0x6')][_0xb8f907][_0xd9bf('0x1a')]=_0x4234f2;_0x2560d8[_0xd9bf('0x6')][_0xb8f907][_0xd9bf('0x2c')]=function(){var _0x41f2d3=getDiff(_0x2560d8[_0xd9bf('0x6')][_0xb8f907][_0xd9bf('0x29')]);clearTimeout(_0x2560d8[_0xd9bf('0x6')][_0xb8f907][_0xd9bf('0x2d')]);_0x2560d8[_0xd9bf('0x6')][_0xb8f907][_0xd9bf('0x2d')]=![];RpcVoiceAgentReport[_0xd9bf('0x2e')]({'acwtime':_0x41f2d3},_0x2560d8['timers'][_0xb8f907][_0xd9bf('0x2b')],_0xb8f907)['then'](function(_0x171e24){logger[_0xd9bf('0x22')](_0xd9bf('0x2f'),_0x5192d0,_0x41f2d3,_0x171e24);})[_0xd9bf('0x30')](function(_0x3dff03){logger['error'](_0xd9bf('0x31'),_0x5192d0,_0x3dff03);});delete _0x2560d8[_0xd9bf('0x6')][_0xb8f907];};}});}else{logger[_0xd9bf('0x22')]('[%s][INPAUSE][AGENT:%s][QUEUE:%s]',_0x5192d0,_0xb8f907,_0x4234f2);}});}})[_0xd9bf('0x30')](function(_0x2c975e){logger['error'](_0xd9bf('0x26'),_0x5192d0,_0x2560d8[_0xd9bf('0x1b')][_0x4234f2]['acwTimeout'],_0xb8f907,_0x4234f2);})[_0xd9bf('0x32')](function(){delete _0x2560d8[_0xd9bf('0x7')][_0x5192d0];});}catch(_0x524a98){logger['error'](_0xd9bf('0x33'),_0x524a98[_0xd9bf('0x34')]);}};Acw[_0xd9bf('0x17')][_0xd9bf('0x28')]=function(_0x425602){try{var _0x315b81=this;if(_0x315b81[_0xd9bf('0x6')][_0x425602]){_0x315b81[_0xd9bf('0x6')][_0x425602][_0xd9bf('0x2d')]=![];var _0x10106b=_0x315b81[_0xd9bf('0x6')][_0x425602]['uniqueid'];var _0x52e16c=_0x315b81[_0xd9bf('0x6')][_0x425602][_0xd9bf('0x1a')];var _0xd8d9c5=_0x315b81[_0xd9bf('0x1b')][_0x52e16c][_0xd9bf('0x27')];logger['info'](_0xd9bf('0x35'),_0x10106b,_0x425602);RpcUser[_0xd9bf('0x36')](this['agents'][_0x425602]);RpcVoiceAgentReport[_0xd9bf('0x2e')]({'acwtime':_0xd8d9c5,'agentacw':!![]},_0x10106b,_0x425602)[_0xd9bf('0x20')](function(_0x5b203b){logger['info'](_0xd9bf('0x2f'),_0x10106b,_0xd8d9c5,_0x5b203b);})[_0xd9bf('0x30')](function(_0x293e3b){logger['error']('[%s][UPDATE][ERRORS:%s]',_0x10106b,_0x293e3b);});}else{logger[_0xd9bf('0x37')](_0xd9bf('0x38'),_0x425602);if(_0x315b81[_0xd9bf('0x6')]){logger[_0xd9bf('0x22')](_0xd9bf('0x39'),JSON[_0xd9bf('0x3a')](_0x315b81[_0xd9bf('0x6')]));}}}catch(_0x27482b){logger[_0xd9bf('0x37')](_0xd9bf('0x3b'),_0x27482b['message']);}};Acw['prototype'][_0xd9bf('0x9')]=function(_0x364708){try{if(this['voiceQueues'][_0x364708[_0xd9bf('0x1a')]]&&(this[_0xd9bf('0x1b')][_0x364708[_0xd9bf('0x1a')]][_0xd9bf('0x3c')]||this[_0xd9bf('0x1b')][_0x364708[_0xd9bf('0x1a')]][_0xd9bf('0x1d')])){if(this['agents'][_0x364708[_0xd9bf('0x19')]]){this['channels'][_0x364708[_0xd9bf('0x2b')]]={'queue':_0x364708[_0xd9bf('0x1a')],'interface':_0x364708['interface'],'destlinkedid':_0x364708['destlinkedid']};}}}catch(_0x24906e){logger[_0xd9bf('0x37')]('[ACW][syncAgentConnect]\x20%s',_0x24906e['message']);}};Acw[_0xd9bf('0x17')]['syncAgentConnectPreview']=function(_0x5d3fbb){try{if(this['voiceQueues'][_0x5d3fbb[_0xd9bf('0x1a')]]&&(this[_0xd9bf('0x1b')][_0x5d3fbb[_0xd9bf('0x1a')]]['acw']||this[_0xd9bf('0x1b')][_0x5d3fbb['queue']][_0xd9bf('0x1d')])){if(this[_0xd9bf('0x5')][_0x5d3fbb[_0xd9bf('0x19')]]){this['channels'][_0x5d3fbb[_0xd9bf('0x2b')]]={'queue':_0x5d3fbb[_0xd9bf('0x1a')],'interface':_0x5d3fbb['interface']};}}}catch(_0x295681){logger[_0xd9bf('0x37')](_0xd9bf('0x3d'),_0x295681[_0xd9bf('0x34')]);}};Acw['prototype'][_0xd9bf('0x3e')]=function(_0x480fe1){try{if(this[_0xd9bf('0x7')][_0x480fe1[_0xd9bf('0x2b')]]&&_['isUndefined'](this[_0xd9bf('0x7')][_0x480fe1['uniqueid']][_0xd9bf('0x3f')])){logger[_0xd9bf('0x22')](_0xd9bf('0x40'),_0x480fe1[_0xd9bf('0x2b')]);this[_0xd9bf('0x18')](_0x480fe1[_0xd9bf('0x2b')]);}else if(this[_0xd9bf('0x7')][_0x480fe1['linkedid']]&&_[_0xd9bf('0x41')](this[_0xd9bf('0x7')][_0x480fe1['linkedid']]['attended'])){logger[_0xd9bf('0x22')]('[%s][HANGUP:LINKEDID]',_0x480fe1[_0xd9bf('0x42')]);this[_0xd9bf('0x18')](_0x480fe1['linkedid']);}}catch(_0x3bdbae){logger[_0xd9bf('0x37')](_0xd9bf('0x43'),_0x3bdbae['message']);}};Acw['prototype'][_0xd9bf('0xd')]=function(_0x16e2c1){try{if(this[_0xd9bf('0x7')][_0x16e2c1['uniqueid']]&&this[_0xd9bf('0x7')][_0x16e2c1[_0xd9bf('0x2b')]][_0xd9bf('0x3f')]){logger[_0xd9bf('0x22')](_0xd9bf('0x44'),_0x16e2c1[_0xd9bf('0x2b')]);this[_0xd9bf('0x18')](_0x16e2c1['uniqueid']);}else if(this[_0xd9bf('0x7')][_0x16e2c1[_0xd9bf('0x42')]]&&this[_0xd9bf('0x7')][_0x16e2c1[_0xd9bf('0x42')]][_0xd9bf('0x3f')]){logger[_0xd9bf('0x22')](_0xd9bf('0x45'),_0x16e2c1[_0xd9bf('0x42')]);this[_0xd9bf('0x18')](_0x16e2c1[_0xd9bf('0x42')]);}}catch(_0x222eb9){logger['error'](_0xd9bf('0x46'),_0x222eb9['message']);}};Acw[_0xd9bf('0x17')][_0xd9bf('0x11')]=function(_0xcf475e){try{if(!_['isNil'](this['channels'][_0xcf475e[_0xd9bf('0x47')]])){this[_0xd9bf('0x18')](_0xcf475e[_0xd9bf('0x47')]);if(this[_0xd9bf('0x7')][_0xcf475e['secondtransfereruniqueid']]){this[_0xd9bf('0x7')][_0xcf475e[_0xd9bf('0x48')]][_0xd9bf('0x3f')]=!![];this[_0xd9bf('0x7')][_0xcf475e[_0xd9bf('0x49')]]=this[_0xd9bf('0x7')][_0xcf475e[_0xd9bf('0x48')]];delete this[_0xd9bf('0x7')][_0xcf475e['secondtransfereruniqueid']];}}else if(!_[_0xd9bf('0x4a')](this[_0xd9bf('0x7')][_0xcf475e[_0xd9bf('0x49')]])){this[_0xd9bf('0x18')](_0xcf475e[_0xd9bf('0x49')]);if(this['channels'][_0xcf475e[_0xd9bf('0x4b')]]){this[_0xd9bf('0x7')][_0xcf475e[_0xd9bf('0x4b')]]['attended']=!![];this[_0xd9bf('0x7')][_0xcf475e['transfereeuniqueid']]=this[_0xd9bf('0x7')][_0xcf475e['origtransfereruniqueid']];delete this['channels'][_0xcf475e[_0xd9bf('0x4b')]];}}}catch(_0x9c3192){logger[_0xd9bf('0x37')](_0xd9bf('0x4c'),_0x9c3192['message']);}};Acw['prototype']['syncBlindTransfer']=function(_0x2d906c){try{if(this['channels'][_0x2d906c[_0xd9bf('0x4d')]]){logger['info'](_0xd9bf('0x4e'),JSON[_0xd9bf('0x3a')](_0x2d906c['transfereruniqueid']));this[_0xd9bf('0x18')](_0x2d906c[_0xd9bf('0x4d')]);}else if(this[_0xd9bf('0x7')][_0x2d906c[_0xd9bf('0x4f')]]){logger['info']('[%s][BLINDTRANSFER:LINKEDID]',JSON[_0xd9bf('0x3a')](_0x2d906c[_0xd9bf('0x4f')]));this['startAcw'](_0x2d906c[_0xd9bf('0x4f')]);}}catch(_0x35b21d){logger['error'](_0xd9bf('0x50'),_0x35b21d['message']);}};Acw[_0xd9bf('0x17')][_0xd9bf('0xf')]=function(_0x27a451){try{if(this[_0xd9bf('0x1b')][_0x27a451[_0xd9bf('0x1a')]]&&this[_0xd9bf('0x1b')][_0x27a451[_0xd9bf('0x1a')]][_0xd9bf('0x51')]===_0xd9bf('0x52')){if(this[_0xd9bf('0x5')][_0x27a451['interface']]){logger['info'](_0xd9bf('0x53'),_0x27a451[_0xd9bf('0x2b')],_0x27a451[_0xd9bf('0x19')],_0x27a451['queue']);return RpcUser[_0xd9bf('0x25')](this[_0xd9bf('0x5')][_0x27a451[_0xd9bf('0x19')]],_0xd9bf('0x54'),_0x27a451[_0xd9bf('0x2b')]);}}}catch(_0x40e50e){logger[_0xd9bf('0x37')](_0xd9bf('0x55'),_0x40e50e[_0xd9bf('0x34')]);}};module[_0xd9bf('0x56')]=Acw;