46693879c41b4488c5265a861cb9bd122252fea4
[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 _0xb708=['emit','merge','format','YYYY-MM-DD\x20HH:mm:ss','called','channel','lastIndexOf','substring','omit','event','privilege','voice:outbound','voice_outbound_channel:save','uniqueid','custom:dialbegin','error','dialstatus','ANSWER','connectedlinenum','connectedlinename','connect','[syncDialEnd][VoiceDialReport]','inspect','syncVarSet','addVariable','keys','variable','value','outboundrouteid','isUndefined','variables','[syncVarSet][VoiceDialReport]','rtpaudioqos','rtpaudioqosbridged','rtpaudioqosjitter','rtpaudioqosjitterbridged','rtpaudioqosloss','rtpaudioqoslossbridged','rtpaudioqosrttbridged','sipuri','bridgepeer','bridgepvtcallid','membercalls','memberdynamic','memberinterface','includes','endtime','duration','lastevent','complete','holdtime','answertime','diff','starttime','billableseconds','seconds','custom:voiceDialReport','custom:dialend','info','[DEBUG]\x20Emit\x20voice_outbound_channel:remove\x20event','stringify','[syncHangup][VoiceDialReport]','exports','lodash','util','../../../config/environment','../../../config/logger','ami','redis','defaults','socket.io-emitter','channels','outboundChannels','outbound','dialbegin','syncDialBegin','dialend','syncDialEnd','varset','bind','hangup','syncHangup','prototype','isNotNull'];(function(_0x32adb1,_0x268787){var _0x37fe68=function(_0x5f2138){while(--_0x5f2138){_0x32adb1['push'](_0x32adb1['shift']());}};_0x37fe68(++_0x268787);}(_0xb708,0xe7));var _0x8b70=function(_0x5bd426,_0x4878e5){_0x5bd426=_0x5bd426-0x0;var _0x23a7eb=_0xb708[_0x5bd426];return _0x23a7eb;};'use strict';var _=require(_0x8b70('0x0'));var moment=require('moment');var util=require(_0x8b70('0x1'));var Redis=require('ioredis');var config=require(_0x8b70('0x2'));var logger=require(_0x8b70('0x3'))(_0x8b70('0x4'));var ami=require('../ami');config[_0x8b70('0x5')]=_[_0x8b70('0x6')](config[_0x8b70('0x5')],{'host':'localhost','port':0x18eb});var io=require(_0x8b70('0x7'))(new Redis(config[_0x8b70('0x5')]));function VoiceDialReport(_0x5228a9){this[_0x8b70('0x8')]=_0x5228a9[_0x8b70('0x9')];this[_0x8b70('0xa')]=_0x5228a9[_0x8b70('0xa')];this['variables']={};ami['on'](_0x8b70('0xb'),this[_0x8b70('0xc')]['bind'](this));ami['on'](_0x8b70('0xd'),this[_0x8b70('0xe')]['bind'](this));ami['on'](_0x8b70('0xf'),this['syncVarSet'][_0x8b70('0x10')](this));ami['on'](_0x8b70('0x11'),this[_0x8b70('0x12')]['bind'](this));}VoiceDialReport[_0x8b70('0x13')][_0x8b70('0x14')]=function(_0x560cc0){return _0x560cc0!==null&&!_['isUndefined'](_0x560cc0);};VoiceDialReport[_0x8b70('0x13')]['emit']=function(_0x3e3ea5,_0xfe1a71,_0x562e7b){io['to'](_0x3e3ea5)[_0x8b70('0x15')](_0xfe1a71,_0x562e7b);};VoiceDialReport[_0x8b70('0x13')][_0x8b70('0xc')]=function(_0x561416){try{if(this['isNotNull'](_0x561416)){if(this[_0x8b70('0x8')][_0x561416['uniqueid']]){_[_0x8b70('0x16')](this[_0x8b70('0x8')][_0x561416['uniqueid']],{'starttime':moment()[_0x8b70('0x17')](_0x8b70('0x18')),'lastevent':_0x8b70('0x19'),'interface':_0x561416[_0x8b70('0x1a')]['substring'](0x0,_0x561416['channel'][_0x8b70('0x1b')]('-')),'membername':_0x561416[_0x8b70('0x1a')][_0x8b70('0x1c')](_0x561416['channel']['lastIndexOf']('/')+0x1,_0x561416[_0x8b70('0x1a')][_0x8b70('0x1b')]('-'))},_[_0x8b70('0x1d')](_0x561416,[_0x8b70('0x1e'),_0x8b70('0x1f')]));this[_0x8b70('0x15')](_0x8b70('0x20'),_0x8b70('0x21'),this[_0x8b70('0x8')][_0x561416[_0x8b70('0x22')]]);ami[_0x8b70('0x15')](_0x8b70('0x23'),this[_0x8b70('0x8')][_0x561416[_0x8b70('0x22')]]);}}}catch(_0x2257d3){logger[_0x8b70('0x24')]('[syncDialBegin][VoiceDialReport]',util['inspect'](_0x2257d3,{'showHidden':![],'depth':null}));}};VoiceDialReport[_0x8b70('0x13')][_0x8b70('0xe')]=function(_0x4a911a){try{if(this[_0x8b70('0x14')](_0x4a911a)){if(this[_0x8b70('0x8')][_0x4a911a[_0x8b70('0x22')]]){this[_0x8b70('0x8')][_0x4a911a[_0x8b70('0x22')]][_0x8b70('0x25')]=_0x4a911a[_0x8b70('0x25')];if(_0x4a911a['dialstatus']===_0x8b70('0x26')){this[_0x8b70('0x8')][_0x4a911a['uniqueid']][_0x8b70('0x27')]=_0x4a911a['connectedlinenum'];this[_0x8b70('0x8')][_0x4a911a['uniqueid']][_0x8b70('0x28')]=_0x4a911a['connectedlinename'];this[_0x8b70('0x8')][_0x4a911a[_0x8b70('0x22')]]['answertime']=moment()[_0x8b70('0x17')](_0x8b70('0x18'));this[_0x8b70('0x8')][_0x4a911a['uniqueid']]['lastevent']=_0x8b70('0x29');ami[_0x8b70('0x15')]('custom:dialconnect',this[_0x8b70('0x8')][_0x4a911a[_0x8b70('0x22')]]);}this[_0x8b70('0x15')](_0x8b70('0x20'),_0x8b70('0x21'),this[_0x8b70('0x8')][_0x4a911a[_0x8b70('0x22')]]);}}}catch(_0x3a2385){logger[_0x8b70('0x24')](_0x8b70('0x2a'),util[_0x8b70('0x2b')](_0x3a2385,{'showHidden':![],'depth':null}));}};VoiceDialReport['prototype'][_0x8b70('0x2c')]=function(_0x654340){try{if(this[_0x8b70('0x14')](_0x654340)){this[_0x8b70('0x2d')](_0x654340[_0x8b70('0x22')],_[_0x8b70('0x2e')](_0x654340[_0x8b70('0x2f')])[0x0],_0x654340[_0x8b70('0x30')]);if(this[_0x8b70('0x14')](_0x654340[_0x8b70('0x2f')])&&this[_0x8b70('0x14')](_0x654340['variable'][_0x8b70('0x31')])){if(_[_0x8b70('0x32')](this['channels'][_0x654340['uniqueid']])){this['channels'][_0x654340[_0x8b70('0x22')]]={'routeId':_0x654340[_0x8b70('0x30')],'variables':this[_0x8b70('0x33')][_0x654340[_0x8b70('0x22')]]};this['emit']('voice:outbound',_0x8b70('0x21'),this[_0x8b70('0x8')][_0x654340[_0x8b70('0x22')]]);}}}}catch(_0x32b8c0){logger['error'](_0x8b70('0x34'),util[_0x8b70('0x2b')](_0x32b8c0,{'showHidden':![],'depth':null}));}};VoiceDialReport[_0x8b70('0x13')][_0x8b70('0x2d')]=function(_0x3d946e,_0x694234,_0x367e54){var _0x2b1961=[_0x8b70('0x35'),_0x8b70('0x36'),_0x8b70('0x37'),_0x8b70('0x38'),_0x8b70('0x39'),_0x8b70('0x3a'),'rtpaudioqosrtt',_0x8b70('0x3b'),'sipcallid',_0x8b70('0x3c'),_0x8b70('0x3d'),_0x8b70('0x3e'),_0x8b70('0x3f'),_0x8b70('0x40'),_0x8b70('0x41'),'memberlastcall','membername','memberpenalty','memberrealtime'];if(!_['isNil'](_0x694234)&&!_[_0x8b70('0x42')](_0x2b1961,_0x694234)){if(_[_0x8b70('0x32')](this['variables'][_0x3d946e])){this['variables'][_0x3d946e]={};}this[_0x8b70('0x33')][_0x3d946e][_0x694234]=_0x367e54;}};VoiceDialReport[_0x8b70('0x13')][_0x8b70('0x12')]=function(_0x591d8c){try{if(this[_0x8b70('0x14')](_0x591d8c)){if(this[_0x8b70('0x8')][_0x591d8c['uniqueid']]){this['channels'][_0x591d8c['uniqueid']][_0x8b70('0x43')]=moment()['format']('YYYY-MM-DD\x20HH:mm:ss');this['channels'][_0x591d8c['uniqueid']][_0x8b70('0x44')]=moment(this['channels'][_0x591d8c[_0x8b70('0x22')]][_0x8b70('0x43')])['diff'](this['channels'][_0x591d8c[_0x8b70('0x22')]]['starttime'],'seconds');this['channels'][_0x591d8c[_0x8b70('0x22')]][_0x8b70('0x45')]=_0x8b70('0x46');this[_0x8b70('0xa')]['total']+=0x1;if(this[_0x8b70('0x8')][_0x591d8c[_0x8b70('0x22')]]['answertime']){this['outbound']['answered']+=0x1;this[_0x8b70('0x8')][_0x591d8c['uniqueid']][_0x8b70('0x47')]=moment(this[_0x8b70('0x8')][_0x591d8c[_0x8b70('0x22')]][_0x8b70('0x48')])[_0x8b70('0x49')](this['channels'][_0x591d8c['uniqueid']][_0x8b70('0x4a')],'seconds');this['channels'][_0x591d8c['uniqueid']][_0x8b70('0x4b')]=moment(this[_0x8b70('0x8')][_0x591d8c['uniqueid']][_0x8b70('0x43')])[_0x8b70('0x49')](this[_0x8b70('0x8')][_0x591d8c['uniqueid']][_0x8b70('0x48')],_0x8b70('0x4c'));this[_0x8b70('0xa')]['sumHoldTime']+=this['channels'][_0x591d8c[_0x8b70('0x22')]][_0x8b70('0x47')]||0x0;this[_0x8b70('0xa')]['sumBillable']+=this[_0x8b70('0x8')][_0x591d8c[_0x8b70('0x22')]][_0x8b70('0x4b')];}this[_0x8b70('0xa')]['sumDuration']+=this[_0x8b70('0x8')][_0x591d8c['uniqueid']][_0x8b70('0x44')];ami['emit'](_0x8b70('0x4d'),this[_0x8b70('0x8')][_0x591d8c[_0x8b70('0x22')]]);ami[_0x8b70('0x15')](_0x8b70('0x4e'),this['channels'][_0x591d8c['uniqueid']]);this[_0x8b70('0x15')]('voice:outbound','voice_outbound:save',this['outbound']);logger[_0x8b70('0x4f')](_0x8b70('0x50'),JSON[_0x8b70('0x51')](this[_0x8b70('0x8')][_0x591d8c[_0x8b70('0x22')]]));this[_0x8b70('0x15')](_0x8b70('0x20'),'voice_outbound_channel:remove',this[_0x8b70('0x8')][_0x591d8c[_0x8b70('0x22')]]);delete this[_0x8b70('0x8')][_0x591d8c['uniqueid']];}if(this[_0x8b70('0x33')][_0x591d8c['uniqueid']]){delete this['variables'][_0x591d8c[_0x8b70('0x22')]];}}}catch(_0x27c68f){logger[_0x8b70('0x24')](_0x8b70('0x52'),util[_0x8b70('0x2b')](_0x27c68f,{'showHidden':![],'depth':null}));}};module[_0x8b70('0x53')]=VoiceDialReport;