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