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