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