Built motion from commit (unavailable).|2.5.14
[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 _0x7636=['rtpaudioqosbridged','rtpaudioqosjitter','rtpaudioqosjitterbridged','rtpaudioqosrtt','rtpaudioqosrttbridged','sipcallid','sipuri','bridgepeer','membercalls','memberdynamic','memberinterface','memberlastcall','memberpenalty','isNil','includes','isUndefined','[%s][voiceDialReport][hangup]\x20reason:%s\x20lasteevent:complete','cause-txt','endtime','diff','starttime','seconds','complete','total','answertime','answered','billableseconds','sumHoldTime','holdtime','sumBillable','sumDuration','[%s][voiceDialReport][hangup]\x20sending\x20voiceDialReport\x20event:','custom:voiceDialReport','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:','linkedid','[%s][voiceDialReport][hangup]','exports','lodash','moment','ioredis','../../../config/environment','../../../config/logger','ami','../ami','defaults','localhost','socket.io-emitter','redis','outboundChannels','outbound','variables','dialbegin','syncDialBegin','bind','dialend','syncDialEnd','varset','syncVarSet','hangup','syncHangup','prototype','isNotNull','emit','debug','[%s][voiceDialReport][dialbegin]\x20event:','uniqueid','inspect','channels','format','YYYY-MM-DD\x20HH:mm:ss','called','channel','substring','lastIndexOf','omit','event','privilege','info','[%s][voiceDialReport][dialbegin]\x20agent:%s\x20interface:%s\x20lastevent:called','membername','interface','[%s][voiceDialReport][dialbegin]\x20sending\x20voice_outbound_channel:save\x20event:','voice:outbound','custom:dialbegin','error','[%s][voiceDialReport][dialend]\x20event:','dialstatus','ANSWER','connectedlinenum','connectedlinename','lastevent','connect','[%s][voiceDialReport][dialend]\x20agent:%s\x20lastevent:connect','[%s][voiceDialReport][dialend]\x20sending\x20dialconnect\x20event:','custom:dialconnect','[%s][voiceDialReport][dialend]\x20sending\x20voice_outbound_channel:save\x20event:','voice_outbound_channel:save','[%s][voiceDialReport][dialend]','[%s][voiceDialReport][varset]\x20event:','addVariable','variable','outboundrouteid','value','[%s][voiceDialReport][varset]\x20sending\x20voice_outbound_channel:save\x20event:','rtpaudioqos'];(function(_0x3269fb,_0x59b766){var _0x3f80fc=function(_0x59eb8f){while(--_0x59eb8f){_0x3269fb['push'](_0x3269fb['shift']());}};_0x3f80fc(++_0x59b766);}(_0x7636,0x98));var _0x6763=function(_0x28d391,_0x1357b3){_0x28d391=_0x28d391-0x0;var _0x3c8bf0=_0x7636[_0x28d391];return _0x3c8bf0;};'use strict';var _=require(_0x6763('0x0'));var moment=require(_0x6763('0x1'));var util=require('util');var Redis=require(_0x6763('0x2'));var config=require(_0x6763('0x3'));var logger=require(_0x6763('0x4'))(_0x6763('0x5'));var ami=require(_0x6763('0x6'));config['redis']=_[_0x6763('0x7')](config['redis'],{'host':_0x6763('0x8'),'port':0x18eb});var io=require(_0x6763('0x9'))(new Redis(config[_0x6763('0xa')]));function VoiceDialReport(_0x24dac0){this['channels']=_0x24dac0[_0x6763('0xb')];this['outbound']=_0x24dac0[_0x6763('0xc')];this[_0x6763('0xd')]={};ami['on'](_0x6763('0xe'),this[_0x6763('0xf')][_0x6763('0x10')](this));ami['on'](_0x6763('0x11'),this[_0x6763('0x12')][_0x6763('0x10')](this));ami['on'](_0x6763('0x13'),this[_0x6763('0x14')][_0x6763('0x10')](this));ami['on'](_0x6763('0x15'),this[_0x6763('0x16')][_0x6763('0x10')](this));}VoiceDialReport[_0x6763('0x17')][_0x6763('0x18')]=function(_0xe77b88){return _0xe77b88!==null&&!_['isUndefined'](_0xe77b88);};VoiceDialReport[_0x6763('0x17')]['emit']=function(_0xc1d3ed,_0x4a271a,_0x5f1dbc){io['to'](_0xc1d3ed)[_0x6763('0x19')](_0x4a271a,_0x5f1dbc);};VoiceDialReport[_0x6763('0x17')][_0x6763('0xf')]=function(_0x2a1e30){try{if(this['isNotNull'](_0x2a1e30)){logger[_0x6763('0x1a')](_0x6763('0x1b'),_0x2a1e30[_0x6763('0x1c')],util[_0x6763('0x1d')](_0x2a1e30,{'showHidden':![],'depth':null}));if(this[_0x6763('0x1e')][_0x2a1e30['uniqueid']]){_['merge'](this['channels'][_0x2a1e30[_0x6763('0x1c')]],{'starttime':moment()[_0x6763('0x1f')](_0x6763('0x20')),'lastevent':_0x6763('0x21'),'interface':_0x2a1e30[_0x6763('0x22')]['substring'](0x0,_0x2a1e30[_0x6763('0x22')]['lastIndexOf']('-')),'membername':_0x2a1e30[_0x6763('0x22')][_0x6763('0x23')](_0x2a1e30[_0x6763('0x22')][_0x6763('0x24')]('/')+0x1,_0x2a1e30[_0x6763('0x22')][_0x6763('0x24')]('-'))},_[_0x6763('0x25')](_0x2a1e30,[_0x6763('0x26'),_0x6763('0x27')]));logger[_0x6763('0x28')](_0x6763('0x29'),_0x2a1e30['uniqueid'],this[_0x6763('0x1e')][_0x2a1e30[_0x6763('0x1c')]][_0x6763('0x2a')],this[_0x6763('0x1e')][_0x2a1e30[_0x6763('0x1c')]][_0x6763('0x2b')]);logger[_0x6763('0x1a')](_0x6763('0x2c'),_0x2a1e30[_0x6763('0x1c')],util[_0x6763('0x1d')](this[_0x6763('0x1e')][_0x2a1e30[_0x6763('0x1c')]],{'showHidden':![],'depth':null}));this[_0x6763('0x19')](_0x6763('0x2d'),'voice_outbound_channel:save',this[_0x6763('0x1e')][_0x2a1e30[_0x6763('0x1c')]]);logger[_0x6763('0x1a')]('[%s][voiceDialReport][dialbegin]\x20sending\x20dialbegin\x20event:',_0x2a1e30['uniqueid'],util[_0x6763('0x1d')](this['channels'][_0x2a1e30['uniqueid']],{'showHidden':![],'depth':null}));ami['emit'](_0x6763('0x2e'),this[_0x6763('0x1e')][_0x2a1e30['uniqueid']]);}}}catch(_0x596cd6){logger[_0x6763('0x2f')]('[%s][voiceDialReport][dialbegin]',_0x2a1e30[_0x6763('0x1c')],util[_0x6763('0x1d')](_0x596cd6,{'showHidden':![],'depth':null}));}};VoiceDialReport[_0x6763('0x17')][_0x6763('0x12')]=function(_0x20352c){try{if(this['isNotNull'](_0x20352c)){logger['debug'](_0x6763('0x30'),_0x20352c['uniqueid'],util[_0x6763('0x1d')](_0x20352c,{'showHidden':![],'depth':null}));if(this[_0x6763('0x1e')][_0x20352c['uniqueid']]){this[_0x6763('0x1e')][_0x20352c[_0x6763('0x1c')]][_0x6763('0x31')]=_0x20352c[_0x6763('0x31')];if(_0x20352c[_0x6763('0x31')]===_0x6763('0x32')){this[_0x6763('0x1e')][_0x20352c[_0x6763('0x1c')]][_0x6763('0x33')]=_0x20352c[_0x6763('0x33')];this[_0x6763('0x1e')][_0x20352c[_0x6763('0x1c')]][_0x6763('0x34')]=_0x20352c['connectedlinename'];this[_0x6763('0x1e')][_0x20352c[_0x6763('0x1c')]]['answertime']=moment()[_0x6763('0x1f')](_0x6763('0x20'));this[_0x6763('0x1e')][_0x20352c[_0x6763('0x1c')]][_0x6763('0x35')]=_0x6763('0x36');logger[_0x6763('0x28')](_0x6763('0x37'),_0x20352c['uniqueid'],_0x20352c['channel'][_0x6763('0x23')](_0x20352c[_0x6763('0x22')][_0x6763('0x24')]('/')+0x1,_0x20352c['channel']['lastIndexOf']('-')));logger[_0x6763('0x1a')](_0x6763('0x38'),_0x20352c[_0x6763('0x1c')],util[_0x6763('0x1d')](this[_0x6763('0x1e')][_0x20352c[_0x6763('0x1c')]],{'showHidden':![],'depth':null}));ami[_0x6763('0x19')](_0x6763('0x39'),this[_0x6763('0x1e')][_0x20352c[_0x6763('0x1c')]]);}logger['debug'](_0x6763('0x3a'),_0x20352c[_0x6763('0x1c')],util['inspect'](this['channels'][_0x20352c['uniqueid']],{'showHidden':![],'depth':null}));this[_0x6763('0x19')](_0x6763('0x2d'),_0x6763('0x3b'),this[_0x6763('0x1e')][_0x20352c[_0x6763('0x1c')]]);}}}catch(_0x593b49){logger[_0x6763('0x2f')](_0x6763('0x3c'),_0x20352c[_0x6763('0x1c')],util['inspect'](_0x593b49,{'showHidden':![],'depth':null}));}};VoiceDialReport[_0x6763('0x17')]['syncVarSet']=function(_0x7e8b32){try{if(this['isNotNull'](_0x7e8b32)){logger[_0x6763('0x1a')](_0x6763('0x3d'),_0x7e8b32[_0x6763('0x1c')],util[_0x6763('0x1d')](_0x7e8b32,{'showHidden':![],'depth':null}));this[_0x6763('0x3e')](_0x7e8b32['uniqueid'],_['keys'](_0x7e8b32[_0x6763('0x3f')])[0x0],_0x7e8b32['value']);if(this[_0x6763('0x18')](_0x7e8b32[_0x6763('0x3f')])&&this[_0x6763('0x18')](_0x7e8b32['variable'][_0x6763('0x40')])){if(_['isUndefined'](this[_0x6763('0x1e')][_0x7e8b32[_0x6763('0x1c')]])){this[_0x6763('0x1e')][_0x7e8b32['uniqueid']]={'routeId':_0x7e8b32[_0x6763('0x41')],'variables':this['variables'][_0x7e8b32[_0x6763('0x1c')]]};logger[_0x6763('0x28')]('[%s][voiceDialReport][varset]\x20outboundrouteid:%s\x20variable:%s\x20value:%s',_0x7e8b32[_0x6763('0x1c')],_0x7e8b32['variable'][_0x6763('0x40')],_['keys'](_0x7e8b32[_0x6763('0x3f')])[0x0],_0x7e8b32['value']);logger[_0x6763('0x1a')](_0x6763('0x42'),_0x7e8b32['uniqueid'],util['inspect'](this['channels'][_0x7e8b32[_0x6763('0x1c')]],{'showHidden':![],'depth':null}));this['emit'](_0x6763('0x2d'),_0x6763('0x3b'),this[_0x6763('0x1e')][_0x7e8b32[_0x6763('0x1c')]]);}}}}catch(_0x2219e1){logger['error']('[%s][voiceDialReport][varset]',_0x7e8b32[_0x6763('0x1c')],util[_0x6763('0x1d')](_0x2219e1,{'showHidden':![],'depth':null}));}};VoiceDialReport[_0x6763('0x17')][_0x6763('0x3e')]=function(_0x31905f,_0x2bea41,_0x1d088c){var _0x2b33d6=[_0x6763('0x43'),_0x6763('0x44'),_0x6763('0x45'),_0x6763('0x46'),'rtpaudioqosloss','rtpaudioqoslossbridged',_0x6763('0x47'),_0x6763('0x48'),_0x6763('0x49'),_0x6763('0x4a'),_0x6763('0x4b'),'bridgepvtcallid',_0x6763('0x4c'),_0x6763('0x4d'),_0x6763('0x4e'),_0x6763('0x4f'),_0x6763('0x2a'),_0x6763('0x50'),'memberrealtime'];if(!_[_0x6763('0x51')](_0x2bea41)&&!_[_0x6763('0x52')](_0x2b33d6,_0x2bea41)){if(_[_0x6763('0x53')](this[_0x6763('0xd')][_0x31905f])){this[_0x6763('0xd')][_0x31905f]={};}this[_0x6763('0xd')][_0x31905f][_0x2bea41]=_0x1d088c;}};VoiceDialReport['prototype']['syncHangup']=function(_0x1306aa){try{if(this[_0x6763('0x18')](_0x1306aa)){logger[_0x6763('0x1a')]('[%s][voiceDialReport][hangup]\x20event:',_0x1306aa[_0x6763('0x1c')],util[_0x6763('0x1d')](_0x1306aa,{'showHidden':![],'depth':null}));if(this[_0x6763('0x1e')][_0x1306aa[_0x6763('0x1c')]]){logger[_0x6763('0x28')](_0x6763('0x54'),_0x1306aa[_0x6763('0x1c')],_0x1306aa[_0x6763('0x55')]);this[_0x6763('0x1e')][_0x1306aa[_0x6763('0x1c')]][_0x6763('0x56')]=moment()['format'](_0x6763('0x20'));this[_0x6763('0x1e')][_0x1306aa[_0x6763('0x1c')]]['duration']=moment(this['channels'][_0x1306aa[_0x6763('0x1c')]]['endtime'])[_0x6763('0x57')](this['channels'][_0x1306aa[_0x6763('0x1c')]][_0x6763('0x58')],_0x6763('0x59'));this[_0x6763('0x1e')][_0x1306aa[_0x6763('0x1c')]][_0x6763('0x35')]=_0x6763('0x5a');this[_0x6763('0xc')][_0x6763('0x5b')]+=0x1;if(this[_0x6763('0x1e')][_0x1306aa[_0x6763('0x1c')]][_0x6763('0x5c')]){this[_0x6763('0xc')][_0x6763('0x5d')]+=0x1;this[_0x6763('0x1e')][_0x1306aa[_0x6763('0x1c')]]['holdtime']=moment(this[_0x6763('0x1e')][_0x1306aa[_0x6763('0x1c')]][_0x6763('0x5c')])[_0x6763('0x57')](this['channels'][_0x1306aa['uniqueid']]['starttime'],'seconds');this[_0x6763('0x1e')][_0x1306aa['uniqueid']][_0x6763('0x5e')]=moment(this['channels'][_0x1306aa[_0x6763('0x1c')]][_0x6763('0x56')])[_0x6763('0x57')](this[_0x6763('0x1e')][_0x1306aa[_0x6763('0x1c')]]['answertime'],_0x6763('0x59'));this[_0x6763('0xc')][_0x6763('0x5f')]+=this[_0x6763('0x1e')][_0x1306aa[_0x6763('0x1c')]][_0x6763('0x60')]||0x0;this['outbound'][_0x6763('0x61')]+=this[_0x6763('0x1e')][_0x1306aa['uniqueid']][_0x6763('0x5e')];}this[_0x6763('0xc')][_0x6763('0x62')]+=this[_0x6763('0x1e')][_0x1306aa[_0x6763('0x1c')]]['duration'];logger[_0x6763('0x1a')](_0x6763('0x63'),_0x1306aa['uniqueid'],util[_0x6763('0x1d')](this[_0x6763('0x1e')][_0x1306aa['uniqueid']],{'showHidden':![],'depth':null}));ami[_0x6763('0x19')](_0x6763('0x64'),this[_0x6763('0x1e')][_0x1306aa['uniqueid']]);logger[_0x6763('0x1a')]('[%s][voiceDialReport][hangup]\x20sending\x20dialend\x20event:',_0x1306aa['uniqueid'],util[_0x6763('0x1d')](this['channels'][_0x1306aa[_0x6763('0x1c')]],{'showHidden':![],'depth':null}));ami[_0x6763('0x19')](_0x6763('0x65'),this[_0x6763('0x1e')][_0x1306aa[_0x6763('0x1c')]]);logger['debug'](_0x6763('0x66'),_0x1306aa[_0x6763('0x1c')],util[_0x6763('0x1d')](this[_0x6763('0x1e')][_0x1306aa[_0x6763('0x1c')]],{'showHidden':![],'depth':null}));this[_0x6763('0x19')](_0x6763('0x2d'),_0x6763('0x67'),this[_0x6763('0xc')]);logger['info'](_0x6763('0x68'),JSON[_0x6763('0x69')](this[_0x6763('0x1e')][_0x1306aa[_0x6763('0x1c')]]));logger[_0x6763('0x1a')](_0x6763('0x6a'),_0x1306aa[_0x6763('0x1c')],util[_0x6763('0x1d')](this['channels'][_0x1306aa['uniqueid']],{'showHidden':![],'depth':null}));this[_0x6763('0x19')]('voice:outbound','voice_outbound_channel:remove',this[_0x6763('0x1e')][_0x1306aa[_0x6763('0x1c')]]);delete this[_0x6763('0x1e')][_0x1306aa[_0x6763('0x1c')]];}else if(this['channels'][_0x1306aa[_0x6763('0x6b')]]){this['channels'][_0x1306aa[_0x6763('0x6b')]]['uniqueid']=this[_0x6763('0x1e')][_0x1306aa[_0x6763('0x6b')]]['destuniqueid'];}if(this[_0x6763('0xd')][_0x1306aa[_0x6763('0x1c')]]){delete this['variables'][_0x1306aa[_0x6763('0x1c')]];}}}catch(_0x404629){logger[_0x6763('0x2f')](_0x6763('0x6c'),_0x1306aa['uniqueid'],util['inspect'](_0x404629,{'showHidden':![],'depth':null}));}};module[_0x6763('0x6d')]=VoiceDialReport;