Built motion from commit 14588770.|2.5.38
[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 _0x8958=['diff','starttime','complete','total','answered','holdtime','answertime','seconds','sumHoldTime','sumBillable','billableseconds','sumDuration','custom:voiceDialReport','[%s][voiceDialReport][hangup]\x20sending\x20voice_outbound:save\x20event:','[DEBUG]\x20Emit\x20voice_outbound_channel:remove\x20event','stringify','voice_outbound_channel:remove','linkedid','destuniqueid','syncNewExten','[%s][voiceDialReport][newexten]\x20event:','set','appdata','applicationdata','toLowerCase','startsWith','[%s][voiceDialReport][newexten]\x20application:%s\x20appdata:%s','application','split','match','[%s][voiceDialReport][newexten]','exports','moment','ami','redis','defaults','socket.io-emitter','channels','outboundChannels','outbound','applications','variables','dialbegin','syncDialBegin','bind','dialend','syncDialEnd','varset','hangup','syncHangup','prototype','isNotNull','isUndefined','emit','debug','uniqueid','inspect','merge','format','YYYY-MM-DD\x20HH:mm:ss','called','channel','substring','lastIndexOf','omit','event','privilege','info','membername','[%s][voiceDialReport][dialbegin]\x20sending\x20voice_outbound_channel:save\x20event:','voice:outbound','voice_outbound_channel:save','[%s][voiceDialReport][dialbegin]\x20sending\x20dialbegin\x20event:','error','[%s][voiceDialReport][dialbegin]','[%s][voiceDialReport][dialend]\x20event:','dialstatus','ANSWER','connectedlinenum','connectedlinename','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:','[%s][voiceDialReport][varset]\x20event:','keys','value','variable','[%s][voiceDialReport][varset]\x20outboundrouteid:%s\x20variable:%s\x20value:%s','outboundrouteid','[%s][voiceDialReport][varset]\x20sending\x20voice_outbound_channel:save\x20event:','[%s][voiceDialReport][varset]','addVariable','rtpaudioqos','rtpaudioqosbridged','rtpaudioqosjitterbridged','rtpaudioqosrtt','sipcallid','sipuri','bridgepeer','bridgepvtcallid','membercalls','memberdynamic','memberinterface','memberlastcall','memberpenalty','memberrealtime','isNil','[%s][voiceDialReport][hangup]\x20event:','[%s][voiceDialReport][hangup]\x20reason:%s\x20lasteevent:complete','cause-txt','endtime','duration'];(function(_0x31750d,_0x1d125a){var _0x31d3df=function(_0x1fb921){while(--_0x1fb921){_0x31750d['push'](_0x31750d['shift']());}};_0x31d3df(++_0x1d125a);}(_0x8958,0x93));var _0x8895=function(_0x30f8ed,_0x1309da){_0x30f8ed=_0x30f8ed-0x0;var _0x43bee0=_0x8958[_0x30f8ed];return _0x43bee0;};'use strict';var _=require('lodash');var moment=require(_0x8895('0x0'));var util=require('util');var Redis=require('ioredis');var config=require('../../../config/environment');var logger=require('../../../config/logger')(_0x8895('0x1'));var ami=require('../ami');config[_0x8895('0x2')]=_[_0x8895('0x3')](config[_0x8895('0x2')],{'host':'localhost','port':0x18eb});var io=require(_0x8895('0x4'))(new Redis(config[_0x8895('0x2')]));function VoiceDialReport(_0x124e1e){this[_0x8895('0x5')]=_0x124e1e[_0x8895('0x6')];this['outbound']=_0x124e1e[_0x8895('0x7')];this[_0x8895('0x8')]={};this[_0x8895('0x9')]={};ami['on'](_0x8895('0xa'),this[_0x8895('0xb')][_0x8895('0xc')](this));ami['on'](_0x8895('0xd'),this[_0x8895('0xe')][_0x8895('0xc')](this));ami['on'](_0x8895('0xf'),this['syncVarSet'][_0x8895('0xc')](this));ami['on'](_0x8895('0x10'),this[_0x8895('0x11')][_0x8895('0xc')](this));}VoiceDialReport[_0x8895('0x12')][_0x8895('0x13')]=function(_0x5af0ef){return _0x5af0ef!==null&&!_[_0x8895('0x14')](_0x5af0ef);};VoiceDialReport[_0x8895('0x12')][_0x8895('0x15')]=function(_0x57d40a,_0x47b9fe,_0x9191b8){io['to'](_0x57d40a)['emit'](_0x47b9fe,_0x9191b8);};VoiceDialReport[_0x8895('0x12')][_0x8895('0xb')]=function(_0x195789){try{if(this[_0x8895('0x13')](_0x195789)){logger[_0x8895('0x16')]('[%s][voiceDialReport][dialbegin]\x20event:',_0x195789[_0x8895('0x17')],util[_0x8895('0x18')](_0x195789,{'showHidden':![],'depth':null}));if(this[_0x8895('0x5')][_0x195789[_0x8895('0x17')]]){_[_0x8895('0x19')](this[_0x8895('0x5')][_0x195789[_0x8895('0x17')]],{'starttime':moment()[_0x8895('0x1a')](_0x8895('0x1b')),'lastevent':_0x8895('0x1c'),'interface':_0x195789[_0x8895('0x1d')][_0x8895('0x1e')](0x0,_0x195789[_0x8895('0x1d')]['lastIndexOf']('-')),'membername':_0x195789['channel']['substring'](_0x195789[_0x8895('0x1d')][_0x8895('0x1f')]('/')+0x1,_0x195789[_0x8895('0x1d')][_0x8895('0x1f')]('-'))},_[_0x8895('0x20')](_0x195789,[_0x8895('0x21'),_0x8895('0x22')]));logger[_0x8895('0x23')]('[%s][voiceDialReport][dialbegin]\x20agent:%s\x20interface:%s\x20lastevent:called',_0x195789[_0x8895('0x17')],this[_0x8895('0x5')][_0x195789[_0x8895('0x17')]][_0x8895('0x24')],this[_0x8895('0x5')][_0x195789['uniqueid']]['interface']);logger[_0x8895('0x16')](_0x8895('0x25'),_0x195789[_0x8895('0x17')],util[_0x8895('0x18')](this['channels'][_0x195789[_0x8895('0x17')]],{'showHidden':![],'depth':null}));if(this[_0x8895('0x8')][_0x195789[_0x8895('0x17')]])_['merge'](this['channels'][_0x195789[_0x8895('0x17')]],this['applications'][_0x195789[_0x8895('0x17')]]);this[_0x8895('0x15')](_0x8895('0x26'),_0x8895('0x27'),this[_0x8895('0x5')][_0x195789['uniqueid']]);logger['debug'](_0x8895('0x28'),_0x195789[_0x8895('0x17')],util[_0x8895('0x18')](this[_0x8895('0x5')][_0x195789[_0x8895('0x17')]],{'showHidden':![],'depth':null}));ami['emit']('custom:dialbegin',this[_0x8895('0x5')][_0x195789[_0x8895('0x17')]]);}}}catch(_0x1c16f6){logger[_0x8895('0x29')](_0x8895('0x2a'),_0x195789['uniqueid'],util[_0x8895('0x18')](_0x1c16f6,{'showHidden':![],'depth':null}));}};VoiceDialReport['prototype'][_0x8895('0xe')]=function(_0x5b2b19){try{if(this[_0x8895('0x13')](_0x5b2b19)){logger[_0x8895('0x16')](_0x8895('0x2b'),_0x5b2b19[_0x8895('0x17')],util[_0x8895('0x18')](_0x5b2b19,{'showHidden':![],'depth':null}));if(this['channels'][_0x5b2b19[_0x8895('0x17')]]){this[_0x8895('0x5')][_0x5b2b19[_0x8895('0x17')]][_0x8895('0x2c')]=_0x5b2b19[_0x8895('0x2c')];if(_0x5b2b19['dialstatus']===_0x8895('0x2d')){this['channels'][_0x5b2b19[_0x8895('0x17')]]['connectedlinenum']=_0x5b2b19[_0x8895('0x2e')];this[_0x8895('0x5')][_0x5b2b19[_0x8895('0x17')]][_0x8895('0x2f')]=_0x5b2b19[_0x8895('0x2f')];this['channels'][_0x5b2b19[_0x8895('0x17')]]['answertime']=moment()[_0x8895('0x1a')](_0x8895('0x1b'));this[_0x8895('0x5')][_0x5b2b19[_0x8895('0x17')]][_0x8895('0x30')]=_0x8895('0x31');logger['info'](_0x8895('0x32'),_0x5b2b19[_0x8895('0x17')],_0x5b2b19['channel'][_0x8895('0x1e')](_0x5b2b19['channel'][_0x8895('0x1f')]('/')+0x1,_0x5b2b19[_0x8895('0x1d')]['lastIndexOf']('-')));logger[_0x8895('0x16')](_0x8895('0x33'),_0x5b2b19['uniqueid'],util['inspect'](this[_0x8895('0x5')][_0x5b2b19[_0x8895('0x17')]],{'showHidden':![],'depth':null}));ami[_0x8895('0x15')](_0x8895('0x34'),this[_0x8895('0x5')][_0x5b2b19['uniqueid']]);}logger[_0x8895('0x16')](_0x8895('0x35'),_0x5b2b19[_0x8895('0x17')],util[_0x8895('0x18')](this[_0x8895('0x5')][_0x5b2b19[_0x8895('0x17')]],{'showHidden':![],'depth':null}));this['emit'](_0x8895('0x26'),'voice_outbound_channel:save',this[_0x8895('0x5')][_0x5b2b19[_0x8895('0x17')]]);}}}catch(_0x526d90){logger[_0x8895('0x29')]('[%s][voiceDialReport][dialend]',_0x5b2b19[_0x8895('0x17')],util['inspect'](_0x526d90,{'showHidden':![],'depth':null}));}};VoiceDialReport['prototype']['syncVarSet']=function(_0x4cd625){try{if(this['isNotNull'](_0x4cd625)){logger['debug'](_0x8895('0x36'),_0x4cd625[_0x8895('0x17')],util['inspect'](_0x4cd625,{'showHidden':![],'depth':null}));this['addVariable'](_0x4cd625[_0x8895('0x17')],_[_0x8895('0x37')](_0x4cd625['variable'])[0x0],_0x4cd625[_0x8895('0x38')]);if(this[_0x8895('0x13')](_0x4cd625[_0x8895('0x39')])&&this[_0x8895('0x13')](_0x4cd625[_0x8895('0x39')]['outboundrouteid'])){if(_['isUndefined'](this['channels'][_0x4cd625[_0x8895('0x17')]])){this['channels'][_0x4cd625[_0x8895('0x17')]]={'routeId':_0x4cd625[_0x8895('0x38')],'variables':this[_0x8895('0x9')][_0x4cd625[_0x8895('0x17')]],'motionChannel':'voice'};logger[_0x8895('0x23')](_0x8895('0x3a'),_0x4cd625[_0x8895('0x17')],_0x4cd625[_0x8895('0x39')][_0x8895('0x3b')],_[_0x8895('0x37')](_0x4cd625[_0x8895('0x39')])[0x0],_0x4cd625[_0x8895('0x38')]);logger['debug'](_0x8895('0x3c'),_0x4cd625[_0x8895('0x17')],util['inspect'](this[_0x8895('0x5')][_0x4cd625['uniqueid']],{'showHidden':![],'depth':null}));this['emit'](_0x8895('0x26'),_0x8895('0x27'),this[_0x8895('0x5')][_0x4cd625['uniqueid']]);}}}}catch(_0x227587){logger['error'](_0x8895('0x3d'),_0x4cd625[_0x8895('0x17')],util[_0x8895('0x18')](_0x227587,{'showHidden':![],'depth':null}));}};VoiceDialReport[_0x8895('0x12')][_0x8895('0x3e')]=function(_0x21c954,_0xebb0c4,_0x4dde7c){var _0x47c4b9=[_0x8895('0x3f'),_0x8895('0x40'),'rtpaudioqosjitter',_0x8895('0x41'),'rtpaudioqosloss','rtpaudioqoslossbridged',_0x8895('0x42'),'rtpaudioqosrttbridged',_0x8895('0x43'),_0x8895('0x44'),_0x8895('0x45'),_0x8895('0x46'),_0x8895('0x47'),_0x8895('0x48'),_0x8895('0x49'),_0x8895('0x4a'),'membername',_0x8895('0x4b'),_0x8895('0x4c')];if(!_[_0x8895('0x4d')](_0xebb0c4)&&!_['includes'](_0x47c4b9,_0xebb0c4)){if(_[_0x8895('0x14')](this[_0x8895('0x9')][_0x21c954])){this[_0x8895('0x9')][_0x21c954]={};}this[_0x8895('0x9')][_0x21c954][_0xebb0c4]=_0x4dde7c;}};VoiceDialReport[_0x8895('0x12')][_0x8895('0x11')]=function(_0x434ab8){try{if(this[_0x8895('0x13')](_0x434ab8)){logger[_0x8895('0x16')](_0x8895('0x4e'),_0x434ab8['uniqueid'],util[_0x8895('0x18')](_0x434ab8,{'showHidden':![],'depth':null}));if(this[_0x8895('0x5')][_0x434ab8[_0x8895('0x17')]]){logger[_0x8895('0x23')](_0x8895('0x4f'),_0x434ab8['uniqueid'],_0x434ab8[_0x8895('0x50')]);this[_0x8895('0x5')][_0x434ab8[_0x8895('0x17')]][_0x8895('0x51')]=moment()[_0x8895('0x1a')]('YYYY-MM-DD\x20HH:mm:ss');this[_0x8895('0x5')][_0x434ab8[_0x8895('0x17')]][_0x8895('0x52')]=moment(this['channels'][_0x434ab8[_0x8895('0x17')]][_0x8895('0x51')])[_0x8895('0x53')](this['channels'][_0x434ab8[_0x8895('0x17')]][_0x8895('0x54')],'seconds');this[_0x8895('0x5')][_0x434ab8[_0x8895('0x17')]]['lastevent']=_0x8895('0x55');this[_0x8895('0x7')][_0x8895('0x56')]+=0x1;if(this[_0x8895('0x5')][_0x434ab8['uniqueid']]['answertime']){this[_0x8895('0x7')][_0x8895('0x57')]+=0x1;this[_0x8895('0x5')][_0x434ab8['uniqueid']][_0x8895('0x58')]=moment(this[_0x8895('0x5')][_0x434ab8['uniqueid']][_0x8895('0x59')])['diff'](this[_0x8895('0x5')][_0x434ab8[_0x8895('0x17')]][_0x8895('0x54')],_0x8895('0x5a'));this[_0x8895('0x5')][_0x434ab8['uniqueid']]['billableseconds']=moment(this[_0x8895('0x5')][_0x434ab8[_0x8895('0x17')]]['endtime'])[_0x8895('0x53')](this[_0x8895('0x5')][_0x434ab8[_0x8895('0x17')]][_0x8895('0x59')],'seconds');this[_0x8895('0x7')][_0x8895('0x5b')]+=this[_0x8895('0x5')][_0x434ab8[_0x8895('0x17')]][_0x8895('0x58')]||0x0;this[_0x8895('0x7')][_0x8895('0x5c')]+=this[_0x8895('0x5')][_0x434ab8[_0x8895('0x17')]][_0x8895('0x5d')];}this[_0x8895('0x7')][_0x8895('0x5e')]+=this[_0x8895('0x5')][_0x434ab8[_0x8895('0x17')]][_0x8895('0x52')];logger['debug']('[%s][voiceDialReport][hangup]\x20sending\x20voiceDialReport\x20event:',_0x434ab8['uniqueid'],util[_0x8895('0x18')](this[_0x8895('0x5')][_0x434ab8[_0x8895('0x17')]],{'showHidden':![],'depth':null}));ami[_0x8895('0x15')](_0x8895('0x5f'),this['channels'][_0x434ab8[_0x8895('0x17')]]);logger[_0x8895('0x16')]('[%s][voiceDialReport][hangup]\x20sending\x20dialend\x20event:',_0x434ab8[_0x8895('0x17')],util[_0x8895('0x18')](this[_0x8895('0x5')][_0x434ab8[_0x8895('0x17')]],{'showHidden':![],'depth':null}));ami[_0x8895('0x15')]('custom:dialend',this[_0x8895('0x5')][_0x434ab8[_0x8895('0x17')]]);logger[_0x8895('0x16')](_0x8895('0x60'),_0x434ab8[_0x8895('0x17')],util[_0x8895('0x18')](this[_0x8895('0x5')][_0x434ab8['uniqueid']],{'showHidden':![],'depth':null}));this[_0x8895('0x15')](_0x8895('0x26'),'voice_outbound:save',this[_0x8895('0x7')]);logger[_0x8895('0x23')](_0x8895('0x61'),JSON[_0x8895('0x62')](this[_0x8895('0x5')][_0x434ab8['uniqueid']]));logger[_0x8895('0x16')]('[%s][voiceDialReport][hangup]\x20sending\x20voice_outbound_channel:remove\x20event:',_0x434ab8[_0x8895('0x17')],util[_0x8895('0x18')](this['channels'][_0x434ab8[_0x8895('0x17')]],{'showHidden':![],'depth':null}));this[_0x8895('0x15')](_0x8895('0x26'),_0x8895('0x63'),this['channels'][_0x434ab8[_0x8895('0x17')]]);delete this['channels'][_0x434ab8['uniqueid']];}else if(this[_0x8895('0x5')][_0x434ab8[_0x8895('0x64')]]){this[_0x8895('0x5')][_0x434ab8['linkedid']][_0x8895('0x17')]=this['channels'][_0x434ab8[_0x8895('0x64')]][_0x8895('0x65')];}if(this[_0x8895('0x9')][_0x434ab8[_0x8895('0x17')]]){delete this[_0x8895('0x9')][_0x434ab8['uniqueid']];}}}catch(_0x4be4b9){logger[_0x8895('0x29')]('[%s][voiceDialReport][hangup]',_0x434ab8[_0x8895('0x17')],util[_0x8895('0x18')](_0x4be4b9,{'showHidden':![],'depth':null}));}};VoiceDialReport['prototype'][_0x8895('0x66')]=function(_0xd9637a){try{if(this[_0x8895('0x13')](_0xd9637a)){logger[_0x8895('0x16')](_0x8895('0x67'),_0xd9637a['uniqueid'],util[_0x8895('0x18')](_0xd9637a,{'showHidden':![],'depth':null}));if(_0xd9637a['application']['toLowerCase']()===_0x8895('0x68')){_0xd9637a['applicationdata']=(_0xd9637a[_0x8895('0x69')]||_0xd9637a[_0x8895('0x6a')])[_0x8895('0x6b')]();if(_[_0x8895('0x6c')](_0xd9637a['applicationdata'],'cdr(')){if(_['isUndefined'](this[_0x8895('0x8')][_0xd9637a[_0x8895('0x17')]]))this[_0x8895('0x8')][_0xd9637a[_0x8895('0x17')]]={};logger[_0x8895('0x23')](_0x8895('0x6d'),_0xd9637a['uniqueid'],_0xd9637a[_0x8895('0x6e')],_0xd9637a[_0x8895('0x6a')]);var _0x4deccc=_0xd9637a['applicationdata'][_0x8895('0x6f')]('=');var _0x565bb8=_0x4deccc[0x0][_0x8895('0x70')](/cdr\((.*)\)/);if(_0x565bb8)this['applications'][_0xd9637a[_0x8895('0x17')]][_0x565bb8[0x1]]=_0x4deccc[0x1];}}}}catch(_0x452756){logger['error'](_0x8895('0x71'),_0xd9637a[_0x8895('0x17')],util['inspect'](_0x452756,{'showHidden':![],'depth':null}));}};module[_0x8895('0x72')]=VoiceDialReport;