32d5632d9e12902b8ef7ee564f5d8c794b7add53
[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 _0x1bc1=['transfereeuniqueid','secondtransfereruniqueid','transfertargetuniqueid','origtransfereruniqueid','[ACW][syncAttendedTransfer]\x20%s','transfereruniqueid','[%s][BLINDTRANSFER:UNIQUEID]','stringify','transfererlinkedid','[%s][BLINDTRANSFER:LINKEDID]','[ACW][syncBlindTransfer]\x20%s','autopause','all','[%s][AUTOPAUSE][AGENT:%s][QUEUE:%]','[ACW][syncAgentRingNoAnswer]\x20%s','exports','lodash','../../../config/logger','acw','../rpc/user','../rpc/voiceAgentReport','voiceQueues','agents','timers','agentconnect','syncAgentConnect','bind','syncHangupRequest','agentringnoanswer','syncAgentRingNoAnswer','syncAttendedTransfer','blindtransfer','syncBlindTransfer','custom:agentConnectPreview','syncAgentConnectPreview','milliseconds','diff','seconds','prototype','lastPauseAt','timer','update','uniqueid','then','info','[%s][UPDATE][ACWTIME:%s]','catch','error','[%s][UPDATE][ERRORS:%s]','finally','startAcw','channels','interface','queue','ACW','mandatoryDisposition','mandatoryDispositionPause','resolve','voicePause','[%s][START][AGENT:%s][QUEUE:%s]','destlinkedid','savePause','available','paused','[%s][TIMER:%s][AGENT:%s][QUEUE:%s]','stopAcw','acwTimeout','format','YYYY-MM-DD\x20HH:mm:ss','updateAcw','[ACW][START]\x20%s','[%s][TIMER][STOP][AGENT:%s]','getAgent','pauseType','saveUnpause','[ACW][STOP]\x20Interface\x20%s\x20doesn\x27t\x20have\x20timer','[ACW][TIMERS]','[ACW][STOP]\x20%s','message','[ACW][syncAgentConnectPreview]\x20%s','linkedid','[%s][HANGUP:LINKEDID]','[ACW][syncHangupRequest]\x20%s','syncHangup','attended','[%s][HANGUPATTENDEDTRANSFER:LINKEDID]','[ACW][syncHangup]\x20%s','isNil'];(function(_0x599d69,_0x4d623e){var _0x135b22=function(_0x3653a2){while(--_0x3653a2){_0x599d69['push'](_0x599d69['shift']());}};_0x135b22(++_0x4d623e);}(_0x1bc1,0x118));var _0x11bc=function(_0x15c420,_0x1a8ef1){_0x15c420=_0x15c420-0x0;var _0x23f862=_0x1bc1[_0x15c420];return _0x23f862;};'use strict';var _=require(_0x11bc('0x0'));var moment=require('moment');var ami=require('../ami');var logger=require(_0x11bc('0x1'))(_0x11bc('0x2'));var RpcUser=require(_0x11bc('0x3'));var RpcVoiceAgentReport=require(_0x11bc('0x4'));function Acw(_0x447f69){this[_0x11bc('0x5')]=_0x447f69['voiceQueues'];this[_0x11bc('0x6')]=_0x447f69[_0x11bc('0x6')];this[_0x11bc('0x7')]=_0x447f69['timers'];this['channels']={};ami['on'](_0x11bc('0x8'),this[_0x11bc('0x9')][_0x11bc('0xa')](this));ami['on']('hanguprequest',this[_0x11bc('0xb')]['bind'](this));ami['on']('hangup',this['syncHangup'][_0x11bc('0xa')](this));ami['on'](_0x11bc('0xc'),this[_0x11bc('0xd')][_0x11bc('0xa')](this));ami['on']('attendedtransfer',this[_0x11bc('0xe')][_0x11bc('0xa')](this));ami['on'](_0x11bc('0xf'),this[_0x11bc('0x10')][_0x11bc('0xa')](this));ami['on'](_0x11bc('0x11'),this[_0x11bc('0x12')]['bind'](this));}function getDiff(_0x12f3c7){var _0x38a108=moment()[_0x11bc('0x13')](0x0);var _0x4db076=moment(_0x12f3c7)['milliseconds'](0x0);return _0x38a108[_0x11bc('0x14')](_0x4db076,_0x11bc('0x15'));}Acw[_0x11bc('0x16')]['updateAcw']=function(_0x2d0d9e,_0x22913b){var _0x2a169a=this;var _0x93bb52=getDiff(_0x2a169a[_0x11bc('0x7')][_0x2d0d9e][_0x11bc('0x17')]);clearTimeout(_0x2a169a[_0x11bc('0x7')][_0x2d0d9e]['timer']);_0x2a169a[_0x11bc('0x7')][_0x2d0d9e][_0x11bc('0x18')]=![];return RpcVoiceAgentReport[_0x11bc('0x19')]({'acwtime':_0x93bb52},_0x2a169a[_0x11bc('0x7')][_0x2d0d9e][_0x11bc('0x1a')],_0x2d0d9e)[_0x11bc('0x1b')](function(_0x40bf96){logger[_0x11bc('0x1c')](_0x11bc('0x1d'),_0x22913b,_0x93bb52,_0x40bf96);})[_0x11bc('0x1e')](function(_0x21e224){logger[_0x11bc('0x1f')](_0x11bc('0x20'),_0x22913b,_0x21e224);})[_0x11bc('0x21')](function(){delete _0x2a169a[_0x11bc('0x7')][_0x2d0d9e];});};Acw[_0x11bc('0x16')][_0x11bc('0x22')]=function(_0x23aeab){try{var _0x5f430d=this;var _0x4b48b2=this[_0x11bc('0x23')][_0x23aeab][_0x11bc('0x24')];var _0x51cf52=this['channels'][_0x23aeab][_0x11bc('0x25')];var _0x2c745b=this[_0x11bc('0x5')][_0x51cf52];var _0x43e641=![];var _0x197549=_0x11bc('0x26');if(_0x2c745b[_0x11bc('0x27')]&&_0x2c745b[_0x11bc('0x28')]['name']){_0x43e641=!![];_0x197549=_0x2c745b['mandatoryDispositionPause']['name'];}if(!_0x5f430d[_0x11bc('0x6')][_0x4b48b2]){return Promise[_0x11bc('0x29')]();}return RpcUser['getAgent'](_0x5f430d['agents'][_0x4b48b2]['id'])['then'](function(_0x16af64){if(!_0x16af64||_0x16af64[_0x11bc('0x2a')]){logger[_0x11bc('0x1c')]('[%s][INPAUSE][AGENT:%s][QUEUE:%s]',_0x23aeab,_0x4b48b2,_0x51cf52);return;}logger[_0x11bc('0x1c')](_0x11bc('0x2b'),_0x23aeab,_0x4b48b2,_0x51cf52);var _0x2575db=_0x5f430d[_0x11bc('0x23')][_0x23aeab]['attended']&&_0x5f430d[_0x11bc('0x23')][_0x23aeab][_0x11bc('0x2c')]?_0x5f430d['channels'][_0x23aeab][_0x11bc('0x2c')]:_0x23aeab;return RpcUser[_0x11bc('0x2d')](_0x5f430d[_0x11bc('0x6')][_0x4b48b2],_0x197549,_0x2575db)[_0x11bc('0x1b')](function(_0x211af5){_0x5f430d[_0x11bc('0x5')][_0x51cf52][_0x11bc('0x2e')]-=0x1;_0x5f430d[_0x11bc('0x5')][_0x51cf52][_0x11bc('0x2f')]+=0x1;return _0x211af5;});})['then'](function(_0x4e620d){if(_0x43e641||!_0x4e620d){return;}_0x5f430d[_0x11bc('0x7')][_0x4b48b2]={};logger['info'](_0x11bc('0x30'),_0x23aeab,_0x5f430d[_0x11bc('0x5')][_0x51cf52]['acwTimeout'],_0x4b48b2,_0x51cf52);_0x5f430d[_0x11bc('0x7')][_0x4b48b2][_0x11bc('0x18')]=setTimeout(_0x5f430d[_0x11bc('0x31')][_0x11bc('0xa')](_0x5f430d,_0x4b48b2),_0x5f430d[_0x11bc('0x5')][_0x51cf52][_0x11bc('0x32')]*0x3e8);_0x5f430d['timers'][_0x4b48b2][_0x11bc('0x17')]=moment()[_0x11bc('0x33')](_0x11bc('0x34'));_0x5f430d[_0x11bc('0x7')][_0x4b48b2][_0x11bc('0x1a')]=_0x23aeab;_0x5f430d[_0x11bc('0x7')][_0x4b48b2][_0x11bc('0x25')]=_0x51cf52;_0x5f430d[_0x11bc('0x7')][_0x4b48b2][_0x11bc('0x35')]=_0x5f430d[_0x11bc('0x35')][_0x11bc('0xa')](_0x5f430d,_0x4b48b2,_0x23aeab);})[_0x11bc('0x1e')](function(){logger['error'](_0x11bc('0x30'),_0x23aeab,_0x5f430d[_0x11bc('0x5')][_0x51cf52][_0x11bc('0x32')],_0x4b48b2,_0x51cf52);})[_0x11bc('0x21')](function(){delete _0x5f430d['channels'][_0x23aeab];});}catch(_0x42fb8e){logger['error'](_0x11bc('0x36'),_0x42fb8e['message']);}};Acw['prototype'][_0x11bc('0x31')]=function(_0xb4c9e6){try{var _0x3b2b7e=this;if(_0x3b2b7e['timers'][_0xb4c9e6]){_0x3b2b7e[_0x11bc('0x7')][_0xb4c9e6][_0x11bc('0x18')]=![];var _0x2692e2=_0x3b2b7e['timers'][_0xb4c9e6]['uniqueid'];var _0xb07eee=_0x3b2b7e[_0x11bc('0x7')][_0xb4c9e6][_0x11bc('0x25')];var _0x5d1c95=_0x3b2b7e[_0x11bc('0x5')][_0xb07eee]['acwTimeout'];logger[_0x11bc('0x1c')](_0x11bc('0x37'),_0x2692e2,_0xb4c9e6);RpcUser[_0x11bc('0x38')](this[_0x11bc('0x6')][_0xb4c9e6]['id'])[_0x11bc('0x1b')](function(_0x40c387){if(_0x40c387[_0x11bc('0x39')]==='ACW'){return RpcUser[_0x11bc('0x3a')](_0x3b2b7e[_0x11bc('0x6')][_0xb4c9e6]);}});RpcVoiceAgentReport[_0x11bc('0x19')]({'acwtime':_0x5d1c95,'agentacw':!![]},_0x2692e2,_0xb4c9e6)[_0x11bc('0x1b')](function(_0x521282){logger[_0x11bc('0x1c')]('[%s][UPDATE][ACWTIME:%s]',_0x2692e2,_0x5d1c95,_0x521282);})[_0x11bc('0x1e')](function(_0x1b0512){logger['error'](_0x11bc('0x20'),_0x2692e2,_0x1b0512);});}else{logger[_0x11bc('0x1f')](_0x11bc('0x3b'),_0xb4c9e6);if(_0x3b2b7e[_0x11bc('0x7')]){logger[_0x11bc('0x1c')](_0x11bc('0x3c'),JSON['stringify'](_0x3b2b7e[_0x11bc('0x7')]));}}}catch(_0x3ff8f6){logger[_0x11bc('0x1f')](_0x11bc('0x3d'),_0x3ff8f6['message']);}};Acw['prototype']['syncAgentConnect']=function(_0x2a13c8){try{if(this['voiceQueues'][_0x2a13c8[_0x11bc('0x25')]]&&(this[_0x11bc('0x5')][_0x2a13c8[_0x11bc('0x25')]][_0x11bc('0x2')]||this[_0x11bc('0x5')][_0x2a13c8[_0x11bc('0x25')]]['mandatoryDisposition'])){if(this['agents'][_0x2a13c8[_0x11bc('0x24')]]){this[_0x11bc('0x23')][_0x2a13c8[_0x11bc('0x1a')]]={'queue':_0x2a13c8[_0x11bc('0x25')],'interface':_0x2a13c8[_0x11bc('0x24')],'destlinkedid':_0x2a13c8[_0x11bc('0x2c')]};}}}catch(_0x44a744){logger[_0x11bc('0x1f')]('[ACW][syncAgentConnect]\x20%s',_0x44a744[_0x11bc('0x3e')]);}};Acw[_0x11bc('0x16')][_0x11bc('0x12')]=function(_0x2d0489){try{if(this[_0x11bc('0x5')][_0x2d0489['queue']]&&(this['voiceQueues'][_0x2d0489[_0x11bc('0x25')]][_0x11bc('0x2')]||this['voiceQueues'][_0x2d0489[_0x11bc('0x25')]][_0x11bc('0x27')])){if(this[_0x11bc('0x6')][_0x2d0489[_0x11bc('0x24')]]){this[_0x11bc('0x23')][_0x2d0489['uniqueid']]={'queue':_0x2d0489[_0x11bc('0x25')],'interface':_0x2d0489['interface']};}}}catch(_0x287fb3){logger[_0x11bc('0x1f')](_0x11bc('0x3f'),_0x287fb3[_0x11bc('0x3e')]);}};Acw['prototype'][_0x11bc('0xb')]=function(_0x19e4e4){try{if(this[_0x11bc('0x23')][_0x19e4e4['uniqueid']]&&_['isUndefined'](this[_0x11bc('0x23')][_0x19e4e4[_0x11bc('0x1a')]]['attended'])){logger['info']('[%s][HANGUP:UNIQUEID]',_0x19e4e4[_0x11bc('0x1a')]);this[_0x11bc('0x22')](_0x19e4e4[_0x11bc('0x1a')]);}else if(this[_0x11bc('0x23')][_0x19e4e4[_0x11bc('0x40')]]&&_['isUndefined'](this['channels'][_0x19e4e4[_0x11bc('0x40')]]['attended'])){logger['info'](_0x11bc('0x41'),_0x19e4e4[_0x11bc('0x40')]);this[_0x11bc('0x22')](_0x19e4e4[_0x11bc('0x40')]);}}catch(_0xb4f5e3){logger['error'](_0x11bc('0x42'),_0xb4f5e3[_0x11bc('0x3e')]);}};Acw[_0x11bc('0x16')][_0x11bc('0x43')]=function(_0x353e56){try{if(this[_0x11bc('0x23')][_0x353e56['uniqueid']]&&this[_0x11bc('0x23')][_0x353e56[_0x11bc('0x1a')]][_0x11bc('0x44')]){logger['info']('[%s][HANGUPATTENDEDTRANSFER:UNIQUEID]',_0x353e56[_0x11bc('0x1a')]);this[_0x11bc('0x22')](_0x353e56[_0x11bc('0x1a')]);}else if(this[_0x11bc('0x23')][_0x353e56[_0x11bc('0x40')]]&&this[_0x11bc('0x23')][_0x353e56[_0x11bc('0x40')]][_0x11bc('0x44')]){logger['info'](_0x11bc('0x45'),_0x353e56[_0x11bc('0x40')]);this[_0x11bc('0x22')](_0x353e56[_0x11bc('0x40')]);}}catch(_0x5d8bdc){logger['error'](_0x11bc('0x46'),_0x5d8bdc[_0x11bc('0x3e')]);}};Acw['prototype'][_0x11bc('0xe')]=function(_0x3baf33){try{if(!_[_0x11bc('0x47')](this[_0x11bc('0x23')][_0x3baf33[_0x11bc('0x48')]])){this['startAcw'](_0x3baf33['transfereeuniqueid']);if(this[_0x11bc('0x23')][_0x3baf33[_0x11bc('0x49')]]){this[_0x11bc('0x23')][_0x3baf33['secondtransfereruniqueid']][_0x11bc('0x44')]=!![];this[_0x11bc('0x23')][_0x3baf33[_0x11bc('0x4a')]]=this[_0x11bc('0x23')][_0x3baf33[_0x11bc('0x49')]];delete this['channels'][_0x3baf33['secondtransfereruniqueid']];}}else if(!_[_0x11bc('0x47')](this[_0x11bc('0x23')][_0x3baf33[_0x11bc('0x4a')]])){this[_0x11bc('0x22')](_0x3baf33[_0x11bc('0x4a')]);if(this[_0x11bc('0x23')][_0x3baf33[_0x11bc('0x4b')]]){this['channels'][_0x3baf33['origtransfereruniqueid']][_0x11bc('0x44')]=!![];this['channels'][_0x3baf33[_0x11bc('0x48')]]=this['channels'][_0x3baf33[_0x11bc('0x4b')]];delete this['channels'][_0x3baf33[_0x11bc('0x4b')]];}}}catch(_0x30ba79){logger[_0x11bc('0x1f')](_0x11bc('0x4c'),_0x30ba79[_0x11bc('0x3e')]);}};Acw[_0x11bc('0x16')][_0x11bc('0x10')]=function(_0x49163a){try{if(this['channels'][_0x49163a[_0x11bc('0x4d')]]){logger[_0x11bc('0x1c')](_0x11bc('0x4e'),JSON[_0x11bc('0x4f')](_0x49163a[_0x11bc('0x4d')]));this[_0x11bc('0x22')](_0x49163a[_0x11bc('0x4d')]);}else if(this[_0x11bc('0x23')][_0x49163a[_0x11bc('0x50')]]){logger[_0x11bc('0x1c')](_0x11bc('0x51'),JSON[_0x11bc('0x4f')](_0x49163a[_0x11bc('0x50')]));this[_0x11bc('0x22')](_0x49163a[_0x11bc('0x50')]);}}catch(_0x40aa6a){logger[_0x11bc('0x1f')](_0x11bc('0x52'),_0x40aa6a[_0x11bc('0x3e')]);}};Acw[_0x11bc('0x16')][_0x11bc('0xd')]=function(_0x469e1c){try{if(this[_0x11bc('0x5')][_0x469e1c[_0x11bc('0x25')]]&&this[_0x11bc('0x5')][_0x469e1c[_0x11bc('0x25')]][_0x11bc('0x53')]===_0x11bc('0x54')){if(this[_0x11bc('0x6')][_0x469e1c[_0x11bc('0x24')]]){logger[_0x11bc('0x1c')](_0x11bc('0x55'),_0x469e1c[_0x11bc('0x1a')],_0x469e1c['interface'],_0x469e1c[_0x11bc('0x25')]);return RpcUser[_0x11bc('0x2d')](this[_0x11bc('0x6')][_0x469e1c['interface']],'Auto-Pause',_0x469e1c[_0x11bc('0x1a')]);}}}catch(_0x31a84b){logger['error'](_0x11bc('0x56'),_0x31a84b[_0x11bc('0x3e')]);}};module[_0x11bc('0x57')]=Acw;