Built motion from commit (unavailable).|2.4.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 _0x9c44=['[%s][HANGUP:UNIQUEID]','linkedid','[%s][HANGUP:LINKEDID]','startAcw','[ACW][syncHangupRequest]\x20%s','syncHangup','[%s][HANGUPATTENDEDTRANSFER:UNIQUEID]','[%s][HANGUPATTENDEDTRANSFER:LINKEDID]','[ACW][syncHangup]\x20%s','syncAttendedTransfer','isNil','transfereeuniqueid','secondtransfereruniqueid','transfertargetuniqueid','origtransfereruniqueid','[ACW][syncAttendedTransfer]\x20%s','[%s][BLINDTRANSFER:UNIQUEID]','transfereruniqueid','transfererlinkedid','[%s][BLINDTRANSFER:LINKEDID]','[ACW][syncBlindTransfer]\x20%s','[%s][AUTOPAUSE][AGENT:%s][QUEUE:%]','[ACW][syncAgentRingNoAnswer]\x20%s','exports','moment','../ami','../../../config/logger','acw','../rpc/user','../rpc/voiceAgentReport','voiceQueues','agents','timers','channels','agentconnect','bind','hanguprequest','syncHangupRequest','agentringnoanswer','attendedtransfer','blindtransfer','syncBlindTransfer','custom:agentConnectPreview','syncAgentConnectPreview','milliseconds','diff','seconds','prototype','interface','queue','ACW','mandatoryDispositionPause','name','Action','QueuePause','then','getAgent','info','attended','destlinkedid','savePause','[%s][TIMER:%s][AGENT:%s][QUEUE:%s]','stopAcw','acwTimeout','lastPauseAt','format','YYYY-MM-DD\x20HH:mm:ss','uniqueid','updateAcw','timer','update','[%s][UPDATE][ACWTIME:%s]','catch','[%s][UPDATE][ERRORS:%s]','[%s][INPAUSE][AGENT:%s][QUEUE:%s]','error','[ACW][START]\x20%s','message','[TIMER][STOP][AGENT:%s]','saveUnpause','[ACW][STOP]\x20Interface\x20%s\x20doesn\x27t\x20have\x20timer','[ACW][TIMERS]','stringify','[ACW][STOP]\x20%s','[ACW][syncAgentConnect]\x20%s','mandatoryDisposition','[ACW][syncAgentConnectPreview]\x20%s','isUndefined'];(function(_0x1e9424,_0x191cba){var _0x1bd96c=function(_0x5e952d){while(--_0x5e952d){_0x1e9424['push'](_0x1e9424['shift']());}};_0x1bd96c(++_0x191cba);}(_0x9c44,0x178));var _0x49c4=function(_0x15bc81,_0x4d4f77){_0x15bc81=_0x15bc81-0x0;var _0x59440e=_0x9c44[_0x15bc81];return _0x59440e;};'use strict';var util=require('util');var _=require('lodash');var moment=require(_0x49c4('0x0'));var ami=require(_0x49c4('0x1'));var logger=require(_0x49c4('0x2'))(_0x49c4('0x3'));var RpcUser=require(_0x49c4('0x4'));var RpcVoiceAgentReport=require(_0x49c4('0x5'));function Acw(_0x4e0313){this['voiceQueues']=_0x4e0313[_0x49c4('0x6')];this['agents']=_0x4e0313[_0x49c4('0x7')];this[_0x49c4('0x8')]=_0x4e0313[_0x49c4('0x8')];this[_0x49c4('0x9')]={};ami['on'](_0x49c4('0xa'),this['syncAgentConnect'][_0x49c4('0xb')](this));ami['on'](_0x49c4('0xc'),this[_0x49c4('0xd')][_0x49c4('0xb')](this));ami['on']('hangup',this['syncHangup'][_0x49c4('0xb')](this));ami['on'](_0x49c4('0xe'),this['syncAgentRingNoAnswer'][_0x49c4('0xb')](this));ami['on'](_0x49c4('0xf'),this['syncAttendedTransfer']['bind'](this));ami['on'](_0x49c4('0x10'),this[_0x49c4('0x11')]['bind'](this));ami['on'](_0x49c4('0x12'),this[_0x49c4('0x13')]['bind'](this));}function getDiff(_0x1909fe){var _0x280996=moment()[_0x49c4('0x14')](0x0);var _0x2decee=moment(_0x1909fe)[_0x49c4('0x14')](0x0);return _0x280996[_0x49c4('0x15')](_0x2decee,_0x49c4('0x16'));}Acw[_0x49c4('0x17')]['startAcw']=function(_0x3acd06){try{var _0x141003=this;var _0x13a2db=this[_0x49c4('0x9')][_0x3acd06][_0x49c4('0x18')];var _0x53e3a2=this[_0x49c4('0x9')][_0x3acd06][_0x49c4('0x19')];var _0x4c3253=this['voiceQueues'][_0x53e3a2];var _0x3c782d=![];var _0x2f82d5=_0x49c4('0x1a');if(_0x4c3253['mandatoryDisposition']){if(_0x4c3253[_0x49c4('0x1b')]['name']){_0x3c782d=!![];_0x2f82d5=_0x4c3253[_0x49c4('0x1b')][_0x49c4('0x1c')];}}ami[_0x49c4('0x1d')]({'action':_0x49c4('0x1e'),'interface':_0x13a2db,'paused':!![],'reason':_0x2f82d5})[_0x49c4('0x1f')](function(_0x41078c){if(_0x141003[_0x49c4('0x7')][_0x13a2db]){return RpcUser[_0x49c4('0x20')](_0x141003[_0x49c4('0x7')][_0x13a2db]['id'])['then'](function(_0x527126){if(_0x527126&&!_0x527126['voicePause']){logger[_0x49c4('0x21')]('[%s][START][AGENT:%s][QUEUE:%s]',_0x3acd06,_0x13a2db,_0x53e3a2);var _0x592bb8=_0x141003[_0x49c4('0x9')][_0x3acd06][_0x49c4('0x22')]&&_0x141003[_0x49c4('0x9')][_0x3acd06][_0x49c4('0x23')]?_0x141003['channels'][_0x3acd06]['destlinkedid']:_0x3acd06;return RpcUser[_0x49c4('0x24')](_0x141003[_0x49c4('0x7')][_0x13a2db],_0x2f82d5,_0x592bb8)['then'](function(_0x207358){if(!_0x3c782d){_0x141003[_0x49c4('0x8')][_0x13a2db]={};logger[_0x49c4('0x21')](_0x49c4('0x25'),_0x3acd06,_0x141003['voiceQueues'][_0x53e3a2]['acwTimeout'],_0x13a2db,_0x53e3a2);_0x141003[_0x49c4('0x8')][_0x13a2db]['timer']=setTimeout(_0x141003[_0x49c4('0x26')][_0x49c4('0xb')](_0x141003,_0x13a2db),_0x141003[_0x49c4('0x6')][_0x53e3a2][_0x49c4('0x27')]*0x3e8);_0x141003['timers'][_0x13a2db][_0x49c4('0x28')]=moment()[_0x49c4('0x29')](_0x49c4('0x2a'));_0x141003[_0x49c4('0x8')][_0x13a2db][_0x49c4('0x2b')]=_0x3acd06;_0x141003[_0x49c4('0x8')][_0x13a2db][_0x49c4('0x19')]=_0x53e3a2;_0x141003[_0x49c4('0x8')][_0x13a2db][_0x49c4('0x2c')]=function(){var _0x2cbd88=getDiff(_0x141003[_0x49c4('0x8')][_0x13a2db]['lastPauseAt']);clearTimeout(_0x141003['timers'][_0x13a2db]['timer']);_0x141003[_0x49c4('0x8')][_0x13a2db][_0x49c4('0x2d')]=![];RpcVoiceAgentReport[_0x49c4('0x2e')]({'acwtime':_0x2cbd88},_0x141003[_0x49c4('0x8')][_0x13a2db][_0x49c4('0x2b')],_0x13a2db)['then'](function(_0x38ad77){logger[_0x49c4('0x21')](_0x49c4('0x2f'),_0x3acd06,_0x2cbd88,_0x38ad77);})[_0x49c4('0x30')](function(_0x58e252){logger['error'](_0x49c4('0x31'),_0x3acd06,_0x58e252);});delete _0x141003[_0x49c4('0x8')][_0x13a2db];};}});}else{logger[_0x49c4('0x21')](_0x49c4('0x32'),_0x3acd06,_0x13a2db,_0x53e3a2);}});}})[_0x49c4('0x30')](function(_0x4a0c7a){logger[_0x49c4('0x33')](_0x49c4('0x25'),_0x3acd06,_0x141003[_0x49c4('0x6')][_0x53e3a2]['acwTimeout'],_0x13a2db,_0x53e3a2);})['finally'](function(){delete _0x141003[_0x49c4('0x9')][_0x3acd06];});}catch(_0x1991e9){logger[_0x49c4('0x33')](_0x49c4('0x34'),_0x1991e9[_0x49c4('0x35')]);}};Acw[_0x49c4('0x17')][_0x49c4('0x26')]=function(_0x27ef5f){try{var _0x3209cd=this;if(_0x3209cd['timers'][_0x27ef5f]){_0x3209cd[_0x49c4('0x8')][_0x27ef5f]['timer']=![];var _0xdda586=_0x3209cd[_0x49c4('0x8')][_0x27ef5f][_0x49c4('0x2b')];var _0x1c2830=_0x3209cd['timers'][_0x27ef5f][_0x49c4('0x19')];var _0x31f3ff=_0x3209cd[_0x49c4('0x6')][_0x1c2830]['acwTimeout'];logger[_0x49c4('0x21')](_0x49c4('0x36'),_0x27ef5f);RpcUser[_0x49c4('0x37')](this[_0x49c4('0x7')][_0x27ef5f]);RpcVoiceAgentReport[_0x49c4('0x2e')]({'acwtime':_0x31f3ff,'agentacw':!![]},_0xdda586,_0x27ef5f)[_0x49c4('0x1f')](function(_0x143916){logger[_0x49c4('0x21')](_0x49c4('0x2f'),_0xdda586,_0x31f3ff,_0x143916);})[_0x49c4('0x30')](function(_0x1e506a){logger['error'](_0x49c4('0x31'),_0xdda586,_0x1e506a);});}else{logger[_0x49c4('0x33')](_0x49c4('0x38'),_0x27ef5f);if(_0x3209cd[_0x49c4('0x8')]){logger[_0x49c4('0x21')](_0x49c4('0x39'),JSON[_0x49c4('0x3a')](_0x3209cd[_0x49c4('0x8')]));}}}catch(_0x248c0a){logger[_0x49c4('0x33')](_0x49c4('0x3b'),_0x248c0a[_0x49c4('0x35')]);}};Acw[_0x49c4('0x17')]['syncAgentConnect']=function(_0x212366){try{if(this['voiceQueues'][_0x212366[_0x49c4('0x19')]]&&(this[_0x49c4('0x6')][_0x212366[_0x49c4('0x19')]][_0x49c4('0x3')]||this[_0x49c4('0x6')][_0x212366[_0x49c4('0x19')]]['mandatoryDisposition'])){if(this['agents'][_0x212366[_0x49c4('0x18')]]){this[_0x49c4('0x9')][_0x212366[_0x49c4('0x2b')]]={'queue':_0x212366[_0x49c4('0x19')],'interface':_0x212366['interface'],'destlinkedid':_0x212366[_0x49c4('0x23')]};}}}catch(_0x392e59){logger[_0x49c4('0x33')](_0x49c4('0x3c'),_0x392e59[_0x49c4('0x35')]);}};Acw[_0x49c4('0x17')][_0x49c4('0x13')]=function(_0x3351c1){try{if(this[_0x49c4('0x6')][_0x3351c1['queue']]&&(this[_0x49c4('0x6')][_0x3351c1['queue']][_0x49c4('0x3')]||this[_0x49c4('0x6')][_0x3351c1[_0x49c4('0x19')]][_0x49c4('0x3d')])){if(this[_0x49c4('0x7')][_0x3351c1['interface']]){this[_0x49c4('0x9')][_0x3351c1[_0x49c4('0x2b')]]={'queue':_0x3351c1[_0x49c4('0x19')],'interface':_0x3351c1[_0x49c4('0x18')]};}}}catch(_0x1ded71){logger[_0x49c4('0x33')](_0x49c4('0x3e'),_0x1ded71['message']);}};Acw[_0x49c4('0x17')]['syncHangupRequest']=function(_0x3f7379){try{if(this[_0x49c4('0x9')][_0x3f7379[_0x49c4('0x2b')]]&&_[_0x49c4('0x3f')](this[_0x49c4('0x9')][_0x3f7379[_0x49c4('0x2b')]][_0x49c4('0x22')])){logger['info'](_0x49c4('0x40'),_0x3f7379[_0x49c4('0x2b')]);this['startAcw'](_0x3f7379[_0x49c4('0x2b')]);}else if(this[_0x49c4('0x9')][_0x3f7379[_0x49c4('0x41')]]&&_[_0x49c4('0x3f')](this['channels'][_0x3f7379['linkedid']][_0x49c4('0x22')])){logger['info'](_0x49c4('0x42'),_0x3f7379[_0x49c4('0x41')]);this[_0x49c4('0x43')](_0x3f7379[_0x49c4('0x41')]);}}catch(_0x240c20){logger[_0x49c4('0x33')](_0x49c4('0x44'),_0x240c20['message']);}};Acw[_0x49c4('0x17')][_0x49c4('0x45')]=function(_0x3936d3){try{if(this[_0x49c4('0x9')][_0x3936d3[_0x49c4('0x2b')]]&&this[_0x49c4('0x9')][_0x3936d3[_0x49c4('0x2b')]][_0x49c4('0x22')]){logger[_0x49c4('0x21')](_0x49c4('0x46'),_0x3936d3['uniqueid']);this['startAcw'](_0x3936d3[_0x49c4('0x2b')]);}else if(this[_0x49c4('0x9')][_0x3936d3['linkedid']]&&this['channels'][_0x3936d3[_0x49c4('0x41')]]['attended']){logger['info'](_0x49c4('0x47'),_0x3936d3[_0x49c4('0x41')]);this[_0x49c4('0x43')](_0x3936d3[_0x49c4('0x41')]);}}catch(_0x2884ca){logger[_0x49c4('0x33')](_0x49c4('0x48'),_0x2884ca['message']);}};Acw[_0x49c4('0x17')][_0x49c4('0x49')]=function(_0x207572){try{if(!_[_0x49c4('0x4a')](this[_0x49c4('0x9')][_0x207572[_0x49c4('0x4b')]])){this['startAcw'](_0x207572['transfereeuniqueid']);if(this[_0x49c4('0x9')][_0x207572[_0x49c4('0x4c')]]){this[_0x49c4('0x9')][_0x207572[_0x49c4('0x4c')]][_0x49c4('0x22')]=!![];this[_0x49c4('0x9')][_0x207572[_0x49c4('0x4d')]]=this['channels'][_0x207572[_0x49c4('0x4c')]];delete this[_0x49c4('0x9')][_0x207572['secondtransfereruniqueid']];}}else if(!_[_0x49c4('0x4a')](this['channels'][_0x207572[_0x49c4('0x4d')]])){this[_0x49c4('0x43')](_0x207572[_0x49c4('0x4d')]);if(this[_0x49c4('0x9')][_0x207572[_0x49c4('0x4e')]]){this[_0x49c4('0x9')][_0x207572[_0x49c4('0x4e')]][_0x49c4('0x22')]=!![];this['channels'][_0x207572[_0x49c4('0x4b')]]=this[_0x49c4('0x9')][_0x207572['origtransfereruniqueid']];delete this[_0x49c4('0x9')][_0x207572[_0x49c4('0x4e')]];}}}catch(_0x4fefbd){logger[_0x49c4('0x33')](_0x49c4('0x4f'),_0x4fefbd['message']);}};Acw['prototype']['syncBlindTransfer']=function(_0x513879){try{if(this[_0x49c4('0x9')][_0x513879['transfereruniqueid']]){logger[_0x49c4('0x21')](_0x49c4('0x50'),JSON['stringify'](_0x513879[_0x49c4('0x51')]));this[_0x49c4('0x43')](_0x513879['transfereruniqueid']);}else if(this[_0x49c4('0x9')][_0x513879[_0x49c4('0x52')]]){logger[_0x49c4('0x21')](_0x49c4('0x53'),JSON['stringify'](_0x513879[_0x49c4('0x52')]));this[_0x49c4('0x43')](_0x513879[_0x49c4('0x52')]);}}catch(_0x20e97d){logger['error'](_0x49c4('0x54'),_0x20e97d['message']);}};Acw['prototype']['syncAgentRingNoAnswer']=function(_0x5d6de0){try{if(this[_0x49c4('0x6')][_0x5d6de0[_0x49c4('0x19')]]&&this[_0x49c4('0x6')][_0x5d6de0[_0x49c4('0x19')]]['autopause']==='all'){if(this[_0x49c4('0x7')][_0x5d6de0[_0x49c4('0x18')]]){logger[_0x49c4('0x21')](_0x49c4('0x55'),_0x5d6de0[_0x49c4('0x2b')],_0x5d6de0[_0x49c4('0x18')],_0x5d6de0[_0x49c4('0x19')]);return RpcUser[_0x49c4('0x24')](this['agents'][_0x5d6de0[_0x49c4('0x18')]],'Auto-Pause',_0x5d6de0[_0x49c4('0x2b')]);}}}catch(_0x264902){logger[_0x49c4('0x33')](_0x49c4('0x56'),_0x264902[_0x49c4('0x35')]);}};module[_0x49c4('0x57')]=Acw;