Built motion from commit (unavailable).|2.5.25
[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 _0x783f=['destuniqueid','[%s][voiceDialReport][hangup]','exports','lodash','moment','../../../config/logger','ami','../ami','redis','defaults','socket.io-emitter','channels','outbound','variables','syncDialBegin','bind','dialend','syncDialEnd','syncVarSet','hangup','syncHangup','prototype','isNotNull','isUndefined','emit','debug','[%s][voiceDialReport][dialbegin]\x20event:','inspect','uniqueid','merge','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','voice_outbound_channel:save','[%s][voiceDialReport][dialbegin]\x20sending\x20dialbegin\x20event:','custom:dialbegin','error','[%s][voiceDialReport][dialbegin]','[%s][voiceDialReport][dialend]\x20event:','dialstatus','ANSWER','connectedlinenum','answertime','lastevent','[%s][voiceDialReport][dialend]\x20agent:%s\x20lastevent:connect','[%s][voiceDialReport][dialend]\x20sending\x20dialconnect\x20event:','custom:dialconnect','[%s][voiceDialReport][dialend]','[%s][voiceDialReport][varset]\x20event:','addVariable','keys','variable','value','outboundrouteid','[%s][voiceDialReport][varset]\x20sending\x20voice_outbound_channel:save\x20event:','[%s][voiceDialReport][varset]','rtpaudioqosbridged','rtpaudioqosjitter','rtpaudioqosjitterbridged','rtpaudioqosloss','rtpaudioqoslossbridged','rtpaudioqosrttbridged','sipcallid','bridgepeer','bridgepvtcallid','membercalls','memberdynamic','memberinterface','memberlastcall','memberpenalty','memberrealtime','isNil','[%s][voiceDialReport][hangup]\x20event:','[%s][voiceDialReport][hangup]\x20reason:%s\x20lasteevent:complete','cause-txt','duration','endtime','complete','total','answered','holdtime','seconds','billableseconds','sumHoldTime','sumBillable','sumDuration','[%s][voiceDialReport][hangup]\x20sending\x20voiceDialReport\x20event:','[%s][voiceDialReport][hangup]\x20sending\x20dialend\x20event:','[DEBUG]\x20Emit\x20voice_outbound_channel:remove\x20event','stringify','[%s][voiceDialReport][hangup]\x20sending\x20voice_outbound_channel:remove\x20event:','voice_outbound_channel:remove','linkedid'];(function(_0x3ffeab,_0xb6f562){var _0x1c75b9=function(_0x2961a1){while(--_0x2961a1){_0x3ffeab['push'](_0x3ffeab['shift']());}};_0x1c75b9(++_0xb6f562);}(_0x783f,0x1a7));var _0xf783=function(_0x4d321d,_0x2c33df){_0x4d321d=_0x4d321d-0x0;var _0x312ccc=_0x783f[_0x4d321d];return _0x312ccc;};'use strict';var _=require(_0xf783('0x0'));var moment=require(_0xf783('0x1'));var util=require('util');var Redis=require('ioredis');var config=require('../../../config/environment');var logger=require(_0xf783('0x2'))(_0xf783('0x3'));var ami=require(_0xf783('0x4'));config[_0xf783('0x5')]=_[_0xf783('0x6')](config[_0xf783('0x5')],{'host':'localhost','port':0x18eb});var io=require(_0xf783('0x7'))(new Redis(config[_0xf783('0x5')]));function VoiceDialReport(_0xa29aa2){this[_0xf783('0x8')]=_0xa29aa2['outboundChannels'];this['outbound']=_0xa29aa2[_0xf783('0x9')];this[_0xf783('0xa')]={};ami['on']('dialbegin',this[_0xf783('0xb')][_0xf783('0xc')](this));ami['on'](_0xf783('0xd'),this[_0xf783('0xe')][_0xf783('0xc')](this));ami['on']('varset',this[_0xf783('0xf')][_0xf783('0xc')](this));ami['on'](_0xf783('0x10'),this[_0xf783('0x11')][_0xf783('0xc')](this));}VoiceDialReport[_0xf783('0x12')][_0xf783('0x13')]=function(_0x3ed9f5){return _0x3ed9f5!==null&&!_[_0xf783('0x14')](_0x3ed9f5);};VoiceDialReport[_0xf783('0x12')][_0xf783('0x15')]=function(_0xf47df0,_0x25a929,_0x207d87){io['to'](_0xf47df0)[_0xf783('0x15')](_0x25a929,_0x207d87);};VoiceDialReport[_0xf783('0x12')]['syncDialBegin']=function(_0x50f43){try{if(this[_0xf783('0x13')](_0x50f43)){logger[_0xf783('0x16')](_0xf783('0x17'),_0x50f43['uniqueid'],util[_0xf783('0x18')](_0x50f43,{'showHidden':![],'depth':null}));if(this['channels'][_0x50f43[_0xf783('0x19')]]){_[_0xf783('0x1a')](this[_0xf783('0x8')][_0x50f43[_0xf783('0x19')]],{'starttime':moment()[_0xf783('0x1b')](_0xf783('0x1c')),'lastevent':_0xf783('0x1d'),'interface':_0x50f43[_0xf783('0x1e')][_0xf783('0x1f')](0x0,_0x50f43['channel'][_0xf783('0x20')]('-')),'membername':_0x50f43[_0xf783('0x1e')][_0xf783('0x1f')](_0x50f43[_0xf783('0x1e')]['lastIndexOf']('/')+0x1,_0x50f43[_0xf783('0x1e')]['lastIndexOf']('-'))},_[_0xf783('0x21')](_0x50f43,[_0xf783('0x22'),_0xf783('0x23')]));logger[_0xf783('0x24')](_0xf783('0x25'),_0x50f43[_0xf783('0x19')],this[_0xf783('0x8')][_0x50f43[_0xf783('0x19')]][_0xf783('0x26')],this['channels'][_0x50f43['uniqueid']][_0xf783('0x27')]);logger[_0xf783('0x16')](_0xf783('0x28'),_0x50f43[_0xf783('0x19')],util[_0xf783('0x18')](this['channels'][_0x50f43['uniqueid']],{'showHidden':![],'depth':null}));this['emit'](_0xf783('0x29'),_0xf783('0x2a'),this[_0xf783('0x8')][_0x50f43['uniqueid']]);logger[_0xf783('0x16')](_0xf783('0x2b'),_0x50f43[_0xf783('0x19')],util[_0xf783('0x18')](this[_0xf783('0x8')][_0x50f43[_0xf783('0x19')]],{'showHidden':![],'depth':null}));ami[_0xf783('0x15')](_0xf783('0x2c'),this['channels'][_0x50f43['uniqueid']]);}}}catch(_0x5f3039){logger[_0xf783('0x2d')](_0xf783('0x2e'),_0x50f43[_0xf783('0x19')],util[_0xf783('0x18')](_0x5f3039,{'showHidden':![],'depth':null}));}};VoiceDialReport[_0xf783('0x12')][_0xf783('0xe')]=function(_0x21fd77){try{if(this[_0xf783('0x13')](_0x21fd77)){logger[_0xf783('0x16')](_0xf783('0x2f'),_0x21fd77['uniqueid'],util[_0xf783('0x18')](_0x21fd77,{'showHidden':![],'depth':null}));if(this[_0xf783('0x8')][_0x21fd77[_0xf783('0x19')]]){this['channels'][_0x21fd77['uniqueid']][_0xf783('0x30')]=_0x21fd77[_0xf783('0x30')];if(_0x21fd77[_0xf783('0x30')]===_0xf783('0x31')){this[_0xf783('0x8')][_0x21fd77['uniqueid']][_0xf783('0x32')]=_0x21fd77[_0xf783('0x32')];this[_0xf783('0x8')][_0x21fd77['uniqueid']]['connectedlinename']=_0x21fd77['connectedlinename'];this[_0xf783('0x8')][_0x21fd77['uniqueid']][_0xf783('0x33')]=moment()[_0xf783('0x1b')](_0xf783('0x1c'));this[_0xf783('0x8')][_0x21fd77[_0xf783('0x19')]][_0xf783('0x34')]='connect';logger['info'](_0xf783('0x35'),_0x21fd77[_0xf783('0x19')],_0x21fd77['channel'][_0xf783('0x1f')](_0x21fd77['channel'][_0xf783('0x20')]('/')+0x1,_0x21fd77[_0xf783('0x1e')][_0xf783('0x20')]('-')));logger[_0xf783('0x16')](_0xf783('0x36'),_0x21fd77[_0xf783('0x19')],util['inspect'](this[_0xf783('0x8')][_0x21fd77['uniqueid']],{'showHidden':![],'depth':null}));ami[_0xf783('0x15')](_0xf783('0x37'),this['channels'][_0x21fd77[_0xf783('0x19')]]);}logger['debug']('[%s][voiceDialReport][dialend]\x20sending\x20voice_outbound_channel:save\x20event:',_0x21fd77['uniqueid'],util['inspect'](this[_0xf783('0x8')][_0x21fd77[_0xf783('0x19')]],{'showHidden':![],'depth':null}));this[_0xf783('0x15')](_0xf783('0x29'),'voice_outbound_channel:save',this[_0xf783('0x8')][_0x21fd77[_0xf783('0x19')]]);}}}catch(_0x2aefd8){logger[_0xf783('0x2d')](_0xf783('0x38'),_0x21fd77[_0xf783('0x19')],util[_0xf783('0x18')](_0x2aefd8,{'showHidden':![],'depth':null}));}};VoiceDialReport[_0xf783('0x12')][_0xf783('0xf')]=function(_0x19fcbc){try{if(this[_0xf783('0x13')](_0x19fcbc)){logger[_0xf783('0x16')](_0xf783('0x39'),_0x19fcbc[_0xf783('0x19')],util['inspect'](_0x19fcbc,{'showHidden':![],'depth':null}));this[_0xf783('0x3a')](_0x19fcbc[_0xf783('0x19')],_[_0xf783('0x3b')](_0x19fcbc[_0xf783('0x3c')])[0x0],_0x19fcbc[_0xf783('0x3d')]);if(this[_0xf783('0x13')](_0x19fcbc['variable'])&&this[_0xf783('0x13')](_0x19fcbc[_0xf783('0x3c')][_0xf783('0x3e')])){if(_['isUndefined'](this[_0xf783('0x8')][_0x19fcbc[_0xf783('0x19')]])){this[_0xf783('0x8')][_0x19fcbc[_0xf783('0x19')]]={'routeId':_0x19fcbc[_0xf783('0x3d')],'variables':this[_0xf783('0xa')][_0x19fcbc[_0xf783('0x19')]]};logger[_0xf783('0x24')]('[%s][voiceDialReport][varset]\x20outboundrouteid:%s\x20variable:%s\x20value:%s',_0x19fcbc[_0xf783('0x19')],_0x19fcbc['variable']['outboundrouteid'],_[_0xf783('0x3b')](_0x19fcbc[_0xf783('0x3c')])[0x0],_0x19fcbc[_0xf783('0x3d')]);logger[_0xf783('0x16')](_0xf783('0x3f'),_0x19fcbc[_0xf783('0x19')],util['inspect'](this[_0xf783('0x8')][_0x19fcbc[_0xf783('0x19')]],{'showHidden':![],'depth':null}));this[_0xf783('0x15')](_0xf783('0x29'),_0xf783('0x2a'),this[_0xf783('0x8')][_0x19fcbc[_0xf783('0x19')]]);}}}}catch(_0x320734){logger[_0xf783('0x2d')](_0xf783('0x40'),_0x19fcbc[_0xf783('0x19')],util[_0xf783('0x18')](_0x320734,{'showHidden':![],'depth':null}));}};VoiceDialReport['prototype']['addVariable']=function(_0x3256fe,_0x507d12,_0x381628){var _0x217ebe=['rtpaudioqos',_0xf783('0x41'),_0xf783('0x42'),_0xf783('0x43'),_0xf783('0x44'),_0xf783('0x45'),'rtpaudioqosrtt',_0xf783('0x46'),_0xf783('0x47'),'sipuri',_0xf783('0x48'),_0xf783('0x49'),_0xf783('0x4a'),_0xf783('0x4b'),_0xf783('0x4c'),_0xf783('0x4d'),_0xf783('0x26'),_0xf783('0x4e'),_0xf783('0x4f')];if(!_[_0xf783('0x50')](_0x507d12)&&!_['includes'](_0x217ebe,_0x507d12)){if(_[_0xf783('0x14')](this['variables'][_0x3256fe])){this['variables'][_0x3256fe]={};}this[_0xf783('0xa')][_0x3256fe][_0x507d12]=_0x381628;}};VoiceDialReport[_0xf783('0x12')][_0xf783('0x11')]=function(_0x4fee2d){try{if(this[_0xf783('0x13')](_0x4fee2d)){logger[_0xf783('0x16')](_0xf783('0x51'),_0x4fee2d[_0xf783('0x19')],util['inspect'](_0x4fee2d,{'showHidden':![],'depth':null}));if(this[_0xf783('0x8')][_0x4fee2d[_0xf783('0x19')]]){logger[_0xf783('0x24')](_0xf783('0x52'),_0x4fee2d['uniqueid'],_0x4fee2d[_0xf783('0x53')]);this['channels'][_0x4fee2d[_0xf783('0x19')]]['endtime']=moment()[_0xf783('0x1b')](_0xf783('0x1c'));this[_0xf783('0x8')][_0x4fee2d[_0xf783('0x19')]][_0xf783('0x54')]=moment(this[_0xf783('0x8')][_0x4fee2d[_0xf783('0x19')]][_0xf783('0x55')])['diff'](this[_0xf783('0x8')][_0x4fee2d[_0xf783('0x19')]]['starttime'],'seconds');this['channels'][_0x4fee2d[_0xf783('0x19')]]['lastevent']=_0xf783('0x56');this[_0xf783('0x9')][_0xf783('0x57')]+=0x1;if(this[_0xf783('0x8')][_0x4fee2d[_0xf783('0x19')]][_0xf783('0x33')]){this[_0xf783('0x9')][_0xf783('0x58')]+=0x1;this[_0xf783('0x8')][_0x4fee2d[_0xf783('0x19')]][_0xf783('0x59')]=moment(this[_0xf783('0x8')][_0x4fee2d[_0xf783('0x19')]][_0xf783('0x33')])['diff'](this[_0xf783('0x8')][_0x4fee2d['uniqueid']]['starttime'],_0xf783('0x5a'));this[_0xf783('0x8')][_0x4fee2d[_0xf783('0x19')]][_0xf783('0x5b')]=moment(this[_0xf783('0x8')][_0x4fee2d[_0xf783('0x19')]][_0xf783('0x55')])['diff'](this[_0xf783('0x8')][_0x4fee2d[_0xf783('0x19')]][_0xf783('0x33')],_0xf783('0x5a'));this[_0xf783('0x9')][_0xf783('0x5c')]+=this[_0xf783('0x8')][_0x4fee2d['uniqueid']][_0xf783('0x59')]||0x0;this['outbound'][_0xf783('0x5d')]+=this[_0xf783('0x8')][_0x4fee2d['uniqueid']]['billableseconds'];}this[_0xf783('0x9')][_0xf783('0x5e')]+=this[_0xf783('0x8')][_0x4fee2d['uniqueid']]['duration'];logger[_0xf783('0x16')](_0xf783('0x5f'),_0x4fee2d['uniqueid'],util[_0xf783('0x18')](this[_0xf783('0x8')][_0x4fee2d[_0xf783('0x19')]],{'showHidden':![],'depth':null}));ami[_0xf783('0x15')]('custom:voiceDialReport',this['channels'][_0x4fee2d[_0xf783('0x19')]]);logger['debug'](_0xf783('0x60'),_0x4fee2d[_0xf783('0x19')],util['inspect'](this[_0xf783('0x8')][_0x4fee2d[_0xf783('0x19')]],{'showHidden':![],'depth':null}));ami['emit']('custom:dialend',this['channels'][_0x4fee2d[_0xf783('0x19')]]);logger[_0xf783('0x16')]('[%s][voiceDialReport][hangup]\x20sending\x20voice_outbound:save\x20event:',_0x4fee2d[_0xf783('0x19')],util[_0xf783('0x18')](this[_0xf783('0x8')][_0x4fee2d[_0xf783('0x19')]],{'showHidden':![],'depth':null}));this[_0xf783('0x15')](_0xf783('0x29'),'voice_outbound:save',this[_0xf783('0x9')]);logger['info'](_0xf783('0x61'),JSON[_0xf783('0x62')](this[_0xf783('0x8')][_0x4fee2d['uniqueid']]));logger[_0xf783('0x16')](_0xf783('0x63'),_0x4fee2d[_0xf783('0x19')],util['inspect'](this['channels'][_0x4fee2d[_0xf783('0x19')]],{'showHidden':![],'depth':null}));this[_0xf783('0x15')](_0xf783('0x29'),_0xf783('0x64'),this[_0xf783('0x8')][_0x4fee2d[_0xf783('0x19')]]);delete this['channels'][_0x4fee2d[_0xf783('0x19')]];}else if(this[_0xf783('0x8')][_0x4fee2d[_0xf783('0x65')]]){this['channels'][_0x4fee2d[_0xf783('0x65')]][_0xf783('0x19')]=this['channels'][_0x4fee2d[_0xf783('0x65')]][_0xf783('0x66')];}if(this[_0xf783('0xa')][_0x4fee2d[_0xf783('0x19')]]){delete this[_0xf783('0xa')][_0x4fee2d[_0xf783('0x19')]];}}}catch(_0x343da6){logger[_0xf783('0x2d')](_0xf783('0x67'),_0x4fee2d[_0xf783('0x19')],util[_0xf783('0x18')](_0x343da6,{'showHidden':![],'depth':null}));}};module[_0xf783('0x68')]=VoiceDialReport;