d75f771e3e02b35f6c6fcdb84b12bfdda49548c0
[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 _0xbafd=['bind','syncDialEnd','varset','syncVarSet','syncHangup','prototype','isNotNull','emit','debug','[%s][voiceDialReport][dialbegin]\x20event:','uniqueid','inspect','merge','YYYY-MM-DD\x20HH:mm:ss','called','channel','substring','lastIndexOf','omit','event','info','interface','voice:outbound','[%s][voiceDialReport][dialbegin]\x20sending\x20dialbegin\x20event:','custom:dialbegin','error','[%s][voiceDialReport][dialbegin]','[%s][voiceDialReport][dialend]\x20event:','dialstatus','ANSWER','connectedlinenum','connectedlinename','answertime','format','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:','voice_outbound_channel:save','[%s][voiceDialReport][dialend]','addVariable','keys','variable','value','outboundrouteid','isUndefined','[%s][voiceDialReport][varset]\x20outboundrouteid:%s\x20variable:%s\x20value:%s','[%s][voiceDialReport][varset]\x20sending\x20voice_outbound_channel:save\x20event:','rtpaudioqos','rtpaudioqosbridged','rtpaudioqosjitterbridged','rtpaudioqosrtt','rtpaudioqosrttbridged','sipcallid','bridgepeer','bridgepvtcallid','membercalls','memberdynamic','memberinterface','membername','memberrealtime','isNil','includes','[%s][voiceDialReport][hangup]\x20event:','[%s][voiceDialReport][hangup]\x20reason:%s\x20lasteevent:complete','endtime','duration','diff','starttime','lastevent','complete','total','answered','holdtime','seconds','billableseconds','sumHoldTime','sumBillable','sumDuration','custom:voiceDialReport','[%s][voiceDialReport][hangup]\x20sending\x20dialend\x20event:','[%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:','linkedid','[%s][voiceDialReport][hangup]','exports','lodash','moment','ioredis','../../../config/environment','../../../config/logger','ami','../ami','redis','defaults','localhost','socket.io-emitter','channels','outbound','variables','dialbegin','syncDialBegin'];(function(_0x14721b,_0x2d40bf){var _0x2dd991=function(_0x332b75){while(--_0x332b75){_0x14721b['push'](_0x14721b['shift']());}};_0x2dd991(++_0x2d40bf);}(_0xbafd,0xc4));var _0xdbaf=function(_0x1d8d45,_0x5048dd){_0x1d8d45=_0x1d8d45-0x0;var _0x305b41=_0xbafd[_0x1d8d45];return _0x305b41;};'use strict';var _=require(_0xdbaf('0x0'));var moment=require(_0xdbaf('0x1'));var util=require('util');var Redis=require(_0xdbaf('0x2'));var config=require(_0xdbaf('0x3'));var logger=require(_0xdbaf('0x4'))(_0xdbaf('0x5'));var ami=require(_0xdbaf('0x6'));config[_0xdbaf('0x7')]=_[_0xdbaf('0x8')](config[_0xdbaf('0x7')],{'host':_0xdbaf('0x9'),'port':0x18eb});var io=require(_0xdbaf('0xa'))(new Redis(config['redis']));function VoiceDialReport(_0x3c4497){this[_0xdbaf('0xb')]=_0x3c4497['outboundChannels'];this[_0xdbaf('0xc')]=_0x3c4497['outbound'];this[_0xdbaf('0xd')]={};ami['on'](_0xdbaf('0xe'),this[_0xdbaf('0xf')][_0xdbaf('0x10')](this));ami['on']('dialend',this[_0xdbaf('0x11')][_0xdbaf('0x10')](this));ami['on'](_0xdbaf('0x12'),this[_0xdbaf('0x13')][_0xdbaf('0x10')](this));ami['on']('hangup',this[_0xdbaf('0x14')][_0xdbaf('0x10')](this));}VoiceDialReport[_0xdbaf('0x15')][_0xdbaf('0x16')]=function(_0xfd75a4){return _0xfd75a4!==null&&!_['isUndefined'](_0xfd75a4);};VoiceDialReport[_0xdbaf('0x15')]['emit']=function(_0x1327f4,_0x6c5d08,_0x3410ec){io['to'](_0x1327f4)[_0xdbaf('0x17')](_0x6c5d08,_0x3410ec);};VoiceDialReport[_0xdbaf('0x15')]['syncDialBegin']=function(_0x321847){try{if(this['isNotNull'](_0x321847)){logger[_0xdbaf('0x18')](_0xdbaf('0x19'),_0x321847[_0xdbaf('0x1a')],util[_0xdbaf('0x1b')](_0x321847,{'showHidden':![],'depth':null}));if(this[_0xdbaf('0xb')][_0x321847[_0xdbaf('0x1a')]]){_[_0xdbaf('0x1c')](this['channels'][_0x321847[_0xdbaf('0x1a')]],{'starttime':moment()['format'](_0xdbaf('0x1d')),'lastevent':_0xdbaf('0x1e'),'interface':_0x321847[_0xdbaf('0x1f')][_0xdbaf('0x20')](0x0,_0x321847[_0xdbaf('0x1f')][_0xdbaf('0x21')]('-')),'membername':_0x321847['channel'][_0xdbaf('0x20')](_0x321847[_0xdbaf('0x1f')][_0xdbaf('0x21')]('/')+0x1,_0x321847['channel'][_0xdbaf('0x21')]('-'))},_[_0xdbaf('0x22')](_0x321847,[_0xdbaf('0x23'),'privilege']));logger[_0xdbaf('0x24')]('[%s][voiceDialReport][dialbegin]\x20agent:%s\x20interface:%s\x20lastevent:called',_0x321847[_0xdbaf('0x1a')],this[_0xdbaf('0xb')][_0x321847[_0xdbaf('0x1a')]]['membername'],this[_0xdbaf('0xb')][_0x321847[_0xdbaf('0x1a')]][_0xdbaf('0x25')]);logger[_0xdbaf('0x18')]('[%s][voiceDialReport][dialbegin]\x20sending\x20voice_outbound_channel:save\x20event:',_0x321847[_0xdbaf('0x1a')],util['inspect'](this['channels'][_0x321847[_0xdbaf('0x1a')]],{'showHidden':![],'depth':null}));this[_0xdbaf('0x17')](_0xdbaf('0x26'),'voice_outbound_channel:save',this[_0xdbaf('0xb')][_0x321847[_0xdbaf('0x1a')]]);logger['debug'](_0xdbaf('0x27'),_0x321847[_0xdbaf('0x1a')],util[_0xdbaf('0x1b')](this['channels'][_0x321847[_0xdbaf('0x1a')]],{'showHidden':![],'depth':null}));ami[_0xdbaf('0x17')](_0xdbaf('0x28'),this['channels'][_0x321847[_0xdbaf('0x1a')]]);}}}catch(_0x301154){logger[_0xdbaf('0x29')](_0xdbaf('0x2a'),_0x321847[_0xdbaf('0x1a')],util[_0xdbaf('0x1b')](_0x301154,{'showHidden':![],'depth':null}));}};VoiceDialReport[_0xdbaf('0x15')][_0xdbaf('0x11')]=function(_0x1903de){try{if(this['isNotNull'](_0x1903de)){logger[_0xdbaf('0x18')](_0xdbaf('0x2b'),_0x1903de[_0xdbaf('0x1a')],util[_0xdbaf('0x1b')](_0x1903de,{'showHidden':![],'depth':null}));if(this[_0xdbaf('0xb')][_0x1903de['uniqueid']]){this[_0xdbaf('0xb')][_0x1903de[_0xdbaf('0x1a')]][_0xdbaf('0x2c')]=_0x1903de[_0xdbaf('0x2c')];if(_0x1903de['dialstatus']===_0xdbaf('0x2d')){this['channels'][_0x1903de[_0xdbaf('0x1a')]][_0xdbaf('0x2e')]=_0x1903de[_0xdbaf('0x2e')];this[_0xdbaf('0xb')][_0x1903de[_0xdbaf('0x1a')]]['connectedlinename']=_0x1903de[_0xdbaf('0x2f')];this['channels'][_0x1903de[_0xdbaf('0x1a')]][_0xdbaf('0x30')]=moment()[_0xdbaf('0x31')](_0xdbaf('0x1d'));this['channels'][_0x1903de[_0xdbaf('0x1a')]]['lastevent']=_0xdbaf('0x32');logger[_0xdbaf('0x24')](_0xdbaf('0x33'),_0x1903de[_0xdbaf('0x1a')],_0x1903de['channel'][_0xdbaf('0x20')](_0x1903de['channel'][_0xdbaf('0x21')]('/')+0x1,_0x1903de[_0xdbaf('0x1f')][_0xdbaf('0x21')]('-')));logger[_0xdbaf('0x18')](_0xdbaf('0x34'),_0x1903de['uniqueid'],util[_0xdbaf('0x1b')](this[_0xdbaf('0xb')][_0x1903de[_0xdbaf('0x1a')]],{'showHidden':![],'depth':null}));ami[_0xdbaf('0x17')](_0xdbaf('0x35'),this[_0xdbaf('0xb')][_0x1903de[_0xdbaf('0x1a')]]);}logger[_0xdbaf('0x18')](_0xdbaf('0x36'),_0x1903de['uniqueid'],util[_0xdbaf('0x1b')](this[_0xdbaf('0xb')][_0x1903de[_0xdbaf('0x1a')]],{'showHidden':![],'depth':null}));this['emit']('voice:outbound',_0xdbaf('0x37'),this[_0xdbaf('0xb')][_0x1903de[_0xdbaf('0x1a')]]);}}}catch(_0x144e20){logger[_0xdbaf('0x29')](_0xdbaf('0x38'),_0x1903de[_0xdbaf('0x1a')],util['inspect'](_0x144e20,{'showHidden':![],'depth':null}));}};VoiceDialReport[_0xdbaf('0x15')][_0xdbaf('0x13')]=function(_0x54e9c3){try{if(this[_0xdbaf('0x16')](_0x54e9c3)){logger[_0xdbaf('0x18')]('[%s][voiceDialReport][varset]\x20event:',_0x54e9c3[_0xdbaf('0x1a')],util[_0xdbaf('0x1b')](_0x54e9c3,{'showHidden':![],'depth':null}));this[_0xdbaf('0x39')](_0x54e9c3['uniqueid'],_[_0xdbaf('0x3a')](_0x54e9c3[_0xdbaf('0x3b')])[0x0],_0x54e9c3[_0xdbaf('0x3c')]);if(this[_0xdbaf('0x16')](_0x54e9c3[_0xdbaf('0x3b')])&&this[_0xdbaf('0x16')](_0x54e9c3[_0xdbaf('0x3b')][_0xdbaf('0x3d')])){if(_[_0xdbaf('0x3e')](this['channels'][_0x54e9c3[_0xdbaf('0x1a')]])){this[_0xdbaf('0xb')][_0x54e9c3[_0xdbaf('0x1a')]]={'routeId':_0x54e9c3[_0xdbaf('0x3c')],'variables':this[_0xdbaf('0xd')][_0x54e9c3[_0xdbaf('0x1a')]]};logger['info'](_0xdbaf('0x3f'),_0x54e9c3[_0xdbaf('0x1a')],_0x54e9c3['variable'][_0xdbaf('0x3d')],_[_0xdbaf('0x3a')](_0x54e9c3[_0xdbaf('0x3b')])[0x0],_0x54e9c3[_0xdbaf('0x3c')]);logger['debug'](_0xdbaf('0x40'),_0x54e9c3['uniqueid'],util[_0xdbaf('0x1b')](this[_0xdbaf('0xb')][_0x54e9c3[_0xdbaf('0x1a')]],{'showHidden':![],'depth':null}));this[_0xdbaf('0x17')](_0xdbaf('0x26'),'voice_outbound_channel:save',this[_0xdbaf('0xb')][_0x54e9c3['uniqueid']]);}}}}catch(_0x13127b){logger['error']('[%s][voiceDialReport][varset]',_0x54e9c3[_0xdbaf('0x1a')],util['inspect'](_0x13127b,{'showHidden':![],'depth':null}));}};VoiceDialReport[_0xdbaf('0x15')][_0xdbaf('0x39')]=function(_0xb745e2,_0x416b06,_0x240dd3){var _0x4a2797=[_0xdbaf('0x41'),_0xdbaf('0x42'),'rtpaudioqosjitter',_0xdbaf('0x43'),'rtpaudioqosloss','rtpaudioqoslossbridged',_0xdbaf('0x44'),_0xdbaf('0x45'),_0xdbaf('0x46'),'sipuri',_0xdbaf('0x47'),_0xdbaf('0x48'),_0xdbaf('0x49'),_0xdbaf('0x4a'),_0xdbaf('0x4b'),'memberlastcall',_0xdbaf('0x4c'),'memberpenalty',_0xdbaf('0x4d')];if(!_[_0xdbaf('0x4e')](_0x416b06)&&!_[_0xdbaf('0x4f')](_0x4a2797,_0x416b06)){if(_[_0xdbaf('0x3e')](this[_0xdbaf('0xd')][_0xb745e2])){this[_0xdbaf('0xd')][_0xb745e2]={};}this[_0xdbaf('0xd')][_0xb745e2][_0x416b06]=_0x240dd3;}};VoiceDialReport['prototype'][_0xdbaf('0x14')]=function(_0x30a3da){try{if(this[_0xdbaf('0x16')](_0x30a3da)){logger[_0xdbaf('0x18')](_0xdbaf('0x50'),_0x30a3da['uniqueid'],util['inspect'](_0x30a3da,{'showHidden':![],'depth':null}));if(this[_0xdbaf('0xb')][_0x30a3da[_0xdbaf('0x1a')]]){logger[_0xdbaf('0x24')](_0xdbaf('0x51'),_0x30a3da[_0xdbaf('0x1a')],_0x30a3da['cause-txt']);this[_0xdbaf('0xb')][_0x30a3da[_0xdbaf('0x1a')]][_0xdbaf('0x52')]=moment()[_0xdbaf('0x31')]('YYYY-MM-DD\x20HH:mm:ss');this['channels'][_0x30a3da[_0xdbaf('0x1a')]][_0xdbaf('0x53')]=moment(this[_0xdbaf('0xb')][_0x30a3da[_0xdbaf('0x1a')]]['endtime'])[_0xdbaf('0x54')](this[_0xdbaf('0xb')][_0x30a3da['uniqueid']][_0xdbaf('0x55')],'seconds');this['channels'][_0x30a3da[_0xdbaf('0x1a')]][_0xdbaf('0x56')]=_0xdbaf('0x57');this[_0xdbaf('0xc')][_0xdbaf('0x58')]+=0x1;if(this[_0xdbaf('0xb')][_0x30a3da[_0xdbaf('0x1a')]][_0xdbaf('0x30')]){this[_0xdbaf('0xc')][_0xdbaf('0x59')]+=0x1;this[_0xdbaf('0xb')][_0x30a3da[_0xdbaf('0x1a')]][_0xdbaf('0x5a')]=moment(this[_0xdbaf('0xb')][_0x30a3da[_0xdbaf('0x1a')]]['answertime'])[_0xdbaf('0x54')](this['channels'][_0x30a3da[_0xdbaf('0x1a')]]['starttime'],_0xdbaf('0x5b'));this[_0xdbaf('0xb')][_0x30a3da[_0xdbaf('0x1a')]][_0xdbaf('0x5c')]=moment(this[_0xdbaf('0xb')][_0x30a3da[_0xdbaf('0x1a')]]['endtime'])[_0xdbaf('0x54')](this[_0xdbaf('0xb')][_0x30a3da['uniqueid']][_0xdbaf('0x30')],_0xdbaf('0x5b'));this[_0xdbaf('0xc')][_0xdbaf('0x5d')]+=this[_0xdbaf('0xb')][_0x30a3da[_0xdbaf('0x1a')]][_0xdbaf('0x5a')]||0x0;this['outbound'][_0xdbaf('0x5e')]+=this['channels'][_0x30a3da[_0xdbaf('0x1a')]][_0xdbaf('0x5c')];}this[_0xdbaf('0xc')][_0xdbaf('0x5f')]+=this[_0xdbaf('0xb')][_0x30a3da['uniqueid']]['duration'];logger[_0xdbaf('0x18')]('[%s][voiceDialReport][hangup]\x20sending\x20voiceDialReport\x20event:',_0x30a3da[_0xdbaf('0x1a')],util[_0xdbaf('0x1b')](this[_0xdbaf('0xb')][_0x30a3da[_0xdbaf('0x1a')]],{'showHidden':![],'depth':null}));ami[_0xdbaf('0x17')](_0xdbaf('0x60'),this['channels'][_0x30a3da['uniqueid']]);logger['debug'](_0xdbaf('0x61'),_0x30a3da['uniqueid'],util[_0xdbaf('0x1b')](this[_0xdbaf('0xb')][_0x30a3da[_0xdbaf('0x1a')]],{'showHidden':![],'depth':null}));ami[_0xdbaf('0x17')]('custom:dialend',this[_0xdbaf('0xb')][_0x30a3da[_0xdbaf('0x1a')]]);logger[_0xdbaf('0x18')](_0xdbaf('0x62'),_0x30a3da[_0xdbaf('0x1a')],util[_0xdbaf('0x1b')](this[_0xdbaf('0xb')][_0x30a3da[_0xdbaf('0x1a')]],{'showHidden':![],'depth':null}));this[_0xdbaf('0x17')](_0xdbaf('0x26'),_0xdbaf('0x63'),this[_0xdbaf('0xc')]);logger['info'](_0xdbaf('0x64'),JSON[_0xdbaf('0x65')](this[_0xdbaf('0xb')][_0x30a3da[_0xdbaf('0x1a')]]));logger['debug'](_0xdbaf('0x66'),_0x30a3da[_0xdbaf('0x1a')],util[_0xdbaf('0x1b')](this[_0xdbaf('0xb')][_0x30a3da[_0xdbaf('0x1a')]],{'showHidden':![],'depth':null}));this[_0xdbaf('0x17')](_0xdbaf('0x26'),'voice_outbound_channel:remove',this[_0xdbaf('0xb')][_0x30a3da[_0xdbaf('0x1a')]]);delete this[_0xdbaf('0xb')][_0x30a3da[_0xdbaf('0x1a')]];}else if(this[_0xdbaf('0xb')][_0x30a3da['linkedid']]){this['channels'][_0x30a3da['linkedid']][_0xdbaf('0x1a')]=this[_0xdbaf('0xb')][_0x30a3da[_0xdbaf('0x67')]]['destuniqueid'];}if(this[_0xdbaf('0xd')][_0x30a3da[_0xdbaf('0x1a')]]){delete this['variables'][_0x30a3da[_0xdbaf('0x1a')]];}}}catch(_0xbc3088){logger[_0xdbaf('0x29')](_0xdbaf('0x68'),_0x30a3da[_0xdbaf('0x1a')],util[_0xdbaf('0x1b')](_0xbc3088,{'showHidden':![],'depth':null}));}};module[_0xdbaf('0x69')]=VoiceDialReport;