f212fca284bde6e51b1dd777351cdbbe1d7e1420
[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 _0xecfd=['complete','total','answered','holdtime','billableseconds','sumBillable','sumDuration','duration','custom:voiceDialReport','custom:dialend','voice_outbound:save','info','[DEBUG]\x20Emit\x20voice_outbound_channel:remove\x20event','stringify','exports','lodash','moment','util','ioredis','../../../config/environment','../../../config/logger','ami','../ami','redis','localhost','socket.io-emitter','outboundChannels','outbound','variables','syncDialBegin','bind','dialend','syncDialEnd','varset','syncVarSet','hangup','syncHangup','prototype','isNotNull','emit','uniqueid','channels','format','YYYY-MM-DD\x20HH:mm:ss','called','channel','substring','lastIndexOf','omit','event','custom:dialbegin','error','[syncDialBegin][VoiceDialReport]','inspect','dialstatus','ANSWER','connectedlinenum','connectedlinename','answertime','lastevent','connect','custom:dialconnect','voice:outbound','[syncDialEnd][VoiceDialReport]','addVariable','keys','value','variable','outboundrouteid','isUndefined','voice_outbound_channel:save','[syncVarSet][VoiceDialReport]','rtpaudioqos','rtpaudioqosjitter','rtpaudioqosjitterbridged','rtpaudioqosloss','rtpaudioqoslossbridged','rtpaudioqosrtt','sipuri','bridgepeer','bridgepvtcallid','membercalls','memberdynamic','memberinterface','memberlastcall','memberpenalty','memberrealtime','isNil','includes','endtime','diff','starttime','seconds'];(function(_0x14b69e,_0x1d4e9c){var _0x23dcac=function(_0xc64be9){while(--_0xc64be9){_0x14b69e['push'](_0x14b69e['shift']());}};_0x23dcac(++_0x1d4e9c);}(_0xecfd,0x6c));var _0xdecf=function(_0x26185e,_0xa003bd){_0x26185e=_0x26185e-0x0;var _0x4d925b=_0xecfd[_0x26185e];return _0x4d925b;};'use strict';var _=require(_0xdecf('0x0'));var moment=require(_0xdecf('0x1'));var util=require(_0xdecf('0x2'));var Redis=require(_0xdecf('0x3'));var config=require(_0xdecf('0x4'));var logger=require(_0xdecf('0x5'))(_0xdecf('0x6'));var ami=require(_0xdecf('0x7'));config[_0xdecf('0x8')]=_['defaults'](config[_0xdecf('0x8')],{'host':_0xdecf('0x9'),'port':0x18eb});var io=require(_0xdecf('0xa'))(new Redis(config['redis']));function VoiceDialReport(_0x44ed02){this['channels']=_0x44ed02[_0xdecf('0xb')];this['outbound']=_0x44ed02[_0xdecf('0xc')];this[_0xdecf('0xd')]={};ami['on']('dialbegin',this[_0xdecf('0xe')][_0xdecf('0xf')](this));ami['on'](_0xdecf('0x10'),this[_0xdecf('0x11')][_0xdecf('0xf')](this));ami['on'](_0xdecf('0x12'),this[_0xdecf('0x13')][_0xdecf('0xf')](this));ami['on'](_0xdecf('0x14'),this[_0xdecf('0x15')][_0xdecf('0xf')](this));}VoiceDialReport[_0xdecf('0x16')][_0xdecf('0x17')]=function(_0x2ba1ff){return _0x2ba1ff!==null&&!_['isUndefined'](_0x2ba1ff);};VoiceDialReport[_0xdecf('0x16')][_0xdecf('0x18')]=function(_0x383f3d,_0x50cbc7,_0x5c1154){io['to'](_0x383f3d)[_0xdecf('0x18')](_0x50cbc7,_0x5c1154);};VoiceDialReport['prototype'][_0xdecf('0xe')]=function(_0x1ea728){try{if(this[_0xdecf('0x17')](_0x1ea728)){if(this['channels'][_0x1ea728[_0xdecf('0x19')]]){_['merge'](this[_0xdecf('0x1a')][_0x1ea728[_0xdecf('0x19')]],{'starttime':moment()[_0xdecf('0x1b')](_0xdecf('0x1c')),'lastevent':_0xdecf('0x1d'),'interface':_0x1ea728[_0xdecf('0x1e')][_0xdecf('0x1f')](0x0,_0x1ea728['channel']['lastIndexOf']('-')),'membername':_0x1ea728[_0xdecf('0x1e')][_0xdecf('0x1f')](_0x1ea728[_0xdecf('0x1e')][_0xdecf('0x20')]('/')+0x1,_0x1ea728['channel']['lastIndexOf']('-'))},_[_0xdecf('0x21')](_0x1ea728,[_0xdecf('0x22'),'privilege']));this[_0xdecf('0x18')]('voice:outbound','voice_outbound_channel:save',this[_0xdecf('0x1a')][_0x1ea728[_0xdecf('0x19')]]);ami[_0xdecf('0x18')](_0xdecf('0x23'),this[_0xdecf('0x1a')][_0x1ea728['uniqueid']]);}}}catch(_0xc45d7f){logger[_0xdecf('0x24')](_0xdecf('0x25'),util[_0xdecf('0x26')](_0xc45d7f,{'showHidden':![],'depth':null}));}};VoiceDialReport['prototype'][_0xdecf('0x11')]=function(_0x41ce9c){try{if(this[_0xdecf('0x17')](_0x41ce9c)){if(this['channels'][_0x41ce9c['uniqueid']]){this[_0xdecf('0x1a')][_0x41ce9c['uniqueid']][_0xdecf('0x27')]=_0x41ce9c[_0xdecf('0x27')];if(_0x41ce9c[_0xdecf('0x27')]===_0xdecf('0x28')){this[_0xdecf('0x1a')][_0x41ce9c[_0xdecf('0x19')]]['connectedlinenum']=_0x41ce9c[_0xdecf('0x29')];this[_0xdecf('0x1a')][_0x41ce9c[_0xdecf('0x19')]][_0xdecf('0x2a')]=_0x41ce9c['connectedlinename'];this[_0xdecf('0x1a')][_0x41ce9c['uniqueid']][_0xdecf('0x2b')]=moment()['format'](_0xdecf('0x1c'));this[_0xdecf('0x1a')][_0x41ce9c[_0xdecf('0x19')]][_0xdecf('0x2c')]=_0xdecf('0x2d');ami[_0xdecf('0x18')](_0xdecf('0x2e'),this[_0xdecf('0x1a')][_0x41ce9c[_0xdecf('0x19')]]);}this['emit'](_0xdecf('0x2f'),'voice_outbound_channel:save',this[_0xdecf('0x1a')][_0x41ce9c['uniqueid']]);}}}catch(_0x2b2d2e){logger[_0xdecf('0x24')](_0xdecf('0x30'),util[_0xdecf('0x26')](_0x2b2d2e,{'showHidden':![],'depth':null}));}};VoiceDialReport[_0xdecf('0x16')][_0xdecf('0x13')]=function(_0xf4cbd2){try{if(this[_0xdecf('0x17')](_0xf4cbd2)){this[_0xdecf('0x31')](_0xf4cbd2['uniqueid'],_[_0xdecf('0x32')](_0xf4cbd2['variable'])[0x0],_0xf4cbd2[_0xdecf('0x33')]);if(this['isNotNull'](_0xf4cbd2[_0xdecf('0x34')])&&this[_0xdecf('0x17')](_0xf4cbd2[_0xdecf('0x34')][_0xdecf('0x35')])){if(_[_0xdecf('0x36')](this[_0xdecf('0x1a')][_0xf4cbd2[_0xdecf('0x19')]])){this[_0xdecf('0x1a')][_0xf4cbd2[_0xdecf('0x19')]]={'routeId':_0xf4cbd2[_0xdecf('0x33')],'variables':this[_0xdecf('0xd')][_0xf4cbd2[_0xdecf('0x19')]]};this[_0xdecf('0x18')](_0xdecf('0x2f'),_0xdecf('0x37'),this[_0xdecf('0x1a')][_0xf4cbd2[_0xdecf('0x19')]]);}}}}catch(_0x350881){logger['error'](_0xdecf('0x38'),util[_0xdecf('0x26')](_0x350881,{'showHidden':![],'depth':null}));}};VoiceDialReport[_0xdecf('0x16')][_0xdecf('0x31')]=function(_0x2b1ba2,_0x5ed3e3,_0x59f280){var _0x50614d=[_0xdecf('0x39'),'rtpaudioqosbridged',_0xdecf('0x3a'),_0xdecf('0x3b'),_0xdecf('0x3c'),_0xdecf('0x3d'),_0xdecf('0x3e'),'rtpaudioqosrttbridged','sipcallid',_0xdecf('0x3f'),_0xdecf('0x40'),_0xdecf('0x41'),_0xdecf('0x42'),_0xdecf('0x43'),_0xdecf('0x44'),_0xdecf('0x45'),'membername',_0xdecf('0x46'),_0xdecf('0x47')];if(!_[_0xdecf('0x48')](_0x5ed3e3)&&!_[_0xdecf('0x49')](_0x50614d,_0x5ed3e3)){if(_['isUndefined'](this[_0xdecf('0xd')][_0x2b1ba2])){this[_0xdecf('0xd')][_0x2b1ba2]={};}this[_0xdecf('0xd')][_0x2b1ba2][_0x5ed3e3]=_0x59f280;}};VoiceDialReport[_0xdecf('0x16')][_0xdecf('0x15')]=function(_0x152fb1){try{if(this['isNotNull'](_0x152fb1)){if(this['channels'][_0x152fb1[_0xdecf('0x19')]]){this[_0xdecf('0x1a')][_0x152fb1['uniqueid']][_0xdecf('0x4a')]=moment()[_0xdecf('0x1b')](_0xdecf('0x1c'));this[_0xdecf('0x1a')][_0x152fb1[_0xdecf('0x19')]]['duration']=moment(this[_0xdecf('0x1a')][_0x152fb1[_0xdecf('0x19')]][_0xdecf('0x4a')])[_0xdecf('0x4b')](this[_0xdecf('0x1a')][_0x152fb1[_0xdecf('0x19')]][_0xdecf('0x4c')],_0xdecf('0x4d'));this[_0xdecf('0x1a')][_0x152fb1[_0xdecf('0x19')]]['lastevent']=_0xdecf('0x4e');this[_0xdecf('0xc')][_0xdecf('0x4f')]+=0x1;if(this[_0xdecf('0x1a')][_0x152fb1[_0xdecf('0x19')]][_0xdecf('0x2b')]){this[_0xdecf('0xc')][_0xdecf('0x50')]+=0x1;this['channels'][_0x152fb1[_0xdecf('0x19')]][_0xdecf('0x51')]=moment(this[_0xdecf('0x1a')][_0x152fb1['uniqueid']]['answertime'])[_0xdecf('0x4b')](this['channels'][_0x152fb1[_0xdecf('0x19')]][_0xdecf('0x4c')],'seconds');this[_0xdecf('0x1a')][_0x152fb1['uniqueid']][_0xdecf('0x52')]=moment(this[_0xdecf('0x1a')][_0x152fb1[_0xdecf('0x19')]][_0xdecf('0x4a')])['diff'](this[_0xdecf('0x1a')][_0x152fb1[_0xdecf('0x19')]][_0xdecf('0x2b')],_0xdecf('0x4d'));this[_0xdecf('0xc')]['sumHoldTime']+=this[_0xdecf('0x1a')][_0x152fb1[_0xdecf('0x19')]][_0xdecf('0x51')]||0x0;this[_0xdecf('0xc')][_0xdecf('0x53')]+=this[_0xdecf('0x1a')][_0x152fb1['uniqueid']]['billableseconds'];}this['outbound'][_0xdecf('0x54')]+=this['channels'][_0x152fb1['uniqueid']][_0xdecf('0x55')];ami[_0xdecf('0x18')](_0xdecf('0x56'),this[_0xdecf('0x1a')][_0x152fb1['uniqueid']]);ami[_0xdecf('0x18')](_0xdecf('0x57'),this[_0xdecf('0x1a')][_0x152fb1[_0xdecf('0x19')]]);this[_0xdecf('0x18')](_0xdecf('0x2f'),_0xdecf('0x58'),this[_0xdecf('0xc')]);logger[_0xdecf('0x59')](_0xdecf('0x5a'),JSON[_0xdecf('0x5b')](this['channels'][_0x152fb1[_0xdecf('0x19')]]));this[_0xdecf('0x18')](_0xdecf('0x2f'),'voice_outbound_channel:remove',this[_0xdecf('0x1a')][_0x152fb1[_0xdecf('0x19')]]);delete this[_0xdecf('0x1a')][_0x152fb1['uniqueid']];}if(this[_0xdecf('0xd')][_0x152fb1[_0xdecf('0x19')]]){delete this[_0xdecf('0xd')][_0x152fb1[_0xdecf('0x19')]];}}}catch(_0x2595e0){logger['error']('[syncHangup][VoiceDialReport]',util[_0xdecf('0x26')](_0x2595e0,{'showHidden':![],'depth':null}));}};module[_0xdecf('0x5c')]=VoiceDialReport;