743d27e5b861256eb6417b91af0267c0c6afc182
[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 _0xeec6=['value','[syncVarSet][VoiceDialReport]','rtpaudioqos','rtpaudioqosbridged','rtpaudioqosjitter','rtpaudioqosloss','rtpaudioqoslossbridged','sipcallid','sipuri','bridgepeer','bridgepvtcallid','memberinterface','memberpenalty','memberrealtime','isNil','includes','variables','endtime','duration','starttime','seconds','complete','total','answered','holdtime','diff','sumHoldTime','sumBillable','billableseconds','sumDuration','custom:dialend','voice_outbound:save','info','voice_outbound_channel:remove','exports','lodash','moment','util','ioredis','../../../config/logger','ami','../ami','redis','defaults','socket.io-emitter','channels','outboundChannels','outbound','dialbegin','syncDialBegin','bind','varset','syncVarSet','syncHangup','prototype','isNotNull','isUndefined','emit','uniqueid','format','YYYY-MM-DD\x20HH:mm:ss','channel','substring','lastIndexOf','event','privilege','voice:outbound','voice_outbound_channel:save','custom:dialbegin','error','inspect','syncDialEnd','dialstatus','ANSWER','connectedlinenum','connectedlinename','answertime','lastevent','connect','[syncDialEnd][VoiceDialReport]','addVariable','keys','variable'];(function(_0x46b2d9,_0x135738){var _0x4cf9af=function(_0x20fa17){while(--_0x20fa17){_0x46b2d9['push'](_0x46b2d9['shift']());}};_0x4cf9af(++_0x135738);}(_0xeec6,0x1c2));var _0x6eec=function(_0x2ee790,_0x5a8661){_0x2ee790=_0x2ee790-0x0;var _0x5a54a5=_0xeec6[_0x2ee790];return _0x5a54a5;};'use strict';var _=require(_0x6eec('0x0'));var moment=require(_0x6eec('0x1'));var util=require(_0x6eec('0x2'));var Redis=require(_0x6eec('0x3'));var config=require('../../../config/environment');var logger=require(_0x6eec('0x4'))(_0x6eec('0x5'));var ami=require(_0x6eec('0x6'));config[_0x6eec('0x7')]=_[_0x6eec('0x8')](config[_0x6eec('0x7')],{'host':'localhost','port':0x18eb});var io=require(_0x6eec('0x9'))(new Redis(config[_0x6eec('0x7')]));function VoiceDialReport(_0x48064a){this[_0x6eec('0xa')]=_0x48064a[_0x6eec('0xb')];this[_0x6eec('0xc')]=_0x48064a[_0x6eec('0xc')];this['variables']={};ami['on'](_0x6eec('0xd'),this[_0x6eec('0xe')][_0x6eec('0xf')](this));ami['on']('dialend',this['syncDialEnd']['bind'](this));ami['on'](_0x6eec('0x10'),this[_0x6eec('0x11')]['bind'](this));ami['on']('hangup',this[_0x6eec('0x12')]['bind'](this));}VoiceDialReport[_0x6eec('0x13')][_0x6eec('0x14')]=function(_0x162db1){return _0x162db1!==null&&!_[_0x6eec('0x15')](_0x162db1);};VoiceDialReport[_0x6eec('0x13')]['emit']=function(_0x25e2a5,_0x3b2972,_0x462dbb){io['to'](_0x25e2a5)[_0x6eec('0x16')](_0x3b2972,_0x462dbb);};VoiceDialReport[_0x6eec('0x13')][_0x6eec('0xe')]=function(_0x345852){try{if(this[_0x6eec('0x14')](_0x345852)){if(this[_0x6eec('0xa')][_0x345852[_0x6eec('0x17')]]){_['merge'](this[_0x6eec('0xa')][_0x345852['uniqueid']],{'starttime':moment()[_0x6eec('0x18')](_0x6eec('0x19')),'lastevent':'called','interface':_0x345852[_0x6eec('0x1a')][_0x6eec('0x1b')](0x0,_0x345852[_0x6eec('0x1a')]['lastIndexOf']('-')),'membername':_0x345852[_0x6eec('0x1a')][_0x6eec('0x1b')](_0x345852[_0x6eec('0x1a')][_0x6eec('0x1c')]('/')+0x1,_0x345852[_0x6eec('0x1a')][_0x6eec('0x1c')]('-'))},_['omit'](_0x345852,[_0x6eec('0x1d'),_0x6eec('0x1e')]));this[_0x6eec('0x16')](_0x6eec('0x1f'),_0x6eec('0x20'),this[_0x6eec('0xa')][_0x345852['uniqueid']]);ami[_0x6eec('0x16')](_0x6eec('0x21'),this[_0x6eec('0xa')][_0x345852[_0x6eec('0x17')]]);}}}catch(_0x409b26){logger[_0x6eec('0x22')]('[syncDialBegin][VoiceDialReport]',util[_0x6eec('0x23')](_0x409b26,{'showHidden':![],'depth':null}));}};VoiceDialReport[_0x6eec('0x13')][_0x6eec('0x24')]=function(_0x33d580){try{if(this[_0x6eec('0x14')](_0x33d580)){if(this[_0x6eec('0xa')][_0x33d580[_0x6eec('0x17')]]){this[_0x6eec('0xa')][_0x33d580[_0x6eec('0x17')]]['dialstatus']=_0x33d580[_0x6eec('0x25')];if(_0x33d580[_0x6eec('0x25')]===_0x6eec('0x26')){this[_0x6eec('0xa')][_0x33d580['uniqueid']][_0x6eec('0x27')]=_0x33d580[_0x6eec('0x27')];this['channels'][_0x33d580['uniqueid']][_0x6eec('0x28')]=_0x33d580['connectedlinename'];this[_0x6eec('0xa')][_0x33d580[_0x6eec('0x17')]][_0x6eec('0x29')]=moment()[_0x6eec('0x18')](_0x6eec('0x19'));this[_0x6eec('0xa')][_0x33d580[_0x6eec('0x17')]][_0x6eec('0x2a')]=_0x6eec('0x2b');ami[_0x6eec('0x16')]('custom:dialconnect',this[_0x6eec('0xa')][_0x33d580['uniqueid']]);}this[_0x6eec('0x16')](_0x6eec('0x1f'),_0x6eec('0x20'),this['channels'][_0x33d580['uniqueid']]);}}}catch(_0x508735){logger[_0x6eec('0x22')](_0x6eec('0x2c'),util[_0x6eec('0x23')](_0x508735,{'showHidden':![],'depth':null}));}};VoiceDialReport[_0x6eec('0x13')][_0x6eec('0x11')]=function(_0x23547d){try{if(this[_0x6eec('0x14')](_0x23547d)){this[_0x6eec('0x2d')](_0x23547d[_0x6eec('0x17')],_[_0x6eec('0x2e')](_0x23547d[_0x6eec('0x2f')])[0x0],_0x23547d[_0x6eec('0x30')]);if(this['isNotNull'](_0x23547d[_0x6eec('0x2f')])&&this[_0x6eec('0x14')](_0x23547d[_0x6eec('0x2f')]['outboundrouteid'])){if(_[_0x6eec('0x15')](this[_0x6eec('0xa')][_0x23547d[_0x6eec('0x17')]])){this[_0x6eec('0xa')][_0x23547d[_0x6eec('0x17')]]={'routeId':_0x23547d[_0x6eec('0x30')],'variables':this['variables'][_0x23547d[_0x6eec('0x17')]]};this[_0x6eec('0x16')](_0x6eec('0x1f'),'voice_outbound_channel:save',this['channels'][_0x23547d[_0x6eec('0x17')]]);}}}}catch(_0x297f53){logger[_0x6eec('0x22')](_0x6eec('0x31'),util[_0x6eec('0x23')](_0x297f53,{'showHidden':![],'depth':null}));}};VoiceDialReport['prototype'][_0x6eec('0x2d')]=function(_0x2c3b14,_0x44118c,_0x2bf388){var _0x15918c=[_0x6eec('0x32'),_0x6eec('0x33'),_0x6eec('0x34'),'rtpaudioqosjitterbridged',_0x6eec('0x35'),_0x6eec('0x36'),'rtpaudioqosrtt','rtpaudioqosrttbridged',_0x6eec('0x37'),_0x6eec('0x38'),_0x6eec('0x39'),_0x6eec('0x3a'),'membercalls','memberdynamic',_0x6eec('0x3b'),'memberlastcall','membername',_0x6eec('0x3c'),_0x6eec('0x3d')];if(!_[_0x6eec('0x3e')](_0x44118c)&&!_[_0x6eec('0x3f')](_0x15918c,_0x44118c)){if(_[_0x6eec('0x15')](this['variables'][_0x2c3b14])){this[_0x6eec('0x40')][_0x2c3b14]={};}this[_0x6eec('0x40')][_0x2c3b14][_0x44118c]=_0x2bf388;}};VoiceDialReport['prototype'][_0x6eec('0x12')]=function(_0x241512){try{if(this['isNotNull'](_0x241512)){if(this[_0x6eec('0xa')][_0x241512[_0x6eec('0x17')]]){this['channels'][_0x241512[_0x6eec('0x17')]][_0x6eec('0x41')]=moment()[_0x6eec('0x18')](_0x6eec('0x19'));this['channels'][_0x241512[_0x6eec('0x17')]][_0x6eec('0x42')]=moment(this[_0x6eec('0xa')][_0x241512[_0x6eec('0x17')]][_0x6eec('0x41')])['diff'](this['channels'][_0x241512[_0x6eec('0x17')]][_0x6eec('0x43')],_0x6eec('0x44'));this[_0x6eec('0xa')][_0x241512[_0x6eec('0x17')]]['lastevent']=_0x6eec('0x45');this['outbound'][_0x6eec('0x46')]+=0x1;if(this[_0x6eec('0xa')][_0x241512[_0x6eec('0x17')]]['answertime']){this[_0x6eec('0xc')][_0x6eec('0x47')]+=0x1;this[_0x6eec('0xa')][_0x241512[_0x6eec('0x17')]][_0x6eec('0x48')]=moment(this['channels'][_0x241512[_0x6eec('0x17')]]['answertime'])['diff'](this[_0x6eec('0xa')][_0x241512['uniqueid']][_0x6eec('0x43')],_0x6eec('0x44'));this[_0x6eec('0xa')][_0x241512['uniqueid']]['billableseconds']=moment(this[_0x6eec('0xa')][_0x241512[_0x6eec('0x17')]][_0x6eec('0x41')])[_0x6eec('0x49')](this[_0x6eec('0xa')][_0x241512[_0x6eec('0x17')]][_0x6eec('0x29')],_0x6eec('0x44'));this[_0x6eec('0xc')][_0x6eec('0x4a')]+=this['channels'][_0x241512['uniqueid']][_0x6eec('0x48')]||0x0;this[_0x6eec('0xc')][_0x6eec('0x4b')]+=this['channels'][_0x241512[_0x6eec('0x17')]][_0x6eec('0x4c')];}this[_0x6eec('0xc')][_0x6eec('0x4d')]+=this[_0x6eec('0xa')][_0x241512[_0x6eec('0x17')]][_0x6eec('0x42')];ami[_0x6eec('0x16')]('custom:voiceDialReport',this[_0x6eec('0xa')][_0x241512[_0x6eec('0x17')]]);ami[_0x6eec('0x16')](_0x6eec('0x4e'),this['channels'][_0x241512['uniqueid']]);this['emit'](_0x6eec('0x1f'),_0x6eec('0x4f'),this[_0x6eec('0xc')]);logger[_0x6eec('0x50')]('[DEBUG]\x20Emit\x20voice_outbound_channel:remove\x20event',JSON['stringify'](this[_0x6eec('0xa')][_0x241512[_0x6eec('0x17')]]));this[_0x6eec('0x16')]('voice:outbound',_0x6eec('0x51'),this[_0x6eec('0xa')][_0x241512[_0x6eec('0x17')]]);delete this[_0x6eec('0xa')][_0x241512[_0x6eec('0x17')]];}if(this[_0x6eec('0x40')][_0x241512[_0x6eec('0x17')]]){delete this[_0x6eec('0x40')][_0x241512[_0x6eec('0x17')]];}}}catch(_0x4e921a){logger[_0x6eec('0x22')]('[syncHangup][VoiceDialReport]',util[_0x6eec('0x23')](_0x4e921a,{'showHidden':![],'depth':null}));}};module[_0x6eec('0x52')]=VoiceDialReport;