Built motion from commit da617fac.|2.6.6
[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 _0x5fb1=['update','catch','[ACW][STOP]\x20Interface\x20%s\x20doesn\x27t\x20have\x20timer','[ACW][TIMERS]','stringify','[ACW][syncAgentConnect]\x20%s','[%s][HANGUP:UNIQUEID]','linkedid','isUndefined','[%s][HANGUP:LINKEDID]','[ACW][syncHangupRequest]\x20%s','[%s][HANGUPATTENDEDTRANSFER:LINKEDID]','[ACW][syncHangup]\x20%s','isNil','transfereeuniqueid','secondtransfereruniqueid','transfertargetuniqueid','origtransfereruniqueid','[ACW][syncAttendedTransfer]\x20%s','syncBlindTransfer','transfereruniqueid','[%s][BLINDTRANSFER:UNIQUEID]','transfererlinkedid','[%s][BLINDTRANSFER:LINKEDID]','[ACW][syncBlindTransfer]\x20%s','autopause','[%s][AUTOPAUSE][AGENT:%s][QUEUE:%]','Auto-Pause','[ACW][syncAgentRingNoAnswer]\x20%s','exports','util','lodash','moment','../../../config/logger','acw','../rpc/voiceAgentReport','voiceQueues','agents','timers','channels','agentconnect','syncAgentConnect','bind','hanguprequest','syncHangupRequest','hangup','syncHangup','agentringnoanswer','syncAgentRingNoAnswer','attendedtransfer','syncAttendedTransfer','custom:agentConnectPreview','syncAgentConnectPreview','milliseconds','diff','seconds','prototype','startAcw','interface','queue','mandatoryDisposition','mandatoryDispositionPause','name','Action','QueuePause','then','getAgent','info','[%s][START][AGENT:%s][QUEUE:%s]','attended','savePause','acwTimeout','timer','stopAcw','lastPauseAt','uniqueid','updateAcw','[%s][UPDATE][ACWTIME:%s]','error','[%s][UPDATE][ERRORS:%s]','[%s][INPAUSE][AGENT:%s][QUEUE:%s]','finally','[ACW][START]\x20%s','message','[%s][TIMER][STOP][AGENT:%s]','saveUnpause'];(function(_0x393ad5,_0x2a7a68){var _0x31f723=function(_0x4877c){while(--_0x4877c){_0x393ad5['push'](_0x393ad5['shift']());}};_0x31f723(++_0x2a7a68);}(_0x5fb1,0x74));var _0x15fb=function(_0x3cae69,_0x233c38){_0x3cae69=_0x3cae69-0x0;var _0x3128eb=_0x5fb1[_0x3cae69];return _0x3128eb;};'use strict';var util=require(_0x15fb('0x0'));var _=require(_0x15fb('0x1'));var moment=require(_0x15fb('0x2'));var ami=require('../ami');var logger=require(_0x15fb('0x3'))(_0x15fb('0x4'));var RpcUser=require('../rpc/user');var RpcVoiceAgentReport=require(_0x15fb('0x5'));function Acw(_0x9be408){this[_0x15fb('0x6')]=_0x9be408[_0x15fb('0x6')];this['agents']=_0x9be408[_0x15fb('0x7')];this[_0x15fb('0x8')]=_0x9be408[_0x15fb('0x8')];this[_0x15fb('0x9')]={};ami['on'](_0x15fb('0xa'),this[_0x15fb('0xb')][_0x15fb('0xc')](this));ami['on'](_0x15fb('0xd'),this[_0x15fb('0xe')][_0x15fb('0xc')](this));ami['on'](_0x15fb('0xf'),this[_0x15fb('0x10')]['bind'](this));ami['on'](_0x15fb('0x11'),this[_0x15fb('0x12')][_0x15fb('0xc')](this));ami['on'](_0x15fb('0x13'),this[_0x15fb('0x14')][_0x15fb('0xc')](this));ami['on']('blindtransfer',this['syncBlindTransfer']['bind'](this));ami['on'](_0x15fb('0x15'),this[_0x15fb('0x16')][_0x15fb('0xc')](this));}function getDiff(_0x11e111){var _0x122ef0=moment()['milliseconds'](0x0);var _0x2430ec=moment(_0x11e111)[_0x15fb('0x17')](0x0);return _0x122ef0[_0x15fb('0x18')](_0x2430ec,_0x15fb('0x19'));}Acw[_0x15fb('0x1a')][_0x15fb('0x1b')]=function(_0x2f461b){try{var _0x200f44=this;var _0x31c714=this[_0x15fb('0x9')][_0x2f461b][_0x15fb('0x1c')];var _0x5e6ca1=this['channels'][_0x2f461b][_0x15fb('0x1d')];var _0xffe5cc=this['voiceQueues'][_0x5e6ca1];var _0x425526=![];var _0x9f0e82='ACW';if(_0xffe5cc[_0x15fb('0x1e')]){if(_0xffe5cc[_0x15fb('0x1f')][_0x15fb('0x20')]){_0x425526=!![];_0x9f0e82=_0xffe5cc[_0x15fb('0x1f')]['name'];}}ami[_0x15fb('0x21')]({'action':_0x15fb('0x22'),'interface':_0x31c714,'paused':!![],'reason':_0x9f0e82})[_0x15fb('0x23')](function(_0x59a7c9){if(_0x200f44[_0x15fb('0x7')][_0x31c714]){return RpcUser[_0x15fb('0x24')](_0x200f44[_0x15fb('0x7')][_0x31c714]['id'])[_0x15fb('0x23')](function(_0x4477e4){if(_0x4477e4&&!_0x4477e4['voicePause']){logger[_0x15fb('0x25')](_0x15fb('0x26'),_0x2f461b,_0x31c714,_0x5e6ca1);var _0x53d50a=_0x200f44[_0x15fb('0x9')][_0x2f461b][_0x15fb('0x27')]&&_0x200f44['channels'][_0x2f461b]['destlinkedid']?_0x200f44[_0x15fb('0x9')][_0x2f461b]['destlinkedid']:_0x2f461b;return RpcUser[_0x15fb('0x28')](_0x200f44[_0x15fb('0x7')][_0x31c714],_0x9f0e82,_0x53d50a)[_0x15fb('0x23')](function(_0x27f64e){if(!_0x425526){_0x200f44[_0x15fb('0x8')][_0x31c714]={};logger[_0x15fb('0x25')]('[%s][TIMER:%s][AGENT:%s][QUEUE:%s]',_0x2f461b,_0x200f44[_0x15fb('0x6')][_0x5e6ca1][_0x15fb('0x29')],_0x31c714,_0x5e6ca1);_0x200f44['timers'][_0x31c714][_0x15fb('0x2a')]=setTimeout(_0x200f44[_0x15fb('0x2b')][_0x15fb('0xc')](_0x200f44,_0x31c714),_0x200f44['voiceQueues'][_0x5e6ca1][_0x15fb('0x29')]*0x3e8);_0x200f44[_0x15fb('0x8')][_0x31c714][_0x15fb('0x2c')]=moment()['format']('YYYY-MM-DD\x20HH:mm:ss');_0x200f44['timers'][_0x31c714][_0x15fb('0x2d')]=_0x2f461b;_0x200f44['timers'][_0x31c714][_0x15fb('0x1d')]=_0x5e6ca1;_0x200f44[_0x15fb('0x8')][_0x31c714][_0x15fb('0x2e')]=function(){var _0xd8cbde=getDiff(_0x200f44[_0x15fb('0x8')][_0x31c714][_0x15fb('0x2c')]);clearTimeout(_0x200f44[_0x15fb('0x8')][_0x31c714][_0x15fb('0x2a')]);_0x200f44['timers'][_0x31c714]['timer']=![];RpcVoiceAgentReport['update']({'acwtime':_0xd8cbde},_0x200f44[_0x15fb('0x8')][_0x31c714]['uniqueid'],_0x31c714)[_0x15fb('0x23')](function(_0x467ae1){logger[_0x15fb('0x25')](_0x15fb('0x2f'),_0x2f461b,_0xd8cbde,_0x467ae1);})['catch'](function(_0x16c73e){logger[_0x15fb('0x30')](_0x15fb('0x31'),_0x2f461b,_0x16c73e);});delete _0x200f44[_0x15fb('0x8')][_0x31c714];};}});}else{logger[_0x15fb('0x25')](_0x15fb('0x32'),_0x2f461b,_0x31c714,_0x5e6ca1);}});}})['catch'](function(_0x18aca4){logger[_0x15fb('0x30')]('[%s][TIMER:%s][AGENT:%s][QUEUE:%s]',_0x2f461b,_0x200f44[_0x15fb('0x6')][_0x5e6ca1][_0x15fb('0x29')],_0x31c714,_0x5e6ca1);})[_0x15fb('0x33')](function(){delete _0x200f44[_0x15fb('0x9')][_0x2f461b];});}catch(_0x512059){logger['error'](_0x15fb('0x34'),_0x512059[_0x15fb('0x35')]);}};Acw[_0x15fb('0x1a')][_0x15fb('0x2b')]=function(_0x4a32b9){try{var _0x50759b=this;if(_0x50759b[_0x15fb('0x8')][_0x4a32b9]){_0x50759b['timers'][_0x4a32b9]['timer']=![];var _0x48b53a=_0x50759b[_0x15fb('0x8')][_0x4a32b9][_0x15fb('0x2d')];var _0x286218=_0x50759b[_0x15fb('0x8')][_0x4a32b9][_0x15fb('0x1d')];var _0x564eb9=_0x50759b[_0x15fb('0x6')][_0x286218]['acwTimeout'];logger[_0x15fb('0x25')](_0x15fb('0x36'),_0x48b53a,_0x4a32b9);RpcUser[_0x15fb('0x37')](this[_0x15fb('0x7')][_0x4a32b9]);RpcVoiceAgentReport[_0x15fb('0x38')]({'acwtime':_0x564eb9,'agentacw':!![]},_0x48b53a,_0x4a32b9)[_0x15fb('0x23')](function(_0x33c9ea){logger[_0x15fb('0x25')](_0x15fb('0x2f'),_0x48b53a,_0x564eb9,_0x33c9ea);})[_0x15fb('0x39')](function(_0x41cdbb){logger[_0x15fb('0x30')](_0x15fb('0x31'),_0x48b53a,_0x41cdbb);});}else{logger[_0x15fb('0x30')](_0x15fb('0x3a'),_0x4a32b9);if(_0x50759b[_0x15fb('0x8')]){logger['info'](_0x15fb('0x3b'),JSON[_0x15fb('0x3c')](_0x50759b[_0x15fb('0x8')]));}}}catch(_0x350469){logger['error']('[ACW][STOP]\x20%s',_0x350469[_0x15fb('0x35')]);}};Acw['prototype']['syncAgentConnect']=function(_0x4094ba){try{if(this[_0x15fb('0x6')][_0x4094ba[_0x15fb('0x1d')]]&&(this[_0x15fb('0x6')][_0x4094ba[_0x15fb('0x1d')]][_0x15fb('0x4')]||this[_0x15fb('0x6')][_0x4094ba[_0x15fb('0x1d')]]['mandatoryDisposition'])){if(this['agents'][_0x4094ba[_0x15fb('0x1c')]]){this['channels'][_0x4094ba[_0x15fb('0x2d')]]={'queue':_0x4094ba['queue'],'interface':_0x4094ba[_0x15fb('0x1c')],'destlinkedid':_0x4094ba['destlinkedid']};}}}catch(_0x36cfce){logger[_0x15fb('0x30')](_0x15fb('0x3d'),_0x36cfce[_0x15fb('0x35')]);}};Acw[_0x15fb('0x1a')][_0x15fb('0x16')]=function(_0x5da583){try{if(this[_0x15fb('0x6')][_0x5da583[_0x15fb('0x1d')]]&&(this['voiceQueues'][_0x5da583['queue']][_0x15fb('0x4')]||this[_0x15fb('0x6')][_0x5da583[_0x15fb('0x1d')]][_0x15fb('0x1e')])){if(this[_0x15fb('0x7')][_0x5da583[_0x15fb('0x1c')]]){this[_0x15fb('0x9')][_0x5da583[_0x15fb('0x2d')]]={'queue':_0x5da583[_0x15fb('0x1d')],'interface':_0x5da583[_0x15fb('0x1c')]};}}}catch(_0x448a22){logger[_0x15fb('0x30')]('[ACW][syncAgentConnectPreview]\x20%s',_0x448a22['message']);}};Acw[_0x15fb('0x1a')][_0x15fb('0xe')]=function(_0x25742b){try{if(this[_0x15fb('0x9')][_0x25742b[_0x15fb('0x2d')]]&&_['isUndefined'](this['channels'][_0x25742b['uniqueid']][_0x15fb('0x27')])){logger[_0x15fb('0x25')](_0x15fb('0x3e'),_0x25742b[_0x15fb('0x2d')]);this[_0x15fb('0x1b')](_0x25742b[_0x15fb('0x2d')]);}else if(this[_0x15fb('0x9')][_0x25742b[_0x15fb('0x3f')]]&&_[_0x15fb('0x40')](this[_0x15fb('0x9')][_0x25742b[_0x15fb('0x3f')]][_0x15fb('0x27')])){logger[_0x15fb('0x25')](_0x15fb('0x41'),_0x25742b[_0x15fb('0x3f')]);this[_0x15fb('0x1b')](_0x25742b[_0x15fb('0x3f')]);}}catch(_0x3d0e23){logger[_0x15fb('0x30')](_0x15fb('0x42'),_0x3d0e23[_0x15fb('0x35')]);}};Acw['prototype']['syncHangup']=function(_0x77d71){try{if(this[_0x15fb('0x9')][_0x77d71['uniqueid']]&&this['channels'][_0x77d71['uniqueid']][_0x15fb('0x27')]){logger['info']('[%s][HANGUPATTENDEDTRANSFER:UNIQUEID]',_0x77d71['uniqueid']);this[_0x15fb('0x1b')](_0x77d71[_0x15fb('0x2d')]);}else if(this['channels'][_0x77d71[_0x15fb('0x3f')]]&&this['channels'][_0x77d71['linkedid']][_0x15fb('0x27')]){logger['info'](_0x15fb('0x43'),_0x77d71[_0x15fb('0x3f')]);this['startAcw'](_0x77d71[_0x15fb('0x3f')]);}}catch(_0xacf362){logger[_0x15fb('0x30')](_0x15fb('0x44'),_0xacf362['message']);}};Acw['prototype'][_0x15fb('0x14')]=function(_0x51d382){try{if(!_[_0x15fb('0x45')](this[_0x15fb('0x9')][_0x51d382[_0x15fb('0x46')]])){this[_0x15fb('0x1b')](_0x51d382[_0x15fb('0x46')]);if(this[_0x15fb('0x9')][_0x51d382[_0x15fb('0x47')]]){this[_0x15fb('0x9')][_0x51d382[_0x15fb('0x47')]]['attended']=!![];this[_0x15fb('0x9')][_0x51d382[_0x15fb('0x48')]]=this[_0x15fb('0x9')][_0x51d382[_0x15fb('0x47')]];delete this[_0x15fb('0x9')][_0x51d382[_0x15fb('0x47')]];}}else if(!_[_0x15fb('0x45')](this[_0x15fb('0x9')][_0x51d382[_0x15fb('0x48')]])){this[_0x15fb('0x1b')](_0x51d382[_0x15fb('0x48')]);if(this[_0x15fb('0x9')][_0x51d382[_0x15fb('0x49')]]){this[_0x15fb('0x9')][_0x51d382[_0x15fb('0x49')]][_0x15fb('0x27')]=!![];this[_0x15fb('0x9')][_0x51d382[_0x15fb('0x46')]]=this[_0x15fb('0x9')][_0x51d382[_0x15fb('0x49')]];delete this[_0x15fb('0x9')][_0x51d382[_0x15fb('0x49')]];}}}catch(_0x408aa4){logger['error'](_0x15fb('0x4a'),_0x408aa4['message']);}};Acw[_0x15fb('0x1a')][_0x15fb('0x4b')]=function(_0x5d5a6c){try{if(this[_0x15fb('0x9')][_0x5d5a6c[_0x15fb('0x4c')]]){logger[_0x15fb('0x25')](_0x15fb('0x4d'),JSON[_0x15fb('0x3c')](_0x5d5a6c[_0x15fb('0x4c')]));this[_0x15fb('0x1b')](_0x5d5a6c[_0x15fb('0x4c')]);}else if(this[_0x15fb('0x9')][_0x5d5a6c[_0x15fb('0x4e')]]){logger['info'](_0x15fb('0x4f'),JSON[_0x15fb('0x3c')](_0x5d5a6c[_0x15fb('0x4e')]));this['startAcw'](_0x5d5a6c[_0x15fb('0x4e')]);}}catch(_0x2afd30){logger[_0x15fb('0x30')](_0x15fb('0x50'),_0x2afd30[_0x15fb('0x35')]);}};Acw[_0x15fb('0x1a')][_0x15fb('0x12')]=function(_0x1c1abd){try{if(this[_0x15fb('0x6')][_0x1c1abd[_0x15fb('0x1d')]]&&this[_0x15fb('0x6')][_0x1c1abd[_0x15fb('0x1d')]][_0x15fb('0x51')]==='all'){if(this['agents'][_0x1c1abd['interface']]){logger[_0x15fb('0x25')](_0x15fb('0x52'),_0x1c1abd[_0x15fb('0x2d')],_0x1c1abd[_0x15fb('0x1c')],_0x1c1abd[_0x15fb('0x1d')]);return RpcUser[_0x15fb('0x28')](this[_0x15fb('0x7')][_0x1c1abd[_0x15fb('0x1c')]],_0x15fb('0x53'),_0x1c1abd[_0x15fb('0x2d')]);}}}catch(_0x5edd93){logger[_0x15fb('0x30')](_0x15fb('0x54'),_0x5edd93['message']);}};module[_0x15fb('0x55')]=Acw;