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