Built motion from commit (unavailable).|2.5.8
[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 _0xda55=['[ACW][syncHangupRequest]\x20%s','[%s][HANGUPATTENDEDTRANSFER:UNIQUEID]','[%s][HANGUPATTENDEDTRANSFER:LINKEDID]','[ACW][syncHangup]\x20%s','isNil','transfereeuniqueid','secondtransfereruniqueid','transfertargetuniqueid','origtransfereruniqueid','[ACW][syncAttendedTransfer]\x20%s','transfereruniqueid','[%s][BLINDTRANSFER:UNIQUEID]','stringify','transfererlinkedid','[ACW][syncBlindTransfer]\x20%s','autopause','all','Auto-Pause','[ACW][syncAgentRingNoAnswer]\x20%s','util','lodash','../../../config/logger','acw','../rpc/user','../rpc/voiceAgentReport','voiceQueues','agents','timers','channels','agentconnect','syncAgentConnect','bind','hanguprequest','syncHangupRequest','syncHangup','agentringnoanswer','syncAgentRingNoAnswer','attendedtransfer','syncAttendedTransfer','blindtransfer','syncBlindTransfer','custom:agentConnectPreview','syncAgentConnectPreview','milliseconds','seconds','prototype','startAcw','queue','ACW','mandatoryDisposition','mandatoryDispositionPause','name','Action','QueuePause','then','getAgent','voicePause','[%s][START][AGENT:%s][QUEUE:%s]','attended','destlinkedid','savePause','info','acwTimeout','stopAcw','lastPauseAt','format','YYYY-MM-DD\x20HH:mm:ss','uniqueid','timer','[%s][UPDATE][ACWTIME:%s]','catch','error','[%s][UPDATE][ERRORS:%s]','[%s][INPAUSE][AGENT:%s][QUEUE:%s]','[%s][TIMER:%s][AGENT:%s][QUEUE:%s]','finally','[ACW][START]\x20%s','message','[TIMER][STOP][AGENT:%s]','update','[ACW][STOP]\x20Interface\x20%s\x20doesn\x27t\x20have\x20timer','[ACW][TIMERS]','[ACW][STOP]\x20%s','interface','[ACW][syncAgentConnect]\x20%s','[ACW][syncAgentConnectPreview]\x20%s','isUndefined','[%s][HANGUP:UNIQUEID]','linkedid','[%s][HANGUP:LINKEDID]'];(function(_0x367361,_0x311488){var _0x195d2d=function(_0x2b20a4){while(--_0x2b20a4){_0x367361['push'](_0x367361['shift']());}};_0x195d2d(++_0x311488);}(_0xda55,0x6d));var _0x5da5=function(_0x23e26c,_0x501919){_0x23e26c=_0x23e26c-0x0;var _0x5deb1b=_0xda55[_0x23e26c];return _0x5deb1b;};'use strict';var util=require(_0x5da5('0x0'));var _=require(_0x5da5('0x1'));var moment=require('moment');var ami=require('../ami');var logger=require(_0x5da5('0x2'))(_0x5da5('0x3'));var RpcUser=require(_0x5da5('0x4'));var RpcVoiceAgentReport=require(_0x5da5('0x5'));function Acw(_0x1c3afd){this['voiceQueues']=_0x1c3afd[_0x5da5('0x6')];this['agents']=_0x1c3afd[_0x5da5('0x7')];this['timers']=_0x1c3afd[_0x5da5('0x8')];this[_0x5da5('0x9')]={};ami['on'](_0x5da5('0xa'),this[_0x5da5('0xb')][_0x5da5('0xc')](this));ami['on'](_0x5da5('0xd'),this[_0x5da5('0xe')][_0x5da5('0xc')](this));ami['on']('hangup',this[_0x5da5('0xf')][_0x5da5('0xc')](this));ami['on'](_0x5da5('0x10'),this[_0x5da5('0x11')][_0x5da5('0xc')](this));ami['on'](_0x5da5('0x12'),this[_0x5da5('0x13')]['bind'](this));ami['on'](_0x5da5('0x14'),this[_0x5da5('0x15')]['bind'](this));ami['on'](_0x5da5('0x16'),this[_0x5da5('0x17')][_0x5da5('0xc')](this));}function getDiff(_0x43d526){var _0x1877d4=moment()[_0x5da5('0x18')](0x0);var _0x481562=moment(_0x43d526)['milliseconds'](0x0);return _0x1877d4['diff'](_0x481562,_0x5da5('0x19'));}Acw[_0x5da5('0x1a')][_0x5da5('0x1b')]=function(_0x665ce8){try{var _0x11bd3=this;var _0x134afa=this[_0x5da5('0x9')][_0x665ce8]['interface'];var _0x124dc5=this[_0x5da5('0x9')][_0x665ce8][_0x5da5('0x1c')];var _0x16b11f=this[_0x5da5('0x6')][_0x124dc5];var _0x428b07=![];var _0x547c58=_0x5da5('0x1d');if(_0x16b11f[_0x5da5('0x1e')]){if(_0x16b11f[_0x5da5('0x1f')][_0x5da5('0x20')]){_0x428b07=!![];_0x547c58=_0x16b11f[_0x5da5('0x1f')]['name'];}}ami[_0x5da5('0x21')]({'action':_0x5da5('0x22'),'interface':_0x134afa,'paused':!![],'reason':_0x547c58})[_0x5da5('0x23')](function(_0x560ea7){if(_0x11bd3[_0x5da5('0x7')][_0x134afa]){return RpcUser[_0x5da5('0x24')](_0x11bd3[_0x5da5('0x7')][_0x134afa]['id'])[_0x5da5('0x23')](function(_0xec69f2){if(_0xec69f2&&!_0xec69f2[_0x5da5('0x25')]){logger['info'](_0x5da5('0x26'),_0x665ce8,_0x134afa,_0x124dc5);var _0x568ddf=_0x11bd3[_0x5da5('0x9')][_0x665ce8][_0x5da5('0x27')]&&_0x11bd3[_0x5da5('0x9')][_0x665ce8]['destlinkedid']?_0x11bd3[_0x5da5('0x9')][_0x665ce8][_0x5da5('0x28')]:_0x665ce8;return RpcUser[_0x5da5('0x29')](_0x11bd3[_0x5da5('0x7')][_0x134afa],_0x547c58,_0x568ddf)['then'](function(_0x5b0b43){if(!_0x428b07){_0x11bd3['timers'][_0x134afa]={};logger[_0x5da5('0x2a')]('[%s][TIMER:%s][AGENT:%s][QUEUE:%s]',_0x665ce8,_0x11bd3['voiceQueues'][_0x124dc5][_0x5da5('0x2b')],_0x134afa,_0x124dc5);_0x11bd3[_0x5da5('0x8')][_0x134afa]['timer']=setTimeout(_0x11bd3[_0x5da5('0x2c')][_0x5da5('0xc')](_0x11bd3,_0x134afa),_0x11bd3['voiceQueues'][_0x124dc5][_0x5da5('0x2b')]*0x3e8);_0x11bd3[_0x5da5('0x8')][_0x134afa][_0x5da5('0x2d')]=moment()[_0x5da5('0x2e')](_0x5da5('0x2f'));_0x11bd3['timers'][_0x134afa][_0x5da5('0x30')]=_0x665ce8;_0x11bd3[_0x5da5('0x8')][_0x134afa][_0x5da5('0x1c')]=_0x124dc5;_0x11bd3[_0x5da5('0x8')][_0x134afa]['updateAcw']=function(){var _0x5ee7f2=getDiff(_0x11bd3['timers'][_0x134afa][_0x5da5('0x2d')]);clearTimeout(_0x11bd3[_0x5da5('0x8')][_0x134afa][_0x5da5('0x31')]);_0x11bd3[_0x5da5('0x8')][_0x134afa]['timer']=![];RpcVoiceAgentReport['update']({'acwtime':_0x5ee7f2},_0x11bd3[_0x5da5('0x8')][_0x134afa]['uniqueid'],_0x134afa)['then'](function(_0x2dd4b6){logger['info'](_0x5da5('0x32'),_0x665ce8,_0x5ee7f2,_0x2dd4b6);})[_0x5da5('0x33')](function(_0x33f138){logger[_0x5da5('0x34')](_0x5da5('0x35'),_0x665ce8,_0x33f138);});delete _0x11bd3[_0x5da5('0x8')][_0x134afa];};}});}else{logger[_0x5da5('0x2a')](_0x5da5('0x36'),_0x665ce8,_0x134afa,_0x124dc5);}});}})['catch'](function(_0x231e8c){logger['error'](_0x5da5('0x37'),_0x665ce8,_0x11bd3[_0x5da5('0x6')][_0x124dc5][_0x5da5('0x2b')],_0x134afa,_0x124dc5);})[_0x5da5('0x38')](function(){delete _0x11bd3[_0x5da5('0x9')][_0x665ce8];});}catch(_0x9aba42){logger[_0x5da5('0x34')](_0x5da5('0x39'),_0x9aba42[_0x5da5('0x3a')]);}};Acw[_0x5da5('0x1a')][_0x5da5('0x2c')]=function(_0x33429f){try{var _0x3ba804=this;if(_0x3ba804['timers'][_0x33429f]){_0x3ba804[_0x5da5('0x8')][_0x33429f]['timer']=![];var _0x2d6280=_0x3ba804[_0x5da5('0x8')][_0x33429f][_0x5da5('0x30')];var _0x24842c=_0x3ba804['timers'][_0x33429f][_0x5da5('0x1c')];var _0x2f2596=_0x3ba804[_0x5da5('0x6')][_0x24842c]['acwTimeout'];logger[_0x5da5('0x2a')](_0x5da5('0x3b'),_0x33429f);RpcUser['saveUnpause'](this[_0x5da5('0x7')][_0x33429f]);RpcVoiceAgentReport[_0x5da5('0x3c')]({'acwtime':_0x2f2596,'agentacw':!![]},_0x2d6280,_0x33429f)[_0x5da5('0x23')](function(_0x38a974){logger[_0x5da5('0x2a')](_0x5da5('0x32'),_0x2d6280,_0x2f2596,_0x38a974);})['catch'](function(_0x1ab02){logger[_0x5da5('0x34')](_0x5da5('0x35'),_0x2d6280,_0x1ab02);});}else{logger[_0x5da5('0x34')](_0x5da5('0x3d'),_0x33429f);if(_0x3ba804['timers']){logger[_0x5da5('0x2a')](_0x5da5('0x3e'),JSON['stringify'](_0x3ba804[_0x5da5('0x8')]));}}}catch(_0x5643e7){logger['error'](_0x5da5('0x3f'),_0x5643e7[_0x5da5('0x3a')]);}};Acw[_0x5da5('0x1a')][_0x5da5('0xb')]=function(_0x52b618){try{if(this[_0x5da5('0x6')][_0x52b618[_0x5da5('0x1c')]]&&(this[_0x5da5('0x6')][_0x52b618[_0x5da5('0x1c')]][_0x5da5('0x3')]||this[_0x5da5('0x6')][_0x52b618[_0x5da5('0x1c')]][_0x5da5('0x1e')])){if(this[_0x5da5('0x7')][_0x52b618[_0x5da5('0x40')]]){this[_0x5da5('0x9')][_0x52b618[_0x5da5('0x30')]]={'queue':_0x52b618[_0x5da5('0x1c')],'interface':_0x52b618[_0x5da5('0x40')],'destlinkedid':_0x52b618[_0x5da5('0x28')]};}}}catch(_0x59acfe){logger['error'](_0x5da5('0x41'),_0x59acfe[_0x5da5('0x3a')]);}};Acw['prototype'][_0x5da5('0x17')]=function(_0x1a188b){try{if(this[_0x5da5('0x6')][_0x1a188b[_0x5da5('0x1c')]]&&(this[_0x5da5('0x6')][_0x1a188b[_0x5da5('0x1c')]][_0x5da5('0x3')]||this[_0x5da5('0x6')][_0x1a188b[_0x5da5('0x1c')]][_0x5da5('0x1e')])){if(this['agents'][_0x1a188b[_0x5da5('0x40')]]){this['channels'][_0x1a188b['uniqueid']]={'queue':_0x1a188b[_0x5da5('0x1c')],'interface':_0x1a188b[_0x5da5('0x40')]};}}}catch(_0x455caf){logger[_0x5da5('0x34')](_0x5da5('0x42'),_0x455caf[_0x5da5('0x3a')]);}};Acw['prototype'][_0x5da5('0xe')]=function(_0x536ca2){try{if(this['channels'][_0x536ca2[_0x5da5('0x30')]]&&_[_0x5da5('0x43')](this['channels'][_0x536ca2[_0x5da5('0x30')]][_0x5da5('0x27')])){logger[_0x5da5('0x2a')](_0x5da5('0x44'),_0x536ca2[_0x5da5('0x30')]);this['startAcw'](_0x536ca2[_0x5da5('0x30')]);}else if(this['channels'][_0x536ca2['linkedid']]&&_[_0x5da5('0x43')](this['channels'][_0x536ca2[_0x5da5('0x45')]][_0x5da5('0x27')])){logger[_0x5da5('0x2a')](_0x5da5('0x46'),_0x536ca2[_0x5da5('0x45')]);this[_0x5da5('0x1b')](_0x536ca2['linkedid']);}}catch(_0x5cb8d8){logger[_0x5da5('0x34')](_0x5da5('0x47'),_0x5cb8d8['message']);}};Acw['prototype'][_0x5da5('0xf')]=function(_0x4c1321){try{if(this[_0x5da5('0x9')][_0x4c1321['uniqueid']]&&this['channels'][_0x4c1321[_0x5da5('0x30')]][_0x5da5('0x27')]){logger[_0x5da5('0x2a')](_0x5da5('0x48'),_0x4c1321['uniqueid']);this[_0x5da5('0x1b')](_0x4c1321[_0x5da5('0x30')]);}else if(this[_0x5da5('0x9')][_0x4c1321['linkedid']]&&this[_0x5da5('0x9')][_0x4c1321[_0x5da5('0x45')]][_0x5da5('0x27')]){logger[_0x5da5('0x2a')](_0x5da5('0x49'),_0x4c1321[_0x5da5('0x45')]);this[_0x5da5('0x1b')](_0x4c1321[_0x5da5('0x45')]);}}catch(_0x3d1a54){logger[_0x5da5('0x34')](_0x5da5('0x4a'),_0x3d1a54[_0x5da5('0x3a')]);}};Acw[_0x5da5('0x1a')][_0x5da5('0x13')]=function(_0xb3a0b0){try{if(!_[_0x5da5('0x4b')](this[_0x5da5('0x9')][_0xb3a0b0[_0x5da5('0x4c')]])){this[_0x5da5('0x1b')](_0xb3a0b0[_0x5da5('0x4c')]);if(this[_0x5da5('0x9')][_0xb3a0b0['secondtransfereruniqueid']]){this[_0x5da5('0x9')][_0xb3a0b0[_0x5da5('0x4d')]]['attended']=!![];this['channels'][_0xb3a0b0['transfertargetuniqueid']]=this[_0x5da5('0x9')][_0xb3a0b0[_0x5da5('0x4d')]];delete this[_0x5da5('0x9')][_0xb3a0b0['secondtransfereruniqueid']];}}else if(!_['isNil'](this[_0x5da5('0x9')][_0xb3a0b0[_0x5da5('0x4e')]])){this[_0x5da5('0x1b')](_0xb3a0b0[_0x5da5('0x4e')]);if(this['channels'][_0xb3a0b0[_0x5da5('0x4f')]]){this[_0x5da5('0x9')][_0xb3a0b0[_0x5da5('0x4f')]]['attended']=!![];this[_0x5da5('0x9')][_0xb3a0b0['transfereeuniqueid']]=this[_0x5da5('0x9')][_0xb3a0b0[_0x5da5('0x4f')]];delete this[_0x5da5('0x9')][_0xb3a0b0[_0x5da5('0x4f')]];}}}catch(_0x12c983){logger[_0x5da5('0x34')](_0x5da5('0x50'),_0x12c983[_0x5da5('0x3a')]);}};Acw[_0x5da5('0x1a')][_0x5da5('0x15')]=function(_0x2f9f72){try{if(this[_0x5da5('0x9')][_0x2f9f72[_0x5da5('0x51')]]){logger[_0x5da5('0x2a')](_0x5da5('0x52'),JSON[_0x5da5('0x53')](_0x2f9f72[_0x5da5('0x51')]));this[_0x5da5('0x1b')](_0x2f9f72[_0x5da5('0x51')]);}else if(this[_0x5da5('0x9')][_0x2f9f72[_0x5da5('0x54')]]){logger['info']('[%s][BLINDTRANSFER:LINKEDID]',JSON[_0x5da5('0x53')](_0x2f9f72[_0x5da5('0x54')]));this[_0x5da5('0x1b')](_0x2f9f72['transfererlinkedid']);}}catch(_0x2ca7b9){logger[_0x5da5('0x34')](_0x5da5('0x55'),_0x2ca7b9[_0x5da5('0x3a')]);}};Acw['prototype'][_0x5da5('0x11')]=function(_0x5f3753){try{if(this[_0x5da5('0x6')][_0x5f3753[_0x5da5('0x1c')]]&&this[_0x5da5('0x6')][_0x5f3753[_0x5da5('0x1c')]][_0x5da5('0x56')]===_0x5da5('0x57')){if(this[_0x5da5('0x7')][_0x5f3753['interface']]){logger['info']('[%s][AUTOPAUSE][AGENT:%s][QUEUE:%]',_0x5f3753[_0x5da5('0x30')],_0x5f3753[_0x5da5('0x40')],_0x5f3753[_0x5da5('0x1c')]);return RpcUser[_0x5da5('0x29')](this[_0x5da5('0x7')][_0x5f3753[_0x5da5('0x40')]],_0x5da5('0x58'),_0x5f3753[_0x5da5('0x30')]);}}}catch(_0x5f4529){logger[_0x5da5('0x34')](_0x5da5('0x59'),_0x5f4529['message']);}};module['exports']=Acw;