Built motion from commit (unavailable).|2.5.18
[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 _0x7217=['then','[%s][TIMER:%s][AGENT:%s][QUEUE:%s]','acwTimeout','lastPauseAt','format','YYYY-MM-DD\x20HH:mm:ss','queue','timer','update','uniqueid','[%s][UPDATE][ACWTIME:%s]','catch','[%s][UPDATE][ERRORS:%s]','[%s][INPAUSE][AGENT:%s][QUEUE:%s]','error','finally','[ACW][START]\x20%s','message','stopAcw','saveUnpause','[ACW][STOP]\x20Interface\x20%s\x20doesn\x27t\x20have\x20timer','[ACW][TIMERS]','stringify','[ACW][STOP]\x20%s','prototype','[ACW][syncAgentConnect]\x20%s','[ACW][syncAgentConnectPreview]\x20%s','isUndefined','linkedid','[%s][HANGUP:LINKEDID]','startAcw','[ACW][syncHangupRequest]\x20%s','[%s][HANGUPATTENDEDTRANSFER:UNIQUEID]','[ACW][syncHangup]\x20%s','isNil','transfereeuniqueid','secondtransfereruniqueid','origtransfereruniqueid','[ACW][syncAttendedTransfer]\x20%s','transfereruniqueid','[%s][BLINDTRANSFER:UNIQUEID]','transfererlinkedid','[%s][BLINDTRANSFER:LINKEDID]','[ACW][syncBlindTransfer]\x20%s','autopause','all','[%s][AUTOPAUSE][AGENT:%s][QUEUE:%]','Auto-Pause','[ACW][syncAgentRingNoAnswer]\x20%s','exports','util','moment','../ami','../../../config/logger','acw','../rpc/user','voiceQueues','agents','timers','channels','agentconnect','syncAgentConnect','bind','hanguprequest','syncHangupRequest','hangup','syncHangup','agentringnoanswer','syncAgentRingNoAnswer','attendedtransfer','syncAttendedTransfer','blindtransfer','syncBlindTransfer','custom:agentConnectPreview','syncAgentConnectPreview','milliseconds','diff','seconds','interface','ACW','mandatoryDisposition','mandatoryDispositionPause','name','Action','QueuePause','getAgent','info','[%s][START][AGENT:%s][QUEUE:%s]','attended','destlinkedid','savePause'];(function(_0x49173f,_0x5da8e9){var _0x4520f5=function(_0x392e7e){while(--_0x392e7e){_0x49173f['push'](_0x49173f['shift']());}};_0x4520f5(++_0x5da8e9);}(_0x7217,0x19e));var _0x7721=function(_0x173d7e,_0x3242fd){_0x173d7e=_0x173d7e-0x0;var _0x2220d6=_0x7217[_0x173d7e];return _0x2220d6;};'use strict';var util=require(_0x7721('0x0'));var _=require('lodash');var moment=require(_0x7721('0x1'));var ami=require(_0x7721('0x2'));var logger=require(_0x7721('0x3'))(_0x7721('0x4'));var RpcUser=require(_0x7721('0x5'));var RpcVoiceAgentReport=require('../rpc/voiceAgentReport');function Acw(_0x5bf160){this[_0x7721('0x6')]=_0x5bf160[_0x7721('0x6')];this[_0x7721('0x7')]=_0x5bf160[_0x7721('0x7')];this[_0x7721('0x8')]=_0x5bf160[_0x7721('0x8')];this[_0x7721('0x9')]={};ami['on'](_0x7721('0xa'),this[_0x7721('0xb')][_0x7721('0xc')](this));ami['on'](_0x7721('0xd'),this[_0x7721('0xe')][_0x7721('0xc')](this));ami['on'](_0x7721('0xf'),this[_0x7721('0x10')]['bind'](this));ami['on'](_0x7721('0x11'),this[_0x7721('0x12')][_0x7721('0xc')](this));ami['on'](_0x7721('0x13'),this[_0x7721('0x14')][_0x7721('0xc')](this));ami['on'](_0x7721('0x15'),this[_0x7721('0x16')]['bind'](this));ami['on'](_0x7721('0x17'),this[_0x7721('0x18')]['bind'](this));}function getDiff(_0x109900){var _0x30da54=moment()[_0x7721('0x19')](0x0);var _0x2e9752=moment(_0x109900)['milliseconds'](0x0);return _0x30da54[_0x7721('0x1a')](_0x2e9752,_0x7721('0x1b'));}Acw['prototype']['startAcw']=function(_0x4b183e){try{var _0x5ed54=this;var _0x25a628=this[_0x7721('0x9')][_0x4b183e][_0x7721('0x1c')];var _0x5ed94b=this[_0x7721('0x9')][_0x4b183e]['queue'];var _0x3fc09e=this['voiceQueues'][_0x5ed94b];var _0xfec626=![];var _0x4e96fb=_0x7721('0x1d');if(_0x3fc09e[_0x7721('0x1e')]){if(_0x3fc09e[_0x7721('0x1f')][_0x7721('0x20')]){_0xfec626=!![];_0x4e96fb=_0x3fc09e[_0x7721('0x1f')][_0x7721('0x20')];}}ami[_0x7721('0x21')]({'action':_0x7721('0x22'),'interface':_0x25a628,'paused':!![],'reason':_0x4e96fb})['then'](function(_0x288f7e){if(_0x5ed54[_0x7721('0x7')][_0x25a628]){return RpcUser[_0x7721('0x23')](_0x5ed54[_0x7721('0x7')][_0x25a628]['id'])['then'](function(_0x28f5a6){if(_0x28f5a6&&!_0x28f5a6['voicePause']){logger[_0x7721('0x24')](_0x7721('0x25'),_0x4b183e,_0x25a628,_0x5ed94b);var _0x3e8a4e=_0x5ed54[_0x7721('0x9')][_0x4b183e][_0x7721('0x26')]&&_0x5ed54[_0x7721('0x9')][_0x4b183e][_0x7721('0x27')]?_0x5ed54['channels'][_0x4b183e][_0x7721('0x27')]:_0x4b183e;return RpcUser[_0x7721('0x28')](_0x5ed54[_0x7721('0x7')][_0x25a628],_0x4e96fb,_0x3e8a4e)[_0x7721('0x29')](function(_0x40d550){if(!_0xfec626){_0x5ed54[_0x7721('0x8')][_0x25a628]={};logger[_0x7721('0x24')](_0x7721('0x2a'),_0x4b183e,_0x5ed54[_0x7721('0x6')][_0x5ed94b]['acwTimeout'],_0x25a628,_0x5ed94b);_0x5ed54[_0x7721('0x8')][_0x25a628]['timer']=setTimeout(_0x5ed54['stopAcw'][_0x7721('0xc')](_0x5ed54,_0x25a628),_0x5ed54[_0x7721('0x6')][_0x5ed94b][_0x7721('0x2b')]*0x3e8);_0x5ed54[_0x7721('0x8')][_0x25a628][_0x7721('0x2c')]=moment()[_0x7721('0x2d')](_0x7721('0x2e'));_0x5ed54[_0x7721('0x8')][_0x25a628]['uniqueid']=_0x4b183e;_0x5ed54[_0x7721('0x8')][_0x25a628][_0x7721('0x2f')]=_0x5ed94b;_0x5ed54['timers'][_0x25a628]['updateAcw']=function(){var _0xfde9ec=getDiff(_0x5ed54[_0x7721('0x8')][_0x25a628]['lastPauseAt']);clearTimeout(_0x5ed54[_0x7721('0x8')][_0x25a628][_0x7721('0x30')]);_0x5ed54[_0x7721('0x8')][_0x25a628]['timer']=![];RpcVoiceAgentReport[_0x7721('0x31')]({'acwtime':_0xfde9ec},_0x5ed54[_0x7721('0x8')][_0x25a628][_0x7721('0x32')],_0x25a628)[_0x7721('0x29')](function(_0xc0f3c4){logger['info'](_0x7721('0x33'),_0x4b183e,_0xfde9ec,_0xc0f3c4);})[_0x7721('0x34')](function(_0xb2386d){logger['error'](_0x7721('0x35'),_0x4b183e,_0xb2386d);});delete _0x5ed54[_0x7721('0x8')][_0x25a628];};}});}else{logger['info'](_0x7721('0x36'),_0x4b183e,_0x25a628,_0x5ed94b);}});}})['catch'](function(_0x2d6ba0){logger[_0x7721('0x37')](_0x7721('0x2a'),_0x4b183e,_0x5ed54[_0x7721('0x6')][_0x5ed94b][_0x7721('0x2b')],_0x25a628,_0x5ed94b);})[_0x7721('0x38')](function(){delete _0x5ed54[_0x7721('0x9')][_0x4b183e];});}catch(_0x15545a){logger[_0x7721('0x37')](_0x7721('0x39'),_0x15545a[_0x7721('0x3a')]);}};Acw['prototype'][_0x7721('0x3b')]=function(_0x5e6663){try{var _0x212384=this;if(_0x212384[_0x7721('0x8')][_0x5e6663]){_0x212384[_0x7721('0x8')][_0x5e6663][_0x7721('0x30')]=![];var _0x3968f3=_0x212384[_0x7721('0x8')][_0x5e6663]['uniqueid'];var _0x557c34=_0x212384['timers'][_0x5e6663]['queue'];var _0x18001c=_0x212384[_0x7721('0x6')][_0x557c34][_0x7721('0x2b')];logger[_0x7721('0x24')]('[TIMER][STOP][AGENT:%s]',_0x5e6663);RpcUser[_0x7721('0x3c')](this['agents'][_0x5e6663]);RpcVoiceAgentReport[_0x7721('0x31')]({'acwtime':_0x18001c,'agentacw':!![]},_0x3968f3,_0x5e6663)[_0x7721('0x29')](function(_0x5a278e){logger[_0x7721('0x24')](_0x7721('0x33'),_0x3968f3,_0x18001c,_0x5a278e);})['catch'](function(_0x4d0111){logger[_0x7721('0x37')](_0x7721('0x35'),_0x3968f3,_0x4d0111);});}else{logger[_0x7721('0x37')](_0x7721('0x3d'),_0x5e6663);if(_0x212384['timers']){logger[_0x7721('0x24')](_0x7721('0x3e'),JSON[_0x7721('0x3f')](_0x212384[_0x7721('0x8')]));}}}catch(_0x196051){logger['error'](_0x7721('0x40'),_0x196051['message']);}};Acw[_0x7721('0x41')]['syncAgentConnect']=function(_0x2333b8){try{if(this[_0x7721('0x6')][_0x2333b8[_0x7721('0x2f')]]&&(this['voiceQueues'][_0x2333b8[_0x7721('0x2f')]][_0x7721('0x4')]||this[_0x7721('0x6')][_0x2333b8['queue']][_0x7721('0x1e')])){if(this[_0x7721('0x7')][_0x2333b8[_0x7721('0x1c')]]){this[_0x7721('0x9')][_0x2333b8[_0x7721('0x32')]]={'queue':_0x2333b8[_0x7721('0x2f')],'interface':_0x2333b8[_0x7721('0x1c')],'destlinkedid':_0x2333b8['destlinkedid']};}}}catch(_0x479698){logger[_0x7721('0x37')](_0x7721('0x42'),_0x479698[_0x7721('0x3a')]);}};Acw[_0x7721('0x41')][_0x7721('0x18')]=function(_0x15181b){try{if(this[_0x7721('0x6')][_0x15181b[_0x7721('0x2f')]]&&(this[_0x7721('0x6')][_0x15181b[_0x7721('0x2f')]]['acw']||this['voiceQueues'][_0x15181b[_0x7721('0x2f')]][_0x7721('0x1e')])){if(this[_0x7721('0x7')][_0x15181b[_0x7721('0x1c')]]){this['channels'][_0x15181b[_0x7721('0x32')]]={'queue':_0x15181b[_0x7721('0x2f')],'interface':_0x15181b['interface']};}}}catch(_0x330fac){logger['error'](_0x7721('0x43'),_0x330fac['message']);}};Acw[_0x7721('0x41')][_0x7721('0xe')]=function(_0xf17c40){try{if(this['channels'][_0xf17c40[_0x7721('0x32')]]&&_[_0x7721('0x44')](this['channels'][_0xf17c40[_0x7721('0x32')]][_0x7721('0x26')])){logger[_0x7721('0x24')]('[%s][HANGUP:UNIQUEID]',_0xf17c40[_0x7721('0x32')]);this['startAcw'](_0xf17c40[_0x7721('0x32')]);}else if(this[_0x7721('0x9')][_0xf17c40[_0x7721('0x45')]]&&_[_0x7721('0x44')](this[_0x7721('0x9')][_0xf17c40[_0x7721('0x45')]][_0x7721('0x26')])){logger[_0x7721('0x24')](_0x7721('0x46'),_0xf17c40[_0x7721('0x45')]);this[_0x7721('0x47')](_0xf17c40[_0x7721('0x45')]);}}catch(_0x24b17d){logger[_0x7721('0x37')](_0x7721('0x48'),_0x24b17d['message']);}};Acw[_0x7721('0x41')][_0x7721('0x10')]=function(_0x8e1214){try{if(this[_0x7721('0x9')][_0x8e1214[_0x7721('0x32')]]&&this[_0x7721('0x9')][_0x8e1214[_0x7721('0x32')]]['attended']){logger[_0x7721('0x24')](_0x7721('0x49'),_0x8e1214[_0x7721('0x32')]);this[_0x7721('0x47')](_0x8e1214[_0x7721('0x32')]);}else if(this[_0x7721('0x9')][_0x8e1214[_0x7721('0x45')]]&&this[_0x7721('0x9')][_0x8e1214[_0x7721('0x45')]][_0x7721('0x26')]){logger[_0x7721('0x24')]('[%s][HANGUPATTENDEDTRANSFER:LINKEDID]',_0x8e1214[_0x7721('0x45')]);this[_0x7721('0x47')](_0x8e1214[_0x7721('0x45')]);}}catch(_0x2ee3c0){logger[_0x7721('0x37')](_0x7721('0x4a'),_0x2ee3c0[_0x7721('0x3a')]);}};Acw[_0x7721('0x41')][_0x7721('0x14')]=function(_0x287452){try{if(!_[_0x7721('0x4b')](this[_0x7721('0x9')][_0x287452[_0x7721('0x4c')]])){this[_0x7721('0x47')](_0x287452[_0x7721('0x4c')]);if(this['channels'][_0x287452['secondtransfereruniqueid']]){this['channels'][_0x287452[_0x7721('0x4d')]]['attended']=!![];this['channels'][_0x287452['transfertargetuniqueid']]=this['channels'][_0x287452[_0x7721('0x4d')]];delete this[_0x7721('0x9')][_0x287452[_0x7721('0x4d')]];}}else if(!_['isNil'](this[_0x7721('0x9')][_0x287452['transfertargetuniqueid']])){this['startAcw'](_0x287452['transfertargetuniqueid']);if(this[_0x7721('0x9')][_0x287452['origtransfereruniqueid']]){this['channels'][_0x287452['origtransfereruniqueid']][_0x7721('0x26')]=!![];this[_0x7721('0x9')][_0x287452[_0x7721('0x4c')]]=this['channels'][_0x287452[_0x7721('0x4e')]];delete this[_0x7721('0x9')][_0x287452[_0x7721('0x4e')]];}}}catch(_0x168343){logger[_0x7721('0x37')](_0x7721('0x4f'),_0x168343[_0x7721('0x3a')]);}};Acw[_0x7721('0x41')][_0x7721('0x16')]=function(_0x197b73){try{if(this[_0x7721('0x9')][_0x197b73[_0x7721('0x50')]]){logger[_0x7721('0x24')](_0x7721('0x51'),JSON[_0x7721('0x3f')](_0x197b73['transfereruniqueid']));this[_0x7721('0x47')](_0x197b73[_0x7721('0x50')]);}else if(this[_0x7721('0x9')][_0x197b73[_0x7721('0x52')]]){logger['info'](_0x7721('0x53'),JSON[_0x7721('0x3f')](_0x197b73['transfererlinkedid']));this[_0x7721('0x47')](_0x197b73['transfererlinkedid']);}}catch(_0x1f508d){logger[_0x7721('0x37')](_0x7721('0x54'),_0x1f508d[_0x7721('0x3a')]);}};Acw[_0x7721('0x41')][_0x7721('0x12')]=function(_0x3121e0){try{if(this[_0x7721('0x6')][_0x3121e0[_0x7721('0x2f')]]&&this['voiceQueues'][_0x3121e0[_0x7721('0x2f')]][_0x7721('0x55')]===_0x7721('0x56')){if(this[_0x7721('0x7')][_0x3121e0[_0x7721('0x1c')]]){logger[_0x7721('0x24')](_0x7721('0x57'),_0x3121e0['uniqueid'],_0x3121e0[_0x7721('0x1c')],_0x3121e0[_0x7721('0x2f')]);return RpcUser['savePause'](this[_0x7721('0x7')][_0x3121e0['interface']],_0x7721('0x58'),_0x3121e0[_0x7721('0x32')]);}}}catch(_0x4282ba){logger[_0x7721('0x37')](_0x7721('0x59'),_0x4282ba[_0x7721('0x3a')]);}};module[_0x7721('0x5a')]=Acw;