78edac7ba863d209f9925b846af35a1fe3d9a5e6
[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 _0x1ff1=['telephones','syncRegistry','bind','registry','devicestatechange','syncDeviceState','peerstatus','syncPeerStatus','resolve','then','actionSipShowRegistry','catch','inspect','actionDeviceStateList','error','actionSipPeerStatus','[userReport][sippeerstatus]','syncRealtimeShow','prototype','isNotNull','isUndefined','emit','info','[userReport][registry]\x20registry:%s\x20state:%s','state','debug','find','username','merge','event','actionid','trunk:%s','name','trunk:save','[userReport][registry]','device','[userReport][devicestatechange]','local','toNumber','format','toLowerCase','updateStatusRealtime','[userReport][devicestatechange]\x20sending\x20telephone:save\x20event:','telephone:%s','telephone:save','stateTime','[userReport][devicestatechange]\x20sending\x20trunk:save\x20event:','startsWith','Local','indexOf','mobile','phone','accountcode','[userReport][peerstatus]\x20peer:%s\x20address:%s\x20status:%s','peer','[userReport][peerstatus]','registered','status','address','[userReport][peerstatus]\x20sending\x20telephone:save\x20event:','[userReport][peerstatus]\x20sending\x20trunk:save\x20event:','moment','util','bluebird','../../../config/environment','../../../config/logger','../ami','redis','defaults','localhost','socket.io-emitter','trunks','agents'];(function(_0xd1c39b,_0x16f0c6){var _0x58f5bc=function(_0x412cf3){while(--_0x412cf3){_0xd1c39b['push'](_0xd1c39b['shift']());}};_0x58f5bc(++_0x16f0c6);}(_0x1ff1,0x86));var _0x11ff=function(_0x3abf9a,_0x564c3e){_0x3abf9a=_0x3abf9a-0x0;var _0x5f592c=_0x1ff1[_0x3abf9a];return _0x5f592c;};'use strict';var _=require('lodash');var moment=require(_0x11ff('0x0'));var util=require(_0x11ff('0x1'));var Redis=require('ioredis');var BPromise=require(_0x11ff('0x2'));var config=require(_0x11ff('0x3'));var logger=require(_0x11ff('0x4'))('ami');var ami=require(_0x11ff('0x5'));config[_0x11ff('0x6')]=_[_0x11ff('0x7')](config['redis'],{'host':_0x11ff('0x8'),'port':0x18eb});var io=require(_0x11ff('0x9'))(new Redis(config[_0x11ff('0x6')]));function UserReport(_0x365464){this['trunks']=_0x365464[_0x11ff('0xa')];this[_0x11ff('0xb')]=_0x365464[_0x11ff('0xb')];this[_0x11ff('0xc')]=_0x365464[_0x11ff('0xc')];ami['on']('registryentry',this[_0x11ff('0xd')][_0x11ff('0xe')](this));ami['on'](_0x11ff('0xf'),this[_0x11ff('0xd')][_0x11ff('0xe')](this));ami['on'](_0x11ff('0x10'),this[_0x11ff('0x11')][_0x11ff('0xe')](this));ami['on'](_0x11ff('0x12'),this[_0x11ff('0x13')]['bind'](this));return this['syncRealtimeShow']();}function showSipRegistrations(){Promise[_0x11ff('0x14')]()[_0x11ff('0x15')](ami[_0x11ff('0x16')]())[_0x11ff('0x17')](function(_0x7e31e4){logger['error']('[userReport][sipshowregistry]',util[_0x11ff('0x18')](_0x7e31e4,{'showHidden':![],'depth':null}));});}function listDeviceStates(){Promise[_0x11ff('0x14')]()[_0x11ff('0x15')](ami[_0x11ff('0x19')]())[_0x11ff('0x17')](function(_0x5bc76c){logger[_0x11ff('0x1a')]('[userReport][devicestatelist]',util[_0x11ff('0x18')](_0x5bc76c,{'showHidden':![],'depth':null}));});}function showPeersStatus(){Promise[_0x11ff('0x14')]()[_0x11ff('0x15')](ami[_0x11ff('0x1b')]())[_0x11ff('0x17')](function(_0x30bf6c){logger[_0x11ff('0x1a')](_0x11ff('0x1c'),util['inspect'](_0x30bf6c,{'showHidden':![],'depth':null}));});}UserReport['prototype'][_0x11ff('0x1d')]=function(){setInterval(function(){BPromise[_0x11ff('0x14')]()[_0x11ff('0x15')](showSipRegistrations())[_0x11ff('0x15')](listDeviceStates())['then'](showPeersStatus());},0x32c8);};UserReport[_0x11ff('0x1e')][_0x11ff('0x1f')]=function(_0x3fcf6d){return _0x3fcf6d!==null&&!_[_0x11ff('0x20')](_0x3fcf6d);};UserReport[_0x11ff('0x1e')][_0x11ff('0x21')]=function(_0x2a66a9,_0x335c67,_0x412850){io['to'](_0x2a66a9)[_0x11ff('0x21')](_0x335c67,_0x412850);};UserReport[_0x11ff('0x1e')]['syncRegistry']=function(_0x35ebef){try{if(this['isNotNull'](_0x35ebef)){logger[_0x11ff('0x22')](_0x11ff('0x23'),_0x35ebef['username'],_0x35ebef[_0x11ff('0x24')]);logger[_0x11ff('0x25')]('[userReport][registry]',util[_0x11ff('0x18')](_0x35ebef,{'showHidden':![],'depth':null}));var _0x3af6cb=_[_0x11ff('0x26')](this[_0x11ff('0xa')],{'defaultuser':_0x35ebef[_0x11ff('0x27')]});if(_0x3af6cb){_0x35ebef['stateRegistry']=_0x35ebef[_0x11ff('0x24')];_[_0x11ff('0x28')](_0x3af6cb,_['omit'](_0x35ebef,[_0x11ff('0x29'),_0x11ff('0x2a'),_0x11ff('0x27'),_0x11ff('0x24')]));logger[_0x11ff('0x25')]('[userReport][registry]\x20sending\x20trunk:save\x20event:',util[_0x11ff('0x18')](_0x3af6cb,{'showHidden':![],'depth':null}));this[_0x11ff('0x21')](util['format'](_0x11ff('0x2b'),_0x3af6cb[_0x11ff('0x2c')]),_0x11ff('0x2d'),_0x3af6cb);}}}catch(_0x1bcb57){logger[_0x11ff('0x1a')](_0x11ff('0x2e'),util[_0x11ff('0x18')](_0x1bcb57,{'showHidden':![],'depth':null}));}};UserReport[_0x11ff('0x1e')]['syncDeviceState']=function(_0x5aef6d){try{if(this[_0x11ff('0x1f')](_0x5aef6d)){logger['info']('[userReport][devicestatechange]\x20device:%s\x20state:%s',_0x5aef6d[_0x11ff('0x2f')],_0x5aef6d['state']);logger['debug'](_0x11ff('0x30'),util['inspect'](_0x5aef6d,{'showHidden':![],'depth':null}));if(this[_0x11ff('0xb')][_0x5aef6d['device']]){if(!this[_0x11ff('0xb')][_0x5aef6d[_0x11ff('0x2f')]][_0x11ff('0x31')]||_0x5aef6d[_0x11ff('0x24')]['toLowerCase']()=='inuse'){this[_0x11ff('0xb')][_0x5aef6d['device']]['local']=![];if(this[_0x11ff('0xb')][_0x5aef6d[_0x11ff('0x2f')]][_0x11ff('0x24')]!==_0x5aef6d[_0x11ff('0x24')]['toLowerCase']()){this[_0x11ff('0xb')][_0x5aef6d[_0x11ff('0x2f')]]['stateTime']=_[_0x11ff('0x32')](moment()[_0x11ff('0x33')]('x'));}this['agents'][_0x5aef6d[_0x11ff('0x2f')]][_0x11ff('0x24')]=_0x5aef6d[_0x11ff('0x24')][_0x11ff('0x34')]();this[_0x11ff('0xb')][_0x5aef6d[_0x11ff('0x2f')]][_0x11ff('0x35')](_0x5aef6d);}}else if(this[_0x11ff('0xc')][_0x5aef6d[_0x11ff('0x2f')]]){if(this[_0x11ff('0xc')][_0x5aef6d[_0x11ff('0x2f')]]['state']!==_0x5aef6d['state'][_0x11ff('0x34')]()){this[_0x11ff('0xc')][_0x5aef6d['device']]['stateTime']=_[_0x11ff('0x32')](moment()['format']('x'));}this[_0x11ff('0xc')][_0x5aef6d[_0x11ff('0x2f')]][_0x11ff('0x24')]=_0x5aef6d[_0x11ff('0x24')][_0x11ff('0x34')]();logger[_0x11ff('0x25')](_0x11ff('0x36'),util[_0x11ff('0x18')](this['telephones'][_0x5aef6d[_0x11ff('0x2f')]],{'showHidden':![],'depth':null}));this['emit'](util[_0x11ff('0x33')](_0x11ff('0x37'),this[_0x11ff('0xc')][_0x5aef6d[_0x11ff('0x2f')]][_0x11ff('0x2c')]),_0x11ff('0x38'),this[_0x11ff('0xc')][_0x5aef6d[_0x11ff('0x2f')]]);}else if(this[_0x11ff('0xa')][_0x5aef6d[_0x11ff('0x2f')]]){if(this['trunks'][_0x5aef6d[_0x11ff('0x2f')]][_0x11ff('0x24')]!==_0x5aef6d['state'][_0x11ff('0x34')]()){this[_0x11ff('0xa')][_0x5aef6d[_0x11ff('0x2f')]][_0x11ff('0x39')]=_[_0x11ff('0x32')](moment()[_0x11ff('0x33')]('x'));}this[_0x11ff('0xa')][_0x5aef6d[_0x11ff('0x2f')]]['state']=_0x5aef6d[_0x11ff('0x24')][_0x11ff('0x34')]();logger[_0x11ff('0x25')](_0x11ff('0x3a'),util['inspect'](this[_0x11ff('0xa')][_0x5aef6d[_0x11ff('0x2f')]],{'showHidden':![],'depth':null}));this['emit'](util['format']('trunk:%s',this[_0x11ff('0xa')][_0x5aef6d[_0x11ff('0x2f')]][_0x11ff('0x2c')]),'trunk:save',this[_0x11ff('0xa')][_0x5aef6d['device']]);}else if(_[_0x11ff('0x3b')](_0x5aef6d['device'],_0x11ff('0x3c'))){var _0x4a99c0=_0x5aef6d[_0x11ff('0x2f')];var _0x4840b7=_0x4a99c0['substring'](_0x4a99c0[_0x11ff('0x3d')]('/')+0x1,_0x4a99c0[_0x11ff('0x3d')]('@'));var _0x5caffc=_[_0x11ff('0x26')](this[_0x11ff('0xb')],function(_0x238af3){return _0x238af3[_0x11ff('0x3e')]==_0x4840b7||_0x238af3[_0x11ff('0x3f')]==_0x4840b7||_0x238af3[_0x11ff('0x40')]==_0x4840b7;});if(_0x5caffc){if(_0x5caffc['state']!==_0x5aef6d[_0x11ff('0x24')][_0x11ff('0x34')]()){_0x5caffc[_0x11ff('0x39')]=_[_0x11ff('0x32')](moment()[_0x11ff('0x33')]('x'));}_0x5caffc[_0x11ff('0x24')]=_0x5aef6d[_0x11ff('0x24')][_0x11ff('0x34')]();_0x5caffc['local']=!![];_0x5caffc[_0x11ff('0x35')](_0x5aef6d);}}}}catch(_0x14c307){logger[_0x11ff('0x1a')]('[userReport][devicestatechange]',util[_0x11ff('0x18')](_0x14c307,{'showHidden':![],'depth':null}));}};UserReport[_0x11ff('0x1e')]['syncPeerStatus']=function(_0x7aa805){try{if(this[_0x11ff('0x1f')](_0x7aa805)&&this[_0x11ff('0x1f')](_0x7aa805[_0x11ff('0x12')])){logger[_0x11ff('0x22')](_0x11ff('0x41'),_0x7aa805[_0x11ff('0x42')],_0x7aa805['address'],_0x7aa805[_0x11ff('0x12')]);logger['debug'](_0x11ff('0x43'),util[_0x11ff('0x18')](_0x7aa805,{'showHidden':![],'depth':null}));if(this['agents'][_0x7aa805['peer']]){if(!this[_0x11ff('0xb')][_0x7aa805[_0x11ff('0x42')]][_0x11ff('0x31')]||_0x7aa805['peerstatus'][_0x11ff('0x34')]()==_0x11ff('0x44')){this[_0x11ff('0xb')][_0x7aa805[_0x11ff('0x42')]][_0x11ff('0x31')]=![];this['agents'][_0x7aa805[_0x11ff('0x42')]][_0x11ff('0x45')]=_0x7aa805[_0x11ff('0x12')][_0x11ff('0x34')]();this['agents'][_0x7aa805['peer']][_0x11ff('0x46')]=_0x7aa805['address'];this[_0x11ff('0xb')][_0x7aa805['peer']][_0x11ff('0x35')](_0x7aa805);}}else if(this[_0x11ff('0xc')][_0x7aa805['peer']]){this[_0x11ff('0xc')][_0x7aa805[_0x11ff('0x42')]][_0x11ff('0x45')]=_0x7aa805[_0x11ff('0x12')][_0x11ff('0x34')]();this['telephones'][_0x7aa805[_0x11ff('0x42')]][_0x11ff('0x46')]=_0x7aa805[_0x11ff('0x46')];logger['debug'](_0x11ff('0x47'),util[_0x11ff('0x18')](this[_0x11ff('0xc')][_0x7aa805[_0x11ff('0x42')]],{'showHidden':![],'depth':null}));this[_0x11ff('0x21')](util['format'](_0x11ff('0x37'),this['telephones'][_0x7aa805['peer']][_0x11ff('0x2c')]),_0x11ff('0x38'),this[_0x11ff('0xc')][_0x7aa805[_0x11ff('0x42')]]);}else if(this[_0x11ff('0xa')][_0x7aa805[_0x11ff('0x42')]]){this['trunks'][_0x7aa805[_0x11ff('0x42')]][_0x11ff('0x45')]=_0x7aa805[_0x11ff('0x12')][_0x11ff('0x34')]();this[_0x11ff('0xa')][_0x7aa805[_0x11ff('0x42')]][_0x11ff('0x46')]=_0x7aa805[_0x11ff('0x46')];logger[_0x11ff('0x25')](_0x11ff('0x48'),util['inspect'](this['trunks'][_0x7aa805[_0x11ff('0x42')]],{'showHidden':![],'depth':null}));this[_0x11ff('0x21')](util[_0x11ff('0x33')]('trunk:%s',this[_0x11ff('0xa')][_0x7aa805[_0x11ff('0x42')]][_0x11ff('0x2c')]),_0x11ff('0x2d'),this[_0x11ff('0xa')][_0x7aa805[_0x11ff('0x42')]]);}}}catch(_0x51be8c){logger[_0x11ff('0x1a')](_0x11ff('0x43'),util['inspect'](_0x51be8c,{'showHidden':![],'depth':null}));}};module['exports']=UserReport;