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