Built motion from commit (unavailable).|2.5.14
[motion2.git] / server / services / ami / report / userReport.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 _0xb5f3=['peerstatus','[userReport][peerstatus]\x20peer:%s\x20address:%s\x20status:%s','peer','local','registered','address','status','[userReport][peerstatus]\x20sending\x20telephone:save\x20event:','[userReport][peerstatus]\x20sending\x20trunk:save\x20event:','trunk:%s','[userReport][peerstatus]','lodash','moment','util','bluebird','../../../config/environment','../../../config/logger','redis','defaults','localhost','trunks','agents','telephones','registryentry','bind','registry','syncRegistry','devicestatechange','syncPeerStatus','syncRealtimeShow','resolve','then','actionSipShowRegistry','catch','[userReport][sipshowregistry]','inspect','actionDeviceStateList','error','actionSipPeerStatus','[userReport][sippeerstatus]','prototype','isUndefined','emit','isNotNull','info','[userReport][registry]\x20registry:%s\x20state:%s','username','state','debug','[userReport][registry]','find','stateRegistry','omit','event','actionid','[userReport][registry]\x20sending\x20trunk:save\x20event:','name','trunk:save','[userReport][devicestatechange]\x20device:%s\x20state:%s','device','[userReport][devicestatechange]','toLowerCase','inuse','stateTime','format','toNumber','[userReport][devicestatechange]\x20sending\x20telephone:save\x20event:','telephone:save','startsWith','Local','substring','indexOf','mobile','phone','accountcode'];(function(_0x4d5d10,_0x203d60){var _0x1490fe=function(_0x19af79){while(--_0x19af79){_0x4d5d10['push'](_0x4d5d10['shift']());}};_0x1490fe(++_0x203d60);}(_0xb5f3,0x137));var _0x3b5f=function(_0x4fc9e6,_0xc51915){_0x4fc9e6=_0x4fc9e6-0x0;var _0x551d28=_0xb5f3[_0x4fc9e6];return _0x551d28;};'use strict';var _=require(_0x3b5f('0x0'));var moment=require(_0x3b5f('0x1'));var util=require(_0x3b5f('0x2'));var Redis=require('ioredis');var BPromise=require(_0x3b5f('0x3'));var config=require(_0x3b5f('0x4'));var logger=require(_0x3b5f('0x5'))('ami');var ami=require('../ami');config[_0x3b5f('0x6')]=_[_0x3b5f('0x7')](config[_0x3b5f('0x6')],{'host':_0x3b5f('0x8'),'port':0x18eb});var io=require('socket.io-emitter')(new Redis(config[_0x3b5f('0x6')]));function UserReport(_0x1b6d67){this['trunks']=_0x1b6d67[_0x3b5f('0x9')];this['agents']=_0x1b6d67[_0x3b5f('0xa')];this[_0x3b5f('0xb')]=_0x1b6d67[_0x3b5f('0xb')];ami['on'](_0x3b5f('0xc'),this['syncRegistry'][_0x3b5f('0xd')](this));ami['on'](_0x3b5f('0xe'),this[_0x3b5f('0xf')][_0x3b5f('0xd')](this));ami['on'](_0x3b5f('0x10'),this['syncDeviceState']['bind'](this));ami['on']('peerstatus',this[_0x3b5f('0x11')][_0x3b5f('0xd')](this));return this[_0x3b5f('0x12')]();}function showSipRegistrations(){Promise[_0x3b5f('0x13')]()[_0x3b5f('0x14')](ami[_0x3b5f('0x15')]())[_0x3b5f('0x16')](function(_0x302c0a){logger['error'](_0x3b5f('0x17'),util[_0x3b5f('0x18')](_0x302c0a,{'showHidden':![],'depth':null}));});}function listDeviceStates(){Promise[_0x3b5f('0x13')]()['then'](ami[_0x3b5f('0x19')]())['catch'](function(_0x5df2e7){logger[_0x3b5f('0x1a')]('[userReport][devicestatelist]',util[_0x3b5f('0x18')](_0x5df2e7,{'showHidden':![],'depth':null}));});}function showPeersStatus(){Promise[_0x3b5f('0x13')]()[_0x3b5f('0x14')](ami[_0x3b5f('0x1b')]())['catch'](function(_0x2db25f){logger['error'](_0x3b5f('0x1c'),util[_0x3b5f('0x18')](_0x2db25f,{'showHidden':![],'depth':null}));});}UserReport[_0x3b5f('0x1d')]['syncRealtimeShow']=function(){setInterval(function(){BPromise['resolve']()[_0x3b5f('0x14')](showSipRegistrations())[_0x3b5f('0x14')](listDeviceStates())[_0x3b5f('0x14')](showPeersStatus());},0x32c8);};UserReport[_0x3b5f('0x1d')]['isNotNull']=function(_0x101a00){return _0x101a00!==null&&!_[_0x3b5f('0x1e')](_0x101a00);};UserReport[_0x3b5f('0x1d')][_0x3b5f('0x1f')]=function(_0x474697,_0x4580e5,_0x56a1d0){io['to'](_0x474697)['emit'](_0x4580e5,_0x56a1d0);};UserReport[_0x3b5f('0x1d')][_0x3b5f('0xf')]=function(_0x2d3fe4){try{if(this[_0x3b5f('0x20')](_0x2d3fe4)){logger[_0x3b5f('0x21')](_0x3b5f('0x22'),_0x2d3fe4[_0x3b5f('0x23')],_0x2d3fe4[_0x3b5f('0x24')]);logger[_0x3b5f('0x25')](_0x3b5f('0x26'),util['inspect'](_0x2d3fe4,{'showHidden':![],'depth':null}));var _0x55fb32=_[_0x3b5f('0x27')](this[_0x3b5f('0x9')],{'registry':_0x2d3fe4[_0x3b5f('0x23')]});if(_0x55fb32){_0x2d3fe4[_0x3b5f('0x28')]=_0x2d3fe4[_0x3b5f('0x24')];_['merge'](_0x55fb32,_[_0x3b5f('0x29')](_0x2d3fe4,[_0x3b5f('0x2a'),_0x3b5f('0x2b'),_0x3b5f('0x23'),'state']));logger['debug'](_0x3b5f('0x2c'),util[_0x3b5f('0x18')](_0x55fb32,{'showHidden':![],'depth':null}));this[_0x3b5f('0x1f')](util['format']('trunk:%s',_0x55fb32[_0x3b5f('0x2d')]),_0x3b5f('0x2e'),_0x55fb32);}}}catch(_0x5f171d){logger[_0x3b5f('0x1a')]('[userReport][registry]',util[_0x3b5f('0x18')](_0x5f171d,{'showHidden':![],'depth':null}));}};UserReport[_0x3b5f('0x1d')]['syncDeviceState']=function(_0x490a72){try{if(this[_0x3b5f('0x20')](_0x490a72)){logger[_0x3b5f('0x21')](_0x3b5f('0x2f'),_0x490a72[_0x3b5f('0x30')],_0x490a72[_0x3b5f('0x24')]);logger[_0x3b5f('0x25')](_0x3b5f('0x31'),util[_0x3b5f('0x18')](_0x490a72,{'showHidden':![],'depth':null}));if(this['agents'][_0x490a72[_0x3b5f('0x30')]]){if(!this[_0x3b5f('0xa')][_0x490a72[_0x3b5f('0x30')]]['local']||_0x490a72[_0x3b5f('0x24')][_0x3b5f('0x32')]()==_0x3b5f('0x33')){this[_0x3b5f('0xa')][_0x490a72[_0x3b5f('0x30')]]['local']=![];if(this['agents'][_0x490a72['device']][_0x3b5f('0x24')]!==_0x490a72[_0x3b5f('0x24')][_0x3b5f('0x32')]()){this[_0x3b5f('0xa')][_0x490a72[_0x3b5f('0x30')]][_0x3b5f('0x34')]=_['toNumber'](moment()[_0x3b5f('0x35')]('x'));}this[_0x3b5f('0xa')][_0x490a72[_0x3b5f('0x30')]]['state']=_0x490a72['state'][_0x3b5f('0x32')]();this['agents'][_0x490a72['device']]['updateStatusRealtime'](_0x490a72);}}else if(this[_0x3b5f('0xb')][_0x490a72['device']]){if(this[_0x3b5f('0xb')][_0x490a72[_0x3b5f('0x30')]][_0x3b5f('0x24')]!==_0x490a72['state'][_0x3b5f('0x32')]()){this['telephones'][_0x490a72[_0x3b5f('0x30')]][_0x3b5f('0x34')]=_[_0x3b5f('0x36')](moment()[_0x3b5f('0x35')]('x'));}this[_0x3b5f('0xb')][_0x490a72['device']][_0x3b5f('0x24')]=_0x490a72[_0x3b5f('0x24')]['toLowerCase']();logger[_0x3b5f('0x25')](_0x3b5f('0x37'),util[_0x3b5f('0x18')](this[_0x3b5f('0xb')][_0x490a72[_0x3b5f('0x30')]],{'showHidden':![],'depth':null}));this[_0x3b5f('0x1f')](util['format']('telephone:%s',this['telephones'][_0x490a72['device']][_0x3b5f('0x2d')]),_0x3b5f('0x38'),this[_0x3b5f('0xb')][_0x490a72[_0x3b5f('0x30')]]);}else if(this['trunks'][_0x490a72[_0x3b5f('0x30')]]){if(this[_0x3b5f('0x9')][_0x490a72[_0x3b5f('0x30')]]['state']!==_0x490a72[_0x3b5f('0x24')][_0x3b5f('0x32')]()){this[_0x3b5f('0x9')][_0x490a72['device']][_0x3b5f('0x34')]=_['toNumber'](moment()[_0x3b5f('0x35')]('x'));}this[_0x3b5f('0x9')][_0x490a72[_0x3b5f('0x30')]][_0x3b5f('0x24')]=_0x490a72[_0x3b5f('0x24')][_0x3b5f('0x32')]();logger['debug']('[userReport][devicestatechange]\x20sending\x20trunk:save\x20event:',util[_0x3b5f('0x18')](this[_0x3b5f('0x9')][_0x490a72['device']],{'showHidden':![],'depth':null}));this['emit'](util['format']('trunk:%s',this['trunks'][_0x490a72[_0x3b5f('0x30')]][_0x3b5f('0x2d')]),_0x3b5f('0x2e'),this['trunks'][_0x490a72[_0x3b5f('0x30')]]);}else if(_[_0x3b5f('0x39')](_0x490a72[_0x3b5f('0x30')],_0x3b5f('0x3a'))){var _0x46a356=_0x490a72[_0x3b5f('0x30')];var _0x4dda92=_0x46a356[_0x3b5f('0x3b')](_0x46a356[_0x3b5f('0x3c')]('/')+0x1,_0x46a356[_0x3b5f('0x3c')]('@'));var _0x44c008=_[_0x3b5f('0x27')](this['agents'],function(_0x44e477){return _0x44e477[_0x3b5f('0x3d')]==_0x4dda92||_0x44e477[_0x3b5f('0x3e')]==_0x4dda92||_0x44e477[_0x3b5f('0x3f')]==_0x4dda92;});if(_0x44c008){if(_0x44c008['state']!==_0x490a72[_0x3b5f('0x24')][_0x3b5f('0x32')]()){_0x44c008[_0x3b5f('0x34')]=_[_0x3b5f('0x36')](moment()[_0x3b5f('0x35')]('x'));}_0x44c008[_0x3b5f('0x24')]=_0x490a72[_0x3b5f('0x24')][_0x3b5f('0x32')]();_0x44c008['local']=!![];_0x44c008['updateStatusRealtime'](_0x490a72);}}}}catch(_0x2eb003){logger[_0x3b5f('0x1a')](_0x3b5f('0x31'),util[_0x3b5f('0x18')](_0x2eb003,{'showHidden':![],'depth':null}));}};UserReport['prototype'][_0x3b5f('0x11')]=function(_0x538cbe){try{if(this[_0x3b5f('0x20')](_0x538cbe)&&this[_0x3b5f('0x20')](_0x538cbe[_0x3b5f('0x40')])){logger['info'](_0x3b5f('0x41'),_0x538cbe[_0x3b5f('0x42')],_0x538cbe['address'],_0x538cbe[_0x3b5f('0x40')]);logger[_0x3b5f('0x25')]('[userReport][peerstatus]',util['inspect'](_0x538cbe,{'showHidden':![],'depth':null}));if(this[_0x3b5f('0xa')][_0x538cbe[_0x3b5f('0x42')]]){if(!this[_0x3b5f('0xa')][_0x538cbe[_0x3b5f('0x42')]][_0x3b5f('0x43')]||_0x538cbe['peerstatus'][_0x3b5f('0x32')]()==_0x3b5f('0x44')){this['agents'][_0x538cbe[_0x3b5f('0x42')]]['local']=![];this[_0x3b5f('0xa')][_0x538cbe['peer']]['status']=_0x538cbe[_0x3b5f('0x40')][_0x3b5f('0x32')]();this[_0x3b5f('0xa')][_0x538cbe[_0x3b5f('0x42')]]['address']=_0x538cbe[_0x3b5f('0x45')];this['agents'][_0x538cbe[_0x3b5f('0x42')]]['updateStatusRealtime'](_0x538cbe);}}else if(this[_0x3b5f('0xb')][_0x538cbe['peer']]){this[_0x3b5f('0xb')][_0x538cbe['peer']][_0x3b5f('0x46')]=_0x538cbe[_0x3b5f('0x40')]['toLowerCase']();this[_0x3b5f('0xb')][_0x538cbe[_0x3b5f('0x42')]][_0x3b5f('0x45')]=_0x538cbe[_0x3b5f('0x45')];logger['debug'](_0x3b5f('0x47'),util[_0x3b5f('0x18')](this['telephones'][_0x538cbe[_0x3b5f('0x42')]],{'showHidden':![],'depth':null}));this[_0x3b5f('0x1f')](util[_0x3b5f('0x35')]('telephone:%s',this[_0x3b5f('0xb')][_0x538cbe[_0x3b5f('0x42')]][_0x3b5f('0x2d')]),_0x3b5f('0x38'),this[_0x3b5f('0xb')][_0x538cbe['peer']]);}else if(this[_0x3b5f('0x9')][_0x538cbe[_0x3b5f('0x42')]]){this[_0x3b5f('0x9')][_0x538cbe['peer']][_0x3b5f('0x46')]=_0x538cbe[_0x3b5f('0x40')]['toLowerCase']();this[_0x3b5f('0x9')][_0x538cbe[_0x3b5f('0x42')]][_0x3b5f('0x45')]=_0x538cbe['address'];logger['debug'](_0x3b5f('0x48'),util[_0x3b5f('0x18')](this['trunks'][_0x538cbe[_0x3b5f('0x42')]],{'showHidden':![],'depth':null}));this[_0x3b5f('0x1f')](util[_0x3b5f('0x35')](_0x3b5f('0x49'),this['trunks'][_0x538cbe['peer']][_0x3b5f('0x2d')]),'trunk:save',this['trunks'][_0x538cbe[_0x3b5f('0x42')]]);}}}catch(_0x2fa5ab){logger[_0x3b5f('0x1a')](_0x3b5f('0x4a'),util[_0x3b5f('0x18')](_0x2fa5ab,{'showHidden':![],'depth':null}));}};module['exports']=UserReport;