9e795a866d6ed43720995db8ced0f0dd45200315
[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 _0x42d3=['redis','localhost','socket.io-emitter','channels','outboundChannels','outbound','variables','syncDialBegin','bind','dialend','syncDialEnd','varset','hangup','syncHangup','prototype','isNotNull','isUndefined','emit','debug','[%s][voiceDialReport][dialbegin]\x20event:','uniqueid','merge','called','channel','substring','lastIndexOf','omit','privilege','info','[%s][voiceDialReport][dialbegin]\x20agent:%s\x20interface:%s\x20lastevent:called','interface','[%s][voiceDialReport][dialbegin]\x20sending\x20voice_outbound_channel:save\x20event:','inspect','voice:outbound','[%s][voiceDialReport][dialbegin]\x20sending\x20dialbegin\x20event:','custom:dialbegin','error','[%s][voiceDialReport][dialbegin]','[%s][voiceDialReport][dialend]\x20event:','dialstatus','ANSWER','connectedlinenum','connectedlinename','answertime','format','YYYY-MM-DD\x20HH:mm:ss','connect','[%s][voiceDialReport][dialend]\x20agent:%s\x20lastevent:connect','custom:dialconnect','[%s][voiceDialReport][dialend]\x20sending\x20voice_outbound_channel:save\x20event:','syncVarSet','[%s][voiceDialReport][varset]\x20event:','keys','value','[%s][voiceDialReport][varset]\x20outboundrouteid:%s\x20variable:%s\x20value:%s','variable','outboundrouteid','[%s][voiceDialReport][varset]\x20sending\x20voice_outbound_channel:save\x20event:','voice_outbound_channel:save','[%s][voiceDialReport][varset]','addVariable','rtpaudioqos','rtpaudioqosbridged','rtpaudioqosjitter','rtpaudioqosrttbridged','sipcallid','sipuri','bridgepeer','memberdynamic','memberinterface','memberlastcall','membername','includes','[%s][voiceDialReport][hangup]\x20reason:%s\x20lasteevent:complete','cause-txt','duration','endtime','diff','starttime','seconds','lastevent','complete','total','holdtime','billableseconds','sumBillable','sumDuration','[%s][voiceDialReport][hangup]\x20sending\x20dialend\x20event:','custom:dialend','[%s][voiceDialReport][hangup]\x20sending\x20voice_outbound:save\x20event:','[DEBUG]\x20Emit\x20voice_outbound_channel:remove\x20event','stringify','voice_outbound_channel:remove','linkedid','destuniqueid','exports','lodash','moment','util','ioredis','../../../config/environment','../../../config/logger','ami'];(function(_0x74e78f,_0x1175c2){var _0x2d2012=function(_0x26b9da){while(--_0x26b9da){_0x74e78f['push'](_0x74e78f['shift']());}};_0x2d2012(++_0x1175c2);}(_0x42d3,0x12e));var _0x342d=function(_0x5e03ad,_0x2eb620){_0x5e03ad=_0x5e03ad-0x0;var _0x4fea1a=_0x42d3[_0x5e03ad];return _0x4fea1a;};'use strict';var _=require(_0x342d('0x0'));var moment=require(_0x342d('0x1'));var util=require(_0x342d('0x2'));var Redis=require(_0x342d('0x3'));var config=require(_0x342d('0x4'));var logger=require(_0x342d('0x5'))(_0x342d('0x6'));var ami=require('../ami');config[_0x342d('0x7')]=_['defaults'](config[_0x342d('0x7')],{'host':_0x342d('0x8'),'port':0x18eb});var io=require(_0x342d('0x9'))(new Redis(config['redis']));function VoiceDialReport(_0x3cca73){this[_0x342d('0xa')]=_0x3cca73[_0x342d('0xb')];this[_0x342d('0xc')]=_0x3cca73[_0x342d('0xc')];this[_0x342d('0xd')]={};ami['on']('dialbegin',this[_0x342d('0xe')][_0x342d('0xf')](this));ami['on'](_0x342d('0x10'),this[_0x342d('0x11')][_0x342d('0xf')](this));ami['on'](_0x342d('0x12'),this['syncVarSet'][_0x342d('0xf')](this));ami['on'](_0x342d('0x13'),this[_0x342d('0x14')]['bind'](this));}VoiceDialReport[_0x342d('0x15')][_0x342d('0x16')]=function(_0x3b78e2){return _0x3b78e2!==null&&!_[_0x342d('0x17')](_0x3b78e2);};VoiceDialReport[_0x342d('0x15')]['emit']=function(_0xe7a35a,_0x50632f,_0x575039){io['to'](_0xe7a35a)[_0x342d('0x18')](_0x50632f,_0x575039);};VoiceDialReport[_0x342d('0x15')][_0x342d('0xe')]=function(_0x19d48a){try{if(this[_0x342d('0x16')](_0x19d48a)){logger[_0x342d('0x19')](_0x342d('0x1a'),_0x19d48a[_0x342d('0x1b')],util['inspect'](_0x19d48a,{'showHidden':![],'depth':null}));if(this[_0x342d('0xa')][_0x19d48a[_0x342d('0x1b')]]){_[_0x342d('0x1c')](this[_0x342d('0xa')][_0x19d48a[_0x342d('0x1b')]],{'starttime':moment()['format']('YYYY-MM-DD\x20HH:mm:ss'),'lastevent':_0x342d('0x1d'),'interface':_0x19d48a[_0x342d('0x1e')][_0x342d('0x1f')](0x0,_0x19d48a['channel'][_0x342d('0x20')]('-')),'membername':_0x19d48a[_0x342d('0x1e')]['substring'](_0x19d48a[_0x342d('0x1e')][_0x342d('0x20')]('/')+0x1,_0x19d48a['channel'][_0x342d('0x20')]('-'))},_[_0x342d('0x21')](_0x19d48a,['event',_0x342d('0x22')]));logger[_0x342d('0x23')](_0x342d('0x24'),_0x19d48a[_0x342d('0x1b')],this[_0x342d('0xa')][_0x19d48a[_0x342d('0x1b')]]['membername'],this[_0x342d('0xa')][_0x19d48a[_0x342d('0x1b')]][_0x342d('0x25')]);logger[_0x342d('0x19')](_0x342d('0x26'),_0x19d48a[_0x342d('0x1b')],util[_0x342d('0x27')](this[_0x342d('0xa')][_0x19d48a[_0x342d('0x1b')]],{'showHidden':![],'depth':null}));this['emit'](_0x342d('0x28'),'voice_outbound_channel:save',this[_0x342d('0xa')][_0x19d48a[_0x342d('0x1b')]]);logger['debug'](_0x342d('0x29'),_0x19d48a[_0x342d('0x1b')],util[_0x342d('0x27')](this[_0x342d('0xa')][_0x19d48a[_0x342d('0x1b')]],{'showHidden':![],'depth':null}));ami[_0x342d('0x18')](_0x342d('0x2a'),this[_0x342d('0xa')][_0x19d48a['uniqueid']]);}}}catch(_0x502fc4){logger[_0x342d('0x2b')](_0x342d('0x2c'),_0x19d48a[_0x342d('0x1b')],util[_0x342d('0x27')](_0x502fc4,{'showHidden':![],'depth':null}));}};VoiceDialReport[_0x342d('0x15')]['syncDialEnd']=function(_0x5d9c82){try{if(this[_0x342d('0x16')](_0x5d9c82)){logger[_0x342d('0x19')](_0x342d('0x2d'),_0x5d9c82['uniqueid'],util['inspect'](_0x5d9c82,{'showHidden':![],'depth':null}));if(this['channels'][_0x5d9c82[_0x342d('0x1b')]]){this[_0x342d('0xa')][_0x5d9c82[_0x342d('0x1b')]]['dialstatus']=_0x5d9c82[_0x342d('0x2e')];if(_0x5d9c82[_0x342d('0x2e')]===_0x342d('0x2f')){this['channels'][_0x5d9c82[_0x342d('0x1b')]][_0x342d('0x30')]=_0x5d9c82[_0x342d('0x30')];this[_0x342d('0xa')][_0x5d9c82[_0x342d('0x1b')]][_0x342d('0x31')]=_0x5d9c82[_0x342d('0x31')];this['channels'][_0x5d9c82['uniqueid']][_0x342d('0x32')]=moment()[_0x342d('0x33')](_0x342d('0x34'));this[_0x342d('0xa')][_0x5d9c82[_0x342d('0x1b')]]['lastevent']=_0x342d('0x35');logger[_0x342d('0x23')](_0x342d('0x36'),_0x5d9c82[_0x342d('0x1b')],_0x5d9c82['channel'][_0x342d('0x1f')](_0x5d9c82['channel'][_0x342d('0x20')]('/')+0x1,_0x5d9c82[_0x342d('0x1e')][_0x342d('0x20')]('-')));logger[_0x342d('0x19')]('[%s][voiceDialReport][dialend]\x20sending\x20dialconnect\x20event:',_0x5d9c82[_0x342d('0x1b')],util[_0x342d('0x27')](this[_0x342d('0xa')][_0x5d9c82['uniqueid']],{'showHidden':![],'depth':null}));ami['emit'](_0x342d('0x37'),this[_0x342d('0xa')][_0x5d9c82[_0x342d('0x1b')]]);}logger['debug'](_0x342d('0x38'),_0x5d9c82['uniqueid'],util[_0x342d('0x27')](this[_0x342d('0xa')][_0x5d9c82['uniqueid']],{'showHidden':![],'depth':null}));this[_0x342d('0x18')](_0x342d('0x28'),'voice_outbound_channel:save',this['channels'][_0x5d9c82[_0x342d('0x1b')]]);}}}catch(_0x18f5f5){logger['error']('[%s][voiceDialReport][dialend]',_0x5d9c82['uniqueid'],util['inspect'](_0x18f5f5,{'showHidden':![],'depth':null}));}};VoiceDialReport[_0x342d('0x15')][_0x342d('0x39')]=function(_0x3f488a){try{if(this[_0x342d('0x16')](_0x3f488a)){logger[_0x342d('0x19')](_0x342d('0x3a'),_0x3f488a[_0x342d('0x1b')],util['inspect'](_0x3f488a,{'showHidden':![],'depth':null}));this['addVariable'](_0x3f488a[_0x342d('0x1b')],_[_0x342d('0x3b')](_0x3f488a['variable'])[0x0],_0x3f488a[_0x342d('0x3c')]);if(this[_0x342d('0x16')](_0x3f488a['variable'])&&this[_0x342d('0x16')](_0x3f488a['variable']['outboundrouteid'])){if(_[_0x342d('0x17')](this[_0x342d('0xa')][_0x3f488a[_0x342d('0x1b')]])){this[_0x342d('0xa')][_0x3f488a[_0x342d('0x1b')]]={'routeId':_0x3f488a['value'],'variables':this[_0x342d('0xd')][_0x3f488a['uniqueid']]};logger[_0x342d('0x23')](_0x342d('0x3d'),_0x3f488a[_0x342d('0x1b')],_0x3f488a[_0x342d('0x3e')][_0x342d('0x3f')],_['keys'](_0x3f488a['variable'])[0x0],_0x3f488a[_0x342d('0x3c')]);logger['debug'](_0x342d('0x40'),_0x3f488a['uniqueid'],util['inspect'](this[_0x342d('0xa')][_0x3f488a[_0x342d('0x1b')]],{'showHidden':![],'depth':null}));this[_0x342d('0x18')](_0x342d('0x28'),_0x342d('0x41'),this[_0x342d('0xa')][_0x3f488a[_0x342d('0x1b')]]);}}}}catch(_0x2defdc){logger['error'](_0x342d('0x42'),_0x3f488a[_0x342d('0x1b')],util[_0x342d('0x27')](_0x2defdc,{'showHidden':![],'depth':null}));}};VoiceDialReport[_0x342d('0x15')][_0x342d('0x43')]=function(_0x4b3b38,_0x1f4f4e,_0x4aa51a){var _0x167bb3=[_0x342d('0x44'),_0x342d('0x45'),_0x342d('0x46'),'rtpaudioqosjitterbridged','rtpaudioqosloss','rtpaudioqoslossbridged','rtpaudioqosrtt',_0x342d('0x47'),_0x342d('0x48'),_0x342d('0x49'),_0x342d('0x4a'),'bridgepvtcallid','membercalls',_0x342d('0x4b'),_0x342d('0x4c'),_0x342d('0x4d'),_0x342d('0x4e'),'memberpenalty','memberrealtime'];if(!_['isNil'](_0x1f4f4e)&&!_[_0x342d('0x4f')](_0x167bb3,_0x1f4f4e)){if(_[_0x342d('0x17')](this['variables'][_0x4b3b38])){this[_0x342d('0xd')][_0x4b3b38]={};}this[_0x342d('0xd')][_0x4b3b38][_0x1f4f4e]=_0x4aa51a;}};VoiceDialReport[_0x342d('0x15')][_0x342d('0x14')]=function(_0x5bd281){try{if(this[_0x342d('0x16')](_0x5bd281)){logger[_0x342d('0x19')]('[%s][voiceDialReport][hangup]\x20event:',_0x5bd281[_0x342d('0x1b')],util[_0x342d('0x27')](_0x5bd281,{'showHidden':![],'depth':null}));if(this['channels'][_0x5bd281[_0x342d('0x1b')]]){logger['info'](_0x342d('0x50'),_0x5bd281['uniqueid'],_0x5bd281[_0x342d('0x51')]);this[_0x342d('0xa')][_0x5bd281[_0x342d('0x1b')]]['endtime']=moment()['format'](_0x342d('0x34'));this[_0x342d('0xa')][_0x5bd281[_0x342d('0x1b')]][_0x342d('0x52')]=moment(this[_0x342d('0xa')][_0x5bd281['uniqueid']][_0x342d('0x53')])[_0x342d('0x54')](this[_0x342d('0xa')][_0x5bd281[_0x342d('0x1b')]][_0x342d('0x55')],_0x342d('0x56'));this[_0x342d('0xa')][_0x5bd281[_0x342d('0x1b')]][_0x342d('0x57')]=_0x342d('0x58');this[_0x342d('0xc')][_0x342d('0x59')]+=0x1;if(this['channels'][_0x5bd281[_0x342d('0x1b')]][_0x342d('0x32')]){this[_0x342d('0xc')]['answered']+=0x1;this['channels'][_0x5bd281[_0x342d('0x1b')]][_0x342d('0x5a')]=moment(this[_0x342d('0xa')][_0x5bd281[_0x342d('0x1b')]][_0x342d('0x32')])[_0x342d('0x54')](this[_0x342d('0xa')][_0x5bd281['uniqueid']][_0x342d('0x55')],_0x342d('0x56'));this[_0x342d('0xa')][_0x5bd281[_0x342d('0x1b')]][_0x342d('0x5b')]=moment(this[_0x342d('0xa')][_0x5bd281[_0x342d('0x1b')]]['endtime'])[_0x342d('0x54')](this['channels'][_0x5bd281[_0x342d('0x1b')]][_0x342d('0x32')],_0x342d('0x56'));this[_0x342d('0xc')]['sumHoldTime']+=this[_0x342d('0xa')][_0x5bd281[_0x342d('0x1b')]]['holdtime']||0x0;this[_0x342d('0xc')][_0x342d('0x5c')]+=this[_0x342d('0xa')][_0x5bd281[_0x342d('0x1b')]]['billableseconds'];}this[_0x342d('0xc')][_0x342d('0x5d')]+=this[_0x342d('0xa')][_0x5bd281[_0x342d('0x1b')]][_0x342d('0x52')];logger['debug']('[%s][voiceDialReport][hangup]\x20sending\x20voiceDialReport\x20event:',_0x5bd281[_0x342d('0x1b')],util[_0x342d('0x27')](this[_0x342d('0xa')][_0x5bd281[_0x342d('0x1b')]],{'showHidden':![],'depth':null}));ami[_0x342d('0x18')]('custom:voiceDialReport',this[_0x342d('0xa')][_0x5bd281[_0x342d('0x1b')]]);logger[_0x342d('0x19')](_0x342d('0x5e'),_0x5bd281['uniqueid'],util[_0x342d('0x27')](this[_0x342d('0xa')][_0x5bd281[_0x342d('0x1b')]],{'showHidden':![],'depth':null}));ami[_0x342d('0x18')](_0x342d('0x5f'),this[_0x342d('0xa')][_0x5bd281[_0x342d('0x1b')]]);logger[_0x342d('0x19')](_0x342d('0x60'),_0x5bd281[_0x342d('0x1b')],util[_0x342d('0x27')](this['channels'][_0x5bd281[_0x342d('0x1b')]],{'showHidden':![],'depth':null}));this[_0x342d('0x18')](_0x342d('0x28'),'voice_outbound:save',this[_0x342d('0xc')]);logger[_0x342d('0x23')](_0x342d('0x61'),JSON[_0x342d('0x62')](this[_0x342d('0xa')][_0x5bd281[_0x342d('0x1b')]]));logger[_0x342d('0x19')]('[%s][voiceDialReport][hangup]\x20sending\x20voice_outbound_channel:remove\x20event:',_0x5bd281[_0x342d('0x1b')],util[_0x342d('0x27')](this[_0x342d('0xa')][_0x5bd281['uniqueid']],{'showHidden':![],'depth':null}));this['emit'](_0x342d('0x28'),_0x342d('0x63'),this[_0x342d('0xa')][_0x5bd281['uniqueid']]);delete this[_0x342d('0xa')][_0x5bd281[_0x342d('0x1b')]];}else if(this[_0x342d('0xa')][_0x5bd281[_0x342d('0x64')]]){this[_0x342d('0xa')][_0x5bd281[_0x342d('0x64')]][_0x342d('0x1b')]=this[_0x342d('0xa')][_0x5bd281['linkedid']][_0x342d('0x65')];}if(this[_0x342d('0xd')][_0x5bd281[_0x342d('0x1b')]]){delete this[_0x342d('0xd')][_0x5bd281['uniqueid']];}}}catch(_0x383d05){logger[_0x342d('0x2b')]('[%s][voiceDialReport][hangup]',_0x5bd281['uniqueid'],util[_0x342d('0x27')](_0x383d05,{'showHidden':![],'depth':null}));}};module[_0x342d('0x66')]=VoiceDialReport;