Built motion from commit (unavailable).|2.4.21
[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 _0x4086=['variables','endtime','duration','diff','total','answered','holdtime','starttime','seconds','billableseconds','sumHoldTime','sumDuration','custom:voiceDialReport','voice_outbound:save','info','stringify','voice_outbound_channel:remove','exports','lodash','util','../../../config/environment','../../../config/logger','ami','../ami','redis','defaults','localhost','channels','outbound','dialbegin','syncDialBegin','dialend','syncDialEnd','bind','varset','syncVarSet','syncHangup','prototype','isUndefined','emit','isNotNull','merge','format','called','channel','lastIndexOf','omit','event','privilege','voice:outbound','voice_outbound_channel:save','uniqueid','custom:dialbegin','[syncDialBegin][VoiceDialReport]','dialstatus','ANSWER','connectedlinenum','connectedlinename','answertime','YYYY-MM-DD\x20HH:mm:ss','lastevent','error','[syncDialEnd][VoiceDialReport]','inspect','addVariable','keys','variable','outboundrouteid','value','rtpaudioqos','rtpaudioqosbridged','rtpaudioqosjitterbridged','rtpaudioqosloss','rtpaudioqoslossbridged','rtpaudioqosrtt','sipcallid','sipuri','bridgepeer','bridgepvtcallid','membercalls','memberdynamic','memberinterface','memberlastcall','membername','memberpenalty','memberrealtime','isNil','includes'];(function(_0x47d020,_0x24c31f){var _0x1090da=function(_0x30fa67){while(--_0x30fa67){_0x47d020['push'](_0x47d020['shift']());}};_0x1090da(++_0x24c31f);}(_0x4086,0x6a));var _0x6408=function(_0x122ef9,_0x451d2a){_0x122ef9=_0x122ef9-0x0;var _0x42fba0=_0x4086[_0x122ef9];return _0x42fba0;};'use strict';var _=require(_0x6408('0x0'));var moment=require('moment');var util=require(_0x6408('0x1'));var Redis=require('ioredis');var config=require(_0x6408('0x2'));var logger=require(_0x6408('0x3'))(_0x6408('0x4'));var ami=require(_0x6408('0x5'));config[_0x6408('0x6')]=_[_0x6408('0x7')](config[_0x6408('0x6')],{'host':_0x6408('0x8'),'port':0x18eb});var io=require('socket.io-emitter')(new Redis(config[_0x6408('0x6')]));function VoiceDialReport(_0xa7e9dd){this[_0x6408('0x9')]=_0xa7e9dd['outboundChannels'];this[_0x6408('0xa')]=_0xa7e9dd[_0x6408('0xa')];this['variables']={};ami['on'](_0x6408('0xb'),this[_0x6408('0xc')]['bind'](this));ami['on'](_0x6408('0xd'),this[_0x6408('0xe')][_0x6408('0xf')](this));ami['on'](_0x6408('0x10'),this[_0x6408('0x11')][_0x6408('0xf')](this));ami['on']('hangup',this[_0x6408('0x12')]['bind'](this));}VoiceDialReport[_0x6408('0x13')]['isNotNull']=function(_0x2fd674){return _0x2fd674!==null&&!_[_0x6408('0x14')](_0x2fd674);};VoiceDialReport[_0x6408('0x13')][_0x6408('0x15')]=function(_0x32b371,_0x5191e8,_0x5c1d6d){io['to'](_0x32b371)[_0x6408('0x15')](_0x5191e8,_0x5c1d6d);};VoiceDialReport[_0x6408('0x13')][_0x6408('0xc')]=function(_0x512b22){try{if(this[_0x6408('0x16')](_0x512b22)){if(this[_0x6408('0x9')][_0x512b22['uniqueid']]){_[_0x6408('0x17')](this[_0x6408('0x9')][_0x512b22['uniqueid']],{'starttime':moment()[_0x6408('0x18')]('YYYY-MM-DD\x20HH:mm:ss'),'lastevent':_0x6408('0x19'),'interface':_0x512b22['channel']['substring'](0x0,_0x512b22['channel']['lastIndexOf']('-')),'membername':_0x512b22[_0x6408('0x1a')]['substring'](_0x512b22[_0x6408('0x1a')][_0x6408('0x1b')]('/')+0x1,_0x512b22[_0x6408('0x1a')][_0x6408('0x1b')]('-'))},_[_0x6408('0x1c')](_0x512b22,[_0x6408('0x1d'),_0x6408('0x1e')]));this[_0x6408('0x15')](_0x6408('0x1f'),_0x6408('0x20'),this['channels'][_0x512b22[_0x6408('0x21')]]);ami['emit'](_0x6408('0x22'),this[_0x6408('0x9')][_0x512b22[_0x6408('0x21')]]);}}}catch(_0x39818c){logger['error'](_0x6408('0x23'),util['inspect'](_0x39818c,{'showHidden':![],'depth':null}));}};VoiceDialReport[_0x6408('0x13')][_0x6408('0xe')]=function(_0xb4c6c4){try{if(this['isNotNull'](_0xb4c6c4)){if(this[_0x6408('0x9')][_0xb4c6c4[_0x6408('0x21')]]){this[_0x6408('0x9')][_0xb4c6c4['uniqueid']]['dialstatus']=_0xb4c6c4[_0x6408('0x24')];if(_0xb4c6c4[_0x6408('0x24')]===_0x6408('0x25')){this[_0x6408('0x9')][_0xb4c6c4[_0x6408('0x21')]][_0x6408('0x26')]=_0xb4c6c4[_0x6408('0x26')];this[_0x6408('0x9')][_0xb4c6c4[_0x6408('0x21')]]['connectedlinename']=_0xb4c6c4[_0x6408('0x27')];this[_0x6408('0x9')][_0xb4c6c4[_0x6408('0x21')]][_0x6408('0x28')]=moment()['format'](_0x6408('0x29'));this[_0x6408('0x9')][_0xb4c6c4[_0x6408('0x21')]][_0x6408('0x2a')]='connect';ami[_0x6408('0x15')]('custom:dialconnect',this[_0x6408('0x9')][_0xb4c6c4['uniqueid']]);}this['emit'](_0x6408('0x1f'),_0x6408('0x20'),this[_0x6408('0x9')][_0xb4c6c4[_0x6408('0x21')]]);}}}catch(_0x28d0b9){logger[_0x6408('0x2b')](_0x6408('0x2c'),util[_0x6408('0x2d')](_0x28d0b9,{'showHidden':![],'depth':null}));}};VoiceDialReport[_0x6408('0x13')][_0x6408('0x11')]=function(_0x1b1fbe){try{if(this[_0x6408('0x16')](_0x1b1fbe)){this[_0x6408('0x2e')](_0x1b1fbe[_0x6408('0x21')],_[_0x6408('0x2f')](_0x1b1fbe[_0x6408('0x30')])[0x0],_0x1b1fbe['value']);if(this['isNotNull'](_0x1b1fbe[_0x6408('0x30')])&&this['isNotNull'](_0x1b1fbe[_0x6408('0x30')][_0x6408('0x31')])){if(_['isUndefined'](this['channels'][_0x1b1fbe[_0x6408('0x21')]])){this[_0x6408('0x9')][_0x1b1fbe[_0x6408('0x21')]]={'routeId':_0x1b1fbe[_0x6408('0x32')],'variables':this['variables'][_0x1b1fbe['uniqueid']]};this[_0x6408('0x15')](_0x6408('0x1f'),_0x6408('0x20'),this[_0x6408('0x9')][_0x1b1fbe[_0x6408('0x21')]]);}}}}catch(_0x5ebfc3){logger[_0x6408('0x2b')]('[syncVarSet][VoiceDialReport]',util['inspect'](_0x5ebfc3,{'showHidden':![],'depth':null}));}};VoiceDialReport[_0x6408('0x13')][_0x6408('0x2e')]=function(_0x162509,_0x11820b,_0x17d3c1){var _0x4954aa=[_0x6408('0x33'),_0x6408('0x34'),'rtpaudioqosjitter',_0x6408('0x35'),_0x6408('0x36'),_0x6408('0x37'),_0x6408('0x38'),'rtpaudioqosrttbridged',_0x6408('0x39'),_0x6408('0x3a'),_0x6408('0x3b'),_0x6408('0x3c'),_0x6408('0x3d'),_0x6408('0x3e'),_0x6408('0x3f'),_0x6408('0x40'),_0x6408('0x41'),_0x6408('0x42'),_0x6408('0x43')];if(!_[_0x6408('0x44')](_0x11820b)&&!_[_0x6408('0x45')](_0x4954aa,_0x11820b)){if(_[_0x6408('0x14')](this['variables'][_0x162509])){this[_0x6408('0x46')][_0x162509]={};}this[_0x6408('0x46')][_0x162509][_0x11820b]=_0x17d3c1;}};VoiceDialReport[_0x6408('0x13')][_0x6408('0x12')]=function(_0x455302){try{if(this['isNotNull'](_0x455302)){if(this[_0x6408('0x9')][_0x455302[_0x6408('0x21')]]){this[_0x6408('0x9')][_0x455302['uniqueid']][_0x6408('0x47')]=moment()['format'](_0x6408('0x29'));this['channels'][_0x455302['uniqueid']][_0x6408('0x48')]=moment(this[_0x6408('0x9')][_0x455302['uniqueid']][_0x6408('0x47')])[_0x6408('0x49')](this[_0x6408('0x9')][_0x455302[_0x6408('0x21')]]['starttime'],'seconds');this[_0x6408('0x9')][_0x455302[_0x6408('0x21')]]['lastevent']='complete';this[_0x6408('0xa')][_0x6408('0x4a')]+=0x1;if(this[_0x6408('0x9')][_0x455302['uniqueid']]['answertime']){this[_0x6408('0xa')][_0x6408('0x4b')]+=0x1;this[_0x6408('0x9')][_0x455302[_0x6408('0x21')]][_0x6408('0x4c')]=moment(this[_0x6408('0x9')][_0x455302[_0x6408('0x21')]]['answertime'])['diff'](this[_0x6408('0x9')][_0x455302[_0x6408('0x21')]][_0x6408('0x4d')],_0x6408('0x4e'));this['channels'][_0x455302[_0x6408('0x21')]][_0x6408('0x4f')]=moment(this[_0x6408('0x9')][_0x455302[_0x6408('0x21')]][_0x6408('0x47')])['diff'](this[_0x6408('0x9')][_0x455302[_0x6408('0x21')]][_0x6408('0x28')],_0x6408('0x4e'));this['outbound'][_0x6408('0x50')]+=this['channels'][_0x455302[_0x6408('0x21')]][_0x6408('0x4c')]||0x0;this[_0x6408('0xa')]['sumBillable']+=this[_0x6408('0x9')][_0x455302[_0x6408('0x21')]][_0x6408('0x4f')];}this['outbound'][_0x6408('0x51')]+=this[_0x6408('0x9')][_0x455302['uniqueid']][_0x6408('0x48')];ami['emit'](_0x6408('0x52'),this[_0x6408('0x9')][_0x455302['uniqueid']]);ami[_0x6408('0x15')]('custom:dialend',this[_0x6408('0x9')][_0x455302[_0x6408('0x21')]]);this[_0x6408('0x15')](_0x6408('0x1f'),_0x6408('0x53'),this[_0x6408('0xa')]);logger[_0x6408('0x54')]('[DEBUG]\x20Emit\x20voice_outbound_channel:remove\x20event',JSON[_0x6408('0x55')](this['channels'][_0x455302[_0x6408('0x21')]]));this[_0x6408('0x15')](_0x6408('0x1f'),_0x6408('0x56'),this[_0x6408('0x9')][_0x455302[_0x6408('0x21')]]);delete this[_0x6408('0x9')][_0x455302[_0x6408('0x21')]];}if(this[_0x6408('0x46')][_0x455302[_0x6408('0x21')]]){delete this[_0x6408('0x46')][_0x455302[_0x6408('0x21')]];}}}catch(_0x8de1a4){logger['error']('[syncHangup][VoiceDialReport]',util[_0x6408('0x2d')](_0x8de1a4,{'showHidden':![],'depth':null}));}};module[_0x6408('0x57')]=VoiceDialReport;