d984d114709305de7b008f7c306fe4ec2ec72e63
[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 _0xf98e=['agents','channels','agentconnect','syncAgentConnect','bind','syncHangupRequest','hangup','syncHangup','agentringnoanswer','syncAgentRingNoAnswer','attendedtransfer','syncAttendedTransfer','blindtransfer','syncBlindTransfer','syncAgentConnectPreview','milliseconds','diff','seconds','prototype','startAcw','interface','queue','ACW','mandatoryDisposition','mandatoryDispositionPause','name','Action','QueuePause','then','voicePause','info','[%s][START][AGENT:%s][QUEUE:%s]','attended','destlinkedid','savePause','timers','[%s][TIMER:%s][AGENT:%s][QUEUE:%s]','acwTimeout','timer','lastPauseAt','format','YYYY-MM-DD\x20HH:mm:ss','uniqueid','update','[%s][UPDATE][ACWTIME:%s]','catch','[%s][UPDATE][ERRORS:%s]','[%s][INPAUSE][AGENT:%s][QUEUE:%s]','error','finally','[ACW][START]\x20%s','message','stopAcw','[%s][TIMER][STOP][AGENT:%s]','saveUnpause','[ACW][STOP]\x20Interface\x20%s\x20doesn\x27t\x20have\x20timer','[ACW][TIMERS]','stringify','[ACW][STOP]\x20%s','isUndefined','[%s][HANGUP:UNIQUEID]','linkedid','[%s][HANGUP:LINKEDID]','[ACW][syncHangupRequest]\x20%s','[%s][HANGUPATTENDEDTRANSFER:LINKEDID]','[ACW][syncHangup]\x20%s','isNil','transfereeuniqueid','secondtransfereruniqueid','transfertargetuniqueid','origtransfereruniqueid','[ACW][syncAttendedTransfer]\x20%s','transfereruniqueid','[%s][BLINDTRANSFER:UNIQUEID]','transfererlinkedid','[%s][BLINDTRANSFER:LINKEDID]','[ACW][syncBlindTransfer]\x20%s','autopause','all','[%s][AUTOPAUSE][AGENT:%s][QUEUE:%]','Auto-Pause','exports','lodash','moment','../../../config/logger','acw','../rpc/user','voiceQueues'];(function(_0x3f2f7a,_0x1a0a6d){var _0x4b36e8=function(_0x1ceb77){while(--_0x1ceb77){_0x3f2f7a['push'](_0x3f2f7a['shift']());}};_0x4b36e8(++_0x1a0a6d);}(_0xf98e,0xaa));var _0xef98=function(_0x300c89,_0x25fcad){_0x300c89=_0x300c89-0x0;var _0x41762e=_0xf98e[_0x300c89];return _0x41762e;};'use strict';var util=require('util');var _=require(_0xef98('0x0'));var moment=require(_0xef98('0x1'));var ami=require('../ami');var logger=require(_0xef98('0x2'))(_0xef98('0x3'));var RpcUser=require(_0xef98('0x4'));var RpcVoiceAgentReport=require('../rpc/voiceAgentReport');function Acw(_0x1b5b75){this[_0xef98('0x5')]=_0x1b5b75[_0xef98('0x5')];this[_0xef98('0x6')]=_0x1b5b75[_0xef98('0x6')];this['timers']=_0x1b5b75['timers'];this[_0xef98('0x7')]={};ami['on'](_0xef98('0x8'),this[_0xef98('0x9')][_0xef98('0xa')](this));ami['on']('hanguprequest',this[_0xef98('0xb')][_0xef98('0xa')](this));ami['on'](_0xef98('0xc'),this[_0xef98('0xd')][_0xef98('0xa')](this));ami['on'](_0xef98('0xe'),this[_0xef98('0xf')][_0xef98('0xa')](this));ami['on'](_0xef98('0x10'),this[_0xef98('0x11')][_0xef98('0xa')](this));ami['on'](_0xef98('0x12'),this[_0xef98('0x13')][_0xef98('0xa')](this));ami['on']('custom:agentConnectPreview',this[_0xef98('0x14')][_0xef98('0xa')](this));}function getDiff(_0x269226){var _0x3ee843=moment()[_0xef98('0x15')](0x0);var _0xc99da=moment(_0x269226)[_0xef98('0x15')](0x0);return _0x3ee843[_0xef98('0x16')](_0xc99da,_0xef98('0x17'));}Acw[_0xef98('0x18')][_0xef98('0x19')]=function(_0x3bc97b){try{var _0x23221e=this;var _0x5003ee=this[_0xef98('0x7')][_0x3bc97b][_0xef98('0x1a')];var _0x4cc4a8=this['channels'][_0x3bc97b][_0xef98('0x1b')];var _0x125137=this[_0xef98('0x5')][_0x4cc4a8];var _0x1cc68c=![];var _0x3523e2=_0xef98('0x1c');if(_0x125137[_0xef98('0x1d')]){if(_0x125137[_0xef98('0x1e')][_0xef98('0x1f')]){_0x1cc68c=!![];_0x3523e2=_0x125137[_0xef98('0x1e')][_0xef98('0x1f')];}}ami[_0xef98('0x20')]({'action':_0xef98('0x21'),'interface':_0x5003ee,'paused':!![],'reason':_0x3523e2})[_0xef98('0x22')](function(_0x81f9bb){if(_0x23221e[_0xef98('0x6')][_0x5003ee]){return RpcUser['getAgent'](_0x23221e[_0xef98('0x6')][_0x5003ee]['id'])[_0xef98('0x22')](function(_0x5b2b79){if(_0x5b2b79&&!_0x5b2b79[_0xef98('0x23')]){logger[_0xef98('0x24')](_0xef98('0x25'),_0x3bc97b,_0x5003ee,_0x4cc4a8);var _0x5477ab=_0x23221e['channels'][_0x3bc97b][_0xef98('0x26')]&&_0x23221e[_0xef98('0x7')][_0x3bc97b][_0xef98('0x27')]?_0x23221e[_0xef98('0x7')][_0x3bc97b][_0xef98('0x27')]:_0x3bc97b;return RpcUser[_0xef98('0x28')](_0x23221e['agents'][_0x5003ee],_0x3523e2,_0x5477ab)[_0xef98('0x22')](function(_0x1b7cd9){if(!_0x1cc68c){_0x23221e[_0xef98('0x29')][_0x5003ee]={};logger[_0xef98('0x24')](_0xef98('0x2a'),_0x3bc97b,_0x23221e[_0xef98('0x5')][_0x4cc4a8][_0xef98('0x2b')],_0x5003ee,_0x4cc4a8);_0x23221e[_0xef98('0x29')][_0x5003ee][_0xef98('0x2c')]=setTimeout(_0x23221e['stopAcw'][_0xef98('0xa')](_0x23221e,_0x5003ee),_0x23221e[_0xef98('0x5')][_0x4cc4a8][_0xef98('0x2b')]*0x3e8);_0x23221e[_0xef98('0x29')][_0x5003ee][_0xef98('0x2d')]=moment()[_0xef98('0x2e')](_0xef98('0x2f'));_0x23221e[_0xef98('0x29')][_0x5003ee][_0xef98('0x30')]=_0x3bc97b;_0x23221e[_0xef98('0x29')][_0x5003ee][_0xef98('0x1b')]=_0x4cc4a8;_0x23221e[_0xef98('0x29')][_0x5003ee]['updateAcw']=function(){var _0x3b952b=getDiff(_0x23221e[_0xef98('0x29')][_0x5003ee][_0xef98('0x2d')]);clearTimeout(_0x23221e[_0xef98('0x29')][_0x5003ee][_0xef98('0x2c')]);_0x23221e[_0xef98('0x29')][_0x5003ee]['timer']=![];RpcVoiceAgentReport[_0xef98('0x31')]({'acwtime':_0x3b952b},_0x23221e[_0xef98('0x29')][_0x5003ee][_0xef98('0x30')],_0x5003ee)[_0xef98('0x22')](function(_0x1be686){logger['info'](_0xef98('0x32'),_0x3bc97b,_0x3b952b,_0x1be686);})[_0xef98('0x33')](function(_0x103f00){logger['error'](_0xef98('0x34'),_0x3bc97b,_0x103f00);});delete _0x23221e['timers'][_0x5003ee];};}});}else{logger['info'](_0xef98('0x35'),_0x3bc97b,_0x5003ee,_0x4cc4a8);}});}})['catch'](function(_0x4de141){logger[_0xef98('0x36')](_0xef98('0x2a'),_0x3bc97b,_0x23221e[_0xef98('0x5')][_0x4cc4a8][_0xef98('0x2b')],_0x5003ee,_0x4cc4a8);})[_0xef98('0x37')](function(){delete _0x23221e[_0xef98('0x7')][_0x3bc97b];});}catch(_0x2832a1){logger[_0xef98('0x36')](_0xef98('0x38'),_0x2832a1[_0xef98('0x39')]);}};Acw['prototype'][_0xef98('0x3a')]=function(_0x51cece){try{var _0x2ec604=this;if(_0x2ec604[_0xef98('0x29')][_0x51cece]){_0x2ec604[_0xef98('0x29')][_0x51cece]['timer']=![];var _0x18220a=_0x2ec604['timers'][_0x51cece][_0xef98('0x30')];var _0x8b933a=_0x2ec604['timers'][_0x51cece][_0xef98('0x1b')];var _0x5cad5c=_0x2ec604['voiceQueues'][_0x8b933a]['acwTimeout'];logger[_0xef98('0x24')](_0xef98('0x3b'),_0x18220a,_0x51cece);RpcUser[_0xef98('0x3c')](this[_0xef98('0x6')][_0x51cece]);RpcVoiceAgentReport['update']({'acwtime':_0x5cad5c,'agentacw':!![]},_0x18220a,_0x51cece)[_0xef98('0x22')](function(_0x32261d){logger[_0xef98('0x24')](_0xef98('0x32'),_0x18220a,_0x5cad5c,_0x32261d);})[_0xef98('0x33')](function(_0x25b760){logger[_0xef98('0x36')](_0xef98('0x34'),_0x18220a,_0x25b760);});}else{logger[_0xef98('0x36')](_0xef98('0x3d'),_0x51cece);if(_0x2ec604['timers']){logger[_0xef98('0x24')](_0xef98('0x3e'),JSON[_0xef98('0x3f')](_0x2ec604[_0xef98('0x29')]));}}}catch(_0x5b3193){logger[_0xef98('0x36')](_0xef98('0x40'),_0x5b3193['message']);}};Acw[_0xef98('0x18')][_0xef98('0x9')]=function(_0x4a2bca){try{if(this[_0xef98('0x5')][_0x4a2bca[_0xef98('0x1b')]]&&(this[_0xef98('0x5')][_0x4a2bca[_0xef98('0x1b')]]['acw']||this[_0xef98('0x5')][_0x4a2bca[_0xef98('0x1b')]][_0xef98('0x1d')])){if(this[_0xef98('0x6')][_0x4a2bca['interface']]){this['channels'][_0x4a2bca['uniqueid']]={'queue':_0x4a2bca[_0xef98('0x1b')],'interface':_0x4a2bca[_0xef98('0x1a')],'destlinkedid':_0x4a2bca[_0xef98('0x27')]};}}}catch(_0x59407b){logger[_0xef98('0x36')]('[ACW][syncAgentConnect]\x20%s',_0x59407b[_0xef98('0x39')]);}};Acw[_0xef98('0x18')][_0xef98('0x14')]=function(_0x187ea4){try{if(this[_0xef98('0x5')][_0x187ea4[_0xef98('0x1b')]]&&(this[_0xef98('0x5')][_0x187ea4[_0xef98('0x1b')]]['acw']||this['voiceQueues'][_0x187ea4['queue']][_0xef98('0x1d')])){if(this['agents'][_0x187ea4[_0xef98('0x1a')]]){this['channels'][_0x187ea4['uniqueid']]={'queue':_0x187ea4[_0xef98('0x1b')],'interface':_0x187ea4[_0xef98('0x1a')]};}}}catch(_0x395b83){logger[_0xef98('0x36')]('[ACW][syncAgentConnectPreview]\x20%s',_0x395b83['message']);}};Acw['prototype'][_0xef98('0xb')]=function(_0x4b504c){try{if(this['channels'][_0x4b504c['uniqueid']]&&_[_0xef98('0x41')](this[_0xef98('0x7')][_0x4b504c[_0xef98('0x30')]]['attended'])){logger[_0xef98('0x24')](_0xef98('0x42'),_0x4b504c[_0xef98('0x30')]);this[_0xef98('0x19')](_0x4b504c[_0xef98('0x30')]);}else if(this[_0xef98('0x7')][_0x4b504c[_0xef98('0x43')]]&&_[_0xef98('0x41')](this['channels'][_0x4b504c[_0xef98('0x43')]]['attended'])){logger[_0xef98('0x24')](_0xef98('0x44'),_0x4b504c[_0xef98('0x43')]);this[_0xef98('0x19')](_0x4b504c[_0xef98('0x43')]);}}catch(_0x3f23d2){logger[_0xef98('0x36')](_0xef98('0x45'),_0x3f23d2[_0xef98('0x39')]);}};Acw['prototype'][_0xef98('0xd')]=function(_0x12c31e){try{if(this[_0xef98('0x7')][_0x12c31e[_0xef98('0x30')]]&&this['channels'][_0x12c31e['uniqueid']]['attended']){logger[_0xef98('0x24')]('[%s][HANGUPATTENDEDTRANSFER:UNIQUEID]',_0x12c31e[_0xef98('0x30')]);this[_0xef98('0x19')](_0x12c31e['uniqueid']);}else if(this[_0xef98('0x7')][_0x12c31e[_0xef98('0x43')]]&&this[_0xef98('0x7')][_0x12c31e[_0xef98('0x43')]][_0xef98('0x26')]){logger[_0xef98('0x24')](_0xef98('0x46'),_0x12c31e[_0xef98('0x43')]);this[_0xef98('0x19')](_0x12c31e[_0xef98('0x43')]);}}catch(_0x1efeec){logger['error'](_0xef98('0x47'),_0x1efeec[_0xef98('0x39')]);}};Acw[_0xef98('0x18')][_0xef98('0x11')]=function(_0x72a49b){try{if(!_[_0xef98('0x48')](this['channels'][_0x72a49b['transfereeuniqueid']])){this[_0xef98('0x19')](_0x72a49b[_0xef98('0x49')]);if(this[_0xef98('0x7')][_0x72a49b[_0xef98('0x4a')]]){this[_0xef98('0x7')][_0x72a49b['secondtransfereruniqueid']][_0xef98('0x26')]=!![];this[_0xef98('0x7')][_0x72a49b[_0xef98('0x4b')]]=this[_0xef98('0x7')][_0x72a49b[_0xef98('0x4a')]];delete this[_0xef98('0x7')][_0x72a49b[_0xef98('0x4a')]];}}else if(!_[_0xef98('0x48')](this[_0xef98('0x7')][_0x72a49b[_0xef98('0x4b')]])){this[_0xef98('0x19')](_0x72a49b[_0xef98('0x4b')]);if(this['channels'][_0x72a49b[_0xef98('0x4c')]]){this['channels'][_0x72a49b[_0xef98('0x4c')]][_0xef98('0x26')]=!![];this[_0xef98('0x7')][_0x72a49b['transfereeuniqueid']]=this[_0xef98('0x7')][_0x72a49b['origtransfereruniqueid']];delete this[_0xef98('0x7')][_0x72a49b[_0xef98('0x4c')]];}}}catch(_0x46e57d){logger[_0xef98('0x36')](_0xef98('0x4d'),_0x46e57d[_0xef98('0x39')]);}};Acw[_0xef98('0x18')]['syncBlindTransfer']=function(_0x506ce7){try{if(this[_0xef98('0x7')][_0x506ce7[_0xef98('0x4e')]]){logger[_0xef98('0x24')](_0xef98('0x4f'),JSON[_0xef98('0x3f')](_0x506ce7[_0xef98('0x4e')]));this[_0xef98('0x19')](_0x506ce7['transfereruniqueid']);}else if(this[_0xef98('0x7')][_0x506ce7[_0xef98('0x50')]]){logger['info'](_0xef98('0x51'),JSON[_0xef98('0x3f')](_0x506ce7['transfererlinkedid']));this[_0xef98('0x19')](_0x506ce7[_0xef98('0x50')]);}}catch(_0x3678b5){logger[_0xef98('0x36')](_0xef98('0x52'),_0x3678b5[_0xef98('0x39')]);}};Acw[_0xef98('0x18')][_0xef98('0xf')]=function(_0x2a8346){try{if(this['voiceQueues'][_0x2a8346['queue']]&&this[_0xef98('0x5')][_0x2a8346['queue']][_0xef98('0x53')]===_0xef98('0x54')){if(this[_0xef98('0x6')][_0x2a8346['interface']]){logger['info'](_0xef98('0x55'),_0x2a8346[_0xef98('0x30')],_0x2a8346['interface'],_0x2a8346[_0xef98('0x1b')]);return RpcUser[_0xef98('0x28')](this[_0xef98('0x6')][_0x2a8346['interface']],_0xef98('0x56'),_0x2a8346[_0xef98('0x30')]);}}}catch(_0x949f66){logger[_0xef98('0x36')]('[ACW][syncAgentRingNoAnswer]\x20%s',_0x949f66[_0xef98('0x39')]);}};module[_0xef98('0x57')]=Acw;