Built motion from commit ffdca78c.|2.6.24
[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 _0x3ec9=['trunks','agents','telephones','registryentry','syncRegistry','bind','registry','devicestatechange','syncDeviceState','peerstatus','syncRealtimeShow','resolve','then','actionSipShowRegistry','error','[userReport][sipshowregistry]','inspect','catch','[userReport][sippeerstatus]','isNotNull','isUndefined','prototype','emit','info','[userReport][registry]\x20registry:%s\x20state:%s','username','state','debug','find','omit','event','[userReport][registry]\x20sending\x20trunk:save\x20event:','format','trunk:%s','name','trunk:save','[userReport][registry]','[userReport][devicestatechange]\x20device:%s\x20state:%s','device','[userReport][devicestatechange]','inuse','local','toLowerCase','stateTime','updateStatusRealtime','[userReport][devicestatechange]\x20sending\x20telephone:save\x20event:','telephone:%s','telephone:save','[userReport][devicestatechange]\x20sending\x20trunk:save\x20event:','startsWith','Local','substring','indexOf','phone','accountcode','toNumber','syncPeerStatus','[userReport][peerstatus]\x20peer:%s\x20address:%s\x20status:%s','peer','address','status','[userReport][peerstatus]\x20sending\x20telephone:save\x20event:','[userReport][peerstatus]\x20sending\x20trunk:save\x20event:','[userReport][peerstatus]','exports','lodash','moment','util','ioredis','../../../config/environment','../../../config/logger','ami','../ami','defaults','socket.io-emitter'];(function(_0x1facfa,_0x1acf7d){var _0x9ec701=function(_0x115e37){while(--_0x115e37){_0x1facfa['push'](_0x1facfa['shift']());}};_0x9ec701(++_0x1acf7d);}(_0x3ec9,0x122));var _0x93ec=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x3ec9[_0x3dd15e];return _0x231fd0;};'use strict';var _=require(_0x93ec('0x0'));var moment=require(_0x93ec('0x1'));var util=require(_0x93ec('0x2'));var Redis=require(_0x93ec('0x3'));var BPromise=require('bluebird');var config=require(_0x93ec('0x4'));var logger=require(_0x93ec('0x5'))(_0x93ec('0x6'));var ami=require(_0x93ec('0x7'));config['redis']=_[_0x93ec('0x8')](config['redis'],{'host':'localhost','port':0x18eb});var io=require(_0x93ec('0x9'))(new Redis(config['redis']));function UserReport(_0x10cb51){this['trunks']=_0x10cb51[_0x93ec('0xa')];this[_0x93ec('0xb')]=_0x10cb51[_0x93ec('0xb')];this[_0x93ec('0xc')]=_0x10cb51[_0x93ec('0xc')];ami['on'](_0x93ec('0xd'),this[_0x93ec('0xe')][_0x93ec('0xf')](this));ami['on'](_0x93ec('0x10'),this['syncRegistry']['bind'](this));ami['on'](_0x93ec('0x11'),this[_0x93ec('0x12')][_0x93ec('0xf')](this));ami['on'](_0x93ec('0x13'),this['syncPeerStatus'][_0x93ec('0xf')](this));return this[_0x93ec('0x14')]();}function showSipRegistrations(){Promise[_0x93ec('0x15')]()[_0x93ec('0x16')](ami[_0x93ec('0x17')]())['catch'](function(_0x2e7d7f){logger[_0x93ec('0x18')](_0x93ec('0x19'),util[_0x93ec('0x1a')](_0x2e7d7f,{'showHidden':![],'depth':null}));});}function listDeviceStates(){Promise[_0x93ec('0x15')]()['then'](ami['actionDeviceStateList']())[_0x93ec('0x1b')](function(_0x210f73){logger[_0x93ec('0x18')]('[userReport][devicestatelist]',util[_0x93ec('0x1a')](_0x210f73,{'showHidden':![],'depth':null}));});}function showPeersStatus(){Promise[_0x93ec('0x15')]()[_0x93ec('0x16')](ami['actionSipPeerStatus']())[_0x93ec('0x1b')](function(_0x487930){logger[_0x93ec('0x18')](_0x93ec('0x1c'),util[_0x93ec('0x1a')](_0x487930,{'showHidden':![],'depth':null}));});}UserReport['prototype'][_0x93ec('0x14')]=function(){setInterval(function(){BPromise[_0x93ec('0x15')]()[_0x93ec('0x16')](showSipRegistrations())['then'](listDeviceStates())[_0x93ec('0x16')](showPeersStatus());},0x32c8);};UserReport['prototype'][_0x93ec('0x1d')]=function(_0x1c9c2b){return _0x1c9c2b!==null&&!_[_0x93ec('0x1e')](_0x1c9c2b);};UserReport[_0x93ec('0x1f')][_0x93ec('0x20')]=function(_0x25c45d,_0x3b45c6,_0x545763){io['to'](_0x25c45d)[_0x93ec('0x20')](_0x3b45c6,_0x545763);};UserReport[_0x93ec('0x1f')][_0x93ec('0xe')]=function(_0x3c182b){try{if(this[_0x93ec('0x1d')](_0x3c182b)){logger[_0x93ec('0x21')](_0x93ec('0x22'),_0x3c182b[_0x93ec('0x23')],_0x3c182b[_0x93ec('0x24')]);logger[_0x93ec('0x25')]('[userReport][registry]',util[_0x93ec('0x1a')](_0x3c182b,{'showHidden':![],'depth':null}));var _0x523f06=_[_0x93ec('0x26')](this[_0x93ec('0xa')],{'defaultuser':_0x3c182b[_0x93ec('0x23')]});if(_0x523f06){_0x3c182b['stateRegistry']=_0x3c182b[_0x93ec('0x24')];_['merge'](_0x523f06,_[_0x93ec('0x27')](_0x3c182b,[_0x93ec('0x28'),'actionid',_0x93ec('0x23'),_0x93ec('0x24')]));logger[_0x93ec('0x25')](_0x93ec('0x29'),util[_0x93ec('0x1a')](_0x523f06,{'showHidden':![],'depth':null}));this['emit'](util[_0x93ec('0x2a')](_0x93ec('0x2b'),_0x523f06[_0x93ec('0x2c')]),_0x93ec('0x2d'),_0x523f06);}}}catch(_0x1ad8e8){logger[_0x93ec('0x18')](_0x93ec('0x2e'),util[_0x93ec('0x1a')](_0x1ad8e8,{'showHidden':![],'depth':null}));}};UserReport[_0x93ec('0x1f')][_0x93ec('0x12')]=function(_0xbe5dc4){try{if(this[_0x93ec('0x1d')](_0xbe5dc4)){logger['info'](_0x93ec('0x2f'),_0xbe5dc4[_0x93ec('0x30')],_0xbe5dc4[_0x93ec('0x24')]);logger[_0x93ec('0x25')](_0x93ec('0x31'),util[_0x93ec('0x1a')](_0xbe5dc4,{'showHidden':![],'depth':null}));if(this[_0x93ec('0xb')][_0xbe5dc4['device']]){if(!this[_0x93ec('0xb')][_0xbe5dc4[_0x93ec('0x30')]]['local']||_0xbe5dc4[_0x93ec('0x24')]['toLowerCase']()==_0x93ec('0x32')){this[_0x93ec('0xb')][_0xbe5dc4[_0x93ec('0x30')]][_0x93ec('0x33')]=![];if(this[_0x93ec('0xb')][_0xbe5dc4[_0x93ec('0x30')]][_0x93ec('0x24')]!==_0xbe5dc4['state'][_0x93ec('0x34')]()){this[_0x93ec('0xb')][_0xbe5dc4[_0x93ec('0x30')]][_0x93ec('0x35')]=_['toNumber'](moment()[_0x93ec('0x2a')]('x'));}this[_0x93ec('0xb')][_0xbe5dc4[_0x93ec('0x30')]][_0x93ec('0x24')]=_0xbe5dc4['state'][_0x93ec('0x34')]();this[_0x93ec('0xb')][_0xbe5dc4['device']][_0x93ec('0x36')](_0xbe5dc4);}}else if(this[_0x93ec('0xc')][_0xbe5dc4[_0x93ec('0x30')]]){if(this[_0x93ec('0xc')][_0xbe5dc4[_0x93ec('0x30')]][_0x93ec('0x24')]!==_0xbe5dc4[_0x93ec('0x24')][_0x93ec('0x34')]()){this[_0x93ec('0xc')][_0xbe5dc4['device']][_0x93ec('0x35')]=_['toNumber'](moment()[_0x93ec('0x2a')]('x'));}this[_0x93ec('0xc')][_0xbe5dc4[_0x93ec('0x30')]][_0x93ec('0x24')]=_0xbe5dc4[_0x93ec('0x24')][_0x93ec('0x34')]();logger[_0x93ec('0x25')](_0x93ec('0x37'),util[_0x93ec('0x1a')](this[_0x93ec('0xc')][_0xbe5dc4[_0x93ec('0x30')]],{'showHidden':![],'depth':null}));this[_0x93ec('0x20')](util[_0x93ec('0x2a')](_0x93ec('0x38'),this[_0x93ec('0xc')][_0xbe5dc4[_0x93ec('0x30')]][_0x93ec('0x2c')]),_0x93ec('0x39'),this[_0x93ec('0xc')][_0xbe5dc4['device']]);}else if(this[_0x93ec('0xa')][_0xbe5dc4['device']]){if(this[_0x93ec('0xa')][_0xbe5dc4[_0x93ec('0x30')]][_0x93ec('0x24')]!==_0xbe5dc4['state'][_0x93ec('0x34')]()){this[_0x93ec('0xa')][_0xbe5dc4[_0x93ec('0x30')]]['stateTime']=_['toNumber'](moment()[_0x93ec('0x2a')]('x'));}this[_0x93ec('0xa')][_0xbe5dc4[_0x93ec('0x30')]]['state']=_0xbe5dc4['state'][_0x93ec('0x34')]();logger['debug'](_0x93ec('0x3a'),util[_0x93ec('0x1a')](this[_0x93ec('0xa')][_0xbe5dc4[_0x93ec('0x30')]],{'showHidden':![],'depth':null}));this['emit'](util[_0x93ec('0x2a')](_0x93ec('0x2b'),this[_0x93ec('0xa')][_0xbe5dc4[_0x93ec('0x30')]]['name']),_0x93ec('0x2d'),this[_0x93ec('0xa')][_0xbe5dc4['device']]);}else if(_[_0x93ec('0x3b')](_0xbe5dc4[_0x93ec('0x30')],_0x93ec('0x3c'))){var _0x4a15ca=_0xbe5dc4[_0x93ec('0x30')];var _0x303025=_0x4a15ca[_0x93ec('0x3d')](_0x4a15ca[_0x93ec('0x3e')]('/')+0x1,_0x4a15ca[_0x93ec('0x3e')]('@'));var _0x3086b8=_[_0x93ec('0x26')](this[_0x93ec('0xb')],function(_0x232bfa){return _0x232bfa['mobile']==_0x303025||_0x232bfa[_0x93ec('0x3f')]==_0x303025||_0x232bfa[_0x93ec('0x40')]==_0x303025;});if(_0x3086b8){if(_0x3086b8['state']!==_0xbe5dc4[_0x93ec('0x24')][_0x93ec('0x34')]()){_0x3086b8[_0x93ec('0x35')]=_[_0x93ec('0x41')](moment()[_0x93ec('0x2a')]('x'));}_0x3086b8[_0x93ec('0x24')]=_0xbe5dc4[_0x93ec('0x24')]['toLowerCase']();_0x3086b8['local']=!![];_0x3086b8[_0x93ec('0x36')](_0xbe5dc4);}}}}catch(_0xb99a1b){logger[_0x93ec('0x18')](_0x93ec('0x31'),util[_0x93ec('0x1a')](_0xb99a1b,{'showHidden':![],'depth':null}));}};UserReport[_0x93ec('0x1f')][_0x93ec('0x42')]=function(_0x527806){try{if(this[_0x93ec('0x1d')](_0x527806)&&this[_0x93ec('0x1d')](_0x527806[_0x93ec('0x13')])){logger[_0x93ec('0x21')](_0x93ec('0x43'),_0x527806[_0x93ec('0x44')],_0x527806[_0x93ec('0x45')],_0x527806[_0x93ec('0x13')]);logger['debug']('[userReport][peerstatus]',util[_0x93ec('0x1a')](_0x527806,{'showHidden':![],'depth':null}));if(this[_0x93ec('0xb')][_0x527806[_0x93ec('0x44')]]){if(!this[_0x93ec('0xb')][_0x527806[_0x93ec('0x44')]][_0x93ec('0x33')]||_0x527806[_0x93ec('0x13')]['toLowerCase']()=='registered'){this['agents'][_0x527806[_0x93ec('0x44')]]['local']=![];this[_0x93ec('0xb')][_0x527806['peer']][_0x93ec('0x46')]=_0x527806[_0x93ec('0x13')]['toLowerCase']();this['agents'][_0x527806[_0x93ec('0x44')]][_0x93ec('0x45')]=_0x527806[_0x93ec('0x45')];this['agents'][_0x527806[_0x93ec('0x44')]][_0x93ec('0x36')](_0x527806);}}else if(this[_0x93ec('0xc')][_0x527806[_0x93ec('0x44')]]){this['telephones'][_0x527806[_0x93ec('0x44')]][_0x93ec('0x46')]=_0x527806['peerstatus'][_0x93ec('0x34')]();this[_0x93ec('0xc')][_0x527806[_0x93ec('0x44')]][_0x93ec('0x45')]=_0x527806[_0x93ec('0x45')];logger[_0x93ec('0x25')](_0x93ec('0x47'),util['inspect'](this[_0x93ec('0xc')][_0x527806[_0x93ec('0x44')]],{'showHidden':![],'depth':null}));this[_0x93ec('0x20')](util[_0x93ec('0x2a')](_0x93ec('0x38'),this[_0x93ec('0xc')][_0x527806[_0x93ec('0x44')]][_0x93ec('0x2c')]),_0x93ec('0x39'),this['telephones'][_0x527806[_0x93ec('0x44')]]);}else if(this['trunks'][_0x527806['peer']]){this[_0x93ec('0xa')][_0x527806[_0x93ec('0x44')]][_0x93ec('0x46')]=_0x527806[_0x93ec('0x13')][_0x93ec('0x34')]();this[_0x93ec('0xa')][_0x527806[_0x93ec('0x44')]][_0x93ec('0x45')]=_0x527806[_0x93ec('0x45')];logger[_0x93ec('0x25')](_0x93ec('0x48'),util[_0x93ec('0x1a')](this[_0x93ec('0xa')][_0x527806[_0x93ec('0x44')]],{'showHidden':![],'depth':null}));this[_0x93ec('0x20')](util[_0x93ec('0x2a')](_0x93ec('0x2b'),this[_0x93ec('0xa')][_0x527806[_0x93ec('0x44')]][_0x93ec('0x2c')]),_0x93ec('0x2d'),this['trunks'][_0x527806[_0x93ec('0x44')]]);}}}catch(_0x4370d2){logger['error'](_0x93ec('0x49'),util['inspect'](_0x4370d2,{'showHidden':![],'depth':null}));}};module[_0x93ec('0x4a')]=UserReport;