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