05f5d4a129cadf3e4c7c4b33155cd6544f408757
[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 _0x2262=['attended','destlinkedid','savePause','[%s][TIMER:%s][AGENT:%s][QUEUE:%s]','acwTimeout','timer','stopAcw','YYYY-MM-DD\x20HH:mm:ss','lastPauseAt','update','uniqueid','error','[%s][UPDATE][ERRORS:%s]','[%s][INPAUSE][AGENT:%s][QUEUE:%s]','finally','message','[%s][TIMER][STOP][AGENT:%s]','[%s][UPDATE][ACWTIME:%s]','catch','[ACW][STOP]\x20Interface\x20%s\x20doesn\x27t\x20have\x20timer','[ACW][TIMERS]','stringify','[ACW][syncAgentConnect]\x20%s','[ACW][syncAgentConnectPreview]\x20%s','isUndefined','[%s][HANGUP:UNIQUEID]','linkedid','[%s][HANGUP:LINKEDID]','[ACW][syncHangup]\x20%s','isNil','transfereeuniqueid','secondtransfereruniqueid','transfertargetuniqueid','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','exports','util','lodash','moment','../ami','../../../config/logger','acw','voiceQueues','agents','timers','channels','syncAgentConnect','bind','hanguprequest','syncHangupRequest','hangup','syncHangup','agentringnoanswer','syncAgentRingNoAnswer','attendedtransfer','syncAttendedTransfer','blindtransfer','syncBlindTransfer','syncAgentConnectPreview','seconds','prototype','startAcw','interface','queue','ACW','mandatoryDisposition','mandatoryDispositionPause','name','QueuePause','then','getAgent','voicePause','info','[%s][START][AGENT:%s][QUEUE:%s]'];(function(_0x22bbdf,_0x572a63){var _0x235359=function(_0x18c90e){while(--_0x18c90e){_0x22bbdf['push'](_0x22bbdf['shift']());}};_0x235359(++_0x572a63);}(_0x2262,0x80));var _0x2226=function(_0x20a584,_0xe384a5){_0x20a584=_0x20a584-0x0;var _0x4b41a8=_0x2262[_0x20a584];return _0x4b41a8;};'use strict';var util=require(_0x2226('0x0'));var _=require(_0x2226('0x1'));var moment=require(_0x2226('0x2'));var ami=require(_0x2226('0x3'));var logger=require(_0x2226('0x4'))(_0x2226('0x5'));var RpcUser=require('../rpc/user');var RpcVoiceAgentReport=require('../rpc/voiceAgentReport');function Acw(_0x11d020){this[_0x2226('0x6')]=_0x11d020['voiceQueues'];this['agents']=_0x11d020[_0x2226('0x7')];this[_0x2226('0x8')]=_0x11d020[_0x2226('0x8')];this[_0x2226('0x9')]={};ami['on']('agentconnect',this[_0x2226('0xa')][_0x2226('0xb')](this));ami['on'](_0x2226('0xc'),this[_0x2226('0xd')][_0x2226('0xb')](this));ami['on'](_0x2226('0xe'),this[_0x2226('0xf')][_0x2226('0xb')](this));ami['on'](_0x2226('0x10'),this[_0x2226('0x11')][_0x2226('0xb')](this));ami['on'](_0x2226('0x12'),this[_0x2226('0x13')][_0x2226('0xb')](this));ami['on'](_0x2226('0x14'),this[_0x2226('0x15')][_0x2226('0xb')](this));ami['on']('custom:agentConnectPreview',this[_0x2226('0x16')][_0x2226('0xb')](this));}function getDiff(_0x27a1bc){var _0x31c64c=moment()['milliseconds'](0x0);var _0x390211=moment(_0x27a1bc)['milliseconds'](0x0);return _0x31c64c['diff'](_0x390211,_0x2226('0x17'));}Acw[_0x2226('0x18')][_0x2226('0x19')]=function(_0x283c93){try{var _0x116db3=this;var _0x3a695b=this['channels'][_0x283c93][_0x2226('0x1a')];var _0x59637b=this[_0x2226('0x9')][_0x283c93][_0x2226('0x1b')];var _0x456d28=this[_0x2226('0x6')][_0x59637b];var _0x444dc1=![];var _0x20cc6e=_0x2226('0x1c');if(_0x456d28[_0x2226('0x1d')]){if(_0x456d28[_0x2226('0x1e')][_0x2226('0x1f')]){_0x444dc1=!![];_0x20cc6e=_0x456d28['mandatoryDispositionPause'][_0x2226('0x1f')];}}ami['Action']({'action':_0x2226('0x20'),'interface':_0x3a695b,'paused':!![],'reason':_0x20cc6e})[_0x2226('0x21')](function(_0x39b335){if(_0x116db3[_0x2226('0x7')][_0x3a695b]){return RpcUser[_0x2226('0x22')](_0x116db3[_0x2226('0x7')][_0x3a695b]['id'])[_0x2226('0x21')](function(_0x2a599b){if(_0x2a599b&&!_0x2a599b[_0x2226('0x23')]){logger[_0x2226('0x24')](_0x2226('0x25'),_0x283c93,_0x3a695b,_0x59637b);var _0x424ed4=_0x116db3[_0x2226('0x9')][_0x283c93][_0x2226('0x26')]&&_0x116db3['channels'][_0x283c93][_0x2226('0x27')]?_0x116db3[_0x2226('0x9')][_0x283c93]['destlinkedid']:_0x283c93;return RpcUser[_0x2226('0x28')](_0x116db3[_0x2226('0x7')][_0x3a695b],_0x20cc6e,_0x424ed4)['then'](function(_0x3478ae){if(!_0x444dc1){_0x116db3[_0x2226('0x8')][_0x3a695b]={};logger[_0x2226('0x24')](_0x2226('0x29'),_0x283c93,_0x116db3[_0x2226('0x6')][_0x59637b][_0x2226('0x2a')],_0x3a695b,_0x59637b);_0x116db3[_0x2226('0x8')][_0x3a695b][_0x2226('0x2b')]=setTimeout(_0x116db3[_0x2226('0x2c')][_0x2226('0xb')](_0x116db3,_0x3a695b),_0x116db3[_0x2226('0x6')][_0x59637b][_0x2226('0x2a')]*0x3e8);_0x116db3[_0x2226('0x8')][_0x3a695b]['lastPauseAt']=moment()['format'](_0x2226('0x2d'));_0x116db3['timers'][_0x3a695b]['uniqueid']=_0x283c93;_0x116db3[_0x2226('0x8')][_0x3a695b]['queue']=_0x59637b;_0x116db3[_0x2226('0x8')][_0x3a695b]['updateAcw']=function(){var _0x2970ef=getDiff(_0x116db3[_0x2226('0x8')][_0x3a695b][_0x2226('0x2e')]);clearTimeout(_0x116db3[_0x2226('0x8')][_0x3a695b][_0x2226('0x2b')]);_0x116db3[_0x2226('0x8')][_0x3a695b][_0x2226('0x2b')]=![];RpcVoiceAgentReport[_0x2226('0x2f')]({'acwtime':_0x2970ef},_0x116db3[_0x2226('0x8')][_0x3a695b][_0x2226('0x30')],_0x3a695b)['then'](function(_0x2188ea){logger[_0x2226('0x24')]('[%s][UPDATE][ACWTIME:%s]',_0x283c93,_0x2970ef,_0x2188ea);})['catch'](function(_0x1968c6){logger[_0x2226('0x31')](_0x2226('0x32'),_0x283c93,_0x1968c6);});delete _0x116db3[_0x2226('0x8')][_0x3a695b];};}});}else{logger['info'](_0x2226('0x33'),_0x283c93,_0x3a695b,_0x59637b);}});}})['catch'](function(_0x4f2b65){logger[_0x2226('0x31')](_0x2226('0x29'),_0x283c93,_0x116db3[_0x2226('0x6')][_0x59637b][_0x2226('0x2a')],_0x3a695b,_0x59637b);})[_0x2226('0x34')](function(){delete _0x116db3[_0x2226('0x9')][_0x283c93];});}catch(_0x18e3a7){logger['error']('[ACW][START]\x20%s',_0x18e3a7[_0x2226('0x35')]);}};Acw[_0x2226('0x18')][_0x2226('0x2c')]=function(_0x5e14ad){try{var _0x383031=this;if(_0x383031[_0x2226('0x8')][_0x5e14ad]){_0x383031[_0x2226('0x8')][_0x5e14ad][_0x2226('0x2b')]=![];var _0x53ccb4=_0x383031[_0x2226('0x8')][_0x5e14ad]['uniqueid'];var _0x3789ae=_0x383031[_0x2226('0x8')][_0x5e14ad]['queue'];var _0x502926=_0x383031[_0x2226('0x6')][_0x3789ae][_0x2226('0x2a')];logger[_0x2226('0x24')](_0x2226('0x36'),_0x53ccb4,_0x5e14ad);RpcUser['saveUnpause'](this[_0x2226('0x7')][_0x5e14ad]);RpcVoiceAgentReport[_0x2226('0x2f')]({'acwtime':_0x502926,'agentacw':!![]},_0x53ccb4,_0x5e14ad)[_0x2226('0x21')](function(_0x2945df){logger[_0x2226('0x24')](_0x2226('0x37'),_0x53ccb4,_0x502926,_0x2945df);})[_0x2226('0x38')](function(_0x21650f){logger['error'](_0x2226('0x32'),_0x53ccb4,_0x21650f);});}else{logger[_0x2226('0x31')](_0x2226('0x39'),_0x5e14ad);if(_0x383031[_0x2226('0x8')]){logger[_0x2226('0x24')](_0x2226('0x3a'),JSON[_0x2226('0x3b')](_0x383031[_0x2226('0x8')]));}}}catch(_0x6a770d){logger[_0x2226('0x31')]('[ACW][STOP]\x20%s',_0x6a770d['message']);}};Acw[_0x2226('0x18')]['syncAgentConnect']=function(_0x5b71c5){try{if(this[_0x2226('0x6')][_0x5b71c5[_0x2226('0x1b')]]&&(this[_0x2226('0x6')][_0x5b71c5[_0x2226('0x1b')]][_0x2226('0x5')]||this[_0x2226('0x6')][_0x5b71c5[_0x2226('0x1b')]][_0x2226('0x1d')])){if(this[_0x2226('0x7')][_0x5b71c5[_0x2226('0x1a')]]){this[_0x2226('0x9')][_0x5b71c5[_0x2226('0x30')]]={'queue':_0x5b71c5[_0x2226('0x1b')],'interface':_0x5b71c5[_0x2226('0x1a')],'destlinkedid':_0x5b71c5[_0x2226('0x27')]};}}}catch(_0x56e1d3){logger[_0x2226('0x31')](_0x2226('0x3c'),_0x56e1d3[_0x2226('0x35')]);}};Acw[_0x2226('0x18')][_0x2226('0x16')]=function(_0x407e21){try{if(this[_0x2226('0x6')][_0x407e21[_0x2226('0x1b')]]&&(this[_0x2226('0x6')][_0x407e21[_0x2226('0x1b')]][_0x2226('0x5')]||this[_0x2226('0x6')][_0x407e21['queue']][_0x2226('0x1d')])){if(this[_0x2226('0x7')][_0x407e21[_0x2226('0x1a')]]){this[_0x2226('0x9')][_0x407e21['uniqueid']]={'queue':_0x407e21[_0x2226('0x1b')],'interface':_0x407e21['interface']};}}}catch(_0x83e98d){logger[_0x2226('0x31')](_0x2226('0x3d'),_0x83e98d[_0x2226('0x35')]);}};Acw[_0x2226('0x18')]['syncHangupRequest']=function(_0x2049ff){try{if(this['channels'][_0x2049ff['uniqueid']]&&_[_0x2226('0x3e')](this['channels'][_0x2049ff[_0x2226('0x30')]]['attended'])){logger[_0x2226('0x24')](_0x2226('0x3f'),_0x2049ff[_0x2226('0x30')]);this[_0x2226('0x19')](_0x2049ff[_0x2226('0x30')]);}else if(this['channels'][_0x2049ff[_0x2226('0x40')]]&&_[_0x2226('0x3e')](this[_0x2226('0x9')][_0x2049ff[_0x2226('0x40')]][_0x2226('0x26')])){logger[_0x2226('0x24')](_0x2226('0x41'),_0x2049ff['linkedid']);this[_0x2226('0x19')](_0x2049ff['linkedid']);}}catch(_0xbcdff8){logger[_0x2226('0x31')]('[ACW][syncHangupRequest]\x20%s',_0xbcdff8[_0x2226('0x35')]);}};Acw[_0x2226('0x18')][_0x2226('0xf')]=function(_0x3b4fdb){try{if(this['channels'][_0x3b4fdb['uniqueid']]&&this['channels'][_0x3b4fdb['uniqueid']][_0x2226('0x26')]){logger[_0x2226('0x24')]('[%s][HANGUPATTENDEDTRANSFER:UNIQUEID]',_0x3b4fdb[_0x2226('0x30')]);this['startAcw'](_0x3b4fdb['uniqueid']);}else if(this[_0x2226('0x9')][_0x3b4fdb[_0x2226('0x40')]]&&this['channels'][_0x3b4fdb[_0x2226('0x40')]]['attended']){logger['info']('[%s][HANGUPATTENDEDTRANSFER:LINKEDID]',_0x3b4fdb[_0x2226('0x40')]);this[_0x2226('0x19')](_0x3b4fdb[_0x2226('0x40')]);}}catch(_0xe40a3d){logger['error'](_0x2226('0x42'),_0xe40a3d[_0x2226('0x35')]);}};Acw[_0x2226('0x18')][_0x2226('0x13')]=function(_0x8415ed){try{if(!_[_0x2226('0x43')](this['channels'][_0x8415ed['transfereeuniqueid']])){this[_0x2226('0x19')](_0x8415ed[_0x2226('0x44')]);if(this[_0x2226('0x9')][_0x8415ed['secondtransfereruniqueid']]){this[_0x2226('0x9')][_0x8415ed[_0x2226('0x45')]][_0x2226('0x26')]=!![];this[_0x2226('0x9')][_0x8415ed[_0x2226('0x46')]]=this['channels'][_0x8415ed[_0x2226('0x45')]];delete this[_0x2226('0x9')][_0x8415ed[_0x2226('0x45')]];}}else if(!_[_0x2226('0x43')](this[_0x2226('0x9')][_0x8415ed[_0x2226('0x46')]])){this[_0x2226('0x19')](_0x8415ed['transfertargetuniqueid']);if(this[_0x2226('0x9')][_0x8415ed['origtransfereruniqueid']]){this[_0x2226('0x9')][_0x8415ed['origtransfereruniqueid']]['attended']=!![];this['channels'][_0x8415ed[_0x2226('0x44')]]=this[_0x2226('0x9')][_0x8415ed['origtransfereruniqueid']];delete this['channels'][_0x8415ed[_0x2226('0x47')]];}}}catch(_0x3ad49d){logger[_0x2226('0x31')](_0x2226('0x48'),_0x3ad49d[_0x2226('0x35')]);}};Acw[_0x2226('0x18')][_0x2226('0x15')]=function(_0x5650a4){try{if(this[_0x2226('0x9')][_0x5650a4['transfereruniqueid']]){logger[_0x2226('0x24')]('[%s][BLINDTRANSFER:UNIQUEID]',JSON[_0x2226('0x3b')](_0x5650a4[_0x2226('0x49')]));this[_0x2226('0x19')](_0x5650a4[_0x2226('0x49')]);}else if(this['channels'][_0x5650a4[_0x2226('0x4a')]]){logger[_0x2226('0x24')](_0x2226('0x4b'),JSON['stringify'](_0x5650a4['transfererlinkedid']));this[_0x2226('0x19')](_0x5650a4['transfererlinkedid']);}}catch(_0x45e5ab){logger[_0x2226('0x31')](_0x2226('0x4c'),_0x45e5ab['message']);}};Acw[_0x2226('0x18')][_0x2226('0x11')]=function(_0x153351){try{if(this['voiceQueues'][_0x153351[_0x2226('0x1b')]]&&this[_0x2226('0x6')][_0x153351[_0x2226('0x1b')]][_0x2226('0x4d')]===_0x2226('0x4e')){if(this[_0x2226('0x7')][_0x153351[_0x2226('0x1a')]]){logger['info'](_0x2226('0x4f'),_0x153351[_0x2226('0x30')],_0x153351[_0x2226('0x1a')],_0x153351['queue']);return RpcUser[_0x2226('0x28')](this['agents'][_0x153351[_0x2226('0x1a')]],_0x2226('0x50'),_0x153351[_0x2226('0x30')]);}}}catch(_0x493349){logger['error'](_0x2226('0x51'),_0x493349[_0x2226('0x35')]);}};module[_0x2226('0x52')]=Acw;