Built motion from commit 19a84241.|2.5.34
[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 _0x173a=['lodash','../ami','../rpc/user','../rpc/voiceAgentReport','voiceQueues','agents','timers','syncAgentConnect','bind','hanguprequest','syncHangupRequest','syncHangup','syncAgentRingNoAnswer','attendedtransfer','syncAttendedTransfer','syncBlindTransfer','custom:agentConnectPreview','syncAgentConnectPreview','milliseconds','diff','seconds','prototype','channels','ACW','mandatoryDisposition','mandatoryDispositionPause','name','Action','QueuePause','then','voicePause','info','[%s][START][AGENT:%s][QUEUE:%s]','attended','destlinkedid','savePause','acwTimeout','timer','queue','updateAcw','lastPauseAt','update','uniqueid','[%s][UPDATE][ACWTIME:%s]','catch','error','[%s][UPDATE][ERRORS:%s]','[%s][TIMER:%s][AGENT:%s][QUEUE:%s]','finally','message','[%s][TIMER][STOP][AGENT:%s]','[ACW][STOP]\x20Interface\x20%s\x20doesn\x27t\x20have\x20timer','[ACW][TIMERS]','acw','interface','[ACW][syncAgentConnect]\x20%s','[ACW][syncAgentConnectPreview]\x20%s','isUndefined','[%s][HANGUP:UNIQUEID]','startAcw','linkedid','[%s][HANGUP:LINKEDID]','[ACW][syncHangupRequest]\x20%s','[%s][HANGUPATTENDEDTRANSFER:UNIQUEID]','[%s][HANGUPATTENDEDTRANSFER:LINKEDID]','[ACW][syncHangup]\x20%s','transfereeuniqueid','secondtransfereruniqueid','transfertargetuniqueid','isNil','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','util'];(function(_0x413727,_0x17adb1){var _0x5f46d7=function(_0xbb668e){while(--_0xbb668e){_0x413727['push'](_0x413727['shift']());}};_0x5f46d7(++_0x17adb1);}(_0x173a,0x19e));var _0xa173=function(_0x56ea6e,_0x2170b4){_0x56ea6e=_0x56ea6e-0x0;var _0xb32d2c=_0x173a[_0x56ea6e];return _0xb32d2c;};'use strict';var util=require(_0xa173('0x0'));var _=require(_0xa173('0x1'));var moment=require('moment');var ami=require(_0xa173('0x2'));var logger=require('../../../config/logger')('acw');var RpcUser=require(_0xa173('0x3'));var RpcVoiceAgentReport=require(_0xa173('0x4'));function Acw(_0x18c464){this[_0xa173('0x5')]=_0x18c464[_0xa173('0x5')];this['agents']=_0x18c464[_0xa173('0x6')];this[_0xa173('0x7')]=_0x18c464[_0xa173('0x7')];this['channels']={};ami['on']('agentconnect',this[_0xa173('0x8')][_0xa173('0x9')](this));ami['on'](_0xa173('0xa'),this[_0xa173('0xb')][_0xa173('0x9')](this));ami['on']('hangup',this[_0xa173('0xc')][_0xa173('0x9')](this));ami['on']('agentringnoanswer',this[_0xa173('0xd')][_0xa173('0x9')](this));ami['on'](_0xa173('0xe'),this[_0xa173('0xf')][_0xa173('0x9')](this));ami['on']('blindtransfer',this[_0xa173('0x10')][_0xa173('0x9')](this));ami['on'](_0xa173('0x11'),this[_0xa173('0x12')]['bind'](this));}function getDiff(_0x23d7a2){var _0x1769e7=moment()[_0xa173('0x13')](0x0);var _0x2a0c46=moment(_0x23d7a2)['milliseconds'](0x0);return _0x1769e7[_0xa173('0x14')](_0x2a0c46,_0xa173('0x15'));}Acw[_0xa173('0x16')]['startAcw']=function(_0x762e6){try{var _0x409d44=this;var _0x498b41=this[_0xa173('0x17')][_0x762e6]['interface'];var _0x465b97=this[_0xa173('0x17')][_0x762e6]['queue'];var _0x575ccf=this[_0xa173('0x5')][_0x465b97];var _0x380740=![];var _0x2721f0=_0xa173('0x18');if(_0x575ccf[_0xa173('0x19')]){if(_0x575ccf['mandatoryDispositionPause']['name']){_0x380740=!![];_0x2721f0=_0x575ccf[_0xa173('0x1a')][_0xa173('0x1b')];}}ami[_0xa173('0x1c')]({'action':_0xa173('0x1d'),'interface':_0x498b41,'paused':!![],'reason':_0x2721f0})[_0xa173('0x1e')](function(_0x5eb363){if(_0x409d44[_0xa173('0x6')][_0x498b41]){return RpcUser['getAgent'](_0x409d44[_0xa173('0x6')][_0x498b41]['id'])[_0xa173('0x1e')](function(_0xc26825){if(_0xc26825&&!_0xc26825[_0xa173('0x1f')]){logger[_0xa173('0x20')](_0xa173('0x21'),_0x762e6,_0x498b41,_0x465b97);var _0x45223e=_0x409d44[_0xa173('0x17')][_0x762e6][_0xa173('0x22')]&&_0x409d44[_0xa173('0x17')][_0x762e6][_0xa173('0x23')]?_0x409d44['channels'][_0x762e6][_0xa173('0x23')]:_0x762e6;return RpcUser[_0xa173('0x24')](_0x409d44[_0xa173('0x6')][_0x498b41],_0x2721f0,_0x45223e)['then'](function(_0x371014){if(!_0x380740){_0x409d44[_0xa173('0x7')][_0x498b41]={};logger[_0xa173('0x20')]('[%s][TIMER:%s][AGENT:%s][QUEUE:%s]',_0x762e6,_0x409d44[_0xa173('0x5')][_0x465b97][_0xa173('0x25')],_0x498b41,_0x465b97);_0x409d44[_0xa173('0x7')][_0x498b41][_0xa173('0x26')]=setTimeout(_0x409d44['stopAcw'][_0xa173('0x9')](_0x409d44,_0x498b41),_0x409d44[_0xa173('0x5')][_0x465b97][_0xa173('0x25')]*0x3e8);_0x409d44['timers'][_0x498b41]['lastPauseAt']=moment()['format']('YYYY-MM-DD\x20HH:mm:ss');_0x409d44[_0xa173('0x7')][_0x498b41]['uniqueid']=_0x762e6;_0x409d44[_0xa173('0x7')][_0x498b41][_0xa173('0x27')]=_0x465b97;_0x409d44[_0xa173('0x7')][_0x498b41][_0xa173('0x28')]=function(){var _0x4e0ff1=getDiff(_0x409d44['timers'][_0x498b41][_0xa173('0x29')]);clearTimeout(_0x409d44[_0xa173('0x7')][_0x498b41]['timer']);_0x409d44[_0xa173('0x7')][_0x498b41][_0xa173('0x26')]=![];RpcVoiceAgentReport[_0xa173('0x2a')]({'acwtime':_0x4e0ff1},_0x409d44[_0xa173('0x7')][_0x498b41][_0xa173('0x2b')],_0x498b41)['then'](function(_0x3819cb){logger[_0xa173('0x20')](_0xa173('0x2c'),_0x762e6,_0x4e0ff1,_0x3819cb);})[_0xa173('0x2d')](function(_0x1e4796){logger[_0xa173('0x2e')](_0xa173('0x2f'),_0x762e6,_0x1e4796);});delete _0x409d44[_0xa173('0x7')][_0x498b41];};}});}else{logger['info']('[%s][INPAUSE][AGENT:%s][QUEUE:%s]',_0x762e6,_0x498b41,_0x465b97);}});}})[_0xa173('0x2d')](function(_0x4c5a47){logger['error'](_0xa173('0x30'),_0x762e6,_0x409d44['voiceQueues'][_0x465b97]['acwTimeout'],_0x498b41,_0x465b97);})[_0xa173('0x31')](function(){delete _0x409d44[_0xa173('0x17')][_0x762e6];});}catch(_0xa0b15e){logger[_0xa173('0x2e')]('[ACW][START]\x20%s',_0xa0b15e[_0xa173('0x32')]);}};Acw[_0xa173('0x16')]['stopAcw']=function(_0x240272){try{var _0x16967b=this;if(_0x16967b[_0xa173('0x7')][_0x240272]){_0x16967b['timers'][_0x240272][_0xa173('0x26')]=![];var _0x4e8a30=_0x16967b[_0xa173('0x7')][_0x240272]['uniqueid'];var _0x409037=_0x16967b[_0xa173('0x7')][_0x240272][_0xa173('0x27')];var _0x288da6=_0x16967b[_0xa173('0x5')][_0x409037][_0xa173('0x25')];logger[_0xa173('0x20')](_0xa173('0x33'),_0x4e8a30,_0x240272);RpcUser['saveUnpause'](this['agents'][_0x240272]);RpcVoiceAgentReport['update']({'acwtime':_0x288da6,'agentacw':!![]},_0x4e8a30,_0x240272)[_0xa173('0x1e')](function(_0x12ad52){logger[_0xa173('0x20')](_0xa173('0x2c'),_0x4e8a30,_0x288da6,_0x12ad52);})[_0xa173('0x2d')](function(_0x1b1fe9){logger[_0xa173('0x2e')](_0xa173('0x2f'),_0x4e8a30,_0x1b1fe9);});}else{logger['error'](_0xa173('0x34'),_0x240272);if(_0x16967b[_0xa173('0x7')]){logger[_0xa173('0x20')](_0xa173('0x35'),JSON['stringify'](_0x16967b[_0xa173('0x7')]));}}}catch(_0x159373){logger['error']('[ACW][STOP]\x20%s',_0x159373[_0xa173('0x32')]);}};Acw[_0xa173('0x16')][_0xa173('0x8')]=function(_0x58cc45){try{if(this[_0xa173('0x5')][_0x58cc45['queue']]&&(this[_0xa173('0x5')][_0x58cc45[_0xa173('0x27')]][_0xa173('0x36')]||this[_0xa173('0x5')][_0x58cc45[_0xa173('0x27')]][_0xa173('0x19')])){if(this[_0xa173('0x6')][_0x58cc45['interface']]){this[_0xa173('0x17')][_0x58cc45[_0xa173('0x2b')]]={'queue':_0x58cc45[_0xa173('0x27')],'interface':_0x58cc45[_0xa173('0x37')],'destlinkedid':_0x58cc45['destlinkedid']};}}}catch(_0x53515a){logger[_0xa173('0x2e')](_0xa173('0x38'),_0x53515a[_0xa173('0x32')]);}};Acw[_0xa173('0x16')][_0xa173('0x12')]=function(_0x216b2f){try{if(this[_0xa173('0x5')][_0x216b2f[_0xa173('0x27')]]&&(this[_0xa173('0x5')][_0x216b2f[_0xa173('0x27')]]['acw']||this[_0xa173('0x5')][_0x216b2f['queue']][_0xa173('0x19')])){if(this[_0xa173('0x6')][_0x216b2f['interface']]){this[_0xa173('0x17')][_0x216b2f[_0xa173('0x2b')]]={'queue':_0x216b2f[_0xa173('0x27')],'interface':_0x216b2f['interface']};}}}catch(_0x574a7c){logger['error'](_0xa173('0x39'),_0x574a7c[_0xa173('0x32')]);}};Acw['prototype']['syncHangupRequest']=function(_0x100405){try{if(this[_0xa173('0x17')][_0x100405['uniqueid']]&&_[_0xa173('0x3a')](this[_0xa173('0x17')][_0x100405[_0xa173('0x2b')]]['attended'])){logger[_0xa173('0x20')](_0xa173('0x3b'),_0x100405[_0xa173('0x2b')]);this[_0xa173('0x3c')](_0x100405[_0xa173('0x2b')]);}else if(this['channels'][_0x100405[_0xa173('0x3d')]]&&_['isUndefined'](this[_0xa173('0x17')][_0x100405[_0xa173('0x3d')]][_0xa173('0x22')])){logger[_0xa173('0x20')](_0xa173('0x3e'),_0x100405[_0xa173('0x3d')]);this['startAcw'](_0x100405['linkedid']);}}catch(_0x581ff4){logger[_0xa173('0x2e')](_0xa173('0x3f'),_0x581ff4[_0xa173('0x32')]);}};Acw[_0xa173('0x16')][_0xa173('0xc')]=function(_0x167c83){try{if(this['channels'][_0x167c83[_0xa173('0x2b')]]&&this['channels'][_0x167c83[_0xa173('0x2b')]][_0xa173('0x22')]){logger[_0xa173('0x20')](_0xa173('0x40'),_0x167c83[_0xa173('0x2b')]);this[_0xa173('0x3c')](_0x167c83[_0xa173('0x2b')]);}else if(this['channels'][_0x167c83[_0xa173('0x3d')]]&&this[_0xa173('0x17')][_0x167c83['linkedid']][_0xa173('0x22')]){logger[_0xa173('0x20')](_0xa173('0x41'),_0x167c83['linkedid']);this['startAcw'](_0x167c83['linkedid']);}}catch(_0x1bd60e){logger[_0xa173('0x2e')](_0xa173('0x42'),_0x1bd60e[_0xa173('0x32')]);}};Acw[_0xa173('0x16')][_0xa173('0xf')]=function(_0x21bbe1){try{if(!_['isNil'](this[_0xa173('0x17')][_0x21bbe1[_0xa173('0x43')]])){this['startAcw'](_0x21bbe1['transfereeuniqueid']);if(this[_0xa173('0x17')][_0x21bbe1[_0xa173('0x44')]]){this[_0xa173('0x17')][_0x21bbe1[_0xa173('0x44')]]['attended']=!![];this[_0xa173('0x17')][_0x21bbe1[_0xa173('0x45')]]=this[_0xa173('0x17')][_0x21bbe1[_0xa173('0x44')]];delete this['channels'][_0x21bbe1['secondtransfereruniqueid']];}}else if(!_[_0xa173('0x46')](this[_0xa173('0x17')][_0x21bbe1[_0xa173('0x45')]])){this[_0xa173('0x3c')](_0x21bbe1[_0xa173('0x45')]);if(this[_0xa173('0x17')][_0x21bbe1[_0xa173('0x47')]]){this[_0xa173('0x17')][_0x21bbe1[_0xa173('0x47')]][_0xa173('0x22')]=!![];this[_0xa173('0x17')][_0x21bbe1['transfereeuniqueid']]=this[_0xa173('0x17')][_0x21bbe1[_0xa173('0x47')]];delete this[_0xa173('0x17')][_0x21bbe1['origtransfereruniqueid']];}}}catch(_0x650db3){logger['error'](_0xa173('0x48'),_0x650db3['message']);}};Acw[_0xa173('0x16')][_0xa173('0x10')]=function(_0x39bec0){try{if(this[_0xa173('0x17')][_0x39bec0[_0xa173('0x49')]]){logger['info'](_0xa173('0x4a'),JSON[_0xa173('0x4b')](_0x39bec0[_0xa173('0x49')]));this[_0xa173('0x3c')](_0x39bec0[_0xa173('0x49')]);}else if(this[_0xa173('0x17')][_0x39bec0[_0xa173('0x4c')]]){logger[_0xa173('0x20')](_0xa173('0x4d'),JSON[_0xa173('0x4b')](_0x39bec0[_0xa173('0x4c')]));this['startAcw'](_0x39bec0[_0xa173('0x4c')]);}}catch(_0x2611b1){logger[_0xa173('0x2e')](_0xa173('0x4e'),_0x2611b1[_0xa173('0x32')]);}};Acw[_0xa173('0x16')][_0xa173('0xd')]=function(_0x3d9a2a){try{if(this[_0xa173('0x5')][_0x3d9a2a['queue']]&&this[_0xa173('0x5')][_0x3d9a2a[_0xa173('0x27')]][_0xa173('0x4f')]===_0xa173('0x50')){if(this[_0xa173('0x6')][_0x3d9a2a[_0xa173('0x37')]]){logger[_0xa173('0x20')](_0xa173('0x51'),_0x3d9a2a[_0xa173('0x2b')],_0x3d9a2a[_0xa173('0x37')],_0x3d9a2a['queue']);return RpcUser[_0xa173('0x24')](this['agents'][_0x3d9a2a[_0xa173('0x37')]],'Auto-Pause',_0x3d9a2a['uniqueid']);}}}catch(_0x31758a){logger[_0xa173('0x2e')](_0xa173('0x52'),_0x31758a[_0xa173('0x32')]);}};module['exports']=Acw;