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