Built motion from commit 3d3e98f2.|2.6.29
[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 _0xaad5=['transfererlinkedid','[%s][BLINDTRANSFER:LINKEDID]','[ACW][syncBlindTransfer]\x20%s','syncAgentRingNoAnswer','all','[%s][AUTOPAUSE][AGENT:%s][QUEUE:%]','Auto-Pause','[ACW][syncAgentRingNoAnswer]\x20%s','exports','lodash','acw','../rpc/user','../rpc/voiceAgentReport','voiceQueues','agents','timers','agentconnect','bind','hanguprequest','syncHangupRequest','hangup','agentringnoanswer','attendedtransfer','syncAttendedTransfer','blindtransfer','syncBlindTransfer','syncAgentConnectPreview','milliseconds','diff','seconds','prototype','updateAcw','lastPauseAt','timer','then','info','[%s][UPDATE][ACWTIME:%s]','catch','[%s][UPDATE][ERRORS:%s]','finally','startAcw','channels','interface','queue','ACW','mandatoryDispositionPause','name','Action','QueuePause','getAgent','[%s][INPAUSE][AGENT:%s][QUEUE:%s]','[%s][START][AGENT:%s][QUEUE:%s]','attended','destlinkedid','savePause','available','paused','[%s][TIMER:%s][AGENT:%s][QUEUE:%s]','acwTimeout','stopAcw','YYYY-MM-DD\x20HH:mm:ss','uniqueid','error','[ACW][START]\x20%s','message','[%s][TIMER][STOP][AGENT:%s]','pauseType','update','[ACW][STOP]\x20Interface\x20%s\x20doesn\x27t\x20have\x20timer','[ACW][TIMERS]','[ACW][STOP]\x20%s','mandatoryDisposition','[ACW][syncAgentConnect]\x20%s','[ACW][syncAgentConnectPreview]\x20%s','[%s][HANGUP:UNIQUEID]','linkedid','isUndefined','[%s][HANGUP:LINKEDID]','[ACW][syncHangupRequest]\x20%s','syncHangup','[%s][HANGUPATTENDEDTRANSFER:UNIQUEID]','[ACW][syncHangup]\x20%s','isNil','transfereeuniqueid','secondtransfereruniqueid','transfertargetuniqueid','origtransfereruniqueid','[ACW][syncAttendedTransfer]\x20%s','transfereruniqueid','[%s][BLINDTRANSFER:UNIQUEID]','stringify'];(function(_0x56ccbe,_0x11e4be){var _0x15993c=function(_0x3bd9db){while(--_0x3bd9db){_0x56ccbe['push'](_0x56ccbe['shift']());}};_0x15993c(++_0x11e4be);}(_0xaad5,0xbf));var _0x5aad=function(_0x26b8b5,_0xf5c2c1){_0x26b8b5=_0x26b8b5-0x0;var _0x2150a9=_0xaad5[_0x26b8b5];return _0x2150a9;};'use strict';var _=require(_0x5aad('0x0'));var moment=require('moment');var ami=require('../ami');var logger=require('../../../config/logger')(_0x5aad('0x1'));var RpcUser=require(_0x5aad('0x2'));var RpcVoiceAgentReport=require(_0x5aad('0x3'));function Acw(_0x2b83f8){this[_0x5aad('0x4')]=_0x2b83f8[_0x5aad('0x4')];this[_0x5aad('0x5')]=_0x2b83f8[_0x5aad('0x5')];this['timers']=_0x2b83f8[_0x5aad('0x6')];this['channels']={};ami['on'](_0x5aad('0x7'),this['syncAgentConnect'][_0x5aad('0x8')](this));ami['on'](_0x5aad('0x9'),this[_0x5aad('0xa')][_0x5aad('0x8')](this));ami['on'](_0x5aad('0xb'),this['syncHangup'][_0x5aad('0x8')](this));ami['on'](_0x5aad('0xc'),this['syncAgentRingNoAnswer'][_0x5aad('0x8')](this));ami['on'](_0x5aad('0xd'),this[_0x5aad('0xe')][_0x5aad('0x8')](this));ami['on'](_0x5aad('0xf'),this[_0x5aad('0x10')][_0x5aad('0x8')](this));ami['on']('custom:agentConnectPreview',this[_0x5aad('0x11')][_0x5aad('0x8')](this));}function getDiff(_0x3be2eb){var _0x324de2=moment()['milliseconds'](0x0);var _0x20581d=moment(_0x3be2eb)[_0x5aad('0x12')](0x0);return _0x324de2[_0x5aad('0x13')](_0x20581d,_0x5aad('0x14'));}Acw[_0x5aad('0x15')][_0x5aad('0x16')]=function(_0x46d626,_0xd54c0a){var _0x215428=this;var _0x4df413=getDiff(_0x215428['timers'][_0x46d626][_0x5aad('0x17')]);clearTimeout(_0x215428[_0x5aad('0x6')][_0x46d626][_0x5aad('0x18')]);_0x215428[_0x5aad('0x6')][_0x46d626][_0x5aad('0x18')]=![];return RpcVoiceAgentReport['update']({'acwtime':_0x4df413},_0x215428[_0x5aad('0x6')][_0x46d626]['uniqueid'],_0x46d626)[_0x5aad('0x19')](function(_0x5964a2){logger[_0x5aad('0x1a')](_0x5aad('0x1b'),_0xd54c0a,_0x4df413,_0x5964a2);})[_0x5aad('0x1c')](function(_0x3c0759){logger['error'](_0x5aad('0x1d'),_0xd54c0a,_0x3c0759);})[_0x5aad('0x1e')](function(){delete _0x215428['timers'][_0x46d626];});};Acw[_0x5aad('0x15')][_0x5aad('0x1f')]=function(_0x449758){try{var _0x53ff78=this;var _0x2eb75b=this[_0x5aad('0x20')][_0x449758][_0x5aad('0x21')];var _0x10db46=this['channels'][_0x449758][_0x5aad('0x22')];var _0x394e70=this[_0x5aad('0x4')][_0x10db46];var _0x3ece5e=![];var _0x448779=_0x5aad('0x23');if(_0x394e70['mandatoryDisposition']&&_0x394e70[_0x5aad('0x24')][_0x5aad('0x25')]){_0x3ece5e=!![];_0x448779=_0x394e70[_0x5aad('0x24')][_0x5aad('0x25')];}return ami[_0x5aad('0x26')]({'action':_0x5aad('0x27'),'interface':_0x2eb75b,'paused':!![],'reason':_0x448779})[_0x5aad('0x19')](function(){if(_0x53ff78['agents'][_0x2eb75b]){return RpcUser[_0x5aad('0x28')](_0x53ff78[_0x5aad('0x5')][_0x2eb75b]['id'])[_0x5aad('0x19')](function(_0x4ba044){if(!_0x4ba044||_0x4ba044['voicePause']){logger[_0x5aad('0x1a')](_0x5aad('0x29'),_0x449758,_0x2eb75b,_0x10db46);return;}logger['info'](_0x5aad('0x2a'),_0x449758,_0x2eb75b,_0x10db46);var _0x414aac=_0x53ff78[_0x5aad('0x20')][_0x449758][_0x5aad('0x2b')]&&_0x53ff78[_0x5aad('0x20')][_0x449758][_0x5aad('0x2c')]?_0x53ff78[_0x5aad('0x20')][_0x449758][_0x5aad('0x2c')]:_0x449758;return RpcUser[_0x5aad('0x2d')](_0x53ff78[_0x5aad('0x5')][_0x2eb75b],_0x448779,_0x414aac)['then'](function(_0x2dcad8){_0x53ff78[_0x5aad('0x4')][_0x10db46][_0x5aad('0x2e')]-=0x1;_0x53ff78[_0x5aad('0x4')][_0x10db46][_0x5aad('0x2f')]+=0x1;return _0x2dcad8;});})[_0x5aad('0x19')](function(_0x4433f4){if(_0x3ece5e||!_0x4433f4){return;}_0x53ff78['timers'][_0x2eb75b]={};logger[_0x5aad('0x1a')](_0x5aad('0x30'),_0x449758,_0x53ff78[_0x5aad('0x4')][_0x10db46][_0x5aad('0x31')],_0x2eb75b,_0x10db46);_0x53ff78['timers'][_0x2eb75b][_0x5aad('0x18')]=setTimeout(_0x53ff78[_0x5aad('0x32')]['bind'](_0x53ff78,_0x2eb75b),_0x53ff78[_0x5aad('0x4')][_0x10db46]['acwTimeout']*0x3e8);_0x53ff78[_0x5aad('0x6')][_0x2eb75b][_0x5aad('0x17')]=moment()['format'](_0x5aad('0x33'));_0x53ff78[_0x5aad('0x6')][_0x2eb75b][_0x5aad('0x34')]=_0x449758;_0x53ff78[_0x5aad('0x6')][_0x2eb75b][_0x5aad('0x22')]=_0x10db46;_0x53ff78[_0x5aad('0x6')][_0x2eb75b][_0x5aad('0x16')]=_0x53ff78[_0x5aad('0x16')][_0x5aad('0x8')](_0x53ff78,_0x2eb75b,_0x449758);});}})[_0x5aad('0x1c')](function(){logger[_0x5aad('0x35')](_0x5aad('0x30'),_0x449758,_0x53ff78[_0x5aad('0x4')][_0x10db46][_0x5aad('0x31')],_0x2eb75b,_0x10db46);})[_0x5aad('0x1e')](function(){delete _0x53ff78['channels'][_0x449758];});}catch(_0x28f0e9){logger[_0x5aad('0x35')](_0x5aad('0x36'),_0x28f0e9[_0x5aad('0x37')]);}};Acw[_0x5aad('0x15')][_0x5aad('0x32')]=function(_0x29805e){try{var _0x13b604=this;if(_0x13b604[_0x5aad('0x6')][_0x29805e]){_0x13b604[_0x5aad('0x6')][_0x29805e][_0x5aad('0x18')]=![];var _0x1c2d84=_0x13b604['timers'][_0x29805e][_0x5aad('0x34')];var _0x18cdfb=_0x13b604[_0x5aad('0x6')][_0x29805e][_0x5aad('0x22')];var _0x1a6b99=_0x13b604['voiceQueues'][_0x18cdfb][_0x5aad('0x31')];logger[_0x5aad('0x1a')](_0x5aad('0x38'),_0x1c2d84,_0x29805e);RpcUser['getAgent'](this[_0x5aad('0x5')][_0x29805e]['id'])[_0x5aad('0x19')](function(_0x476248){if(_0x476248[_0x5aad('0x39')]===_0x5aad('0x23')){return RpcUser['saveUnpause'](_0x13b604['agents'][_0x29805e]);}});RpcVoiceAgentReport[_0x5aad('0x3a')]({'acwtime':_0x1a6b99,'agentacw':!![]},_0x1c2d84,_0x29805e)[_0x5aad('0x19')](function(_0x866cfa){logger['info'](_0x5aad('0x1b'),_0x1c2d84,_0x1a6b99,_0x866cfa);})[_0x5aad('0x1c')](function(_0x344131){logger[_0x5aad('0x35')](_0x5aad('0x1d'),_0x1c2d84,_0x344131);});}else{logger[_0x5aad('0x35')](_0x5aad('0x3b'),_0x29805e);if(_0x13b604[_0x5aad('0x6')]){logger[_0x5aad('0x1a')](_0x5aad('0x3c'),JSON['stringify'](_0x13b604[_0x5aad('0x6')]));}}}catch(_0x537616){logger[_0x5aad('0x35')](_0x5aad('0x3d'),_0x537616[_0x5aad('0x37')]);}};Acw['prototype']['syncAgentConnect']=function(_0x1f5f21){try{if(this['voiceQueues'][_0x1f5f21[_0x5aad('0x22')]]&&(this[_0x5aad('0x4')][_0x1f5f21[_0x5aad('0x22')]]['acw']||this['voiceQueues'][_0x1f5f21[_0x5aad('0x22')]][_0x5aad('0x3e')])){if(this[_0x5aad('0x5')][_0x1f5f21['interface']]){this[_0x5aad('0x20')][_0x1f5f21[_0x5aad('0x34')]]={'queue':_0x1f5f21['queue'],'interface':_0x1f5f21['interface'],'destlinkedid':_0x1f5f21['destlinkedid']};}}}catch(_0x3a2eb4){logger[_0x5aad('0x35')](_0x5aad('0x3f'),_0x3a2eb4[_0x5aad('0x37')]);}};Acw[_0x5aad('0x15')][_0x5aad('0x11')]=function(_0x31ed95){try{if(this[_0x5aad('0x4')][_0x31ed95['queue']]&&(this['voiceQueues'][_0x31ed95[_0x5aad('0x22')]][_0x5aad('0x1')]||this[_0x5aad('0x4')][_0x31ed95[_0x5aad('0x22')]]['mandatoryDisposition'])){if(this[_0x5aad('0x5')][_0x31ed95[_0x5aad('0x21')]]){this[_0x5aad('0x20')][_0x31ed95['uniqueid']]={'queue':_0x31ed95[_0x5aad('0x22')],'interface':_0x31ed95[_0x5aad('0x21')]};}}}catch(_0x440424){logger['error'](_0x5aad('0x40'),_0x440424[_0x5aad('0x37')]);}};Acw[_0x5aad('0x15')][_0x5aad('0xa')]=function(_0x52e3b5){try{if(this['channels'][_0x52e3b5[_0x5aad('0x34')]]&&_['isUndefined'](this['channels'][_0x52e3b5[_0x5aad('0x34')]]['attended'])){logger[_0x5aad('0x1a')](_0x5aad('0x41'),_0x52e3b5[_0x5aad('0x34')]);this[_0x5aad('0x1f')](_0x52e3b5[_0x5aad('0x34')]);}else if(this[_0x5aad('0x20')][_0x52e3b5[_0x5aad('0x42')]]&&_[_0x5aad('0x43')](this['channels'][_0x52e3b5['linkedid']]['attended'])){logger[_0x5aad('0x1a')](_0x5aad('0x44'),_0x52e3b5[_0x5aad('0x42')]);this[_0x5aad('0x1f')](_0x52e3b5[_0x5aad('0x42')]);}}catch(_0x481c82){logger[_0x5aad('0x35')](_0x5aad('0x45'),_0x481c82[_0x5aad('0x37')]);}};Acw['prototype'][_0x5aad('0x46')]=function(_0xb40067){try{if(this[_0x5aad('0x20')][_0xb40067[_0x5aad('0x34')]]&&this[_0x5aad('0x20')][_0xb40067[_0x5aad('0x34')]]['attended']){logger[_0x5aad('0x1a')](_0x5aad('0x47'),_0xb40067[_0x5aad('0x34')]);this['startAcw'](_0xb40067['uniqueid']);}else if(this[_0x5aad('0x20')][_0xb40067['linkedid']]&&this[_0x5aad('0x20')][_0xb40067[_0x5aad('0x42')]][_0x5aad('0x2b')]){logger[_0x5aad('0x1a')]('[%s][HANGUPATTENDEDTRANSFER:LINKEDID]',_0xb40067['linkedid']);this[_0x5aad('0x1f')](_0xb40067['linkedid']);}}catch(_0x4516c4){logger[_0x5aad('0x35')](_0x5aad('0x48'),_0x4516c4[_0x5aad('0x37')]);}};Acw[_0x5aad('0x15')][_0x5aad('0xe')]=function(_0x5f5939){try{if(!_[_0x5aad('0x49')](this[_0x5aad('0x20')][_0x5f5939['transfereeuniqueid']])){this[_0x5aad('0x1f')](_0x5f5939[_0x5aad('0x4a')]);if(this['channels'][_0x5f5939['secondtransfereruniqueid']]){this['channels'][_0x5f5939[_0x5aad('0x4b')]][_0x5aad('0x2b')]=!![];this['channels'][_0x5f5939[_0x5aad('0x4c')]]=this[_0x5aad('0x20')][_0x5f5939['secondtransfereruniqueid']];delete this[_0x5aad('0x20')][_0x5f5939['secondtransfereruniqueid']];}}else if(!_['isNil'](this[_0x5aad('0x20')][_0x5f5939[_0x5aad('0x4c')]])){this[_0x5aad('0x1f')](_0x5f5939[_0x5aad('0x4c')]);if(this['channels'][_0x5f5939[_0x5aad('0x4d')]]){this['channels'][_0x5f5939[_0x5aad('0x4d')]][_0x5aad('0x2b')]=!![];this[_0x5aad('0x20')][_0x5f5939['transfereeuniqueid']]=this[_0x5aad('0x20')][_0x5f5939['origtransfereruniqueid']];delete this[_0x5aad('0x20')][_0x5f5939[_0x5aad('0x4d')]];}}}catch(_0x2cfa0d){logger['error'](_0x5aad('0x4e'),_0x2cfa0d['message']);}};Acw['prototype'][_0x5aad('0x10')]=function(_0x1bcf7f){try{if(this[_0x5aad('0x20')][_0x1bcf7f[_0x5aad('0x4f')]]){logger[_0x5aad('0x1a')](_0x5aad('0x50'),JSON[_0x5aad('0x51')](_0x1bcf7f[_0x5aad('0x4f')]));this['startAcw'](_0x1bcf7f[_0x5aad('0x4f')]);}else if(this['channels'][_0x1bcf7f[_0x5aad('0x52')]]){logger[_0x5aad('0x1a')](_0x5aad('0x53'),JSON[_0x5aad('0x51')](_0x1bcf7f[_0x5aad('0x52')]));this['startAcw'](_0x1bcf7f[_0x5aad('0x52')]);}}catch(_0x491423){logger[_0x5aad('0x35')](_0x5aad('0x54'),_0x491423[_0x5aad('0x37')]);}};Acw[_0x5aad('0x15')][_0x5aad('0x55')]=function(_0x2eee55){try{if(this['voiceQueues'][_0x2eee55[_0x5aad('0x22')]]&&this['voiceQueues'][_0x2eee55['queue']]['autopause']===_0x5aad('0x56')){if(this[_0x5aad('0x5')][_0x2eee55[_0x5aad('0x21')]]){logger[_0x5aad('0x1a')](_0x5aad('0x57'),_0x2eee55[_0x5aad('0x34')],_0x2eee55[_0x5aad('0x21')],_0x2eee55[_0x5aad('0x22')]);return RpcUser['savePause'](this[_0x5aad('0x5')][_0x2eee55['interface']],_0x5aad('0x58'),_0x2eee55[_0x5aad('0x34')]);}}}catch(_0x5ad929){logger[_0x5aad('0x35')](_0x5aad('0x59'),_0x5ad929[_0x5aad('0x37')]);}};module[_0x5aad('0x5a')]=Acw;