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