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