Built motion from commit f25620e4.|2.6.30
[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 _0x6df6=['deleteChannelAfterTimeout','lodash','moment','ioredis','../../../config/environment','../../../config/logger','ami','../ami','redis','socket.io-emitter','channels','outboundChannels','outbound','applications','variables','dialbegin','bind','dialend','syncDialEnd','varset','syncVarSet','hangup','syncHangup','isUndefined','emit','prototype','syncDialBegin','debug','[%s][voiceDialReport][dialbegin]\x20event:','uniqueid','inspect','merge','format','YYYY-MM-DD\x20HH:mm:ss','channel','lastIndexOf','substring','omit','event','privilege','info','[%s][voiceDialReport][dialbegin]\x20agent:%s\x20interface:%s\x20lastevent:called','membername','interface','[%s][voiceDialReport][dialbegin]\x20sending\x20voice_outbound_channel:save\x20event:','voice:outbound','voice_outbound_channel:save','[%s][voiceDialReport][dialbegin]\x20sending\x20dialbegin\x20event:','custom:dialbegin','error','isNotNull','[%s][voiceDialReport][dialend]\x20event:','dialstatus','ANSWER','connectedlinenum','connectedlinename','lastevent','connect','custom:dialconnect','[%s][voiceDialReport][dialend]','[%s][voiceDialReport][varset]\x20event:','addVariable','keys','value','variable','outboundrouteid','voice','[%s][voiceDialReport][varset]\x20outboundrouteid:%s\x20variable:%s\x20value:%s','[%s][voiceDialReport][varset]\x20sending\x20voice_outbound_channel:save\x20event:','rtpaudioqos','rtpaudioqosjitter','rtpaudioqosloss','rtpaudioqoslossbridged','rtpaudioqosrtt','rtpaudioqosrttbridged','bridgepeer','bridgepvtcallid','memberdynamic','memberinterface','memberlastcall','memberrealtime','isNil','includes','[%s][voiceDialReport][hangup]\x20reason:%s\x20lasteevent:complete','cause-txt','endtime','diff','starttime','seconds','complete','total','answertime','answered','billableseconds','sumHoldTime','holdtime','sumDuration','duration','[%s][voiceDialReport][hangup]\x20sending\x20voiceDialReport\x20event:','custom:voiceDialReport','[DEBUG]\x20Emit\x20voice_outbound_channel:remove\x20event','stringify','[%s][voiceDialReport][hangup]\x20sending\x20voice_outbound_channel:remove\x20event:','voice_outbound_channel:remove','linkedid','destuniqueid','syncNewExten','[%s][voiceDialReport][newexten]\x20event:','application','set','applicationdata','toLowerCase','startsWith','[%s][voiceDialReport][newexten]\x20application:%s\x20appdata:%s','[%s][voiceDialReport][newexten]'];(function(_0x1b4ceb,_0x9be1a0){var _0x5d2beb=function(_0x24a5bc){while(--_0x24a5bc){_0x1b4ceb['push'](_0x1b4ceb['shift']());}};_0x5d2beb(++_0x9be1a0);}(_0x6df6,0x15a));var _0x66df=function(_0x237f8b,_0xc5eddb){_0x237f8b=_0x237f8b-0x0;var _0x423f94=_0x6df6[_0x237f8b];return _0x423f94;};'use strict';var _=require(_0x66df('0x0'));var moment=require(_0x66df('0x1'));var util=require('util');var Redis=require(_0x66df('0x2'));var config=require(_0x66df('0x3'));var logger=require(_0x66df('0x4'))(_0x66df('0x5'));var ami=require(_0x66df('0x6'));config[_0x66df('0x7')]=_['defaults'](config[_0x66df('0x7')],{'host':'localhost','port':0x18eb});var io=require(_0x66df('0x8'))(new Redis(config[_0x66df('0x7')]));function VoiceDialReport(_0x544d57){this[_0x66df('0x9')]=_0x544d57[_0x66df('0xa')];this[_0x66df('0xb')]=_0x544d57['outbound'];this[_0x66df('0xc')]={};this[_0x66df('0xd')]={};ami['on'](_0x66df('0xe'),this['syncDialBegin'][_0x66df('0xf')](this));ami['on'](_0x66df('0x10'),this[_0x66df('0x11')][_0x66df('0xf')](this));ami['on'](_0x66df('0x12'),this[_0x66df('0x13')][_0x66df('0xf')](this));ami['on'](_0x66df('0x14'),this[_0x66df('0x15')][_0x66df('0xf')](this));}VoiceDialReport['prototype']['isNotNull']=function(_0xa9d0e4){return _0xa9d0e4!==null&&!_[_0x66df('0x16')](_0xa9d0e4);};VoiceDialReport['prototype']['emit']=function(_0x530b60,_0x1a7581,_0x3d7e7a){io['to'](_0x530b60)[_0x66df('0x17')](_0x1a7581,_0x3d7e7a);};VoiceDialReport[_0x66df('0x18')][_0x66df('0x19')]=function(_0x3c0048){try{if(this['isNotNull'](_0x3c0048)){logger[_0x66df('0x1a')](_0x66df('0x1b'),_0x3c0048[_0x66df('0x1c')],util[_0x66df('0x1d')](_0x3c0048,{'showHidden':![],'depth':null}));if(this['channels'][_0x3c0048[_0x66df('0x1c')]]){_[_0x66df('0x1e')](this[_0x66df('0x9')][_0x3c0048[_0x66df('0x1c')]],{'starttime':moment()[_0x66df('0x1f')](_0x66df('0x20')),'lastevent':'called','interface':_0x3c0048['channel']['substring'](0x0,_0x3c0048[_0x66df('0x21')][_0x66df('0x22')]('-')),'membername':_0x3c0048[_0x66df('0x21')][_0x66df('0x23')](_0x3c0048[_0x66df('0x21')][_0x66df('0x22')]('/')+0x1,_0x3c0048['channel'][_0x66df('0x22')]('-'))},_[_0x66df('0x24')](_0x3c0048,[_0x66df('0x25'),_0x66df('0x26')]));logger[_0x66df('0x27')](_0x66df('0x28'),_0x3c0048[_0x66df('0x1c')],this[_0x66df('0x9')][_0x3c0048[_0x66df('0x1c')]][_0x66df('0x29')],this[_0x66df('0x9')][_0x3c0048[_0x66df('0x1c')]][_0x66df('0x2a')]);logger['debug'](_0x66df('0x2b'),_0x3c0048[_0x66df('0x1c')],util['inspect'](this[_0x66df('0x9')][_0x3c0048[_0x66df('0x1c')]],{'showHidden':![],'depth':null}));if(this[_0x66df('0xc')][_0x3c0048['uniqueid']])_[_0x66df('0x1e')](this[_0x66df('0x9')][_0x3c0048['uniqueid']],this[_0x66df('0xc')][_0x3c0048[_0x66df('0x1c')]]);this[_0x66df('0x17')](_0x66df('0x2c'),_0x66df('0x2d'),this[_0x66df('0x9')][_0x3c0048[_0x66df('0x1c')]]);logger[_0x66df('0x1a')](_0x66df('0x2e'),_0x3c0048['uniqueid'],util[_0x66df('0x1d')](this['channels'][_0x3c0048[_0x66df('0x1c')]],{'showHidden':![],'depth':null}));ami[_0x66df('0x17')](_0x66df('0x2f'),this[_0x66df('0x9')][_0x3c0048[_0x66df('0x1c')]]);}}}catch(_0x274179){logger[_0x66df('0x30')]('[%s][voiceDialReport][dialbegin]',_0x3c0048[_0x66df('0x1c')],util[_0x66df('0x1d')](_0x274179,{'showHidden':![],'depth':null}));}};VoiceDialReport[_0x66df('0x18')][_0x66df('0x11')]=function(_0x4e7df7){try{if(this[_0x66df('0x31')](_0x4e7df7)){logger['debug'](_0x66df('0x32'),_0x4e7df7[_0x66df('0x1c')],util[_0x66df('0x1d')](_0x4e7df7,{'showHidden':![],'depth':null}));if(this['channels'][_0x4e7df7['uniqueid']]){this[_0x66df('0x9')][_0x4e7df7[_0x66df('0x1c')]][_0x66df('0x33')]=_0x4e7df7[_0x66df('0x33')];if(_0x4e7df7[_0x66df('0x33')]===_0x66df('0x34')){this[_0x66df('0x9')][_0x4e7df7[_0x66df('0x1c')]][_0x66df('0x35')]=_0x4e7df7[_0x66df('0x35')];this['channels'][_0x4e7df7['uniqueid']]['connectedlinename']=_0x4e7df7[_0x66df('0x36')];this[_0x66df('0x9')][_0x4e7df7[_0x66df('0x1c')]]['answertime']=moment()[_0x66df('0x1f')](_0x66df('0x20'));this[_0x66df('0x9')][_0x4e7df7[_0x66df('0x1c')]][_0x66df('0x37')]=_0x66df('0x38');logger[_0x66df('0x27')]('[%s][voiceDialReport][dialend]\x20agent:%s\x20lastevent:connect',_0x4e7df7['uniqueid'],_0x4e7df7['channel'][_0x66df('0x23')](_0x4e7df7[_0x66df('0x21')]['lastIndexOf']('/')+0x1,_0x4e7df7[_0x66df('0x21')][_0x66df('0x22')]('-')));logger[_0x66df('0x1a')]('[%s][voiceDialReport][dialend]\x20sending\x20dialconnect\x20event:',_0x4e7df7[_0x66df('0x1c')],util[_0x66df('0x1d')](this[_0x66df('0x9')][_0x4e7df7[_0x66df('0x1c')]],{'showHidden':![],'depth':null}));ami['emit'](_0x66df('0x39'),this[_0x66df('0x9')][_0x4e7df7[_0x66df('0x1c')]]);}logger[_0x66df('0x1a')]('[%s][voiceDialReport][dialend]\x20sending\x20voice_outbound_channel:save\x20event:',_0x4e7df7[_0x66df('0x1c')],util[_0x66df('0x1d')](this['channels'][_0x4e7df7[_0x66df('0x1c')]],{'showHidden':![],'depth':null}));this['emit'](_0x66df('0x2c'),_0x66df('0x2d'),this[_0x66df('0x9')][_0x4e7df7[_0x66df('0x1c')]]);}}}catch(_0x4f9347){logger['error'](_0x66df('0x3a'),_0x4e7df7[_0x66df('0x1c')],util['inspect'](_0x4f9347,{'showHidden':![],'depth':null}));}};VoiceDialReport[_0x66df('0x18')]['syncVarSet']=function(_0x534d4c){try{if(this[_0x66df('0x31')](_0x534d4c)){logger[_0x66df('0x1a')](_0x66df('0x3b'),_0x534d4c[_0x66df('0x1c')],util[_0x66df('0x1d')](_0x534d4c,{'showHidden':![],'depth':null}));this[_0x66df('0x3c')](_0x534d4c[_0x66df('0x1c')],_[_0x66df('0x3d')](_0x534d4c['variable'])[0x0],_0x534d4c[_0x66df('0x3e')]);if(this[_0x66df('0x31')](_0x534d4c[_0x66df('0x3f')])&&this[_0x66df('0x31')](_0x534d4c['variable'][_0x66df('0x40')])){if(_[_0x66df('0x16')](this[_0x66df('0x9')][_0x534d4c[_0x66df('0x1c')]])){this[_0x66df('0x9')][_0x534d4c[_0x66df('0x1c')]]={'routeId':_0x534d4c[_0x66df('0x3e')],'variables':this[_0x66df('0xd')][_0x534d4c['uniqueid']],'motionChannel':_0x66df('0x41')};logger['info'](_0x66df('0x42'),_0x534d4c[_0x66df('0x1c')],_0x534d4c['variable'][_0x66df('0x40')],_[_0x66df('0x3d')](_0x534d4c[_0x66df('0x3f')])[0x0],_0x534d4c['value']);logger[_0x66df('0x1a')](_0x66df('0x43'),_0x534d4c[_0x66df('0x1c')],util['inspect'](this[_0x66df('0x9')][_0x534d4c['uniqueid']],{'showHidden':![],'depth':null}));this[_0x66df('0x17')](_0x66df('0x2c'),_0x66df('0x2d'),this[_0x66df('0x9')][_0x534d4c['uniqueid']]);}}}}catch(_0x56e41e){logger[_0x66df('0x30')]('[%s][voiceDialReport][varset]',_0x534d4c['uniqueid'],util[_0x66df('0x1d')](_0x56e41e,{'showHidden':![],'depth':null}));}};VoiceDialReport['prototype'][_0x66df('0x3c')]=function(_0x1456c9,_0x24914e,_0x46a338){var _0x4fa8f4=[_0x66df('0x44'),'rtpaudioqosbridged',_0x66df('0x45'),'rtpaudioqosjitterbridged',_0x66df('0x46'),_0x66df('0x47'),_0x66df('0x48'),_0x66df('0x49'),'sipcallid','sipuri',_0x66df('0x4a'),_0x66df('0x4b'),'membercalls',_0x66df('0x4c'),_0x66df('0x4d'),_0x66df('0x4e'),_0x66df('0x29'),'memberpenalty',_0x66df('0x4f')];if(!_[_0x66df('0x50')](_0x24914e)&&!_[_0x66df('0x51')](_0x4fa8f4,_0x24914e)){if(_[_0x66df('0x16')](this[_0x66df('0xd')][_0x1456c9])){this['variables'][_0x1456c9]={};}this[_0x66df('0xd')][_0x1456c9][_0x24914e]=_0x46a338;}};VoiceDialReport[_0x66df('0x18')]['syncHangup']=function(_0x2fd7d9){try{if(this[_0x66df('0x31')](_0x2fd7d9)){logger[_0x66df('0x1a')]('[%s][voiceDialReport][hangup]\x20event:',_0x2fd7d9[_0x66df('0x1c')],util['inspect'](_0x2fd7d9,{'showHidden':![],'depth':null}));if(this[_0x66df('0x9')][_0x2fd7d9[_0x66df('0x1c')]]){logger[_0x66df('0x27')](_0x66df('0x52'),_0x2fd7d9['uniqueid'],_0x2fd7d9[_0x66df('0x53')]);this['channels'][_0x2fd7d9[_0x66df('0x1c')]][_0x66df('0x54')]=moment()[_0x66df('0x1f')](_0x66df('0x20'));this[_0x66df('0x9')][_0x2fd7d9[_0x66df('0x1c')]]['duration']=moment(this[_0x66df('0x9')][_0x2fd7d9[_0x66df('0x1c')]][_0x66df('0x54')])[_0x66df('0x55')](this['channels'][_0x2fd7d9[_0x66df('0x1c')]][_0x66df('0x56')],_0x66df('0x57'));this[_0x66df('0x9')][_0x2fd7d9[_0x66df('0x1c')]][_0x66df('0x37')]=_0x66df('0x58');this['outbound'][_0x66df('0x59')]+=0x1;if(this['channels'][_0x2fd7d9[_0x66df('0x1c')]][_0x66df('0x5a')]){this['outbound'][_0x66df('0x5b')]+=0x1;this[_0x66df('0x9')][_0x2fd7d9[_0x66df('0x1c')]]['holdtime']=moment(this['channels'][_0x2fd7d9[_0x66df('0x1c')]][_0x66df('0x5a')])['diff'](this[_0x66df('0x9')][_0x2fd7d9[_0x66df('0x1c')]]['starttime'],_0x66df('0x57'));this[_0x66df('0x9')][_0x2fd7d9[_0x66df('0x1c')]][_0x66df('0x5c')]=moment(this[_0x66df('0x9')][_0x2fd7d9['uniqueid']][_0x66df('0x54')])[_0x66df('0x55')](this['channels'][_0x2fd7d9[_0x66df('0x1c')]][_0x66df('0x5a')],'seconds');this[_0x66df('0xb')][_0x66df('0x5d')]+=this[_0x66df('0x9')][_0x2fd7d9['uniqueid']][_0x66df('0x5e')]||0x0;this[_0x66df('0xb')]['sumBillable']+=this[_0x66df('0x9')][_0x2fd7d9[_0x66df('0x1c')]][_0x66df('0x5c')];}this[_0x66df('0xb')][_0x66df('0x5f')]+=this[_0x66df('0x9')][_0x2fd7d9[_0x66df('0x1c')]][_0x66df('0x60')];logger['debug'](_0x66df('0x61'),_0x2fd7d9[_0x66df('0x1c')],util[_0x66df('0x1d')](this['channels'][_0x2fd7d9[_0x66df('0x1c')]],{'showHidden':![],'depth':null}));ami[_0x66df('0x17')](_0x66df('0x62'),this[_0x66df('0x9')][_0x2fd7d9[_0x66df('0x1c')]]);logger[_0x66df('0x1a')]('[%s][voiceDialReport][hangup]\x20sending\x20dialend\x20event:',_0x2fd7d9['uniqueid'],util[_0x66df('0x1d')](this[_0x66df('0x9')][_0x2fd7d9[_0x66df('0x1c')]],{'showHidden':![],'depth':null}));ami[_0x66df('0x17')]('custom:dialend',this['channels'][_0x2fd7d9['uniqueid']]);logger[_0x66df('0x1a')]('[%s][voiceDialReport][hangup]\x20sending\x20voice_outbound:save\x20event:',_0x2fd7d9['uniqueid'],util[_0x66df('0x1d')](this['channels'][_0x2fd7d9['uniqueid']],{'showHidden':![],'depth':null}));this[_0x66df('0x17')](_0x66df('0x2c'),'voice_outbound:save',this[_0x66df('0xb')]);logger['info'](_0x66df('0x63'),JSON[_0x66df('0x64')](this[_0x66df('0x9')][_0x2fd7d9['uniqueid']]));logger[_0x66df('0x1a')](_0x66df('0x65'),_0x2fd7d9[_0x66df('0x1c')],util['inspect'](this[_0x66df('0x9')][_0x2fd7d9[_0x66df('0x1c')]],{'showHidden':![],'depth':null}));this[_0x66df('0x17')](_0x66df('0x2c'),_0x66df('0x66'),this[_0x66df('0x9')][_0x2fd7d9[_0x66df('0x1c')]]);this['deleteChannelAfterTimeout'](_0x2fd7d9[_0x66df('0x1c')]);}else if(this[_0x66df('0x9')][_0x2fd7d9[_0x66df('0x67')]]){this[_0x66df('0x9')][_0x2fd7d9[_0x66df('0x67')]]['uniqueid']=this[_0x66df('0x9')][_0x2fd7d9[_0x66df('0x67')]][_0x66df('0x68')];}if(this[_0x66df('0xd')][_0x2fd7d9[_0x66df('0x1c')]]){delete this[_0x66df('0xd')][_0x2fd7d9[_0x66df('0x1c')]];}}}catch(_0x306568){logger[_0x66df('0x30')]('[%s][voiceDialReport][hangup]',_0x2fd7d9[_0x66df('0x1c')],util[_0x66df('0x1d')](_0x306568,{'showHidden':![],'depth':null}));}};VoiceDialReport[_0x66df('0x18')][_0x66df('0x69')]=function(_0x11b1b0){try{if(this[_0x66df('0x31')](_0x11b1b0)){logger[_0x66df('0x1a')](_0x66df('0x6a'),_0x11b1b0['uniqueid'],util[_0x66df('0x1d')](_0x11b1b0,{'showHidden':![],'depth':null}));if(_0x11b1b0[_0x66df('0x6b')]['toLowerCase']()===_0x66df('0x6c')){_0x11b1b0[_0x66df('0x6d')]=(_0x11b1b0['appdata']||_0x11b1b0[_0x66df('0x6d')])[_0x66df('0x6e')]();if(_[_0x66df('0x6f')](_0x11b1b0['applicationdata'],'cdr(')){if(_[_0x66df('0x16')](this[_0x66df('0xc')][_0x11b1b0[_0x66df('0x1c')]]))this[_0x66df('0xc')][_0x11b1b0[_0x66df('0x1c')]]={};logger[_0x66df('0x27')](_0x66df('0x70'),_0x11b1b0['uniqueid'],_0x11b1b0[_0x66df('0x6b')],_0x11b1b0[_0x66df('0x6d')]);var _0xaeebf2=_0x11b1b0[_0x66df('0x6d')]['split']('=');var _0x5eb33c=_0xaeebf2[0x0]['match'](/cdr\((.*)\)/);if(_0x5eb33c)this[_0x66df('0xc')][_0x11b1b0[_0x66df('0x1c')]][_0x5eb33c[0x1]]=_0xaeebf2[0x1];}}}}catch(_0xb7b71a){logger[_0x66df('0x30')](_0x66df('0x71'),_0x11b1b0[_0x66df('0x1c')],util['inspect'](_0xb7b71a,{'showHidden':![],'depth':null}));}};VoiceDialReport[_0x66df('0x18')][_0x66df('0x72')]=function(_0x565c39,_0x24b5ec=0x2710){if(this['channels'][_0x565c39]){setTimeout(()=>{delete this[_0x66df('0x9')][_0x565c39];},_0x24b5ec);}};module['exports']=VoiceDialReport;