8d5844790b0755d06e80e34970cba996ce58cf9c
[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 _0x383b=['connectedlinename','answertime','YYYY-MM-DD\x20HH:mm:ss','info','[%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]','rtpaudioqos','rtpaudioqosbridged','rtpaudioqosjitter','rtpaudioqosjitterbridged','rtpaudioqosrtt','rtpaudioqosrttbridged','sipcallid','sipuri','membercalls','memberdynamic','memberinterface','memberlastcall','memberpenalty','isNil','includes','[%s][voiceDialReport][hangup]\x20reason:%s\x20lasteevent:complete','endtime','diff','starttime','seconds','lastevent','complete','total','answered','holdtime','billableseconds','sumHoldTime','sumBillable','sumDuration','[%s][voiceDialReport][hangup]\x20sending\x20voiceDialReport\x20event:','custom:voiceDialReport','[%s][voiceDialReport][hangup]\x20sending\x20dialend\x20event:','custom:dialend','[%s][voiceDialReport][hangup]\x20sending\x20voice_outbound:save\x20event:','[DEBUG]\x20Emit\x20voice_outbound_channel:remove\x20event','stringify','linkedid','destuniqueid','lodash','moment','ioredis','../../../config/environment','../../../config/logger','ami','../ami','redis','localhost','socket.io-emitter','channels','outboundChannels','outbound','variables','dialbegin','bind','syncDialEnd','syncVarSet','hangup','syncHangup','prototype','isNotNull','isUndefined','emit','syncDialBegin','debug','[%s][voiceDialReport][dialbegin]\x20event:','inspect','merge','uniqueid','format','called','channel','substring','lastIndexOf','event','privilege','[%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]','dialstatus','ANSWER','connectedlinenum'];(function(_0xe9a92e,_0x29486a){var _0x15ecc8=function(_0x21a6c7){while(--_0x21a6c7){_0xe9a92e['push'](_0xe9a92e['shift']());}};_0x15ecc8(++_0x29486a);}(_0x383b,0x1d6));var _0xb383=function(_0x36e45f,_0x28a431){_0x36e45f=_0x36e45f-0x0;var _0x163ae9=_0x383b[_0x36e45f];return _0x163ae9;};'use strict';var _=require(_0xb383('0x0'));var moment=require(_0xb383('0x1'));var util=require('util');var Redis=require(_0xb383('0x2'));var config=require(_0xb383('0x3'));var logger=require(_0xb383('0x4'))(_0xb383('0x5'));var ami=require(_0xb383('0x6'));config[_0xb383('0x7')]=_['defaults'](config[_0xb383('0x7')],{'host':_0xb383('0x8'),'port':0x18eb});var io=require(_0xb383('0x9'))(new Redis(config[_0xb383('0x7')]));function VoiceDialReport(_0x15347d){this[_0xb383('0xa')]=_0x15347d[_0xb383('0xb')];this[_0xb383('0xc')]=_0x15347d[_0xb383('0xc')];this[_0xb383('0xd')]={};ami['on'](_0xb383('0xe'),this['syncDialBegin'][_0xb383('0xf')](this));ami['on']('dialend',this[_0xb383('0x10')][_0xb383('0xf')](this));ami['on']('varset',this[_0xb383('0x11')][_0xb383('0xf')](this));ami['on'](_0xb383('0x12'),this[_0xb383('0x13')][_0xb383('0xf')](this));}VoiceDialReport[_0xb383('0x14')][_0xb383('0x15')]=function(_0x49d4bd){return _0x49d4bd!==null&&!_[_0xb383('0x16')](_0x49d4bd);};VoiceDialReport['prototype'][_0xb383('0x17')]=function(_0x266cbe,_0x3e4f48,_0x37224f){io['to'](_0x266cbe)['emit'](_0x3e4f48,_0x37224f);};VoiceDialReport[_0xb383('0x14')][_0xb383('0x18')]=function(_0x4e0fec){try{if(this[_0xb383('0x15')](_0x4e0fec)){logger[_0xb383('0x19')](_0xb383('0x1a'),_0x4e0fec['uniqueid'],util[_0xb383('0x1b')](_0x4e0fec,{'showHidden':![],'depth':null}));if(this['channels'][_0x4e0fec['uniqueid']]){_[_0xb383('0x1c')](this[_0xb383('0xa')][_0x4e0fec[_0xb383('0x1d')]],{'starttime':moment()[_0xb383('0x1e')]('YYYY-MM-DD\x20HH:mm:ss'),'lastevent':_0xb383('0x1f'),'interface':_0x4e0fec[_0xb383('0x20')][_0xb383('0x21')](0x0,_0x4e0fec[_0xb383('0x20')][_0xb383('0x22')]('-')),'membername':_0x4e0fec[_0xb383('0x20')][_0xb383('0x21')](_0x4e0fec[_0xb383('0x20')]['lastIndexOf']('/')+0x1,_0x4e0fec[_0xb383('0x20')][_0xb383('0x22')]('-'))},_['omit'](_0x4e0fec,[_0xb383('0x23'),_0xb383('0x24')]));logger['info'](_0xb383('0x25'),_0x4e0fec[_0xb383('0x1d')],this['channels'][_0x4e0fec['uniqueid']][_0xb383('0x26')],this['channels'][_0x4e0fec[_0xb383('0x1d')]][_0xb383('0x27')]);logger['debug'](_0xb383('0x28'),_0x4e0fec[_0xb383('0x1d')],util[_0xb383('0x1b')](this[_0xb383('0xa')][_0x4e0fec[_0xb383('0x1d')]],{'showHidden':![],'depth':null}));this[_0xb383('0x17')](_0xb383('0x29'),_0xb383('0x2a'),this[_0xb383('0xa')][_0x4e0fec[_0xb383('0x1d')]]);logger[_0xb383('0x19')](_0xb383('0x2b'),_0x4e0fec[_0xb383('0x1d')],util[_0xb383('0x1b')](this[_0xb383('0xa')][_0x4e0fec[_0xb383('0x1d')]],{'showHidden':![],'depth':null}));ami[_0xb383('0x17')](_0xb383('0x2c'),this[_0xb383('0xa')][_0x4e0fec['uniqueid']]);}}}catch(_0x1e8d94){logger[_0xb383('0x2d')](_0xb383('0x2e'),_0x4e0fec[_0xb383('0x1d')],util[_0xb383('0x1b')](_0x1e8d94,{'showHidden':![],'depth':null}));}};VoiceDialReport[_0xb383('0x14')][_0xb383('0x10')]=function(_0x39dc43){try{if(this[_0xb383('0x15')](_0x39dc43)){logger[_0xb383('0x19')]('[%s][voiceDialReport][dialend]\x20event:',_0x39dc43[_0xb383('0x1d')],util[_0xb383('0x1b')](_0x39dc43,{'showHidden':![],'depth':null}));if(this[_0xb383('0xa')][_0x39dc43['uniqueid']]){this[_0xb383('0xa')][_0x39dc43[_0xb383('0x1d')]]['dialstatus']=_0x39dc43['dialstatus'];if(_0x39dc43[_0xb383('0x2f')]===_0xb383('0x30')){this[_0xb383('0xa')][_0x39dc43[_0xb383('0x1d')]]['connectedlinenum']=_0x39dc43[_0xb383('0x31')];this[_0xb383('0xa')][_0x39dc43['uniqueid']][_0xb383('0x32')]=_0x39dc43[_0xb383('0x32')];this[_0xb383('0xa')][_0x39dc43[_0xb383('0x1d')]][_0xb383('0x33')]=moment()[_0xb383('0x1e')](_0xb383('0x34'));this['channels'][_0x39dc43['uniqueid']]['lastevent']='connect';logger[_0xb383('0x35')](_0xb383('0x36'),_0x39dc43[_0xb383('0x1d')],_0x39dc43[_0xb383('0x20')][_0xb383('0x21')](_0x39dc43['channel'][_0xb383('0x22')]('/')+0x1,_0x39dc43[_0xb383('0x20')][_0xb383('0x22')]('-')));logger[_0xb383('0x19')](_0xb383('0x37'),_0x39dc43[_0xb383('0x1d')],util[_0xb383('0x1b')](this[_0xb383('0xa')][_0x39dc43[_0xb383('0x1d')]],{'showHidden':![],'depth':null}));ami[_0xb383('0x17')](_0xb383('0x38'),this[_0xb383('0xa')][_0x39dc43['uniqueid']]);}logger[_0xb383('0x19')]('[%s][voiceDialReport][dialend]\x20sending\x20voice_outbound_channel:save\x20event:',_0x39dc43[_0xb383('0x1d')],util[_0xb383('0x1b')](this[_0xb383('0xa')][_0x39dc43[_0xb383('0x1d')]],{'showHidden':![],'depth':null}));this[_0xb383('0x17')](_0xb383('0x29'),_0xb383('0x2a'),this[_0xb383('0xa')][_0x39dc43['uniqueid']]);}}}catch(_0x1167ae){logger['error'](_0xb383('0x39'),_0x39dc43['uniqueid'],util[_0xb383('0x1b')](_0x1167ae,{'showHidden':![],'depth':null}));}};VoiceDialReport[_0xb383('0x14')]['syncVarSet']=function(_0x2272da){try{if(this[_0xb383('0x15')](_0x2272da)){logger[_0xb383('0x19')](_0xb383('0x3a'),_0x2272da['uniqueid'],util['inspect'](_0x2272da,{'showHidden':![],'depth':null}));this[_0xb383('0x3b')](_0x2272da[_0xb383('0x1d')],_[_0xb383('0x3c')](_0x2272da[_0xb383('0x3d')])[0x0],_0x2272da[_0xb383('0x3e')]);if(this[_0xb383('0x15')](_0x2272da['variable'])&&this[_0xb383('0x15')](_0x2272da['variable'][_0xb383('0x3f')])){if(_[_0xb383('0x16')](this[_0xb383('0xa')][_0x2272da['uniqueid']])){this['channels'][_0x2272da[_0xb383('0x1d')]]={'routeId':_0x2272da['value'],'variables':this['variables'][_0x2272da[_0xb383('0x1d')]]};logger['info']('[%s][voiceDialReport][varset]\x20outboundrouteid:%s\x20variable:%s\x20value:%s',_0x2272da[_0xb383('0x1d')],_0x2272da[_0xb383('0x3d')][_0xb383('0x3f')],_[_0xb383('0x3c')](_0x2272da['variable'])[0x0],_0x2272da[_0xb383('0x3e')]);logger[_0xb383('0x19')](_0xb383('0x40'),_0x2272da['uniqueid'],util[_0xb383('0x1b')](this[_0xb383('0xa')][_0x2272da[_0xb383('0x1d')]],{'showHidden':![],'depth':null}));this[_0xb383('0x17')](_0xb383('0x29'),_0xb383('0x2a'),this['channels'][_0x2272da['uniqueid']]);}}}}catch(_0x562237){logger['error'](_0xb383('0x41'),_0x2272da[_0xb383('0x1d')],util[_0xb383('0x1b')](_0x562237,{'showHidden':![],'depth':null}));}};VoiceDialReport[_0xb383('0x14')][_0xb383('0x3b')]=function(_0x5e43cb,_0x26e7b9,_0x49c5f2){var _0x250935=[_0xb383('0x42'),_0xb383('0x43'),_0xb383('0x44'),_0xb383('0x45'),'rtpaudioqosloss','rtpaudioqoslossbridged',_0xb383('0x46'),_0xb383('0x47'),_0xb383('0x48'),_0xb383('0x49'),'bridgepeer','bridgepvtcallid',_0xb383('0x4a'),_0xb383('0x4b'),_0xb383('0x4c'),_0xb383('0x4d'),_0xb383('0x26'),_0xb383('0x4e'),'memberrealtime'];if(!_[_0xb383('0x4f')](_0x26e7b9)&&!_[_0xb383('0x50')](_0x250935,_0x26e7b9)){if(_[_0xb383('0x16')](this['variables'][_0x5e43cb])){this[_0xb383('0xd')][_0x5e43cb]={};}this[_0xb383('0xd')][_0x5e43cb][_0x26e7b9]=_0x49c5f2;}};VoiceDialReport[_0xb383('0x14')][_0xb383('0x13')]=function(_0x4628b6){try{if(this['isNotNull'](_0x4628b6)){logger['debug']('[%s][voiceDialReport][hangup]\x20event:',_0x4628b6[_0xb383('0x1d')],util['inspect'](_0x4628b6,{'showHidden':![],'depth':null}));if(this[_0xb383('0xa')][_0x4628b6['uniqueid']]){logger[_0xb383('0x35')](_0xb383('0x51'),_0x4628b6[_0xb383('0x1d')],_0x4628b6['cause-txt']);this['channels'][_0x4628b6['uniqueid']]['endtime']=moment()[_0xb383('0x1e')](_0xb383('0x34'));this['channels'][_0x4628b6['uniqueid']]['duration']=moment(this['channels'][_0x4628b6[_0xb383('0x1d')]][_0xb383('0x52')])[_0xb383('0x53')](this['channels'][_0x4628b6[_0xb383('0x1d')]][_0xb383('0x54')],_0xb383('0x55'));this[_0xb383('0xa')][_0x4628b6[_0xb383('0x1d')]][_0xb383('0x56')]=_0xb383('0x57');this[_0xb383('0xc')][_0xb383('0x58')]+=0x1;if(this[_0xb383('0xa')][_0x4628b6[_0xb383('0x1d')]][_0xb383('0x33')]){this[_0xb383('0xc')][_0xb383('0x59')]+=0x1;this[_0xb383('0xa')][_0x4628b6[_0xb383('0x1d')]][_0xb383('0x5a')]=moment(this['channels'][_0x4628b6[_0xb383('0x1d')]][_0xb383('0x33')])['diff'](this[_0xb383('0xa')][_0x4628b6[_0xb383('0x1d')]][_0xb383('0x54')],'seconds');this['channels'][_0x4628b6[_0xb383('0x1d')]][_0xb383('0x5b')]=moment(this[_0xb383('0xa')][_0x4628b6[_0xb383('0x1d')]][_0xb383('0x52')])[_0xb383('0x53')](this['channels'][_0x4628b6['uniqueid']][_0xb383('0x33')],_0xb383('0x55'));this[_0xb383('0xc')][_0xb383('0x5c')]+=this[_0xb383('0xa')][_0x4628b6[_0xb383('0x1d')]][_0xb383('0x5a')]||0x0;this[_0xb383('0xc')][_0xb383('0x5d')]+=this['channels'][_0x4628b6[_0xb383('0x1d')]][_0xb383('0x5b')];}this[_0xb383('0xc')][_0xb383('0x5e')]+=this[_0xb383('0xa')][_0x4628b6['uniqueid']]['duration'];logger['debug'](_0xb383('0x5f'),_0x4628b6[_0xb383('0x1d')],util['inspect'](this[_0xb383('0xa')][_0x4628b6[_0xb383('0x1d')]],{'showHidden':![],'depth':null}));ami[_0xb383('0x17')](_0xb383('0x60'),this[_0xb383('0xa')][_0x4628b6[_0xb383('0x1d')]]);logger[_0xb383('0x19')](_0xb383('0x61'),_0x4628b6['uniqueid'],util[_0xb383('0x1b')](this[_0xb383('0xa')][_0x4628b6[_0xb383('0x1d')]],{'showHidden':![],'depth':null}));ami[_0xb383('0x17')](_0xb383('0x62'),this[_0xb383('0xa')][_0x4628b6[_0xb383('0x1d')]]);logger[_0xb383('0x19')](_0xb383('0x63'),_0x4628b6['uniqueid'],util[_0xb383('0x1b')](this[_0xb383('0xa')][_0x4628b6[_0xb383('0x1d')]],{'showHidden':![],'depth':null}));this['emit'](_0xb383('0x29'),'voice_outbound:save',this['outbound']);logger[_0xb383('0x35')](_0xb383('0x64'),JSON[_0xb383('0x65')](this['channels'][_0x4628b6[_0xb383('0x1d')]]));logger[_0xb383('0x19')]('[%s][voiceDialReport][hangup]\x20sending\x20voice_outbound_channel:remove\x20event:',_0x4628b6[_0xb383('0x1d')],util[_0xb383('0x1b')](this[_0xb383('0xa')][_0x4628b6[_0xb383('0x1d')]],{'showHidden':![],'depth':null}));this[_0xb383('0x17')](_0xb383('0x29'),'voice_outbound_channel:remove',this[_0xb383('0xa')][_0x4628b6[_0xb383('0x1d')]]);delete this[_0xb383('0xa')][_0x4628b6['uniqueid']];}else if(this[_0xb383('0xa')][_0x4628b6[_0xb383('0x66')]]){this['channels'][_0x4628b6[_0xb383('0x66')]][_0xb383('0x1d')]=this[_0xb383('0xa')][_0x4628b6[_0xb383('0x66')]][_0xb383('0x67')];}if(this[_0xb383('0xd')][_0x4628b6[_0xb383('0x1d')]]){delete this[_0xb383('0xd')][_0x4628b6[_0xb383('0x1d')]];}}}catch(_0x1b01dc){logger['error']('[%s][voiceDialReport][hangup]',_0x4628b6[_0xb383('0x1d')],util[_0xb383('0x1b')](_0x1b01dc,{'showHidden':![],'depth':null}));}};module['exports']=VoiceDialReport;