Built motion from commit 87cd5f02.|2.5.48
[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 _0x27db=['prototype','[%s][TIMER][STOP][AGENT:%s]','saveUnpause','[ACW][STOP]\x20Interface\x20%s\x20doesn\x27t\x20have\x20timer','[ACW][TIMERS]','stringify','[ACW][syncAgentConnect]\x20%s','[ACW][syncAgentConnectPreview]\x20%s','linkedid','[%s][HANGUP:LINKEDID]','[ACW][syncHangupRequest]\x20%s','[%s][HANGUPATTENDEDTRANSFER:UNIQUEID]','[%s][HANGUPATTENDEDTRANSFER:LINKEDID]','[ACW][syncHangup]\x20%s','syncAttendedTransfer','isNil','secondtransfereruniqueid','transfertargetuniqueid','origtransfereruniqueid','transfereeuniqueid','transfereruniqueid','transfererlinkedid','[%s][BLINDTRANSFER:LINKEDID]','[ACW][syncBlindTransfer]\x20%s','all','Auto-Pause','[ACW][syncAgentRingNoAnswer]\x20%s','exports','util','lodash','moment','../ami','../../../config/logger','acw','../rpc/voiceAgentReport','voiceQueues','agents','timers','channels','agentconnect','syncAgentConnect','bind','syncHangupRequest','hangup','syncHangup','agentringnoanswer','syncAgentRingNoAnswer','blindtransfer','syncBlindTransfer','custom:agentConnectPreview','syncAgentConnectPreview','milliseconds','diff','seconds','startAcw','interface','queue','ACW','mandatoryDisposition','mandatoryDispositionPause','name','Action','then','getAgent','voicePause','info','[%s][START][AGENT:%s][QUEUE:%s]','attended','destlinkedid','savePause','[%s][TIMER:%s][AGENT:%s][QUEUE:%s]','acwTimeout','timer','stopAcw','lastPauseAt','format','YYYY-MM-DD\x20HH:mm:ss','uniqueid','update','[%s][UPDATE][ACWTIME:%s]','catch','[%s][UPDATE][ERRORS:%s]','error','finally','[ACW][START]\x20%s','message'];(function(_0x5b2346,_0x59c26c){var _0x580d2d=function(_0x2feb7f){while(--_0x2feb7f){_0x5b2346['push'](_0x5b2346['shift']());}};_0x580d2d(++_0x59c26c);}(_0x27db,0xc8));var _0xb27d=function(_0x5d61b0,_0x4bcfd5){_0x5d61b0=_0x5d61b0-0x0;var _0x96e8db=_0x27db[_0x5d61b0];return _0x96e8db;};'use strict';var util=require(_0xb27d('0x0'));var _=require(_0xb27d('0x1'));var moment=require(_0xb27d('0x2'));var ami=require(_0xb27d('0x3'));var logger=require(_0xb27d('0x4'))(_0xb27d('0x5'));var RpcUser=require('../rpc/user');var RpcVoiceAgentReport=require(_0xb27d('0x6'));function Acw(_0x3dc8ad){this[_0xb27d('0x7')]=_0x3dc8ad['voiceQueues'];this['agents']=_0x3dc8ad[_0xb27d('0x8')];this['timers']=_0x3dc8ad[_0xb27d('0x9')];this[_0xb27d('0xa')]={};ami['on'](_0xb27d('0xb'),this[_0xb27d('0xc')][_0xb27d('0xd')](this));ami['on']('hanguprequest',this[_0xb27d('0xe')]['bind'](this));ami['on'](_0xb27d('0xf'),this[_0xb27d('0x10')][_0xb27d('0xd')](this));ami['on'](_0xb27d('0x11'),this[_0xb27d('0x12')]['bind'](this));ami['on']('attendedtransfer',this['syncAttendedTransfer'][_0xb27d('0xd')](this));ami['on'](_0xb27d('0x13'),this[_0xb27d('0x14')][_0xb27d('0xd')](this));ami['on'](_0xb27d('0x15'),this[_0xb27d('0x16')][_0xb27d('0xd')](this));}function getDiff(_0x57411f){var _0xd3775=moment()['milliseconds'](0x0);var _0xee6357=moment(_0x57411f)[_0xb27d('0x17')](0x0);return _0xd3775[_0xb27d('0x18')](_0xee6357,_0xb27d('0x19'));}Acw['prototype'][_0xb27d('0x1a')]=function(_0x3dd5c9){try{var _0x28e132=this;var _0x392fba=this[_0xb27d('0xa')][_0x3dd5c9][_0xb27d('0x1b')];var _0x2569c3=this[_0xb27d('0xa')][_0x3dd5c9][_0xb27d('0x1c')];var _0x1c32f6=this[_0xb27d('0x7')][_0x2569c3];var _0x41eb29=![];var _0x34c3c2=_0xb27d('0x1d');if(_0x1c32f6[_0xb27d('0x1e')]){if(_0x1c32f6[_0xb27d('0x1f')]['name']){_0x41eb29=!![];_0x34c3c2=_0x1c32f6['mandatoryDispositionPause'][_0xb27d('0x20')];}}ami[_0xb27d('0x21')]({'action':'QueuePause','interface':_0x392fba,'paused':!![],'reason':_0x34c3c2})[_0xb27d('0x22')](function(_0x2dba5e){if(_0x28e132['agents'][_0x392fba]){return RpcUser[_0xb27d('0x23')](_0x28e132[_0xb27d('0x8')][_0x392fba]['id'])[_0xb27d('0x22')](function(_0x43b2b6){if(_0x43b2b6&&!_0x43b2b6[_0xb27d('0x24')]){logger[_0xb27d('0x25')](_0xb27d('0x26'),_0x3dd5c9,_0x392fba,_0x2569c3);var _0x225b67=_0x28e132[_0xb27d('0xa')][_0x3dd5c9][_0xb27d('0x27')]&&_0x28e132['channels'][_0x3dd5c9][_0xb27d('0x28')]?_0x28e132['channels'][_0x3dd5c9][_0xb27d('0x28')]:_0x3dd5c9;return RpcUser[_0xb27d('0x29')](_0x28e132[_0xb27d('0x8')][_0x392fba],_0x34c3c2,_0x225b67)['then'](function(_0x2d3ba4){if(!_0x41eb29){_0x28e132['timers'][_0x392fba]={};logger['info'](_0xb27d('0x2a'),_0x3dd5c9,_0x28e132[_0xb27d('0x7')][_0x2569c3][_0xb27d('0x2b')],_0x392fba,_0x2569c3);_0x28e132[_0xb27d('0x9')][_0x392fba][_0xb27d('0x2c')]=setTimeout(_0x28e132[_0xb27d('0x2d')][_0xb27d('0xd')](_0x28e132,_0x392fba),_0x28e132[_0xb27d('0x7')][_0x2569c3][_0xb27d('0x2b')]*0x3e8);_0x28e132['timers'][_0x392fba][_0xb27d('0x2e')]=moment()[_0xb27d('0x2f')](_0xb27d('0x30'));_0x28e132[_0xb27d('0x9')][_0x392fba][_0xb27d('0x31')]=_0x3dd5c9;_0x28e132['timers'][_0x392fba][_0xb27d('0x1c')]=_0x2569c3;_0x28e132[_0xb27d('0x9')][_0x392fba]['updateAcw']=function(){var _0x147ce6=getDiff(_0x28e132['timers'][_0x392fba][_0xb27d('0x2e')]);clearTimeout(_0x28e132['timers'][_0x392fba][_0xb27d('0x2c')]);_0x28e132[_0xb27d('0x9')][_0x392fba]['timer']=![];RpcVoiceAgentReport[_0xb27d('0x32')]({'acwtime':_0x147ce6},_0x28e132['timers'][_0x392fba][_0xb27d('0x31')],_0x392fba)[_0xb27d('0x22')](function(_0x1bcb98){logger[_0xb27d('0x25')](_0xb27d('0x33'),_0x3dd5c9,_0x147ce6,_0x1bcb98);})[_0xb27d('0x34')](function(_0x51e46a){logger['error'](_0xb27d('0x35'),_0x3dd5c9,_0x51e46a);});delete _0x28e132[_0xb27d('0x9')][_0x392fba];};}});}else{logger['info']('[%s][INPAUSE][AGENT:%s][QUEUE:%s]',_0x3dd5c9,_0x392fba,_0x2569c3);}});}})['catch'](function(_0x18a19e){logger[_0xb27d('0x36')](_0xb27d('0x2a'),_0x3dd5c9,_0x28e132['voiceQueues'][_0x2569c3][_0xb27d('0x2b')],_0x392fba,_0x2569c3);})[_0xb27d('0x37')](function(){delete _0x28e132[_0xb27d('0xa')][_0x3dd5c9];});}catch(_0x5aac72){logger[_0xb27d('0x36')](_0xb27d('0x38'),_0x5aac72[_0xb27d('0x39')]);}};Acw[_0xb27d('0x3a')][_0xb27d('0x2d')]=function(_0x47f04e){try{var _0x194147=this;if(_0x194147[_0xb27d('0x9')][_0x47f04e]){_0x194147['timers'][_0x47f04e][_0xb27d('0x2c')]=![];var _0x13e1fc=_0x194147[_0xb27d('0x9')][_0x47f04e]['uniqueid'];var _0x480636=_0x194147[_0xb27d('0x9')][_0x47f04e]['queue'];var _0x30cd83=_0x194147[_0xb27d('0x7')][_0x480636]['acwTimeout'];logger['info'](_0xb27d('0x3b'),_0x13e1fc,_0x47f04e);RpcUser[_0xb27d('0x3c')](this[_0xb27d('0x8')][_0x47f04e]);RpcVoiceAgentReport[_0xb27d('0x32')]({'acwtime':_0x30cd83,'agentacw':!![]},_0x13e1fc,_0x47f04e)[_0xb27d('0x22')](function(_0x24704a){logger[_0xb27d('0x25')](_0xb27d('0x33'),_0x13e1fc,_0x30cd83,_0x24704a);})[_0xb27d('0x34')](function(_0x5f4835){logger[_0xb27d('0x36')](_0xb27d('0x35'),_0x13e1fc,_0x5f4835);});}else{logger['error'](_0xb27d('0x3d'),_0x47f04e);if(_0x194147['timers']){logger[_0xb27d('0x25')](_0xb27d('0x3e'),JSON[_0xb27d('0x3f')](_0x194147[_0xb27d('0x9')]));}}}catch(_0x1b3308){logger[_0xb27d('0x36')]('[ACW][STOP]\x20%s',_0x1b3308[_0xb27d('0x39')]);}};Acw[_0xb27d('0x3a')][_0xb27d('0xc')]=function(_0x42cf91){try{if(this[_0xb27d('0x7')][_0x42cf91[_0xb27d('0x1c')]]&&(this[_0xb27d('0x7')][_0x42cf91[_0xb27d('0x1c')]][_0xb27d('0x5')]||this['voiceQueues'][_0x42cf91['queue']]['mandatoryDisposition'])){if(this[_0xb27d('0x8')][_0x42cf91[_0xb27d('0x1b')]]){this['channels'][_0x42cf91[_0xb27d('0x31')]]={'queue':_0x42cf91[_0xb27d('0x1c')],'interface':_0x42cf91[_0xb27d('0x1b')],'destlinkedid':_0x42cf91[_0xb27d('0x28')]};}}}catch(_0x12fb0b){logger[_0xb27d('0x36')](_0xb27d('0x40'),_0x12fb0b[_0xb27d('0x39')]);}};Acw['prototype'][_0xb27d('0x16')]=function(_0x1b6383){try{if(this[_0xb27d('0x7')][_0x1b6383[_0xb27d('0x1c')]]&&(this[_0xb27d('0x7')][_0x1b6383[_0xb27d('0x1c')]][_0xb27d('0x5')]||this[_0xb27d('0x7')][_0x1b6383['queue']][_0xb27d('0x1e')])){if(this[_0xb27d('0x8')][_0x1b6383[_0xb27d('0x1b')]]){this['channels'][_0x1b6383[_0xb27d('0x31')]]={'queue':_0x1b6383['queue'],'interface':_0x1b6383['interface']};}}}catch(_0x31ffa5){logger[_0xb27d('0x36')](_0xb27d('0x41'),_0x31ffa5[_0xb27d('0x39')]);}};Acw['prototype']['syncHangupRequest']=function(_0x46f1d8){try{if(this[_0xb27d('0xa')][_0x46f1d8[_0xb27d('0x31')]]&&_['isUndefined'](this[_0xb27d('0xa')][_0x46f1d8['uniqueid']][_0xb27d('0x27')])){logger[_0xb27d('0x25')]('[%s][HANGUP:UNIQUEID]',_0x46f1d8[_0xb27d('0x31')]);this[_0xb27d('0x1a')](_0x46f1d8[_0xb27d('0x31')]);}else if(this[_0xb27d('0xa')][_0x46f1d8[_0xb27d('0x42')]]&&_['isUndefined'](this[_0xb27d('0xa')][_0x46f1d8[_0xb27d('0x42')]]['attended'])){logger[_0xb27d('0x25')](_0xb27d('0x43'),_0x46f1d8['linkedid']);this['startAcw'](_0x46f1d8[_0xb27d('0x42')]);}}catch(_0x185bdf){logger[_0xb27d('0x36')](_0xb27d('0x44'),_0x185bdf[_0xb27d('0x39')]);}};Acw[_0xb27d('0x3a')][_0xb27d('0x10')]=function(_0x3f985b){try{if(this[_0xb27d('0xa')][_0x3f985b[_0xb27d('0x31')]]&&this[_0xb27d('0xa')][_0x3f985b[_0xb27d('0x31')]][_0xb27d('0x27')]){logger['info'](_0xb27d('0x45'),_0x3f985b[_0xb27d('0x31')]);this[_0xb27d('0x1a')](_0x3f985b['uniqueid']);}else if(this[_0xb27d('0xa')][_0x3f985b[_0xb27d('0x42')]]&&this[_0xb27d('0xa')][_0x3f985b[_0xb27d('0x42')]]['attended']){logger[_0xb27d('0x25')](_0xb27d('0x46'),_0x3f985b[_0xb27d('0x42')]);this[_0xb27d('0x1a')](_0x3f985b[_0xb27d('0x42')]);}}catch(_0x3a6eef){logger[_0xb27d('0x36')](_0xb27d('0x47'),_0x3a6eef[_0xb27d('0x39')]);}};Acw[_0xb27d('0x3a')][_0xb27d('0x48')]=function(_0x2447ab){try{if(!_[_0xb27d('0x49')](this[_0xb27d('0xa')][_0x2447ab['transfereeuniqueid']])){this[_0xb27d('0x1a')](_0x2447ab['transfereeuniqueid']);if(this[_0xb27d('0xa')][_0x2447ab['secondtransfereruniqueid']]){this[_0xb27d('0xa')][_0x2447ab[_0xb27d('0x4a')]][_0xb27d('0x27')]=!![];this[_0xb27d('0xa')][_0x2447ab[_0xb27d('0x4b')]]=this[_0xb27d('0xa')][_0x2447ab[_0xb27d('0x4a')]];delete this[_0xb27d('0xa')][_0x2447ab['secondtransfereruniqueid']];}}else if(!_[_0xb27d('0x49')](this[_0xb27d('0xa')][_0x2447ab[_0xb27d('0x4b')]])){this[_0xb27d('0x1a')](_0x2447ab[_0xb27d('0x4b')]);if(this[_0xb27d('0xa')][_0x2447ab[_0xb27d('0x4c')]]){this[_0xb27d('0xa')][_0x2447ab[_0xb27d('0x4c')]][_0xb27d('0x27')]=!![];this[_0xb27d('0xa')][_0x2447ab[_0xb27d('0x4d')]]=this[_0xb27d('0xa')][_0x2447ab['origtransfereruniqueid']];delete this[_0xb27d('0xa')][_0x2447ab[_0xb27d('0x4c')]];}}}catch(_0x3ac90e){logger[_0xb27d('0x36')]('[ACW][syncAttendedTransfer]\x20%s',_0x3ac90e[_0xb27d('0x39')]);}};Acw[_0xb27d('0x3a')][_0xb27d('0x14')]=function(_0x148c3e){try{if(this[_0xb27d('0xa')][_0x148c3e[_0xb27d('0x4e')]]){logger[_0xb27d('0x25')]('[%s][BLINDTRANSFER:UNIQUEID]',JSON[_0xb27d('0x3f')](_0x148c3e[_0xb27d('0x4e')]));this['startAcw'](_0x148c3e[_0xb27d('0x4e')]);}else if(this['channels'][_0x148c3e[_0xb27d('0x4f')]]){logger[_0xb27d('0x25')](_0xb27d('0x50'),JSON[_0xb27d('0x3f')](_0x148c3e['transfererlinkedid']));this[_0xb27d('0x1a')](_0x148c3e[_0xb27d('0x4f')]);}}catch(_0x26af5c){logger[_0xb27d('0x36')](_0xb27d('0x51'),_0x26af5c[_0xb27d('0x39')]);}};Acw[_0xb27d('0x3a')]['syncAgentRingNoAnswer']=function(_0x51aea0){try{if(this['voiceQueues'][_0x51aea0[_0xb27d('0x1c')]]&&this['voiceQueues'][_0x51aea0['queue']]['autopause']===_0xb27d('0x52')){if(this[_0xb27d('0x8')][_0x51aea0['interface']]){logger[_0xb27d('0x25')]('[%s][AUTOPAUSE][AGENT:%s][QUEUE:%]',_0x51aea0['uniqueid'],_0x51aea0['interface'],_0x51aea0['queue']);return RpcUser['savePause'](this[_0xb27d('0x8')][_0x51aea0[_0xb27d('0x1b')]],_0xb27d('0x53'),_0x51aea0[_0xb27d('0x31')]);}}}catch(_0x5f4068){logger['error'](_0xb27d('0x54'),_0x5f4068['message']);}};module[_0xb27d('0x55')]=Acw;