d15ee858ae2b00143984895d6358abce15c2e3e4
[motion2.git] / server / services / ami / report / voiceDialReport.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 _0x538c=['sipcallid','sipuri','bridgepeer','bridgepvtcallid','membercalls','memberdynamic','memberinterface','memberlastcall','includes','[%s][voiceDialReport][hangup]\x20reason:%s\x20lasteevent:complete','cause-txt','endtime','duration','diff','starttime','seconds','complete','total','answered','sumHoldTime','holdtime','sumBillable','billableseconds','sumDuration','[%s][voiceDialReport][hangup]\x20sending\x20voiceDialReport\x20event:','custom:voiceDialReport','[%s][voiceDialReport][hangup]\x20sending\x20dialend\x20event:','custom:dialend','[%s][voiceDialReport][hangup]\x20sending\x20voice_outbound:save\x20event:','voice_outbound:save','[DEBUG]\x20Emit\x20voice_outbound_channel:remove\x20event','stringify','[%s][voiceDialReport][hangup]\x20sending\x20voice_outbound_channel:remove\x20event:','voice_outbound_channel:remove','linkedid','destuniqueid','[%s][voiceDialReport][hangup]','syncNewExten','[%s][voiceDialReport][newexten]\x20event:','application','set','applicationdata','toLowerCase','startsWith','cdr(','[%s][voiceDialReport][newexten]\x20application:%s\x20appdata:%s','split','match','[%s][voiceDialReport][newexten]','lodash','moment','util','../../../config/environment','../../../config/logger','../ami','redis','defaults','socket.io-emitter','outboundChannels','outbound','applications','syncDialBegin','dialend','bind','varset','syncVarSet','hangup','syncHangup','isNotNull','isUndefined','prototype','emit','debug','uniqueid','inspect','channels','format','YYYY-MM-DD\x20HH:mm:ss','called','channel','lastIndexOf','substring','omit','event','privilege','info','[%s][voiceDialReport][dialbegin]\x20agent:%s\x20interface:%s\x20lastevent:called','interface','[%s][voiceDialReport][dialbegin]\x20sending\x20voice_outbound_channel:save\x20event:','merge','voice:outbound','voice_outbound_channel:save','[%s][voiceDialReport][dialbegin]\x20sending\x20dialbegin\x20event:','error','[%s][voiceDialReport][dialbegin]','dialstatus','ANSWER','connectedlinenum','connectedlinename','answertime','lastevent','connect','[%s][voiceDialReport][dialend]\x20agent:%s\x20lastevent:connect','custom:dialconnect','[%s][voiceDialReport][dialend]\x20sending\x20voice_outbound_channel:save\x20event:','[%s][voiceDialReport][varset]\x20event:','addVariable','keys','variable','value','variables','voice','[%s][voiceDialReport][varset]\x20outboundrouteid:%s\x20variable:%s\x20value:%s','outboundrouteid','[%s][voiceDialReport][varset]\x20sending\x20voice_outbound_channel:save\x20event:','rtpaudioqos','rtpaudioqosjitter','rtpaudioqosloss','rtpaudioqoslossbridged','rtpaudioqosrtt'];(function(_0x161c6b,_0x29edbf){var _0x11b9c4=function(_0x5e6a83){while(--_0x5e6a83){_0x161c6b['push'](_0x161c6b['shift']());}};_0x11b9c4(++_0x29edbf);}(_0x538c,0xa9));var _0xc538=function(_0x106df4,_0xa6ef46){_0x106df4=_0x106df4-0x0;var _0x5d08be=_0x538c[_0x106df4];return _0x5d08be;};'use strict';var _=require(_0xc538('0x0'));var moment=require(_0xc538('0x1'));var util=require(_0xc538('0x2'));var Redis=require('ioredis');var config=require(_0xc538('0x3'));var logger=require(_0xc538('0x4'))('ami');var ami=require(_0xc538('0x5'));config[_0xc538('0x6')]=_[_0xc538('0x7')](config[_0xc538('0x6')],{'host':'localhost','port':0x18eb});var io=require(_0xc538('0x8'))(new Redis(config[_0xc538('0x6')]));function VoiceDialReport(_0x3f1af3){this['channels']=_0x3f1af3[_0xc538('0x9')];this[_0xc538('0xa')]=_0x3f1af3[_0xc538('0xa')];this[_0xc538('0xb')]={};this['variables']={};ami['on']('dialbegin',this[_0xc538('0xc')]['bind'](this));ami['on'](_0xc538('0xd'),this['syncDialEnd'][_0xc538('0xe')](this));ami['on'](_0xc538('0xf'),this[_0xc538('0x10')][_0xc538('0xe')](this));ami['on']('newexten',this['syncNewExten'][_0xc538('0xe')](this));ami['on'](_0xc538('0x11'),this[_0xc538('0x12')][_0xc538('0xe')](this));}VoiceDialReport['prototype'][_0xc538('0x13')]=function(_0x5d4db7){return _0x5d4db7!==null&&!_[_0xc538('0x14')](_0x5d4db7);};VoiceDialReport[_0xc538('0x15')][_0xc538('0x16')]=function(_0x31db97,_0x5efc24,_0x1d13d2){io['to'](_0x31db97)[_0xc538('0x16')](_0x5efc24,_0x1d13d2);};VoiceDialReport['prototype'][_0xc538('0xc')]=function(_0x1959c0){try{if(this['isNotNull'](_0x1959c0)){logger[_0xc538('0x17')]('[%s][voiceDialReport][dialbegin]\x20event:',_0x1959c0[_0xc538('0x18')],util[_0xc538('0x19')](_0x1959c0,{'showHidden':![],'depth':null}));if(this['channels'][_0x1959c0[_0xc538('0x18')]]){_['merge'](this[_0xc538('0x1a')][_0x1959c0[_0xc538('0x18')]],{'starttime':moment()[_0xc538('0x1b')](_0xc538('0x1c')),'lastevent':_0xc538('0x1d'),'interface':_0x1959c0[_0xc538('0x1e')]['substring'](0x0,_0x1959c0[_0xc538('0x1e')][_0xc538('0x1f')]('-')),'membername':_0x1959c0[_0xc538('0x1e')][_0xc538('0x20')](_0x1959c0[_0xc538('0x1e')][_0xc538('0x1f')]('/')+0x1,_0x1959c0['channel'][_0xc538('0x1f')]('-'))},_[_0xc538('0x21')](_0x1959c0,[_0xc538('0x22'),_0xc538('0x23')]));logger[_0xc538('0x24')](_0xc538('0x25'),_0x1959c0[_0xc538('0x18')],this['channels'][_0x1959c0[_0xc538('0x18')]]['membername'],this[_0xc538('0x1a')][_0x1959c0['uniqueid']][_0xc538('0x26')]);logger[_0xc538('0x17')](_0xc538('0x27'),_0x1959c0[_0xc538('0x18')],util[_0xc538('0x19')](this[_0xc538('0x1a')][_0x1959c0['uniqueid']],{'showHidden':![],'depth':null}));if(this[_0xc538('0xb')][_0x1959c0['uniqueid']])_[_0xc538('0x28')](this[_0xc538('0x1a')][_0x1959c0['uniqueid']],this[_0xc538('0xb')][_0x1959c0['uniqueid']]);this[_0xc538('0x16')](_0xc538('0x29'),_0xc538('0x2a'),this['channels'][_0x1959c0[_0xc538('0x18')]]);logger[_0xc538('0x17')](_0xc538('0x2b'),_0x1959c0[_0xc538('0x18')],util['inspect'](this[_0xc538('0x1a')][_0x1959c0[_0xc538('0x18')]],{'showHidden':![],'depth':null}));ami['emit']('custom:dialbegin',this[_0xc538('0x1a')][_0x1959c0['uniqueid']]);}}}catch(_0x4b5f5e){logger[_0xc538('0x2c')](_0xc538('0x2d'),_0x1959c0[_0xc538('0x18')],util[_0xc538('0x19')](_0x4b5f5e,{'showHidden':![],'depth':null}));}};VoiceDialReport[_0xc538('0x15')]['syncDialEnd']=function(_0xaf6ba3){try{if(this[_0xc538('0x13')](_0xaf6ba3)){logger[_0xc538('0x17')]('[%s][voiceDialReport][dialend]\x20event:',_0xaf6ba3[_0xc538('0x18')],util['inspect'](_0xaf6ba3,{'showHidden':![],'depth':null}));if(this[_0xc538('0x1a')][_0xaf6ba3['uniqueid']]){this[_0xc538('0x1a')][_0xaf6ba3[_0xc538('0x18')]][_0xc538('0x2e')]=_0xaf6ba3[_0xc538('0x2e')];if(_0xaf6ba3['dialstatus']===_0xc538('0x2f')){this['channels'][_0xaf6ba3[_0xc538('0x18')]]['connectedlinenum']=_0xaf6ba3[_0xc538('0x30')];this[_0xc538('0x1a')][_0xaf6ba3[_0xc538('0x18')]][_0xc538('0x31')]=_0xaf6ba3[_0xc538('0x31')];this['channels'][_0xaf6ba3[_0xc538('0x18')]][_0xc538('0x32')]=moment()['format']('YYYY-MM-DD\x20HH:mm:ss');this[_0xc538('0x1a')][_0xaf6ba3[_0xc538('0x18')]][_0xc538('0x33')]=_0xc538('0x34');logger['info'](_0xc538('0x35'),_0xaf6ba3[_0xc538('0x18')],_0xaf6ba3['channel']['substring'](_0xaf6ba3[_0xc538('0x1e')][_0xc538('0x1f')]('/')+0x1,_0xaf6ba3[_0xc538('0x1e')][_0xc538('0x1f')]('-')));logger['debug']('[%s][voiceDialReport][dialend]\x20sending\x20dialconnect\x20event:',_0xaf6ba3[_0xc538('0x18')],util[_0xc538('0x19')](this[_0xc538('0x1a')][_0xaf6ba3[_0xc538('0x18')]],{'showHidden':![],'depth':null}));ami[_0xc538('0x16')](_0xc538('0x36'),this['channels'][_0xaf6ba3[_0xc538('0x18')]]);}logger['debug'](_0xc538('0x37'),_0xaf6ba3[_0xc538('0x18')],util[_0xc538('0x19')](this[_0xc538('0x1a')][_0xaf6ba3[_0xc538('0x18')]],{'showHidden':![],'depth':null}));this[_0xc538('0x16')](_0xc538('0x29'),_0xc538('0x2a'),this[_0xc538('0x1a')][_0xaf6ba3[_0xc538('0x18')]]);}}}catch(_0x55af85){logger['error']('[%s][voiceDialReport][dialend]',_0xaf6ba3['uniqueid'],util[_0xc538('0x19')](_0x55af85,{'showHidden':![],'depth':null}));}};VoiceDialReport[_0xc538('0x15')]['syncVarSet']=function(_0x17def4){try{if(this[_0xc538('0x13')](_0x17def4)){logger[_0xc538('0x17')](_0xc538('0x38'),_0x17def4['uniqueid'],util[_0xc538('0x19')](_0x17def4,{'showHidden':![],'depth':null}));this[_0xc538('0x39')](_0x17def4[_0xc538('0x18')],_[_0xc538('0x3a')](_0x17def4[_0xc538('0x3b')])[0x0],_0x17def4[_0xc538('0x3c')]);if(this['isNotNull'](_0x17def4[_0xc538('0x3b')])&&this['isNotNull'](_0x17def4[_0xc538('0x3b')]['outboundrouteid'])){if(_['isUndefined'](this[_0xc538('0x1a')][_0x17def4[_0xc538('0x18')]])){this[_0xc538('0x1a')][_0x17def4[_0xc538('0x18')]]={'routeId':_0x17def4['value'],'variables':this[_0xc538('0x3d')][_0x17def4[_0xc538('0x18')]],'motionChannel':_0xc538('0x3e')};logger[_0xc538('0x24')](_0xc538('0x3f'),_0x17def4[_0xc538('0x18')],_0x17def4[_0xc538('0x3b')][_0xc538('0x40')],_[_0xc538('0x3a')](_0x17def4[_0xc538('0x3b')])[0x0],_0x17def4[_0xc538('0x3c')]);logger[_0xc538('0x17')](_0xc538('0x41'),_0x17def4['uniqueid'],util['inspect'](this[_0xc538('0x1a')][_0x17def4[_0xc538('0x18')]],{'showHidden':![],'depth':null}));this[_0xc538('0x16')](_0xc538('0x29'),_0xc538('0x2a'),this[_0xc538('0x1a')][_0x17def4[_0xc538('0x18')]]);}}}}catch(_0x3e7f0d){logger['error']('[%s][voiceDialReport][varset]',_0x17def4[_0xc538('0x18')],util[_0xc538('0x19')](_0x3e7f0d,{'showHidden':![],'depth':null}));}};VoiceDialReport[_0xc538('0x15')]['addVariable']=function(_0x71796c,_0xf5170c,_0x425a54){var _0x2d612b=[_0xc538('0x42'),'rtpaudioqosbridged',_0xc538('0x43'),'rtpaudioqosjitterbridged',_0xc538('0x44'),_0xc538('0x45'),_0xc538('0x46'),'rtpaudioqosrttbridged',_0xc538('0x47'),_0xc538('0x48'),_0xc538('0x49'),_0xc538('0x4a'),_0xc538('0x4b'),_0xc538('0x4c'),_0xc538('0x4d'),_0xc538('0x4e'),'membername','memberpenalty','memberrealtime'];if(!_['isNil'](_0xf5170c)&&!_[_0xc538('0x4f')](_0x2d612b,_0xf5170c)){if(_[_0xc538('0x14')](this[_0xc538('0x3d')][_0x71796c])){this[_0xc538('0x3d')][_0x71796c]={};}this[_0xc538('0x3d')][_0x71796c][_0xf5170c]=_0x425a54;}};VoiceDialReport[_0xc538('0x15')]['syncHangup']=function(_0x333cf7){try{if(this[_0xc538('0x13')](_0x333cf7)){logger[_0xc538('0x17')]('[%s][voiceDialReport][hangup]\x20event:',_0x333cf7['uniqueid'],util[_0xc538('0x19')](_0x333cf7,{'showHidden':![],'depth':null}));if(this[_0xc538('0x1a')][_0x333cf7[_0xc538('0x18')]]){logger['info'](_0xc538('0x50'),_0x333cf7[_0xc538('0x18')],_0x333cf7[_0xc538('0x51')]);this[_0xc538('0x1a')][_0x333cf7['uniqueid']][_0xc538('0x52')]=moment()[_0xc538('0x1b')](_0xc538('0x1c'));this[_0xc538('0x1a')][_0x333cf7['uniqueid']][_0xc538('0x53')]=moment(this[_0xc538('0x1a')][_0x333cf7['uniqueid']][_0xc538('0x52')])[_0xc538('0x54')](this[_0xc538('0x1a')][_0x333cf7[_0xc538('0x18')]][_0xc538('0x55')],_0xc538('0x56'));this[_0xc538('0x1a')][_0x333cf7[_0xc538('0x18')]][_0xc538('0x33')]=_0xc538('0x57');this['outbound'][_0xc538('0x58')]+=0x1;if(this[_0xc538('0x1a')][_0x333cf7[_0xc538('0x18')]][_0xc538('0x32')]){this[_0xc538('0xa')][_0xc538('0x59')]+=0x1;this['channels'][_0x333cf7[_0xc538('0x18')]]['holdtime']=moment(this[_0xc538('0x1a')][_0x333cf7[_0xc538('0x18')]]['answertime'])[_0xc538('0x54')](this['channels'][_0x333cf7['uniqueid']][_0xc538('0x55')],_0xc538('0x56'));this[_0xc538('0x1a')][_0x333cf7['uniqueid']]['billableseconds']=moment(this[_0xc538('0x1a')][_0x333cf7[_0xc538('0x18')]]['endtime'])[_0xc538('0x54')](this[_0xc538('0x1a')][_0x333cf7[_0xc538('0x18')]][_0xc538('0x32')],_0xc538('0x56'));this[_0xc538('0xa')][_0xc538('0x5a')]+=this['channels'][_0x333cf7[_0xc538('0x18')]][_0xc538('0x5b')]||0x0;this[_0xc538('0xa')][_0xc538('0x5c')]+=this[_0xc538('0x1a')][_0x333cf7[_0xc538('0x18')]][_0xc538('0x5d')];}this[_0xc538('0xa')][_0xc538('0x5e')]+=this[_0xc538('0x1a')][_0x333cf7['uniqueid']][_0xc538('0x53')];logger[_0xc538('0x17')](_0xc538('0x5f'),_0x333cf7[_0xc538('0x18')],util[_0xc538('0x19')](this[_0xc538('0x1a')][_0x333cf7[_0xc538('0x18')]],{'showHidden':![],'depth':null}));ami[_0xc538('0x16')](_0xc538('0x60'),this[_0xc538('0x1a')][_0x333cf7[_0xc538('0x18')]]);logger[_0xc538('0x17')](_0xc538('0x61'),_0x333cf7[_0xc538('0x18')],util['inspect'](this[_0xc538('0x1a')][_0x333cf7[_0xc538('0x18')]],{'showHidden':![],'depth':null}));ami[_0xc538('0x16')](_0xc538('0x62'),this[_0xc538('0x1a')][_0x333cf7[_0xc538('0x18')]]);logger[_0xc538('0x17')](_0xc538('0x63'),_0x333cf7['uniqueid'],util[_0xc538('0x19')](this[_0xc538('0x1a')][_0x333cf7[_0xc538('0x18')]],{'showHidden':![],'depth':null}));this['emit'](_0xc538('0x29'),_0xc538('0x64'),this[_0xc538('0xa')]);logger[_0xc538('0x24')](_0xc538('0x65'),JSON[_0xc538('0x66')](this[_0xc538('0x1a')][_0x333cf7[_0xc538('0x18')]]));logger[_0xc538('0x17')](_0xc538('0x67'),_0x333cf7[_0xc538('0x18')],util[_0xc538('0x19')](this[_0xc538('0x1a')][_0x333cf7['uniqueid']],{'showHidden':![],'depth':null}));this['emit'](_0xc538('0x29'),_0xc538('0x68'),this['channels'][_0x333cf7[_0xc538('0x18')]]);delete this[_0xc538('0x1a')][_0x333cf7[_0xc538('0x18')]];}else if(this['channels'][_0x333cf7['linkedid']]){this[_0xc538('0x1a')][_0x333cf7[_0xc538('0x69')]][_0xc538('0x18')]=this['channels'][_0x333cf7[_0xc538('0x69')]][_0xc538('0x6a')];}if(this[_0xc538('0x3d')][_0x333cf7[_0xc538('0x18')]]){delete this[_0xc538('0x3d')][_0x333cf7['uniqueid']];}}}catch(_0xe7ecfc){logger['error'](_0xc538('0x6b'),_0x333cf7[_0xc538('0x18')],util['inspect'](_0xe7ecfc,{'showHidden':![],'depth':null}));}};VoiceDialReport[_0xc538('0x15')][_0xc538('0x6c')]=function(_0xb4cced){try{if(this[_0xc538('0x13')](_0xb4cced)){logger[_0xc538('0x17')](_0xc538('0x6d'),_0xb4cced[_0xc538('0x18')],util[_0xc538('0x19')](_0xb4cced,{'showHidden':![],'depth':null}));if(_0xb4cced[_0xc538('0x6e')]['toLowerCase']()===_0xc538('0x6f')){_0xb4cced[_0xc538('0x70')]=(_0xb4cced['appdata']||_0xb4cced[_0xc538('0x70')])[_0xc538('0x71')]();if(_[_0xc538('0x72')](_0xb4cced[_0xc538('0x70')],_0xc538('0x73'))){if(_[_0xc538('0x14')](this['applications'][_0xb4cced[_0xc538('0x18')]]))this['applications'][_0xb4cced['uniqueid']]={};logger[_0xc538('0x24')](_0xc538('0x74'),_0xb4cced['uniqueid'],_0xb4cced[_0xc538('0x6e')],_0xb4cced[_0xc538('0x70')]);var _0x6d282e=_0xb4cced[_0xc538('0x70')][_0xc538('0x75')]('=');var _0x33202a=_0x6d282e[0x0][_0xc538('0x76')](/cdr\((.*)\)/);if(_0x33202a)this['applications'][_0xb4cced[_0xc538('0x18')]][_0x33202a[0x1]]=_0x6d282e[0x1];}}}}catch(_0x9d2720){logger[_0xc538('0x2c')](_0xc538('0x77'),_0xb4cced[_0xc538('0x18')],util[_0xc538('0x19')](_0x9d2720,{'showHidden':![],'depth':null}));}};module['exports']=VoiceDialReport;