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