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