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