Built motion from commit 497d3d92.|2.5.43
[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 _0xae24=['[%s][voiceDialReport][varset]','rtpaudioqos','rtpaudioqosbridged','rtpaudioqosjitter','rtpaudioqosjitterbridged','rtpaudioqosloss','rtpaudioqosrtt','rtpaudioqosrttbridged','sipuri','bridgepeer','membercalls','memberinterface','membername','memberpenalty','memberrealtime','isNil','includes','variables','[%s][voiceDialReport][hangup]\x20reason:%s\x20lasteevent:complete','cause-txt','endtime','duration','diff','starttime','seconds','complete','total','answered','sumHoldTime','holdtime','sumDuration','[%s][voiceDialReport][hangup]\x20sending\x20voiceDialReport\x20event:','custom:voiceDialReport','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','[%s][voiceDialReport][hangup]','[%s][voiceDialReport][newexten]\x20event:','application','applicationdata','appdata','toLowerCase','startsWith','split','[%s][voiceDialReport][newexten]','exports','lodash','util','../../../config/environment','../../../config/logger','redis','localhost','socket.io-emitter','channels','outbound','dialbegin','syncDialBegin','dialend','syncDialEnd','bind','varset','hangup','syncHangup','prototype','isNotNull','isUndefined','emit','[%s][voiceDialReport][dialbegin]\x20event:','uniqueid','inspect','merge','format','YYYY-MM-DD\x20HH:mm:ss','substring','channel','lastIndexOf','omit','info','[%s][voiceDialReport][dialbegin]\x20agent:%s\x20interface:%s\x20lastevent:called','interface','debug','[%s][voiceDialReport][dialbegin]\x20sending\x20voice_outbound_channel:save\x20event:','applications','voice:outbound','voice_outbound_channel:save','[%s][voiceDialReport][dialbegin]\x20sending\x20dialbegin\x20event:','error','[%s][voiceDialReport][dialbegin]','[%s][voiceDialReport][dialend]\x20event:','dialstatus','connectedlinenum','connectedlinename','answertime','lastevent','[%s][voiceDialReport][dialend]\x20agent:%s\x20lastevent:connect','[%s][voiceDialReport][dialend]\x20sending\x20dialconnect\x20event:','custom:dialconnect','[%s][voiceDialReport][dialend]\x20sending\x20voice_outbound_channel:save\x20event:','[%s][voiceDialReport][dialend]','syncVarSet','[%s][voiceDialReport][varset]\x20event:','addVariable','keys','variable','value','outboundrouteid','voice','[%s][voiceDialReport][varset]\x20sending\x20voice_outbound_channel:save\x20event:'];(function(_0x53b133,_0x176261){var _0x5647e0=function(_0x4c62b0){while(--_0x4c62b0){_0x53b133['push'](_0x53b133['shift']());}};_0x5647e0(++_0x176261);}(_0xae24,0x182));var _0x4ae2=function(_0x494772,_0x3a42ad){_0x494772=_0x494772-0x0;var _0x4b9151=_0xae24[_0x494772];return _0x4b9151;};'use strict';var _=require(_0x4ae2('0x0'));var moment=require('moment');var util=require(_0x4ae2('0x1'));var Redis=require('ioredis');var config=require(_0x4ae2('0x2'));var logger=require(_0x4ae2('0x3'))('ami');var ami=require('../ami');config[_0x4ae2('0x4')]=_['defaults'](config[_0x4ae2('0x4')],{'host':_0x4ae2('0x5'),'port':0x18eb});var io=require(_0x4ae2('0x6'))(new Redis(config[_0x4ae2('0x4')]));function VoiceDialReport(_0x428054){this[_0x4ae2('0x7')]=_0x428054['outboundChannels'];this['outbound']=_0x428054[_0x4ae2('0x8')];this['applications']={};this['variables']={};ami['on'](_0x4ae2('0x9'),this[_0x4ae2('0xa')]['bind'](this));ami['on'](_0x4ae2('0xb'),this[_0x4ae2('0xc')][_0x4ae2('0xd')](this));ami['on'](_0x4ae2('0xe'),this['syncVarSet'][_0x4ae2('0xd')](this));ami['on'](_0x4ae2('0xf'),this[_0x4ae2('0x10')]['bind'](this));}VoiceDialReport[_0x4ae2('0x11')][_0x4ae2('0x12')]=function(_0x30d6c4){return _0x30d6c4!==null&&!_[_0x4ae2('0x13')](_0x30d6c4);};VoiceDialReport[_0x4ae2('0x11')][_0x4ae2('0x14')]=function(_0x145287,_0x3cabc9,_0xd527a0){io['to'](_0x145287)['emit'](_0x3cabc9,_0xd527a0);};VoiceDialReport['prototype']['syncDialBegin']=function(_0x2f3936){try{if(this[_0x4ae2('0x12')](_0x2f3936)){logger['debug'](_0x4ae2('0x15'),_0x2f3936[_0x4ae2('0x16')],util[_0x4ae2('0x17')](_0x2f3936,{'showHidden':![],'depth':null}));if(this[_0x4ae2('0x7')][_0x2f3936[_0x4ae2('0x16')]]){_[_0x4ae2('0x18')](this[_0x4ae2('0x7')][_0x2f3936[_0x4ae2('0x16')]],{'starttime':moment()[_0x4ae2('0x19')](_0x4ae2('0x1a')),'lastevent':'called','interface':_0x2f3936['channel'][_0x4ae2('0x1b')](0x0,_0x2f3936[_0x4ae2('0x1c')]['lastIndexOf']('-')),'membername':_0x2f3936[_0x4ae2('0x1c')][_0x4ae2('0x1b')](_0x2f3936[_0x4ae2('0x1c')][_0x4ae2('0x1d')]('/')+0x1,_0x2f3936[_0x4ae2('0x1c')]['lastIndexOf']('-'))},_[_0x4ae2('0x1e')](_0x2f3936,['event','privilege']));logger[_0x4ae2('0x1f')](_0x4ae2('0x20'),_0x2f3936[_0x4ae2('0x16')],this[_0x4ae2('0x7')][_0x2f3936[_0x4ae2('0x16')]]['membername'],this[_0x4ae2('0x7')][_0x2f3936['uniqueid']][_0x4ae2('0x21')]);logger[_0x4ae2('0x22')](_0x4ae2('0x23'),_0x2f3936['uniqueid'],util[_0x4ae2('0x17')](this[_0x4ae2('0x7')][_0x2f3936[_0x4ae2('0x16')]],{'showHidden':![],'depth':null}));if(this[_0x4ae2('0x24')][_0x2f3936[_0x4ae2('0x16')]])_[_0x4ae2('0x18')](this['channels'][_0x2f3936['uniqueid']],this[_0x4ae2('0x24')][_0x2f3936[_0x4ae2('0x16')]]);this[_0x4ae2('0x14')](_0x4ae2('0x25'),_0x4ae2('0x26'),this[_0x4ae2('0x7')][_0x2f3936['uniqueid']]);logger['debug'](_0x4ae2('0x27'),_0x2f3936['uniqueid'],util['inspect'](this['channels'][_0x2f3936[_0x4ae2('0x16')]],{'showHidden':![],'depth':null}));ami[_0x4ae2('0x14')]('custom:dialbegin',this[_0x4ae2('0x7')][_0x2f3936[_0x4ae2('0x16')]]);}}}catch(_0x3d56ea){logger[_0x4ae2('0x28')](_0x4ae2('0x29'),_0x2f3936[_0x4ae2('0x16')],util[_0x4ae2('0x17')](_0x3d56ea,{'showHidden':![],'depth':null}));}};VoiceDialReport[_0x4ae2('0x11')][_0x4ae2('0xc')]=function(_0x3542df){try{if(this[_0x4ae2('0x12')](_0x3542df)){logger[_0x4ae2('0x22')](_0x4ae2('0x2a'),_0x3542df[_0x4ae2('0x16')],util[_0x4ae2('0x17')](_0x3542df,{'showHidden':![],'depth':null}));if(this[_0x4ae2('0x7')][_0x3542df[_0x4ae2('0x16')]]){this['channels'][_0x3542df[_0x4ae2('0x16')]]['dialstatus']=_0x3542df[_0x4ae2('0x2b')];if(_0x3542df[_0x4ae2('0x2b')]==='ANSWER'){this[_0x4ae2('0x7')][_0x3542df[_0x4ae2('0x16')]][_0x4ae2('0x2c')]=_0x3542df[_0x4ae2('0x2c')];this['channels'][_0x3542df[_0x4ae2('0x16')]][_0x4ae2('0x2d')]=_0x3542df[_0x4ae2('0x2d')];this[_0x4ae2('0x7')][_0x3542df[_0x4ae2('0x16')]][_0x4ae2('0x2e')]=moment()[_0x4ae2('0x19')](_0x4ae2('0x1a'));this[_0x4ae2('0x7')][_0x3542df['uniqueid']][_0x4ae2('0x2f')]='connect';logger[_0x4ae2('0x1f')](_0x4ae2('0x30'),_0x3542df[_0x4ae2('0x16')],_0x3542df[_0x4ae2('0x1c')][_0x4ae2('0x1b')](_0x3542df[_0x4ae2('0x1c')]['lastIndexOf']('/')+0x1,_0x3542df[_0x4ae2('0x1c')][_0x4ae2('0x1d')]('-')));logger[_0x4ae2('0x22')](_0x4ae2('0x31'),_0x3542df['uniqueid'],util[_0x4ae2('0x17')](this[_0x4ae2('0x7')][_0x3542df[_0x4ae2('0x16')]],{'showHidden':![],'depth':null}));ami[_0x4ae2('0x14')](_0x4ae2('0x32'),this[_0x4ae2('0x7')][_0x3542df[_0x4ae2('0x16')]]);}logger[_0x4ae2('0x22')](_0x4ae2('0x33'),_0x3542df[_0x4ae2('0x16')],util[_0x4ae2('0x17')](this['channels'][_0x3542df[_0x4ae2('0x16')]],{'showHidden':![],'depth':null}));this[_0x4ae2('0x14')](_0x4ae2('0x25'),_0x4ae2('0x26'),this['channels'][_0x3542df['uniqueid']]);}}}catch(_0xd46eed){logger[_0x4ae2('0x28')](_0x4ae2('0x34'),_0x3542df[_0x4ae2('0x16')],util['inspect'](_0xd46eed,{'showHidden':![],'depth':null}));}};VoiceDialReport[_0x4ae2('0x11')][_0x4ae2('0x35')]=function(_0x5ca188){try{if(this[_0x4ae2('0x12')](_0x5ca188)){logger[_0x4ae2('0x22')](_0x4ae2('0x36'),_0x5ca188['uniqueid'],util[_0x4ae2('0x17')](_0x5ca188,{'showHidden':![],'depth':null}));this[_0x4ae2('0x37')](_0x5ca188[_0x4ae2('0x16')],_[_0x4ae2('0x38')](_0x5ca188[_0x4ae2('0x39')])[0x0],_0x5ca188[_0x4ae2('0x3a')]);if(this[_0x4ae2('0x12')](_0x5ca188[_0x4ae2('0x39')])&&this['isNotNull'](_0x5ca188[_0x4ae2('0x39')][_0x4ae2('0x3b')])){if(_['isUndefined'](this[_0x4ae2('0x7')][_0x5ca188[_0x4ae2('0x16')]])){this['channels'][_0x5ca188[_0x4ae2('0x16')]]={'routeId':_0x5ca188[_0x4ae2('0x3a')],'variables':this['variables'][_0x5ca188[_0x4ae2('0x16')]],'motionChannel':_0x4ae2('0x3c')};logger[_0x4ae2('0x1f')]('[%s][voiceDialReport][varset]\x20outboundrouteid:%s\x20variable:%s\x20value:%s',_0x5ca188['uniqueid'],_0x5ca188[_0x4ae2('0x39')][_0x4ae2('0x3b')],_[_0x4ae2('0x38')](_0x5ca188[_0x4ae2('0x39')])[0x0],_0x5ca188['value']);logger[_0x4ae2('0x22')](_0x4ae2('0x3d'),_0x5ca188[_0x4ae2('0x16')],util['inspect'](this[_0x4ae2('0x7')][_0x5ca188[_0x4ae2('0x16')]],{'showHidden':![],'depth':null}));this[_0x4ae2('0x14')]('voice:outbound',_0x4ae2('0x26'),this[_0x4ae2('0x7')][_0x5ca188[_0x4ae2('0x16')]]);}}}}catch(_0x39d365){logger[_0x4ae2('0x28')](_0x4ae2('0x3e'),_0x5ca188[_0x4ae2('0x16')],util[_0x4ae2('0x17')](_0x39d365,{'showHidden':![],'depth':null}));}};VoiceDialReport[_0x4ae2('0x11')][_0x4ae2('0x37')]=function(_0x48afbb,_0x3db48e,_0x4a70c6){var _0x10db30=[_0x4ae2('0x3f'),_0x4ae2('0x40'),_0x4ae2('0x41'),_0x4ae2('0x42'),_0x4ae2('0x43'),'rtpaudioqoslossbridged',_0x4ae2('0x44'),_0x4ae2('0x45'),'sipcallid',_0x4ae2('0x46'),_0x4ae2('0x47'),'bridgepvtcallid',_0x4ae2('0x48'),'memberdynamic',_0x4ae2('0x49'),'memberlastcall',_0x4ae2('0x4a'),_0x4ae2('0x4b'),_0x4ae2('0x4c')];if(!_[_0x4ae2('0x4d')](_0x3db48e)&&!_[_0x4ae2('0x4e')](_0x10db30,_0x3db48e)){if(_[_0x4ae2('0x13')](this[_0x4ae2('0x4f')][_0x48afbb])){this[_0x4ae2('0x4f')][_0x48afbb]={};}this[_0x4ae2('0x4f')][_0x48afbb][_0x3db48e]=_0x4a70c6;}};VoiceDialReport['prototype'][_0x4ae2('0x10')]=function(_0x4284b4){try{if(this[_0x4ae2('0x12')](_0x4284b4)){logger[_0x4ae2('0x22')]('[%s][voiceDialReport][hangup]\x20event:',_0x4284b4[_0x4ae2('0x16')],util[_0x4ae2('0x17')](_0x4284b4,{'showHidden':![],'depth':null}));if(this[_0x4ae2('0x7')][_0x4284b4['uniqueid']]){logger['info'](_0x4ae2('0x50'),_0x4284b4[_0x4ae2('0x16')],_0x4284b4[_0x4ae2('0x51')]);this[_0x4ae2('0x7')][_0x4284b4[_0x4ae2('0x16')]][_0x4ae2('0x52')]=moment()[_0x4ae2('0x19')](_0x4ae2('0x1a'));this[_0x4ae2('0x7')][_0x4284b4['uniqueid']][_0x4ae2('0x53')]=moment(this['channels'][_0x4284b4[_0x4ae2('0x16')]][_0x4ae2('0x52')])[_0x4ae2('0x54')](this[_0x4ae2('0x7')][_0x4284b4[_0x4ae2('0x16')]][_0x4ae2('0x55')],_0x4ae2('0x56'));this[_0x4ae2('0x7')][_0x4284b4['uniqueid']]['lastevent']=_0x4ae2('0x57');this[_0x4ae2('0x8')][_0x4ae2('0x58')]+=0x1;if(this['channels'][_0x4284b4['uniqueid']][_0x4ae2('0x2e')]){this[_0x4ae2('0x8')][_0x4ae2('0x59')]+=0x1;this[_0x4ae2('0x7')][_0x4284b4[_0x4ae2('0x16')]]['holdtime']=moment(this['channels'][_0x4284b4['uniqueid']][_0x4ae2('0x2e')])['diff'](this['channels'][_0x4284b4[_0x4ae2('0x16')]]['starttime'],_0x4ae2('0x56'));this['channels'][_0x4284b4[_0x4ae2('0x16')]]['billableseconds']=moment(this[_0x4ae2('0x7')][_0x4284b4['uniqueid']][_0x4ae2('0x52')])[_0x4ae2('0x54')](this[_0x4ae2('0x7')][_0x4284b4[_0x4ae2('0x16')]][_0x4ae2('0x2e')],'seconds');this['outbound'][_0x4ae2('0x5a')]+=this[_0x4ae2('0x7')][_0x4284b4['uniqueid']][_0x4ae2('0x5b')]||0x0;this[_0x4ae2('0x8')]['sumBillable']+=this[_0x4ae2('0x7')][_0x4284b4[_0x4ae2('0x16')]]['billableseconds'];}this['outbound'][_0x4ae2('0x5c')]+=this[_0x4ae2('0x7')][_0x4284b4['uniqueid']][_0x4ae2('0x53')];logger[_0x4ae2('0x22')](_0x4ae2('0x5d'),_0x4284b4[_0x4ae2('0x16')],util['inspect'](this[_0x4ae2('0x7')][_0x4284b4[_0x4ae2('0x16')]],{'showHidden':![],'depth':null}));ami['emit'](_0x4ae2('0x5e'),this[_0x4ae2('0x7')][_0x4284b4[_0x4ae2('0x16')]]);logger['debug']('[%s][voiceDialReport][hangup]\x20sending\x20dialend\x20event:',_0x4284b4[_0x4ae2('0x16')],util['inspect'](this[_0x4ae2('0x7')][_0x4284b4['uniqueid']],{'showHidden':![],'depth':null}));ami[_0x4ae2('0x14')]('custom:dialend',this[_0x4ae2('0x7')][_0x4284b4['uniqueid']]);logger[_0x4ae2('0x22')]('[%s][voiceDialReport][hangup]\x20sending\x20voice_outbound:save\x20event:',_0x4284b4['uniqueid'],util[_0x4ae2('0x17')](this[_0x4ae2('0x7')][_0x4284b4[_0x4ae2('0x16')]],{'showHidden':![],'depth':null}));this[_0x4ae2('0x14')](_0x4ae2('0x25'),_0x4ae2('0x5f'),this[_0x4ae2('0x8')]);logger[_0x4ae2('0x1f')](_0x4ae2('0x60'),JSON[_0x4ae2('0x61')](this[_0x4ae2('0x7')][_0x4284b4[_0x4ae2('0x16')]]));logger['debug'](_0x4ae2('0x62'),_0x4284b4[_0x4ae2('0x16')],util[_0x4ae2('0x17')](this[_0x4ae2('0x7')][_0x4284b4['uniqueid']],{'showHidden':![],'depth':null}));this[_0x4ae2('0x14')]('voice:outbound',_0x4ae2('0x63'),this[_0x4ae2('0x7')][_0x4284b4[_0x4ae2('0x16')]]);delete this[_0x4ae2('0x7')][_0x4284b4[_0x4ae2('0x16')]];}else if(this[_0x4ae2('0x7')][_0x4284b4['linkedid']]){this[_0x4ae2('0x7')][_0x4284b4[_0x4ae2('0x64')]][_0x4ae2('0x16')]=this['channels'][_0x4284b4[_0x4ae2('0x64')]][_0x4ae2('0x65')];}if(this[_0x4ae2('0x4f')][_0x4284b4['uniqueid']]){delete this[_0x4ae2('0x4f')][_0x4284b4[_0x4ae2('0x16')]];}}}catch(_0x209f6c){logger['error'](_0x4ae2('0x66'),_0x4284b4[_0x4ae2('0x16')],util[_0x4ae2('0x17')](_0x209f6c,{'showHidden':![],'depth':null}));}};VoiceDialReport[_0x4ae2('0x11')]['syncNewExten']=function(_0x390c71){try{if(this[_0x4ae2('0x12')](_0x390c71)){logger[_0x4ae2('0x22')](_0x4ae2('0x67'),_0x390c71[_0x4ae2('0x16')],util[_0x4ae2('0x17')](_0x390c71,{'showHidden':![],'depth':null}));if(_0x390c71[_0x4ae2('0x68')]['toLowerCase']()==='set'){_0x390c71[_0x4ae2('0x69')]=(_0x390c71[_0x4ae2('0x6a')]||_0x390c71[_0x4ae2('0x69')])[_0x4ae2('0x6b')]();if(_[_0x4ae2('0x6c')](_0x390c71[_0x4ae2('0x69')],'cdr(')){if(_[_0x4ae2('0x13')](this[_0x4ae2('0x24')][_0x390c71[_0x4ae2('0x16')]]))this[_0x4ae2('0x24')][_0x390c71[_0x4ae2('0x16')]]={};logger[_0x4ae2('0x1f')]('[%s][voiceDialReport][newexten]\x20application:%s\x20appdata:%s',_0x390c71[_0x4ae2('0x16')],_0x390c71[_0x4ae2('0x68')],_0x390c71[_0x4ae2('0x69')]);var _0x3a84d7=_0x390c71[_0x4ae2('0x69')][_0x4ae2('0x6d')]('=');var _0x5efbe9=_0x3a84d7[0x0]['match'](/cdr\((.*)\)/);if(_0x5efbe9)this[_0x4ae2('0x24')][_0x390c71[_0x4ae2('0x16')]][_0x5efbe9[0x1]]=_0x3a84d7[0x1];}}}}catch(_0x517ecb){logger[_0x4ae2('0x28')](_0x4ae2('0x6e'),_0x390c71[_0x4ae2('0x16')],util[_0x4ae2('0x17')](_0x517ecb,{'showHidden':![],'depth':null}));}};module[_0x4ae2('0x6f')]=VoiceDialReport;