Built motion from commit (unavailable).|2.5.15
[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 _0x90e6=['local','toLowerCase','stateTime','toNumber','telephone:%s','telephone:save','startsWith','Local','indexOf','find','mobile','phone','accountcode','updateStatusRealtime','address','peer','registered','status','[userReport][peerstatus]\x20sending\x20telephone:save\x20event:','[userReport][peerstatus]\x20sending\x20trunk:save\x20event:','trunk:%s','[userReport][peerstatus]','exports','lodash','moment','util','bluebird','../../../config/logger','ami','../ami','redis','localhost','socket.io-emitter','trunks','agents','telephones','registryentry','bind','syncRegistry','peerstatus','syncPeerStatus','syncRealtimeShow','resolve','catch','error','[userReport][devicestatelist]','inspect','then','actionSipPeerStatus','[userReport][sippeerstatus]','prototype','emit','info','[userReport][registry]\x20registry:%s\x20state:%s','username','state','debug','[userReport][registry]','merge','[userReport][registry]\x20sending\x20trunk:save\x20event:','format','name','trunk:save','syncDeviceState','isNotNull','[userReport][devicestatechange]\x20device:%s\x20state:%s','device','[userReport][devicestatechange]'];(function(_0x2f5ac5,_0x1ee939){var _0x37c9a8=function(_0x15031f){while(--_0x15031f){_0x2f5ac5['push'](_0x2f5ac5['shift']());}};_0x37c9a8(++_0x1ee939);}(_0x90e6,0xe3));var _0x690e=function(_0x437d7f,_0x1feb46){_0x437d7f=_0x437d7f-0x0;var _0x31058c=_0x90e6[_0x437d7f];return _0x31058c;};'use strict';var _=require(_0x690e('0x0'));var moment=require(_0x690e('0x1'));var util=require(_0x690e('0x2'));var Redis=require('ioredis');var BPromise=require(_0x690e('0x3'));var config=require('../../../config/environment');var logger=require(_0x690e('0x4'))(_0x690e('0x5'));var ami=require(_0x690e('0x6'));config['redis']=_['defaults'](config[_0x690e('0x7')],{'host':_0x690e('0x8'),'port':0x18eb});var io=require(_0x690e('0x9'))(new Redis(config[_0x690e('0x7')]));function UserReport(_0x219e87){this['trunks']=_0x219e87[_0x690e('0xa')];this[_0x690e('0xb')]=_0x219e87[_0x690e('0xb')];this[_0x690e('0xc')]=_0x219e87[_0x690e('0xc')];ami['on'](_0x690e('0xd'),this['syncRegistry'][_0x690e('0xe')](this));ami['on']('registry',this[_0x690e('0xf')][_0x690e('0xe')](this));ami['on']('devicestatechange',this['syncDeviceState'][_0x690e('0xe')](this));ami['on'](_0x690e('0x10'),this[_0x690e('0x11')][_0x690e('0xe')](this));return this[_0x690e('0x12')]();}function showSipRegistrations(){Promise[_0x690e('0x13')]()['then'](ami['actionSipShowRegistry']())[_0x690e('0x14')](function(_0x54f238){logger[_0x690e('0x15')]('[userReport][sipshowregistry]',util['inspect'](_0x54f238,{'showHidden':![],'depth':null}));});}function listDeviceStates(){Promise[_0x690e('0x13')]()['then'](ami['actionDeviceStateList']())[_0x690e('0x14')](function(_0x110fc8){logger[_0x690e('0x15')](_0x690e('0x16'),util[_0x690e('0x17')](_0x110fc8,{'showHidden':![],'depth':null}));});}function showPeersStatus(){Promise[_0x690e('0x13')]()[_0x690e('0x18')](ami[_0x690e('0x19')]())[_0x690e('0x14')](function(_0xea42dc){logger[_0x690e('0x15')](_0x690e('0x1a'),util[_0x690e('0x17')](_0xea42dc,{'showHidden':![],'depth':null}));});}UserReport[_0x690e('0x1b')][_0x690e('0x12')]=function(){setInterval(function(){BPromise[_0x690e('0x13')]()[_0x690e('0x18')](showSipRegistrations())[_0x690e('0x18')](listDeviceStates())['then'](showPeersStatus());},0x32c8);};UserReport['prototype']['isNotNull']=function(_0x3c231d){return _0x3c231d!==null&&!_['isUndefined'](_0x3c231d);};UserReport[_0x690e('0x1b')][_0x690e('0x1c')]=function(_0x2520d3,_0x1ab3ec,_0x57ba71){io['to'](_0x2520d3)['emit'](_0x1ab3ec,_0x57ba71);};UserReport[_0x690e('0x1b')][_0x690e('0xf')]=function(_0x28df88){try{if(this['isNotNull'](_0x28df88)){logger[_0x690e('0x1d')](_0x690e('0x1e'),_0x28df88[_0x690e('0x1f')],_0x28df88[_0x690e('0x20')]);logger[_0x690e('0x21')](_0x690e('0x22'),util['inspect'](_0x28df88,{'showHidden':![],'depth':null}));var _0x8fe063=_['find'](this[_0x690e('0xa')],{'registry':_0x28df88[_0x690e('0x1f')]});if(_0x8fe063){_0x28df88['stateRegistry']=_0x28df88['state'];_[_0x690e('0x23')](_0x8fe063,_['omit'](_0x28df88,['event','actionid','username',_0x690e('0x20')]));logger['debug'](_0x690e('0x24'),util[_0x690e('0x17')](_0x8fe063,{'showHidden':![],'depth':null}));this['emit'](util[_0x690e('0x25')]('trunk:%s',_0x8fe063[_0x690e('0x26')]),_0x690e('0x27'),_0x8fe063);}}}catch(_0x3272b2){logger[_0x690e('0x15')](_0x690e('0x22'),util[_0x690e('0x17')](_0x3272b2,{'showHidden':![],'depth':null}));}};UserReport['prototype'][_0x690e('0x28')]=function(_0x31eb90){try{if(this[_0x690e('0x29')](_0x31eb90)){logger[_0x690e('0x1d')](_0x690e('0x2a'),_0x31eb90[_0x690e('0x2b')],_0x31eb90[_0x690e('0x20')]);logger[_0x690e('0x21')](_0x690e('0x2c'),util['inspect'](_0x31eb90,{'showHidden':![],'depth':null}));if(this['agents'][_0x31eb90[_0x690e('0x2b')]]){if(!this['agents'][_0x31eb90[_0x690e('0x2b')]][_0x690e('0x2d')]||_0x31eb90[_0x690e('0x20')][_0x690e('0x2e')]()=='inuse'){this[_0x690e('0xb')][_0x31eb90[_0x690e('0x2b')]]['local']=![];if(this[_0x690e('0xb')][_0x31eb90[_0x690e('0x2b')]]['state']!==_0x31eb90[_0x690e('0x20')][_0x690e('0x2e')]()){this[_0x690e('0xb')][_0x31eb90[_0x690e('0x2b')]][_0x690e('0x2f')]=_[_0x690e('0x30')](moment()['format']('x'));}this[_0x690e('0xb')][_0x31eb90[_0x690e('0x2b')]][_0x690e('0x20')]=_0x31eb90['state'][_0x690e('0x2e')]();this['agents'][_0x31eb90[_0x690e('0x2b')]]['updateStatusRealtime'](_0x31eb90);}}else if(this['telephones'][_0x31eb90[_0x690e('0x2b')]]){if(this[_0x690e('0xc')][_0x31eb90[_0x690e('0x2b')]][_0x690e('0x20')]!==_0x31eb90[_0x690e('0x20')]['toLowerCase']()){this['telephones'][_0x31eb90['device']]['stateTime']=_[_0x690e('0x30')](moment()[_0x690e('0x25')]('x'));}this[_0x690e('0xc')][_0x31eb90['device']][_0x690e('0x20')]=_0x31eb90[_0x690e('0x20')][_0x690e('0x2e')]();logger[_0x690e('0x21')]('[userReport][devicestatechange]\x20sending\x20telephone:save\x20event:',util['inspect'](this[_0x690e('0xc')][_0x31eb90[_0x690e('0x2b')]],{'showHidden':![],'depth':null}));this[_0x690e('0x1c')](util[_0x690e('0x25')](_0x690e('0x31'),this[_0x690e('0xc')][_0x31eb90['device']][_0x690e('0x26')]),_0x690e('0x32'),this[_0x690e('0xc')][_0x31eb90[_0x690e('0x2b')]]);}else if(this[_0x690e('0xa')][_0x31eb90['device']]){if(this[_0x690e('0xa')][_0x31eb90[_0x690e('0x2b')]][_0x690e('0x20')]!==_0x31eb90['state'][_0x690e('0x2e')]()){this[_0x690e('0xa')][_0x31eb90[_0x690e('0x2b')]][_0x690e('0x2f')]=_[_0x690e('0x30')](moment()['format']('x'));}this[_0x690e('0xa')][_0x31eb90[_0x690e('0x2b')]][_0x690e('0x20')]=_0x31eb90[_0x690e('0x20')][_0x690e('0x2e')]();logger['debug']('[userReport][devicestatechange]\x20sending\x20trunk:save\x20event:',util[_0x690e('0x17')](this[_0x690e('0xa')][_0x31eb90[_0x690e('0x2b')]],{'showHidden':![],'depth':null}));this[_0x690e('0x1c')](util['format']('trunk:%s',this[_0x690e('0xa')][_0x31eb90[_0x690e('0x2b')]]['name']),'trunk:save',this['trunks'][_0x31eb90['device']]);}else if(_[_0x690e('0x33')](_0x31eb90[_0x690e('0x2b')],_0x690e('0x34'))){var _0x3f7e5b=_0x31eb90['device'];var _0x3d9027=_0x3f7e5b['substring'](_0x3f7e5b[_0x690e('0x35')]('/')+0x1,_0x3f7e5b[_0x690e('0x35')]('@'));var _0x4a965c=_[_0x690e('0x36')](this['agents'],function(_0x5487fc){return _0x5487fc[_0x690e('0x37')]==_0x3d9027||_0x5487fc[_0x690e('0x38')]==_0x3d9027||_0x5487fc[_0x690e('0x39')]==_0x3d9027;});if(_0x4a965c){if(_0x4a965c[_0x690e('0x20')]!==_0x31eb90[_0x690e('0x20')][_0x690e('0x2e')]()){_0x4a965c[_0x690e('0x2f')]=_['toNumber'](moment()[_0x690e('0x25')]('x'));}_0x4a965c['state']=_0x31eb90[_0x690e('0x20')]['toLowerCase']();_0x4a965c['local']=!![];_0x4a965c[_0x690e('0x3a')](_0x31eb90);}}}}catch(_0x451d6b){logger[_0x690e('0x15')](_0x690e('0x2c'),util[_0x690e('0x17')](_0x451d6b,{'showHidden':![],'depth':null}));}};UserReport['prototype'][_0x690e('0x11')]=function(_0x2c9e4f){try{if(this[_0x690e('0x29')](_0x2c9e4f)&&this['isNotNull'](_0x2c9e4f[_0x690e('0x10')])){logger[_0x690e('0x1d')]('[userReport][peerstatus]\x20peer:%s\x20address:%s\x20status:%s',_0x2c9e4f['peer'],_0x2c9e4f[_0x690e('0x3b')],_0x2c9e4f['peerstatus']);logger[_0x690e('0x21')]('[userReport][peerstatus]',util[_0x690e('0x17')](_0x2c9e4f,{'showHidden':![],'depth':null}));if(this[_0x690e('0xb')][_0x2c9e4f[_0x690e('0x3c')]]){if(!this['agents'][_0x2c9e4f[_0x690e('0x3c')]][_0x690e('0x2d')]||_0x2c9e4f['peerstatus'][_0x690e('0x2e')]()==_0x690e('0x3d')){this[_0x690e('0xb')][_0x2c9e4f[_0x690e('0x3c')]][_0x690e('0x2d')]=![];this[_0x690e('0xb')][_0x2c9e4f[_0x690e('0x3c')]]['status']=_0x2c9e4f['peerstatus'][_0x690e('0x2e')]();this[_0x690e('0xb')][_0x2c9e4f['peer']][_0x690e('0x3b')]=_0x2c9e4f['address'];this[_0x690e('0xb')][_0x2c9e4f[_0x690e('0x3c')]][_0x690e('0x3a')](_0x2c9e4f);}}else if(this['telephones'][_0x2c9e4f[_0x690e('0x3c')]]){this['telephones'][_0x2c9e4f[_0x690e('0x3c')]][_0x690e('0x3e')]=_0x2c9e4f[_0x690e('0x10')][_0x690e('0x2e')]();this[_0x690e('0xc')][_0x2c9e4f[_0x690e('0x3c')]]['address']=_0x2c9e4f[_0x690e('0x3b')];logger['debug'](_0x690e('0x3f'),util[_0x690e('0x17')](this[_0x690e('0xc')][_0x2c9e4f[_0x690e('0x3c')]],{'showHidden':![],'depth':null}));this['emit'](util[_0x690e('0x25')](_0x690e('0x31'),this['telephones'][_0x2c9e4f['peer']][_0x690e('0x26')]),_0x690e('0x32'),this['telephones'][_0x2c9e4f[_0x690e('0x3c')]]);}else if(this[_0x690e('0xa')][_0x2c9e4f[_0x690e('0x3c')]]){this['trunks'][_0x2c9e4f[_0x690e('0x3c')]][_0x690e('0x3e')]=_0x2c9e4f[_0x690e('0x10')][_0x690e('0x2e')]();this[_0x690e('0xa')][_0x2c9e4f['peer']][_0x690e('0x3b')]=_0x2c9e4f[_0x690e('0x3b')];logger['debug'](_0x690e('0x40'),util[_0x690e('0x17')](this['trunks'][_0x2c9e4f[_0x690e('0x3c')]],{'showHidden':![],'depth':null}));this['emit'](util['format'](_0x690e('0x41'),this[_0x690e('0xa')][_0x2c9e4f[_0x690e('0x3c')]][_0x690e('0x26')]),_0x690e('0x27'),this['trunks'][_0x2c9e4f[_0x690e('0x3c')]]);}}}catch(_0x2debc9){logger['error'](_0x690e('0x42'),util['inspect'](_0x2debc9,{'showHidden':![],'depth':null}));}};module[_0x690e('0x43')]=UserReport;