a674abc1e46566a35bc535d676799240b60ecd10
[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 _0x3f8a=['syncDialEnd','syncVarSet','hangup','syncHangup','prototype','isNotNull','isUndefined','emit','syncDialBegin','debug','[%s][voiceDialReport][dialbegin]\x20event:','uniqueid','inspect','merge','YYYY-MM-DD\x20HH:mm:ss','channel','substring','lastIndexOf','omit','event','privilege','info','[%s][voiceDialReport][dialbegin]\x20agent:%s\x20interface:%s\x20lastevent:called','interface','[%s][voiceDialReport][dialbegin]\x20sending\x20voice_outbound_channel:save\x20event:','voice:outbound','voice_outbound_channel:save','custom:dialbegin','error','[%s][voiceDialReport][dialbegin]','[%s][voiceDialReport][dialend]\x20event:','dialstatus','ANSWER','connectedlinenum','connectedlinename','answertime','connect','[%s][voiceDialReport][dialend]\x20agent:%s\x20lastevent:connect','custom:dialconnect','[%s][voiceDialReport][dialend]\x20sending\x20voice_outbound_channel:save\x20event:','[%s][voiceDialReport][varset]\x20event:','addVariable','keys','variable','value','outboundrouteid','voice','[%s][voiceDialReport][varset]\x20outboundrouteid:%s\x20variable:%s\x20value:%s','[%s][voiceDialReport][varset]\x20sending\x20voice_outbound_channel:save\x20event:','[%s][voiceDialReport][varset]','rtpaudioqos','rtpaudioqosbridged','rtpaudioqosjitter','rtpaudioqosjitterbridged','rtpaudioqosloss','rtpaudioqoslossbridged','rtpaudioqosrtt','sipuri','bridgepeer','membercalls','memberdynamic','memberinterface','memberlastcall','membername','memberpenalty','memberrealtime','isNil','includes','[%s][voiceDialReport][hangup]\x20event:','[%s][voiceDialReport][hangup]\x20reason:%s\x20lasteevent:complete','cause-txt','endtime','diff','starttime','seconds','lastevent','total','answered','billableseconds','holdtime','sumBillable','sumDuration','duration','[%s][voiceDialReport][hangup]\x20sending\x20voiceDialReport\x20event:','custom:voiceDialReport','custom:dialend','[%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','destuniqueid','syncNewExten','toLowerCase','set','applicationdata','appdata','cdr(','split','match','[%s][voiceDialReport][newexten]','exports','lodash','moment','util','ioredis','../../../config/logger','ami','../ami','redis','defaults','localhost','socket.io-emitter','channels','outboundChannels','outbound','applications','variables','dialbegin','bind','dialend'];(function(_0x1caf6a,_0x26a5bf){var _0x1bf493=function(_0x3982f5){while(--_0x3982f5){_0x1caf6a['push'](_0x1caf6a['shift']());}};_0x1bf493(++_0x26a5bf);}(_0x3f8a,0x1d5));var _0xa3f8=function(_0x6aded1,_0x24e810){_0x6aded1=_0x6aded1-0x0;var _0x4c4e6c=_0x3f8a[_0x6aded1];return _0x4c4e6c;};'use strict';var _=require(_0xa3f8('0x0'));var moment=require(_0xa3f8('0x1'));var util=require(_0xa3f8('0x2'));var Redis=require(_0xa3f8('0x3'));var config=require('../../../config/environment');var logger=require(_0xa3f8('0x4'))(_0xa3f8('0x5'));var ami=require(_0xa3f8('0x6'));config[_0xa3f8('0x7')]=_[_0xa3f8('0x8')](config[_0xa3f8('0x7')],{'host':_0xa3f8('0x9'),'port':0x18eb});var io=require(_0xa3f8('0xa'))(new Redis(config[_0xa3f8('0x7')]));function VoiceDialReport(_0xf895d9){this[_0xa3f8('0xb')]=_0xf895d9[_0xa3f8('0xc')];this[_0xa3f8('0xd')]=_0xf895d9[_0xa3f8('0xd')];this[_0xa3f8('0xe')]={};this[_0xa3f8('0xf')]={};ami['on'](_0xa3f8('0x10'),this['syncDialBegin'][_0xa3f8('0x11')](this));ami['on'](_0xa3f8('0x12'),this[_0xa3f8('0x13')][_0xa3f8('0x11')](this));ami['on']('varset',this[_0xa3f8('0x14')][_0xa3f8('0x11')](this));ami['on'](_0xa3f8('0x15'),this[_0xa3f8('0x16')][_0xa3f8('0x11')](this));}VoiceDialReport[_0xa3f8('0x17')][_0xa3f8('0x18')]=function(_0x63de8b){return _0x63de8b!==null&&!_[_0xa3f8('0x19')](_0x63de8b);};VoiceDialReport[_0xa3f8('0x17')][_0xa3f8('0x1a')]=function(_0x2c5e15,_0x5b2c33,_0x2d8f74){io['to'](_0x2c5e15)[_0xa3f8('0x1a')](_0x5b2c33,_0x2d8f74);};VoiceDialReport[_0xa3f8('0x17')][_0xa3f8('0x1b')]=function(_0x5caebf){try{if(this[_0xa3f8('0x18')](_0x5caebf)){logger[_0xa3f8('0x1c')](_0xa3f8('0x1d'),_0x5caebf[_0xa3f8('0x1e')],util[_0xa3f8('0x1f')](_0x5caebf,{'showHidden':![],'depth':null}));if(this[_0xa3f8('0xb')][_0x5caebf[_0xa3f8('0x1e')]]){_[_0xa3f8('0x20')](this[_0xa3f8('0xb')][_0x5caebf[_0xa3f8('0x1e')]],{'starttime':moment()['format'](_0xa3f8('0x21')),'lastevent':'called','interface':_0x5caebf[_0xa3f8('0x22')][_0xa3f8('0x23')](0x0,_0x5caebf[_0xa3f8('0x22')][_0xa3f8('0x24')]('-')),'membername':_0x5caebf['channel'][_0xa3f8('0x23')](_0x5caebf['channel'][_0xa3f8('0x24')]('/')+0x1,_0x5caebf['channel'][_0xa3f8('0x24')]('-'))},_[_0xa3f8('0x25')](_0x5caebf,[_0xa3f8('0x26'),_0xa3f8('0x27')]));logger[_0xa3f8('0x28')](_0xa3f8('0x29'),_0x5caebf[_0xa3f8('0x1e')],this['channels'][_0x5caebf[_0xa3f8('0x1e')]]['membername'],this[_0xa3f8('0xb')][_0x5caebf[_0xa3f8('0x1e')]][_0xa3f8('0x2a')]);logger[_0xa3f8('0x1c')](_0xa3f8('0x2b'),_0x5caebf[_0xa3f8('0x1e')],util[_0xa3f8('0x1f')](this[_0xa3f8('0xb')][_0x5caebf[_0xa3f8('0x1e')]],{'showHidden':![],'depth':null}));if(this[_0xa3f8('0xe')][_0x5caebf['uniqueid']])_[_0xa3f8('0x20')](this[_0xa3f8('0xb')][_0x5caebf[_0xa3f8('0x1e')]],this['applications'][_0x5caebf[_0xa3f8('0x1e')]]);this['emit'](_0xa3f8('0x2c'),_0xa3f8('0x2d'),this[_0xa3f8('0xb')][_0x5caebf['uniqueid']]);logger[_0xa3f8('0x1c')]('[%s][voiceDialReport][dialbegin]\x20sending\x20dialbegin\x20event:',_0x5caebf[_0xa3f8('0x1e')],util[_0xa3f8('0x1f')](this[_0xa3f8('0xb')][_0x5caebf[_0xa3f8('0x1e')]],{'showHidden':![],'depth':null}));ami[_0xa3f8('0x1a')](_0xa3f8('0x2e'),this[_0xa3f8('0xb')][_0x5caebf[_0xa3f8('0x1e')]]);}}}catch(_0x25f9f5){logger[_0xa3f8('0x2f')](_0xa3f8('0x30'),_0x5caebf['uniqueid'],util[_0xa3f8('0x1f')](_0x25f9f5,{'showHidden':![],'depth':null}));}};VoiceDialReport[_0xa3f8('0x17')][_0xa3f8('0x13')]=function(_0x1954f5){try{if(this[_0xa3f8('0x18')](_0x1954f5)){logger['debug'](_0xa3f8('0x31'),_0x1954f5[_0xa3f8('0x1e')],util['inspect'](_0x1954f5,{'showHidden':![],'depth':null}));if(this[_0xa3f8('0xb')][_0x1954f5[_0xa3f8('0x1e')]]){this['channels'][_0x1954f5[_0xa3f8('0x1e')]]['dialstatus']=_0x1954f5['dialstatus'];if(_0x1954f5[_0xa3f8('0x32')]===_0xa3f8('0x33')){this['channels'][_0x1954f5[_0xa3f8('0x1e')]]['connectedlinenum']=_0x1954f5[_0xa3f8('0x34')];this[_0xa3f8('0xb')][_0x1954f5[_0xa3f8('0x1e')]][_0xa3f8('0x35')]=_0x1954f5['connectedlinename'];this[_0xa3f8('0xb')][_0x1954f5['uniqueid']][_0xa3f8('0x36')]=moment()['format'](_0xa3f8('0x21'));this['channels'][_0x1954f5['uniqueid']]['lastevent']=_0xa3f8('0x37');logger[_0xa3f8('0x28')](_0xa3f8('0x38'),_0x1954f5[_0xa3f8('0x1e')],_0x1954f5['channel'][_0xa3f8('0x23')](_0x1954f5[_0xa3f8('0x22')][_0xa3f8('0x24')]('/')+0x1,_0x1954f5[_0xa3f8('0x22')][_0xa3f8('0x24')]('-')));logger[_0xa3f8('0x1c')]('[%s][voiceDialReport][dialend]\x20sending\x20dialconnect\x20event:',_0x1954f5[_0xa3f8('0x1e')],util[_0xa3f8('0x1f')](this[_0xa3f8('0xb')][_0x1954f5['uniqueid']],{'showHidden':![],'depth':null}));ami[_0xa3f8('0x1a')](_0xa3f8('0x39'),this['channels'][_0x1954f5[_0xa3f8('0x1e')]]);}logger['debug'](_0xa3f8('0x3a'),_0x1954f5['uniqueid'],util[_0xa3f8('0x1f')](this[_0xa3f8('0xb')][_0x1954f5[_0xa3f8('0x1e')]],{'showHidden':![],'depth':null}));this[_0xa3f8('0x1a')](_0xa3f8('0x2c'),'voice_outbound_channel:save',this[_0xa3f8('0xb')][_0x1954f5[_0xa3f8('0x1e')]]);}}}catch(_0x4db9c5){logger[_0xa3f8('0x2f')]('[%s][voiceDialReport][dialend]',_0x1954f5[_0xa3f8('0x1e')],util[_0xa3f8('0x1f')](_0x4db9c5,{'showHidden':![],'depth':null}));}};VoiceDialReport[_0xa3f8('0x17')][_0xa3f8('0x14')]=function(_0x357712){try{if(this['isNotNull'](_0x357712)){logger[_0xa3f8('0x1c')](_0xa3f8('0x3b'),_0x357712[_0xa3f8('0x1e')],util[_0xa3f8('0x1f')](_0x357712,{'showHidden':![],'depth':null}));this[_0xa3f8('0x3c')](_0x357712['uniqueid'],_[_0xa3f8('0x3d')](_0x357712[_0xa3f8('0x3e')])[0x0],_0x357712[_0xa3f8('0x3f')]);if(this[_0xa3f8('0x18')](_0x357712[_0xa3f8('0x3e')])&&this[_0xa3f8('0x18')](_0x357712[_0xa3f8('0x3e')][_0xa3f8('0x40')])){if(_[_0xa3f8('0x19')](this[_0xa3f8('0xb')][_0x357712[_0xa3f8('0x1e')]])){this[_0xa3f8('0xb')][_0x357712[_0xa3f8('0x1e')]]={'routeId':_0x357712['value'],'variables':this['variables'][_0x357712['uniqueid']],'motionChannel':_0xa3f8('0x41')};logger[_0xa3f8('0x28')](_0xa3f8('0x42'),_0x357712[_0xa3f8('0x1e')],_0x357712[_0xa3f8('0x3e')][_0xa3f8('0x40')],_['keys'](_0x357712[_0xa3f8('0x3e')])[0x0],_0x357712[_0xa3f8('0x3f')]);logger[_0xa3f8('0x1c')](_0xa3f8('0x43'),_0x357712['uniqueid'],util[_0xa3f8('0x1f')](this[_0xa3f8('0xb')][_0x357712[_0xa3f8('0x1e')]],{'showHidden':![],'depth':null}));this['emit']('voice:outbound','voice_outbound_channel:save',this[_0xa3f8('0xb')][_0x357712[_0xa3f8('0x1e')]]);}}}}catch(_0x5a2a7c){logger[_0xa3f8('0x2f')](_0xa3f8('0x44'),_0x357712[_0xa3f8('0x1e')],util[_0xa3f8('0x1f')](_0x5a2a7c,{'showHidden':![],'depth':null}));}};VoiceDialReport[_0xa3f8('0x17')][_0xa3f8('0x3c')]=function(_0x375ffd,_0x37fa3d,_0xbfef86){var _0xe1f66d=[_0xa3f8('0x45'),_0xa3f8('0x46'),_0xa3f8('0x47'),_0xa3f8('0x48'),_0xa3f8('0x49'),_0xa3f8('0x4a'),_0xa3f8('0x4b'),'rtpaudioqosrttbridged','sipcallid',_0xa3f8('0x4c'),_0xa3f8('0x4d'),'bridgepvtcallid',_0xa3f8('0x4e'),_0xa3f8('0x4f'),_0xa3f8('0x50'),_0xa3f8('0x51'),_0xa3f8('0x52'),_0xa3f8('0x53'),_0xa3f8('0x54')];if(!_[_0xa3f8('0x55')](_0x37fa3d)&&!_[_0xa3f8('0x56')](_0xe1f66d,_0x37fa3d)){if(_[_0xa3f8('0x19')](this[_0xa3f8('0xf')][_0x375ffd])){this[_0xa3f8('0xf')][_0x375ffd]={};}this[_0xa3f8('0xf')][_0x375ffd][_0x37fa3d]=_0xbfef86;}};VoiceDialReport[_0xa3f8('0x17')][_0xa3f8('0x16')]=function(_0x3169d3){try{if(this['isNotNull'](_0x3169d3)){logger['debug'](_0xa3f8('0x57'),_0x3169d3['uniqueid'],util[_0xa3f8('0x1f')](_0x3169d3,{'showHidden':![],'depth':null}));if(this[_0xa3f8('0xb')][_0x3169d3[_0xa3f8('0x1e')]]){logger['info'](_0xa3f8('0x58'),_0x3169d3[_0xa3f8('0x1e')],_0x3169d3[_0xa3f8('0x59')]);this[_0xa3f8('0xb')][_0x3169d3['uniqueid']][_0xa3f8('0x5a')]=moment()['format'](_0xa3f8('0x21'));this[_0xa3f8('0xb')][_0x3169d3[_0xa3f8('0x1e')]]['duration']=moment(this['channels'][_0x3169d3[_0xa3f8('0x1e')]][_0xa3f8('0x5a')])[_0xa3f8('0x5b')](this[_0xa3f8('0xb')][_0x3169d3['uniqueid']][_0xa3f8('0x5c')],_0xa3f8('0x5d'));this[_0xa3f8('0xb')][_0x3169d3[_0xa3f8('0x1e')]][_0xa3f8('0x5e')]='complete';this['outbound'][_0xa3f8('0x5f')]+=0x1;if(this[_0xa3f8('0xb')][_0x3169d3[_0xa3f8('0x1e')]][_0xa3f8('0x36')]){this[_0xa3f8('0xd')][_0xa3f8('0x60')]+=0x1;this[_0xa3f8('0xb')][_0x3169d3['uniqueid']]['holdtime']=moment(this['channels'][_0x3169d3[_0xa3f8('0x1e')]][_0xa3f8('0x36')])[_0xa3f8('0x5b')](this[_0xa3f8('0xb')][_0x3169d3[_0xa3f8('0x1e')]][_0xa3f8('0x5c')],_0xa3f8('0x5d'));this[_0xa3f8('0xb')][_0x3169d3['uniqueid']][_0xa3f8('0x61')]=moment(this[_0xa3f8('0xb')][_0x3169d3[_0xa3f8('0x1e')]][_0xa3f8('0x5a')])[_0xa3f8('0x5b')](this[_0xa3f8('0xb')][_0x3169d3[_0xa3f8('0x1e')]]['answertime'],_0xa3f8('0x5d'));this[_0xa3f8('0xd')]['sumHoldTime']+=this[_0xa3f8('0xb')][_0x3169d3[_0xa3f8('0x1e')]][_0xa3f8('0x62')]||0x0;this[_0xa3f8('0xd')][_0xa3f8('0x63')]+=this[_0xa3f8('0xb')][_0x3169d3[_0xa3f8('0x1e')]]['billableseconds'];}this['outbound'][_0xa3f8('0x64')]+=this['channels'][_0x3169d3[_0xa3f8('0x1e')]][_0xa3f8('0x65')];logger[_0xa3f8('0x1c')](_0xa3f8('0x66'),_0x3169d3[_0xa3f8('0x1e')],util[_0xa3f8('0x1f')](this[_0xa3f8('0xb')][_0x3169d3[_0xa3f8('0x1e')]],{'showHidden':![],'depth':null}));ami[_0xa3f8('0x1a')](_0xa3f8('0x67'),this[_0xa3f8('0xb')][_0x3169d3[_0xa3f8('0x1e')]]);logger[_0xa3f8('0x1c')]('[%s][voiceDialReport][hangup]\x20sending\x20dialend\x20event:',_0x3169d3[_0xa3f8('0x1e')],util[_0xa3f8('0x1f')](this[_0xa3f8('0xb')][_0x3169d3[_0xa3f8('0x1e')]],{'showHidden':![],'depth':null}));ami[_0xa3f8('0x1a')](_0xa3f8('0x68'),this['channels'][_0x3169d3[_0xa3f8('0x1e')]]);logger[_0xa3f8('0x1c')](_0xa3f8('0x69'),_0x3169d3[_0xa3f8('0x1e')],util[_0xa3f8('0x1f')](this[_0xa3f8('0xb')][_0x3169d3[_0xa3f8('0x1e')]],{'showHidden':![],'depth':null}));this[_0xa3f8('0x1a')](_0xa3f8('0x2c'),_0xa3f8('0x6a'),this[_0xa3f8('0xd')]);logger['info'](_0xa3f8('0x6b'),JSON[_0xa3f8('0x6c')](this['channels'][_0x3169d3['uniqueid']]));logger[_0xa3f8('0x1c')](_0xa3f8('0x6d'),_0x3169d3[_0xa3f8('0x1e')],util[_0xa3f8('0x1f')](this[_0xa3f8('0xb')][_0x3169d3[_0xa3f8('0x1e')]],{'showHidden':![],'depth':null}));this[_0xa3f8('0x1a')](_0xa3f8('0x2c'),'voice_outbound_channel:remove',this[_0xa3f8('0xb')][_0x3169d3[_0xa3f8('0x1e')]]);delete this[_0xa3f8('0xb')][_0x3169d3['uniqueid']];}else if(this[_0xa3f8('0xb')][_0x3169d3[_0xa3f8('0x6e')]]){this['channels'][_0x3169d3[_0xa3f8('0x6e')]][_0xa3f8('0x1e')]=this[_0xa3f8('0xb')][_0x3169d3[_0xa3f8('0x6e')]][_0xa3f8('0x6f')];}if(this[_0xa3f8('0xf')][_0x3169d3[_0xa3f8('0x1e')]]){delete this[_0xa3f8('0xf')][_0x3169d3[_0xa3f8('0x1e')]];}}}catch(_0x55087e){logger[_0xa3f8('0x2f')]('[%s][voiceDialReport][hangup]',_0x3169d3[_0xa3f8('0x1e')],util['inspect'](_0x55087e,{'showHidden':![],'depth':null}));}};VoiceDialReport[_0xa3f8('0x17')][_0xa3f8('0x70')]=function(_0x407986){try{if(this[_0xa3f8('0x18')](_0x407986)){logger[_0xa3f8('0x1c')]('[%s][voiceDialReport][newexten]\x20event:',_0x407986[_0xa3f8('0x1e')],util[_0xa3f8('0x1f')](_0x407986,{'showHidden':![],'depth':null}));if(_0x407986['application'][_0xa3f8('0x71')]()===_0xa3f8('0x72')){_0x407986[_0xa3f8('0x73')]=(_0x407986[_0xa3f8('0x74')]||_0x407986[_0xa3f8('0x73')])[_0xa3f8('0x71')]();if(_['startsWith'](_0x407986[_0xa3f8('0x73')],_0xa3f8('0x75'))){if(_[_0xa3f8('0x19')](this['applications'][_0x407986[_0xa3f8('0x1e')]]))this['applications'][_0x407986[_0xa3f8('0x1e')]]={};logger['info']('[%s][voiceDialReport][newexten]\x20application:%s\x20appdata:%s',_0x407986[_0xa3f8('0x1e')],_0x407986['application'],_0x407986[_0xa3f8('0x73')]);var _0x5f174a=_0x407986[_0xa3f8('0x73')][_0xa3f8('0x76')]('=');var _0x279131=_0x5f174a[0x0][_0xa3f8('0x77')](/cdr\((.*)\)/);if(_0x279131)this['applications'][_0x407986[_0xa3f8('0x1e')]][_0x279131[0x1]]=_0x5f174a[0x1];}}}}catch(_0x35db48){logger['error'](_0xa3f8('0x78'),_0x407986[_0xa3f8('0x1e')],util[_0xa3f8('0x1f')](_0x35db48,{'showHidden':![],'depth':null}));}};module[_0xa3f8('0x79')]=VoiceDialReport;