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