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