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