Built motion from commit fe909640.|2.6.8
[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 _0xeecb=['merge','omit','event','actionid','username','[userReport][registry]\x20sending\x20trunk:save\x20event:','format','trunk:%s','trunk:save','[userReport][devicestatechange]\x20device:%s\x20state:%s','device','[userReport][devicestatechange]','local','toLowerCase','inuse','stateTime','[userReport][devicestatechange]\x20sending\x20telephone:save\x20event:','telephone:%s','name','toNumber','[userReport][devicestatechange]\x20sending\x20trunk:save\x20event:','startsWith','Local','indexOf','mobile','phone','accountcode','updateStatusRealtime','syncPeerStatus','[userReport][peerstatus]\x20peer:%s\x20address:%s\x20status:%s','peer','address','[userReport][peerstatus]','registered','status','telephone:save','[userReport][peerstatus]\x20sending\x20trunk:save\x20event:','exports','lodash','moment','ioredis','../../../config/environment','ami','../ami','redis','defaults','localhost','socket.io-emitter','trunks','agents','telephones','registryentry','syncRegistry','bind','syncDeviceState','peerstatus','syncRealtimeShow','then','actionSipShowRegistry','catch','error','[userReport][sipshowregistry]','inspect','resolve','actionDeviceStateList','[userReport][devicestatelist]','actionSipPeerStatus','[userReport][sippeerstatus]','prototype','isNotNull','emit','info','[userReport][registry]\x20registry:%s\x20state:%s','state','debug','[userReport][registry]','find'];(function(_0x5b644e,_0x2e5e07){var _0x49c6bf=function(_0x3032d9){while(--_0x3032d9){_0x5b644e['push'](_0x5b644e['shift']());}};_0x49c6bf(++_0x2e5e07);}(_0xeecb,0x10d));var _0xbeec=function(_0x3572b3,_0x593ffe){_0x3572b3=_0x3572b3-0x0;var _0x55e4aa=_0xeecb[_0x3572b3];return _0x55e4aa;};'use strict';var _=require(_0xbeec('0x0'));var moment=require(_0xbeec('0x1'));var util=require('util');var Redis=require(_0xbeec('0x2'));var BPromise=require('bluebird');var config=require(_0xbeec('0x3'));var logger=require('../../../config/logger')(_0xbeec('0x4'));var ami=require(_0xbeec('0x5'));config[_0xbeec('0x6')]=_[_0xbeec('0x7')](config[_0xbeec('0x6')],{'host':_0xbeec('0x8'),'port':0x18eb});var io=require(_0xbeec('0x9'))(new Redis(config[_0xbeec('0x6')]));function UserReport(_0x30d27f){this[_0xbeec('0xa')]=_0x30d27f[_0xbeec('0xa')];this['agents']=_0x30d27f[_0xbeec('0xb')];this['telephones']=_0x30d27f[_0xbeec('0xc')];ami['on'](_0xbeec('0xd'),this[_0xbeec('0xe')][_0xbeec('0xf')](this));ami['on']('registry',this[_0xbeec('0xe')][_0xbeec('0xf')](this));ami['on']('devicestatechange',this[_0xbeec('0x10')][_0xbeec('0xf')](this));ami['on'](_0xbeec('0x11'),this['syncPeerStatus'][_0xbeec('0xf')](this));return this[_0xbeec('0x12')]();}function showSipRegistrations(){Promise['resolve']()[_0xbeec('0x13')](ami[_0xbeec('0x14')]())[_0xbeec('0x15')](function(_0xf921a1){logger[_0xbeec('0x16')](_0xbeec('0x17'),util[_0xbeec('0x18')](_0xf921a1,{'showHidden':![],'depth':null}));});}function listDeviceStates(){Promise[_0xbeec('0x19')]()['then'](ami[_0xbeec('0x1a')]())[_0xbeec('0x15')](function(_0xc99fb7){logger['error'](_0xbeec('0x1b'),util[_0xbeec('0x18')](_0xc99fb7,{'showHidden':![],'depth':null}));});}function showPeersStatus(){Promise[_0xbeec('0x19')]()[_0xbeec('0x13')](ami[_0xbeec('0x1c')]())[_0xbeec('0x15')](function(_0x17ede6){logger['error'](_0xbeec('0x1d'),util['inspect'](_0x17ede6,{'showHidden':![],'depth':null}));});}UserReport[_0xbeec('0x1e')][_0xbeec('0x12')]=function(){setInterval(function(){BPromise[_0xbeec('0x19')]()[_0xbeec('0x13')](showSipRegistrations())['then'](listDeviceStates())[_0xbeec('0x13')](showPeersStatus());},0x32c8);};UserReport['prototype'][_0xbeec('0x1f')]=function(_0x1590a0){return _0x1590a0!==null&&!_['isUndefined'](_0x1590a0);};UserReport['prototype'][_0xbeec('0x20')]=function(_0x9ba39f,_0xb836e0,_0x5cd41f){io['to'](_0x9ba39f)[_0xbeec('0x20')](_0xb836e0,_0x5cd41f);};UserReport['prototype'][_0xbeec('0xe')]=function(_0x450361){try{if(this['isNotNull'](_0x450361)){logger[_0xbeec('0x21')](_0xbeec('0x22'),_0x450361['username'],_0x450361[_0xbeec('0x23')]);logger[_0xbeec('0x24')](_0xbeec('0x25'),util['inspect'](_0x450361,{'showHidden':![],'depth':null}));var _0x515f9c=_[_0xbeec('0x26')](this[_0xbeec('0xa')],{'defaultuser':_0x450361['username']});if(_0x515f9c){_0x450361['stateRegistry']=_0x450361[_0xbeec('0x23')];_[_0xbeec('0x27')](_0x515f9c,_[_0xbeec('0x28')](_0x450361,[_0xbeec('0x29'),_0xbeec('0x2a'),_0xbeec('0x2b'),_0xbeec('0x23')]));logger[_0xbeec('0x24')](_0xbeec('0x2c'),util[_0xbeec('0x18')](_0x515f9c,{'showHidden':![],'depth':null}));this[_0xbeec('0x20')](util[_0xbeec('0x2d')](_0xbeec('0x2e'),_0x515f9c['name']),_0xbeec('0x2f'),_0x515f9c);}}}catch(_0x2f4442){logger[_0xbeec('0x16')](_0xbeec('0x25'),util[_0xbeec('0x18')](_0x2f4442,{'showHidden':![],'depth':null}));}};UserReport['prototype']['syncDeviceState']=function(_0x2c4fb5){try{if(this['isNotNull'](_0x2c4fb5)){logger[_0xbeec('0x21')](_0xbeec('0x30'),_0x2c4fb5[_0xbeec('0x31')],_0x2c4fb5[_0xbeec('0x23')]);logger['debug'](_0xbeec('0x32'),util['inspect'](_0x2c4fb5,{'showHidden':![],'depth':null}));if(this['agents'][_0x2c4fb5[_0xbeec('0x31')]]){if(!this[_0xbeec('0xb')][_0x2c4fb5['device']][_0xbeec('0x33')]||_0x2c4fb5[_0xbeec('0x23')][_0xbeec('0x34')]()==_0xbeec('0x35')){this[_0xbeec('0xb')][_0x2c4fb5[_0xbeec('0x31')]]['local']=![];if(this[_0xbeec('0xb')][_0x2c4fb5[_0xbeec('0x31')]]['state']!==_0x2c4fb5[_0xbeec('0x23')]['toLowerCase']()){this[_0xbeec('0xb')][_0x2c4fb5[_0xbeec('0x31')]][_0xbeec('0x36')]=_['toNumber'](moment()[_0xbeec('0x2d')]('x'));}this[_0xbeec('0xb')][_0x2c4fb5['device']]['state']=_0x2c4fb5['state'][_0xbeec('0x34')]();this[_0xbeec('0xb')][_0x2c4fb5[_0xbeec('0x31')]]['updateStatusRealtime'](_0x2c4fb5);}}else if(this[_0xbeec('0xc')][_0x2c4fb5['device']]){if(this['telephones'][_0x2c4fb5[_0xbeec('0x31')]][_0xbeec('0x23')]!==_0x2c4fb5['state'][_0xbeec('0x34')]()){this[_0xbeec('0xc')][_0x2c4fb5[_0xbeec('0x31')]][_0xbeec('0x36')]=_['toNumber'](moment()[_0xbeec('0x2d')]('x'));}this[_0xbeec('0xc')][_0x2c4fb5[_0xbeec('0x31')]][_0xbeec('0x23')]=_0x2c4fb5['state'][_0xbeec('0x34')]();logger[_0xbeec('0x24')](_0xbeec('0x37'),util[_0xbeec('0x18')](this[_0xbeec('0xc')][_0x2c4fb5['device']],{'showHidden':![],'depth':null}));this[_0xbeec('0x20')](util[_0xbeec('0x2d')](_0xbeec('0x38'),this[_0xbeec('0xc')][_0x2c4fb5[_0xbeec('0x31')]][_0xbeec('0x39')]),'telephone:save',this[_0xbeec('0xc')][_0x2c4fb5[_0xbeec('0x31')]]);}else if(this['trunks'][_0x2c4fb5[_0xbeec('0x31')]]){if(this['trunks'][_0x2c4fb5[_0xbeec('0x31')]]['state']!==_0x2c4fb5[_0xbeec('0x23')][_0xbeec('0x34')]()){this[_0xbeec('0xa')][_0x2c4fb5[_0xbeec('0x31')]][_0xbeec('0x36')]=_[_0xbeec('0x3a')](moment()['format']('x'));}this[_0xbeec('0xa')][_0x2c4fb5[_0xbeec('0x31')]][_0xbeec('0x23')]=_0x2c4fb5[_0xbeec('0x23')][_0xbeec('0x34')]();logger[_0xbeec('0x24')](_0xbeec('0x3b'),util[_0xbeec('0x18')](this[_0xbeec('0xa')][_0x2c4fb5[_0xbeec('0x31')]],{'showHidden':![],'depth':null}));this['emit'](util[_0xbeec('0x2d')]('trunk:%s',this[_0xbeec('0xa')][_0x2c4fb5[_0xbeec('0x31')]][_0xbeec('0x39')]),_0xbeec('0x2f'),this[_0xbeec('0xa')][_0x2c4fb5['device']]);}else if(_[_0xbeec('0x3c')](_0x2c4fb5['device'],_0xbeec('0x3d'))){var _0x53d8e4=_0x2c4fb5['device'];var _0x2fc773=_0x53d8e4['substring'](_0x53d8e4[_0xbeec('0x3e')]('/')+0x1,_0x53d8e4[_0xbeec('0x3e')]('@'));var _0x3ee97b=_[_0xbeec('0x26')](this[_0xbeec('0xb')],function(_0x4d4129){return _0x4d4129[_0xbeec('0x3f')]==_0x2fc773||_0x4d4129[_0xbeec('0x40')]==_0x2fc773||_0x4d4129[_0xbeec('0x41')]==_0x2fc773;});if(_0x3ee97b){if(_0x3ee97b[_0xbeec('0x23')]!==_0x2c4fb5[_0xbeec('0x23')]['toLowerCase']()){_0x3ee97b['stateTime']=_[_0xbeec('0x3a')](moment()[_0xbeec('0x2d')]('x'));}_0x3ee97b['state']=_0x2c4fb5[_0xbeec('0x23')][_0xbeec('0x34')]();_0x3ee97b[_0xbeec('0x33')]=!![];_0x3ee97b[_0xbeec('0x42')](_0x2c4fb5);}}}}catch(_0x361214){logger[_0xbeec('0x16')](_0xbeec('0x32'),util[_0xbeec('0x18')](_0x361214,{'showHidden':![],'depth':null}));}};UserReport[_0xbeec('0x1e')][_0xbeec('0x43')]=function(_0xd82f74){try{if(this[_0xbeec('0x1f')](_0xd82f74)&&this[_0xbeec('0x1f')](_0xd82f74[_0xbeec('0x11')])){logger[_0xbeec('0x21')](_0xbeec('0x44'),_0xd82f74[_0xbeec('0x45')],_0xd82f74[_0xbeec('0x46')],_0xd82f74[_0xbeec('0x11')]);logger[_0xbeec('0x24')](_0xbeec('0x47'),util[_0xbeec('0x18')](_0xd82f74,{'showHidden':![],'depth':null}));if(this[_0xbeec('0xb')][_0xd82f74['peer']]){if(!this[_0xbeec('0xb')][_0xd82f74['peer']]['local']||_0xd82f74[_0xbeec('0x11')][_0xbeec('0x34')]()==_0xbeec('0x48')){this[_0xbeec('0xb')][_0xd82f74['peer']][_0xbeec('0x33')]=![];this[_0xbeec('0xb')][_0xd82f74[_0xbeec('0x45')]][_0xbeec('0x49')]=_0xd82f74[_0xbeec('0x11')][_0xbeec('0x34')]();this[_0xbeec('0xb')][_0xd82f74['peer']][_0xbeec('0x46')]=_0xd82f74[_0xbeec('0x46')];this[_0xbeec('0xb')][_0xd82f74[_0xbeec('0x45')]][_0xbeec('0x42')](_0xd82f74);}}else if(this[_0xbeec('0xc')][_0xd82f74[_0xbeec('0x45')]]){this[_0xbeec('0xc')][_0xd82f74[_0xbeec('0x45')]]['status']=_0xd82f74[_0xbeec('0x11')]['toLowerCase']();this[_0xbeec('0xc')][_0xd82f74['peer']][_0xbeec('0x46')]=_0xd82f74['address'];logger[_0xbeec('0x24')]('[userReport][peerstatus]\x20sending\x20telephone:save\x20event:',util[_0xbeec('0x18')](this['telephones'][_0xd82f74[_0xbeec('0x45')]],{'showHidden':![],'depth':null}));this[_0xbeec('0x20')](util[_0xbeec('0x2d')](_0xbeec('0x38'),this[_0xbeec('0xc')][_0xd82f74['peer']][_0xbeec('0x39')]),_0xbeec('0x4a'),this[_0xbeec('0xc')][_0xd82f74[_0xbeec('0x45')]]);}else if(this['trunks'][_0xd82f74['peer']]){this[_0xbeec('0xa')][_0xd82f74[_0xbeec('0x45')]]['status']=_0xd82f74[_0xbeec('0x11')]['toLowerCase']();this[_0xbeec('0xa')][_0xd82f74['peer']][_0xbeec('0x46')]=_0xd82f74[_0xbeec('0x46')];logger[_0xbeec('0x24')](_0xbeec('0x4b'),util[_0xbeec('0x18')](this[_0xbeec('0xa')][_0xd82f74[_0xbeec('0x45')]],{'showHidden':![],'depth':null}));this['emit'](util['format'](_0xbeec('0x2e'),this[_0xbeec('0xa')][_0xd82f74[_0xbeec('0x45')]][_0xbeec('0x39')]),_0xbeec('0x2f'),this[_0xbeec('0xa')][_0xd82f74[_0xbeec('0x45')]]);}}}catch(_0x52b3d7){logger['error'](_0xbeec('0x47'),util[_0xbeec('0x18')](_0x52b3d7,{'showHidden':![],'depth':null}));}};module[_0xbeec('0x4c')]=UserReport;