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