7043a50dc3bd8f787c0cf2f809c0ff8a7910d966
[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 _0xeec6=['omit','event','info','[%s][voiceDialReport][dialbegin]\x20agent:%s\x20interface:%s\x20lastevent:called','membername','interface','[%s][voiceDialReport][dialbegin]\x20sending\x20voice_outbound_channel:save\x20event:','inspect','applications','merge','voice:outbound','[%s][voiceDialReport][dialbegin]\x20sending\x20dialbegin\x20event:','custom:dialbegin','[%s][voiceDialReport][dialbegin]','syncDialEnd','[%s][voiceDialReport][dialend]\x20event:','dialstatus','ANSWER','connectedlinenum','connectedlinename','answertime','lastevent','[%s][voiceDialReport][dialend]\x20agent:%s\x20lastevent:connect','[%s][voiceDialReport][dialend]\x20sending\x20dialconnect\x20event:','custom:dialconnect','[%s][voiceDialReport][dialend]\x20sending\x20voice_outbound_channel:save\x20event:','error','[%s][voiceDialReport][dialend]','syncVarSet','keys','variable','value','outboundrouteid','[%s][voiceDialReport][varset]\x20sending\x20voice_outbound_channel:save\x20event:','addVariable','rtpaudioqos','rtpaudioqosbridged','rtpaudioqosloss','rtpaudioqoslossbridged','rtpaudioqosrtt','sipcallid','sipuri','bridgepeer','bridgepvtcallid','membercalls','memberdynamic','memberinterface','memberlastcall','memberpenalty','memberrealtime','isNil','includes','syncHangup','[%s][voiceDialReport][hangup]\x20event:','[%s][voiceDialReport][hangup]\x20reason:%s\x20lasteevent:complete','cause-txt','endtime','duration','diff','seconds','complete','total','answered','sumHoldTime','sumBillable','billableseconds','sumDuration','[%s][voiceDialReport][hangup]\x20sending\x20voiceDialReport\x20event:','[%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','appdata','cdr(','[%s][voiceDialReport][newexten]\x20application:%s\x20appdata:%s','split','match','[%s][voiceDialReport][newexten]','lodash','moment','util','ioredis','../../../config/logger','ami','../ami','redis','defaults','socket.io-emitter','channels','outboundChannels','outbound','variables','dialbegin','syncDialBegin','bind','varset','hangup','prototype','isNotNull','isUndefined','emit','debug','uniqueid','format','called','channel','substring','lastIndexOf'];(function(_0x5ce200,_0x100619){var _0x129aef=function(_0x508feb){while(--_0x508feb){_0x5ce200['push'](_0x5ce200['shift']());}};_0x129aef(++_0x100619);}(_0xeec6,0x1c2));var _0x6eec=function(_0x14b767,_0x577e84){_0x14b767=_0x14b767-0x0;var _0x22267a=_0xeec6[_0x14b767];return _0x22267a;};'use strict';var _=require(_0x6eec('0x0'));var moment=require(_0x6eec('0x1'));var util=require(_0x6eec('0x2'));var Redis=require(_0x6eec('0x3'));var config=require('../../../config/environment');var logger=require(_0x6eec('0x4'))(_0x6eec('0x5'));var ami=require(_0x6eec('0x6'));config[_0x6eec('0x7')]=_[_0x6eec('0x8')](config[_0x6eec('0x7')],{'host':'localhost','port':0x18eb});var io=require(_0x6eec('0x9'))(new Redis(config[_0x6eec('0x7')]));function VoiceDialReport(_0x48064a){this[_0x6eec('0xa')]=_0x48064a[_0x6eec('0xb')];this[_0x6eec('0xc')]=_0x48064a[_0x6eec('0xc')];this['applications']={};this[_0x6eec('0xd')]={};ami['on'](_0x6eec('0xe'),this[_0x6eec('0xf')]['bind'](this));ami['on']('dialend',this['syncDialEnd'][_0x6eec('0x10')](this));ami['on'](_0x6eec('0x11'),this['syncVarSet']['bind'](this));ami['on'](_0x6eec('0x12'),this['syncHangup'][_0x6eec('0x10')](this));}VoiceDialReport[_0x6eec('0x13')][_0x6eec('0x14')]=function(_0x3fe94b){return _0x3fe94b!==null&&!_[_0x6eec('0x15')](_0x3fe94b);};VoiceDialReport['prototype'][_0x6eec('0x16')]=function(_0x3b2972,_0x462dbb,_0xc35914){io['to'](_0x3b2972)[_0x6eec('0x16')](_0x462dbb,_0xc35914);};VoiceDialReport[_0x6eec('0x13')][_0x6eec('0xf')]=function(_0x393271){try{if(this[_0x6eec('0x14')](_0x393271)){logger[_0x6eec('0x17')]('[%s][voiceDialReport][dialbegin]\x20event:',_0x393271[_0x6eec('0x18')],util['inspect'](_0x393271,{'showHidden':![],'depth':null}));if(this[_0x6eec('0xa')][_0x393271[_0x6eec('0x18')]]){_['merge'](this[_0x6eec('0xa')][_0x393271[_0x6eec('0x18')]],{'starttime':moment()[_0x6eec('0x19')]('YYYY-MM-DD\x20HH:mm:ss'),'lastevent':_0x6eec('0x1a'),'interface':_0x393271[_0x6eec('0x1b')][_0x6eec('0x1c')](0x0,_0x393271[_0x6eec('0x1b')][_0x6eec('0x1d')]('-')),'membername':_0x393271[_0x6eec('0x1b')]['substring'](_0x393271[_0x6eec('0x1b')][_0x6eec('0x1d')]('/')+0x1,_0x393271[_0x6eec('0x1b')][_0x6eec('0x1d')]('-'))},_[_0x6eec('0x1e')](_0x393271,[_0x6eec('0x1f'),'privilege']));logger[_0x6eec('0x20')](_0x6eec('0x21'),_0x393271[_0x6eec('0x18')],this[_0x6eec('0xa')][_0x393271[_0x6eec('0x18')]][_0x6eec('0x22')],this['channels'][_0x393271[_0x6eec('0x18')]][_0x6eec('0x23')]);logger[_0x6eec('0x17')](_0x6eec('0x24'),_0x393271[_0x6eec('0x18')],util[_0x6eec('0x25')](this[_0x6eec('0xa')][_0x393271[_0x6eec('0x18')]],{'showHidden':![],'depth':null}));if(this[_0x6eec('0x26')][_0x393271['uniqueid']])_[_0x6eec('0x27')](this[_0x6eec('0xa')][_0x393271[_0x6eec('0x18')]],this[_0x6eec('0x26')][_0x393271['uniqueid']]);this[_0x6eec('0x16')](_0x6eec('0x28'),'voice_outbound_channel:save',this['channels'][_0x393271[_0x6eec('0x18')]]);logger['debug'](_0x6eec('0x29'),_0x393271[_0x6eec('0x18')],util[_0x6eec('0x25')](this[_0x6eec('0xa')][_0x393271[_0x6eec('0x18')]],{'showHidden':![],'depth':null}));ami[_0x6eec('0x16')](_0x6eec('0x2a'),this[_0x6eec('0xa')][_0x393271[_0x6eec('0x18')]]);}}}catch(_0x414f5b){logger['error'](_0x6eec('0x2b'),_0x393271['uniqueid'],util[_0x6eec('0x25')](_0x414f5b,{'showHidden':![],'depth':null}));}};VoiceDialReport[_0x6eec('0x13')][_0x6eec('0x2c')]=function(_0x487de8){try{if(this['isNotNull'](_0x487de8)){logger['debug'](_0x6eec('0x2d'),_0x487de8[_0x6eec('0x18')],util[_0x6eec('0x25')](_0x487de8,{'showHidden':![],'depth':null}));if(this[_0x6eec('0xa')][_0x487de8[_0x6eec('0x18')]]){this[_0x6eec('0xa')][_0x487de8[_0x6eec('0x18')]][_0x6eec('0x2e')]=_0x487de8[_0x6eec('0x2e')];if(_0x487de8[_0x6eec('0x2e')]===_0x6eec('0x2f')){this[_0x6eec('0xa')][_0x487de8['uniqueid']][_0x6eec('0x30')]=_0x487de8[_0x6eec('0x30')];this[_0x6eec('0xa')][_0x487de8['uniqueid']][_0x6eec('0x31')]=_0x487de8[_0x6eec('0x31')];this[_0x6eec('0xa')][_0x487de8[_0x6eec('0x18')]][_0x6eec('0x32')]=moment()[_0x6eec('0x19')]('YYYY-MM-DD\x20HH:mm:ss');this[_0x6eec('0xa')][_0x487de8[_0x6eec('0x18')]][_0x6eec('0x33')]='connect';logger['info'](_0x6eec('0x34'),_0x487de8[_0x6eec('0x18')],_0x487de8[_0x6eec('0x1b')][_0x6eec('0x1c')](_0x487de8[_0x6eec('0x1b')]['lastIndexOf']('/')+0x1,_0x487de8[_0x6eec('0x1b')][_0x6eec('0x1d')]('-')));logger[_0x6eec('0x17')](_0x6eec('0x35'),_0x487de8[_0x6eec('0x18')],util[_0x6eec('0x25')](this[_0x6eec('0xa')][_0x487de8[_0x6eec('0x18')]],{'showHidden':![],'depth':null}));ami['emit'](_0x6eec('0x36'),this[_0x6eec('0xa')][_0x487de8['uniqueid']]);}logger['debug'](_0x6eec('0x37'),_0x487de8[_0x6eec('0x18')],util[_0x6eec('0x25')](this[_0x6eec('0xa')][_0x487de8['uniqueid']],{'showHidden':![],'depth':null}));this['emit'](_0x6eec('0x28'),'voice_outbound_channel:save',this['channels'][_0x487de8[_0x6eec('0x18')]]);}}}catch(_0xe523b9){logger[_0x6eec('0x38')](_0x6eec('0x39'),_0x487de8[_0x6eec('0x18')],util['inspect'](_0xe523b9,{'showHidden':![],'depth':null}));}};VoiceDialReport[_0x6eec('0x13')][_0x6eec('0x3a')]=function(_0x4e0709){try{if(this[_0x6eec('0x14')](_0x4e0709)){logger[_0x6eec('0x17')]('[%s][voiceDialReport][varset]\x20event:',_0x4e0709[_0x6eec('0x18')],util[_0x6eec('0x25')](_0x4e0709,{'showHidden':![],'depth':null}));this['addVariable'](_0x4e0709[_0x6eec('0x18')],_[_0x6eec('0x3b')](_0x4e0709[_0x6eec('0x3c')])[0x0],_0x4e0709[_0x6eec('0x3d')]);if(this['isNotNull'](_0x4e0709[_0x6eec('0x3c')])&&this[_0x6eec('0x14')](_0x4e0709[_0x6eec('0x3c')][_0x6eec('0x3e')])){if(_[_0x6eec('0x15')](this['channels'][_0x4e0709['uniqueid']])){this[_0x6eec('0xa')][_0x4e0709[_0x6eec('0x18')]]={'routeId':_0x4e0709[_0x6eec('0x3d')],'variables':this[_0x6eec('0xd')][_0x4e0709[_0x6eec('0x18')]],'motionChannel':'voice'};logger[_0x6eec('0x20')]('[%s][voiceDialReport][varset]\x20outboundrouteid:%s\x20variable:%s\x20value:%s',_0x4e0709[_0x6eec('0x18')],_0x4e0709[_0x6eec('0x3c')][_0x6eec('0x3e')],_['keys'](_0x4e0709[_0x6eec('0x3c')])[0x0],_0x4e0709[_0x6eec('0x3d')]);logger[_0x6eec('0x17')](_0x6eec('0x3f'),_0x4e0709[_0x6eec('0x18')],util['inspect'](this[_0x6eec('0xa')][_0x4e0709['uniqueid']],{'showHidden':![],'depth':null}));this['emit'](_0x6eec('0x28'),'voice_outbound_channel:save',this[_0x6eec('0xa')][_0x4e0709[_0x6eec('0x18')]]);}}}}catch(_0x318f58){logger['error']('[%s][voiceDialReport][varset]',_0x4e0709[_0x6eec('0x18')],util[_0x6eec('0x25')](_0x318f58,{'showHidden':![],'depth':null}));}};VoiceDialReport[_0x6eec('0x13')][_0x6eec('0x40')]=function(_0x188359,_0x2c9650,_0x185711){var _0x442bca=[_0x6eec('0x41'),_0x6eec('0x42'),'rtpaudioqosjitter','rtpaudioqosjitterbridged',_0x6eec('0x43'),_0x6eec('0x44'),_0x6eec('0x45'),'rtpaudioqosrttbridged',_0x6eec('0x46'),_0x6eec('0x47'),_0x6eec('0x48'),_0x6eec('0x49'),_0x6eec('0x4a'),_0x6eec('0x4b'),_0x6eec('0x4c'),_0x6eec('0x4d'),'membername',_0x6eec('0x4e'),_0x6eec('0x4f')];if(!_[_0x6eec('0x50')](_0x2c9650)&&!_[_0x6eec('0x51')](_0x442bca,_0x2c9650)){if(_['isUndefined'](this['variables'][_0x188359])){this['variables'][_0x188359]={};}this[_0x6eec('0xd')][_0x188359][_0x2c9650]=_0x185711;}};VoiceDialReport[_0x6eec('0x13')][_0x6eec('0x52')]=function(_0x1de626){try{if(this['isNotNull'](_0x1de626)){logger['debug'](_0x6eec('0x53'),_0x1de626[_0x6eec('0x18')],util[_0x6eec('0x25')](_0x1de626,{'showHidden':![],'depth':null}));if(this['channels'][_0x1de626[_0x6eec('0x18')]]){logger[_0x6eec('0x20')](_0x6eec('0x54'),_0x1de626[_0x6eec('0x18')],_0x1de626[_0x6eec('0x55')]);this[_0x6eec('0xa')][_0x1de626[_0x6eec('0x18')]][_0x6eec('0x56')]=moment()[_0x6eec('0x19')]('YYYY-MM-DD\x20HH:mm:ss');this[_0x6eec('0xa')][_0x1de626['uniqueid']][_0x6eec('0x57')]=moment(this[_0x6eec('0xa')][_0x1de626[_0x6eec('0x18')]][_0x6eec('0x56')])[_0x6eec('0x58')](this[_0x6eec('0xa')][_0x1de626[_0x6eec('0x18')]]['starttime'],_0x6eec('0x59'));this['channels'][_0x1de626[_0x6eec('0x18')]]['lastevent']=_0x6eec('0x5a');this[_0x6eec('0xc')][_0x6eec('0x5b')]+=0x1;if(this[_0x6eec('0xa')][_0x1de626[_0x6eec('0x18')]][_0x6eec('0x32')]){this[_0x6eec('0xc')][_0x6eec('0x5c')]+=0x1;this[_0x6eec('0xa')][_0x1de626[_0x6eec('0x18')]]['holdtime']=moment(this['channels'][_0x1de626[_0x6eec('0x18')]][_0x6eec('0x32')])[_0x6eec('0x58')](this[_0x6eec('0xa')][_0x1de626[_0x6eec('0x18')]]['starttime'],_0x6eec('0x59'));this[_0x6eec('0xa')][_0x1de626['uniqueid']]['billableseconds']=moment(this['channels'][_0x1de626[_0x6eec('0x18')]][_0x6eec('0x56')])['diff'](this[_0x6eec('0xa')][_0x1de626[_0x6eec('0x18')]]['answertime'],_0x6eec('0x59'));this[_0x6eec('0xc')][_0x6eec('0x5d')]+=this[_0x6eec('0xa')][_0x1de626['uniqueid']]['holdtime']||0x0;this[_0x6eec('0xc')][_0x6eec('0x5e')]+=this[_0x6eec('0xa')][_0x1de626[_0x6eec('0x18')]][_0x6eec('0x5f')];}this[_0x6eec('0xc')][_0x6eec('0x60')]+=this[_0x6eec('0xa')][_0x1de626[_0x6eec('0x18')]][_0x6eec('0x57')];logger[_0x6eec('0x17')](_0x6eec('0x61'),_0x1de626[_0x6eec('0x18')],util[_0x6eec('0x25')](this[_0x6eec('0xa')][_0x1de626[_0x6eec('0x18')]],{'showHidden':![],'depth':null}));ami[_0x6eec('0x16')]('custom:voiceDialReport',this[_0x6eec('0xa')][_0x1de626[_0x6eec('0x18')]]);logger['debug'](_0x6eec('0x62'),_0x1de626[_0x6eec('0x18')],util['inspect'](this[_0x6eec('0xa')][_0x1de626[_0x6eec('0x18')]],{'showHidden':![],'depth':null}));ami[_0x6eec('0x16')](_0x6eec('0x63'),this['channels'][_0x1de626[_0x6eec('0x18')]]);logger[_0x6eec('0x17')](_0x6eec('0x64'),_0x1de626[_0x6eec('0x18')],util[_0x6eec('0x25')](this[_0x6eec('0xa')][_0x1de626['uniqueid']],{'showHidden':![],'depth':null}));this[_0x6eec('0x16')]('voice:outbound',_0x6eec('0x65'),this[_0x6eec('0xc')]);logger[_0x6eec('0x20')](_0x6eec('0x66'),JSON[_0x6eec('0x67')](this[_0x6eec('0xa')][_0x1de626[_0x6eec('0x18')]]));logger[_0x6eec('0x17')](_0x6eec('0x68'),_0x1de626['uniqueid'],util[_0x6eec('0x25')](this[_0x6eec('0xa')][_0x1de626[_0x6eec('0x18')]],{'showHidden':![],'depth':null}));this['emit'](_0x6eec('0x28'),_0x6eec('0x69'),this['channels'][_0x1de626[_0x6eec('0x18')]]);delete this[_0x6eec('0xa')][_0x1de626[_0x6eec('0x18')]];}else if(this[_0x6eec('0xa')][_0x1de626[_0x6eec('0x6a')]]){this['channels'][_0x1de626[_0x6eec('0x6a')]][_0x6eec('0x18')]=this[_0x6eec('0xa')][_0x1de626[_0x6eec('0x6a')]][_0x6eec('0x6b')];}if(this['variables'][_0x1de626[_0x6eec('0x18')]]){delete this[_0x6eec('0xd')][_0x1de626[_0x6eec('0x18')]];}}}catch(_0x1032f6){logger[_0x6eec('0x38')](_0x6eec('0x6c'),_0x1de626[_0x6eec('0x18')],util[_0x6eec('0x25')](_0x1032f6,{'showHidden':![],'depth':null}));}};VoiceDialReport['prototype'][_0x6eec('0x6d')]=function(_0x59341a){try{if(this[_0x6eec('0x14')](_0x59341a)){logger[_0x6eec('0x17')](_0x6eec('0x6e'),_0x59341a[_0x6eec('0x18')],util['inspect'](_0x59341a,{'showHidden':![],'depth':null}));if(_0x59341a[_0x6eec('0x6f')]['toLowerCase']()===_0x6eec('0x70')){_0x59341a[_0x6eec('0x71')]=(_0x59341a[_0x6eec('0x72')]||_0x59341a[_0x6eec('0x71')])['toLowerCase']();if(_['startsWith'](_0x59341a['applicationdata'],_0x6eec('0x73'))){if(_[_0x6eec('0x15')](this[_0x6eec('0x26')][_0x59341a[_0x6eec('0x18')]]))this['applications'][_0x59341a[_0x6eec('0x18')]]={};logger['info'](_0x6eec('0x74'),_0x59341a[_0x6eec('0x18')],_0x59341a['application'],_0x59341a[_0x6eec('0x71')]);var _0x2f9e8a=_0x59341a[_0x6eec('0x71')][_0x6eec('0x75')]('=');var _0x3fba23=_0x2f9e8a[0x0][_0x6eec('0x76')](/cdr\((.*)\)/);if(_0x3fba23)this['applications'][_0x59341a[_0x6eec('0x18')]][_0x3fba23[0x1]]=_0x2f9e8a[0x1];}}}}catch(_0x5aa2f3){logger[_0x6eec('0x38')](_0x6eec('0x77'),_0x59341a['uniqueid'],util[_0x6eec('0x25')](_0x5aa2f3,{'showHidden':![],'depth':null}));}};module['exports']=VoiceDialReport;