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