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