2fea0c8189b0a5ac2e6bd46258a7feb85930ab43
[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 _0xcc59=['localhost','socket.io-emitter','channels','outboundChannels','outbound','variables','dialend','syncDialEnd','bind','varset','syncVarSet','syncHangup','prototype','isNotNull','emit','syncDialBegin','uniqueid','inspect','merge','format','YYYY-MM-DD\x20HH:mm:ss','called','channel','substring','lastIndexOf','omit','event','privilege','[%s][voiceDialReport][dialbegin]\x20agent:%s\x20interface:%s\x20lastevent:called','interface','debug','voice_outbound_channel:save','[%s][voiceDialReport][dialbegin]\x20sending\x20dialbegin\x20event:','[%s][voiceDialReport][dialbegin]','[%s][voiceDialReport][dialend]\x20event:','dialstatus','connectedlinenum','connectedlinename','answertime','info','[%s][voiceDialReport][dialend]\x20agent:%s\x20lastevent:connect','[%s][voiceDialReport][dialend]\x20sending\x20dialconnect\x20event:','custom:dialconnect','[%s][voiceDialReport][dialend]\x20sending\x20voice_outbound_channel:save\x20event:','voice:outbound','error','[%s][voiceDialReport][dialend]','[%s][voiceDialReport][varset]\x20event:','addVariable','keys','value','variable','isUndefined','[%s][voiceDialReport][varset]\x20outboundrouteid:%s\x20variable:%s\x20value:%s','outboundrouteid','[%s][voiceDialReport][varset]\x20sending\x20voice_outbound_channel:save\x20event:','[%s][voiceDialReport][varset]','rtpaudioqos','rtpaudioqosbridged','rtpaudioqosloss','rtpaudioqoslossbridged','rtpaudioqosrtt','rtpaudioqosrttbridged','sipcallid','sipuri','bridgepeer','membercalls','memberdynamic','memberlastcall','memberpenalty','memberrealtime','isNil','includes','[%s][voiceDialReport][hangup]\x20reason:%s\x20lasteevent:complete','endtime','diff','starttime','seconds','lastevent','complete','total','answered','holdtime','billableseconds','sumHoldTime','sumDuration','duration','[%s][voiceDialReport][hangup]\x20sending\x20dialend\x20event:','custom:dialend','[%s][voiceDialReport][hangup]\x20sending\x20voice_outbound:save\x20event:','voice_outbound:save','stringify','[%s][voiceDialReport][hangup]\x20sending\x20voice_outbound_channel:remove\x20event:','voice_outbound_channel:remove','linkedid','destuniqueid','[%s][voiceDialReport][hangup]','exports','lodash','moment','util','ioredis','../../../config/environment','../../../config/logger','../ami','redis','defaults'];(function(_0x3ab51d,_0x2fa01d){var _0x29a04e=function(_0x7807b0){while(--_0x7807b0){_0x3ab51d['push'](_0x3ab51d['shift']());}};_0x29a04e(++_0x2fa01d);}(_0xcc59,0x138));var _0x9cc5=function(_0x256422,_0x367394){_0x256422=_0x256422-0x0;var _0x55dddc=_0xcc59[_0x256422];return _0x55dddc;};'use strict';var _=require(_0x9cc5('0x0'));var moment=require(_0x9cc5('0x1'));var util=require(_0x9cc5('0x2'));var Redis=require(_0x9cc5('0x3'));var config=require(_0x9cc5('0x4'));var logger=require(_0x9cc5('0x5'))('ami');var ami=require(_0x9cc5('0x6'));config[_0x9cc5('0x7')]=_[_0x9cc5('0x8')](config[_0x9cc5('0x7')],{'host':_0x9cc5('0x9'),'port':0x18eb});var io=require(_0x9cc5('0xa'))(new Redis(config['redis']));function VoiceDialReport(_0xc360cf){this[_0x9cc5('0xb')]=_0xc360cf[_0x9cc5('0xc')];this[_0x9cc5('0xd')]=_0xc360cf[_0x9cc5('0xd')];this[_0x9cc5('0xe')]={};ami['on']('dialbegin',this['syncDialBegin']['bind'](this));ami['on'](_0x9cc5('0xf'),this[_0x9cc5('0x10')][_0x9cc5('0x11')](this));ami['on'](_0x9cc5('0x12'),this[_0x9cc5('0x13')][_0x9cc5('0x11')](this));ami['on']('hangup',this[_0x9cc5('0x14')][_0x9cc5('0x11')](this));}VoiceDialReport[_0x9cc5('0x15')][_0x9cc5('0x16')]=function(_0x5526da){return _0x5526da!==null&&!_['isUndefined'](_0x5526da);};VoiceDialReport['prototype'][_0x9cc5('0x17')]=function(_0x1133e6,_0x5efbd6,_0x522857){io['to'](_0x1133e6)[_0x9cc5('0x17')](_0x5efbd6,_0x522857);};VoiceDialReport[_0x9cc5('0x15')][_0x9cc5('0x18')]=function(_0x551096){try{if(this[_0x9cc5('0x16')](_0x551096)){logger['debug']('[%s][voiceDialReport][dialbegin]\x20event:',_0x551096[_0x9cc5('0x19')],util[_0x9cc5('0x1a')](_0x551096,{'showHidden':![],'depth':null}));if(this[_0x9cc5('0xb')][_0x551096['uniqueid']]){_[_0x9cc5('0x1b')](this[_0x9cc5('0xb')][_0x551096[_0x9cc5('0x19')]],{'starttime':moment()[_0x9cc5('0x1c')](_0x9cc5('0x1d')),'lastevent':_0x9cc5('0x1e'),'interface':_0x551096[_0x9cc5('0x1f')][_0x9cc5('0x20')](0x0,_0x551096[_0x9cc5('0x1f')]['lastIndexOf']('-')),'membername':_0x551096[_0x9cc5('0x1f')][_0x9cc5('0x20')](_0x551096[_0x9cc5('0x1f')][_0x9cc5('0x21')]('/')+0x1,_0x551096[_0x9cc5('0x1f')]['lastIndexOf']('-'))},_[_0x9cc5('0x22')](_0x551096,[_0x9cc5('0x23'),_0x9cc5('0x24')]));logger['info'](_0x9cc5('0x25'),_0x551096[_0x9cc5('0x19')],this[_0x9cc5('0xb')][_0x551096['uniqueid']]['membername'],this[_0x9cc5('0xb')][_0x551096['uniqueid']][_0x9cc5('0x26')]);logger[_0x9cc5('0x27')]('[%s][voiceDialReport][dialbegin]\x20sending\x20voice_outbound_channel:save\x20event:',_0x551096[_0x9cc5('0x19')],util['inspect'](this[_0x9cc5('0xb')][_0x551096[_0x9cc5('0x19')]],{'showHidden':![],'depth':null}));this[_0x9cc5('0x17')]('voice:outbound',_0x9cc5('0x28'),this[_0x9cc5('0xb')][_0x551096['uniqueid']]);logger[_0x9cc5('0x27')](_0x9cc5('0x29'),_0x551096[_0x9cc5('0x19')],util[_0x9cc5('0x1a')](this[_0x9cc5('0xb')][_0x551096['uniqueid']],{'showHidden':![],'depth':null}));ami[_0x9cc5('0x17')]('custom:dialbegin',this[_0x9cc5('0xb')][_0x551096[_0x9cc5('0x19')]]);}}}catch(_0x32e35b){logger['error'](_0x9cc5('0x2a'),_0x551096[_0x9cc5('0x19')],util[_0x9cc5('0x1a')](_0x32e35b,{'showHidden':![],'depth':null}));}};VoiceDialReport[_0x9cc5('0x15')][_0x9cc5('0x10')]=function(_0x4f4b29){try{if(this[_0x9cc5('0x16')](_0x4f4b29)){logger[_0x9cc5('0x27')](_0x9cc5('0x2b'),_0x4f4b29[_0x9cc5('0x19')],util[_0x9cc5('0x1a')](_0x4f4b29,{'showHidden':![],'depth':null}));if(this['channels'][_0x4f4b29[_0x9cc5('0x19')]]){this['channels'][_0x4f4b29[_0x9cc5('0x19')]]['dialstatus']=_0x4f4b29['dialstatus'];if(_0x4f4b29[_0x9cc5('0x2c')]==='ANSWER'){this[_0x9cc5('0xb')][_0x4f4b29[_0x9cc5('0x19')]][_0x9cc5('0x2d')]=_0x4f4b29[_0x9cc5('0x2d')];this[_0x9cc5('0xb')][_0x4f4b29['uniqueid']][_0x9cc5('0x2e')]=_0x4f4b29[_0x9cc5('0x2e')];this[_0x9cc5('0xb')][_0x4f4b29[_0x9cc5('0x19')]][_0x9cc5('0x2f')]=moment()['format'](_0x9cc5('0x1d'));this[_0x9cc5('0xb')][_0x4f4b29[_0x9cc5('0x19')]]['lastevent']='connect';logger[_0x9cc5('0x30')](_0x9cc5('0x31'),_0x4f4b29['uniqueid'],_0x4f4b29[_0x9cc5('0x1f')]['substring'](_0x4f4b29[_0x9cc5('0x1f')]['lastIndexOf']('/')+0x1,_0x4f4b29[_0x9cc5('0x1f')][_0x9cc5('0x21')]('-')));logger[_0x9cc5('0x27')](_0x9cc5('0x32'),_0x4f4b29[_0x9cc5('0x19')],util[_0x9cc5('0x1a')](this[_0x9cc5('0xb')][_0x4f4b29[_0x9cc5('0x19')]],{'showHidden':![],'depth':null}));ami[_0x9cc5('0x17')](_0x9cc5('0x33'),this['channels'][_0x4f4b29[_0x9cc5('0x19')]]);}logger[_0x9cc5('0x27')](_0x9cc5('0x34'),_0x4f4b29[_0x9cc5('0x19')],util[_0x9cc5('0x1a')](this[_0x9cc5('0xb')][_0x4f4b29[_0x9cc5('0x19')]],{'showHidden':![],'depth':null}));this['emit'](_0x9cc5('0x35'),_0x9cc5('0x28'),this['channels'][_0x4f4b29[_0x9cc5('0x19')]]);}}}catch(_0x48a7d2){logger[_0x9cc5('0x36')](_0x9cc5('0x37'),_0x4f4b29[_0x9cc5('0x19')],util[_0x9cc5('0x1a')](_0x48a7d2,{'showHidden':![],'depth':null}));}};VoiceDialReport[_0x9cc5('0x15')]['syncVarSet']=function(_0x1f2f7c){try{if(this[_0x9cc5('0x16')](_0x1f2f7c)){logger['debug'](_0x9cc5('0x38'),_0x1f2f7c[_0x9cc5('0x19')],util[_0x9cc5('0x1a')](_0x1f2f7c,{'showHidden':![],'depth':null}));this[_0x9cc5('0x39')](_0x1f2f7c['uniqueid'],_[_0x9cc5('0x3a')](_0x1f2f7c['variable'])[0x0],_0x1f2f7c[_0x9cc5('0x3b')]);if(this['isNotNull'](_0x1f2f7c['variable'])&&this[_0x9cc5('0x16')](_0x1f2f7c[_0x9cc5('0x3c')]['outboundrouteid'])){if(_[_0x9cc5('0x3d')](this[_0x9cc5('0xb')][_0x1f2f7c[_0x9cc5('0x19')]])){this[_0x9cc5('0xb')][_0x1f2f7c[_0x9cc5('0x19')]]={'routeId':_0x1f2f7c[_0x9cc5('0x3b')],'variables':this['variables'][_0x1f2f7c[_0x9cc5('0x19')]]};logger[_0x9cc5('0x30')](_0x9cc5('0x3e'),_0x1f2f7c['uniqueid'],_0x1f2f7c['variable'][_0x9cc5('0x3f')],_[_0x9cc5('0x3a')](_0x1f2f7c[_0x9cc5('0x3c')])[0x0],_0x1f2f7c['value']);logger[_0x9cc5('0x27')](_0x9cc5('0x40'),_0x1f2f7c[_0x9cc5('0x19')],util[_0x9cc5('0x1a')](this['channels'][_0x1f2f7c[_0x9cc5('0x19')]],{'showHidden':![],'depth':null}));this[_0x9cc5('0x17')](_0x9cc5('0x35'),_0x9cc5('0x28'),this['channels'][_0x1f2f7c[_0x9cc5('0x19')]]);}}}}catch(_0x21aa93){logger[_0x9cc5('0x36')](_0x9cc5('0x41'),_0x1f2f7c[_0x9cc5('0x19')],util['inspect'](_0x21aa93,{'showHidden':![],'depth':null}));}};VoiceDialReport[_0x9cc5('0x15')][_0x9cc5('0x39')]=function(_0x2a54e8,_0xf1133,_0x20241c){var _0x375c27=[_0x9cc5('0x42'),_0x9cc5('0x43'),'rtpaudioqosjitter','rtpaudioqosjitterbridged',_0x9cc5('0x44'),_0x9cc5('0x45'),_0x9cc5('0x46'),_0x9cc5('0x47'),_0x9cc5('0x48'),_0x9cc5('0x49'),_0x9cc5('0x4a'),'bridgepvtcallid',_0x9cc5('0x4b'),_0x9cc5('0x4c'),'memberinterface',_0x9cc5('0x4d'),'membername',_0x9cc5('0x4e'),_0x9cc5('0x4f')];if(!_[_0x9cc5('0x50')](_0xf1133)&&!_[_0x9cc5('0x51')](_0x375c27,_0xf1133)){if(_[_0x9cc5('0x3d')](this[_0x9cc5('0xe')][_0x2a54e8])){this[_0x9cc5('0xe')][_0x2a54e8]={};}this[_0x9cc5('0xe')][_0x2a54e8][_0xf1133]=_0x20241c;}};VoiceDialReport[_0x9cc5('0x15')][_0x9cc5('0x14')]=function(_0x405bb2){try{if(this['isNotNull'](_0x405bb2)){logger['debug']('[%s][voiceDialReport][hangup]\x20event:',_0x405bb2[_0x9cc5('0x19')],util[_0x9cc5('0x1a')](_0x405bb2,{'showHidden':![],'depth':null}));if(this[_0x9cc5('0xb')][_0x405bb2[_0x9cc5('0x19')]]){logger['info'](_0x9cc5('0x52'),_0x405bb2[_0x9cc5('0x19')],_0x405bb2['cause-txt']);this[_0x9cc5('0xb')][_0x405bb2['uniqueid']]['endtime']=moment()[_0x9cc5('0x1c')](_0x9cc5('0x1d'));this[_0x9cc5('0xb')][_0x405bb2[_0x9cc5('0x19')]]['duration']=moment(this[_0x9cc5('0xb')][_0x405bb2['uniqueid']][_0x9cc5('0x53')])[_0x9cc5('0x54')](this['channels'][_0x405bb2[_0x9cc5('0x19')]][_0x9cc5('0x55')],_0x9cc5('0x56'));this[_0x9cc5('0xb')][_0x405bb2[_0x9cc5('0x19')]][_0x9cc5('0x57')]=_0x9cc5('0x58');this[_0x9cc5('0xd')][_0x9cc5('0x59')]+=0x1;if(this['channels'][_0x405bb2[_0x9cc5('0x19')]]['answertime']){this[_0x9cc5('0xd')][_0x9cc5('0x5a')]+=0x1;this['channels'][_0x405bb2[_0x9cc5('0x19')]][_0x9cc5('0x5b')]=moment(this[_0x9cc5('0xb')][_0x405bb2[_0x9cc5('0x19')]]['answertime'])['diff'](this[_0x9cc5('0xb')][_0x405bb2[_0x9cc5('0x19')]][_0x9cc5('0x55')],_0x9cc5('0x56'));this[_0x9cc5('0xb')][_0x405bb2[_0x9cc5('0x19')]][_0x9cc5('0x5c')]=moment(this[_0x9cc5('0xb')][_0x405bb2[_0x9cc5('0x19')]]['endtime'])[_0x9cc5('0x54')](this[_0x9cc5('0xb')][_0x405bb2[_0x9cc5('0x19')]][_0x9cc5('0x2f')],_0x9cc5('0x56'));this[_0x9cc5('0xd')][_0x9cc5('0x5d')]+=this[_0x9cc5('0xb')][_0x405bb2['uniqueid']][_0x9cc5('0x5b')]||0x0;this[_0x9cc5('0xd')]['sumBillable']+=this['channels'][_0x405bb2['uniqueid']]['billableseconds'];}this[_0x9cc5('0xd')][_0x9cc5('0x5e')]+=this[_0x9cc5('0xb')][_0x405bb2[_0x9cc5('0x19')]][_0x9cc5('0x5f')];logger[_0x9cc5('0x27')]('[%s][voiceDialReport][hangup]\x20sending\x20voiceDialReport\x20event:',_0x405bb2[_0x9cc5('0x19')],util[_0x9cc5('0x1a')](this['channels'][_0x405bb2[_0x9cc5('0x19')]],{'showHidden':![],'depth':null}));ami['emit']('custom:voiceDialReport',this['channels'][_0x405bb2[_0x9cc5('0x19')]]);logger[_0x9cc5('0x27')](_0x9cc5('0x60'),_0x405bb2[_0x9cc5('0x19')],util[_0x9cc5('0x1a')](this[_0x9cc5('0xb')][_0x405bb2[_0x9cc5('0x19')]],{'showHidden':![],'depth':null}));ami[_0x9cc5('0x17')](_0x9cc5('0x61'),this[_0x9cc5('0xb')][_0x405bb2[_0x9cc5('0x19')]]);logger[_0x9cc5('0x27')](_0x9cc5('0x62'),_0x405bb2[_0x9cc5('0x19')],util['inspect'](this['channels'][_0x405bb2[_0x9cc5('0x19')]],{'showHidden':![],'depth':null}));this[_0x9cc5('0x17')](_0x9cc5('0x35'),_0x9cc5('0x63'),this[_0x9cc5('0xd')]);logger['info']('[DEBUG]\x20Emit\x20voice_outbound_channel:remove\x20event',JSON[_0x9cc5('0x64')](this[_0x9cc5('0xb')][_0x405bb2[_0x9cc5('0x19')]]));logger[_0x9cc5('0x27')](_0x9cc5('0x65'),_0x405bb2[_0x9cc5('0x19')],util['inspect'](this[_0x9cc5('0xb')][_0x405bb2[_0x9cc5('0x19')]],{'showHidden':![],'depth':null}));this[_0x9cc5('0x17')](_0x9cc5('0x35'),_0x9cc5('0x66'),this[_0x9cc5('0xb')][_0x405bb2['uniqueid']]);delete this[_0x9cc5('0xb')][_0x405bb2['uniqueid']];}else if(this[_0x9cc5('0xb')][_0x405bb2[_0x9cc5('0x67')]]){this[_0x9cc5('0xb')][_0x405bb2['linkedid']]['uniqueid']=this[_0x9cc5('0xb')][_0x405bb2['linkedid']][_0x9cc5('0x68')];}if(this[_0x9cc5('0xe')][_0x405bb2[_0x9cc5('0x19')]]){delete this[_0x9cc5('0xe')][_0x405bb2['uniqueid']];}}}catch(_0x5d5430){logger[_0x9cc5('0x36')](_0x9cc5('0x69'),_0x405bb2['uniqueid'],util[_0x9cc5('0x1a')](_0x5d5430,{'showHidden':![],'depth':null}));}};module[_0x9cc5('0x6a')]=VoiceDialReport;