48f771502732e755866618c3ee24f73d6b19f14b
[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 _0x494e=['localhost','socket.io-emitter','trunks','agents','telephones','registryentry','bind','registry','syncRegistry','devicestatechange','syncDeviceState','peerstatus','syncRealtimeShow','resolve','then','actionSipShowRegistry','[userReport][sipshowregistry]','actionDeviceStateList','catch','error','inspect','actionSipPeerStatus','prototype','isNotNull','isUndefined','emit','info','[userReport][registry]\x20registry:%s\x20state:%s','username','state','debug','[userReport][registry]','stateRegistry','merge','omit','event','actionid','[userReport][registry]\x20sending\x20trunk:save\x20event:','format','name','trunk:save','device','[userReport][devicestatechange]','local','toLowerCase','stateTime','toNumber','telephone:save','[userReport][devicestatechange]\x20sending\x20trunk:save\x20event:','substring','indexOf','find','mobile','phone','accountcode','updateStatusRealtime','syncPeerStatus','[userReport][peerstatus]\x20peer:%s\x20address:%s\x20status:%s','peer','address','status','[userReport][peerstatus]\x20sending\x20telephone:save\x20event:','[userReport][peerstatus]\x20sending\x20trunk:save\x20event:','trunk:%s','exports','lodash','moment','util','ioredis','bluebird','../../../config/environment','../../../config/logger','ami','../ami','redis'];(function(_0x5892db,_0x244099){var _0x3d16dc=function(_0x1b3535){while(--_0x1b3535){_0x5892db['push'](_0x5892db['shift']());}};_0x3d16dc(++_0x244099);}(_0x494e,0x16d));var _0xe494=function(_0x1f5134,_0x24ac87){_0x1f5134=_0x1f5134-0x0;var _0x2f0ae1=_0x494e[_0x1f5134];return _0x2f0ae1;};'use strict';var _=require(_0xe494('0x0'));var moment=require(_0xe494('0x1'));var util=require(_0xe494('0x2'));var Redis=require(_0xe494('0x3'));var BPromise=require(_0xe494('0x4'));var config=require(_0xe494('0x5'));var logger=require(_0xe494('0x6'))(_0xe494('0x7'));var ami=require(_0xe494('0x8'));config[_0xe494('0x9')]=_['defaults'](config[_0xe494('0x9')],{'host':_0xe494('0xa'),'port':0x18eb});var io=require(_0xe494('0xb'))(new Redis(config[_0xe494('0x9')]));function UserReport(_0x59ed56){this[_0xe494('0xc')]=_0x59ed56[_0xe494('0xc')];this['agents']=_0x59ed56[_0xe494('0xd')];this[_0xe494('0xe')]=_0x59ed56[_0xe494('0xe')];ami['on'](_0xe494('0xf'),this['syncRegistry'][_0xe494('0x10')](this));ami['on'](_0xe494('0x11'),this[_0xe494('0x12')][_0xe494('0x10')](this));ami['on'](_0xe494('0x13'),this[_0xe494('0x14')][_0xe494('0x10')](this));ami['on'](_0xe494('0x15'),this['syncPeerStatus'][_0xe494('0x10')](this));return this[_0xe494('0x16')]();}function showSipRegistrations(){Promise[_0xe494('0x17')]()[_0xe494('0x18')](ami[_0xe494('0x19')]())['catch'](function(_0x5979e7){logger['error'](_0xe494('0x1a'),util['inspect'](_0x5979e7,{'showHidden':![],'depth':null}));});}function listDeviceStates(){Promise[_0xe494('0x17')]()[_0xe494('0x18')](ami[_0xe494('0x1b')]())[_0xe494('0x1c')](function(_0x31346c){logger[_0xe494('0x1d')]('[userReport][devicestatelist]',util[_0xe494('0x1e')](_0x31346c,{'showHidden':![],'depth':null}));});}function showPeersStatus(){Promise[_0xe494('0x17')]()[_0xe494('0x18')](ami[_0xe494('0x1f')]())[_0xe494('0x1c')](function(_0x2c0b3c){logger[_0xe494('0x1d')]('[userReport][sippeerstatus]',util['inspect'](_0x2c0b3c,{'showHidden':![],'depth':null}));});}UserReport[_0xe494('0x20')][_0xe494('0x16')]=function(){setInterval(function(){BPromise[_0xe494('0x17')]()[_0xe494('0x18')](showSipRegistrations())['then'](listDeviceStates())[_0xe494('0x18')](showPeersStatus());},0x32c8);};UserReport[_0xe494('0x20')][_0xe494('0x21')]=function(_0x509ce0){return _0x509ce0!==null&&!_[_0xe494('0x22')](_0x509ce0);};UserReport[_0xe494('0x20')][_0xe494('0x23')]=function(_0x4755db,_0x30c93c,_0x45573a){io['to'](_0x4755db)['emit'](_0x30c93c,_0x45573a);};UserReport[_0xe494('0x20')][_0xe494('0x12')]=function(_0x5c5e7d){try{if(this[_0xe494('0x21')](_0x5c5e7d)){logger[_0xe494('0x24')](_0xe494('0x25'),_0x5c5e7d[_0xe494('0x26')],_0x5c5e7d[_0xe494('0x27')]);logger[_0xe494('0x28')](_0xe494('0x29'),util[_0xe494('0x1e')](_0x5c5e7d,{'showHidden':![],'depth':null}));var _0x556869=_['find'](this['trunks'],{'registry':_0x5c5e7d[_0xe494('0x26')]});if(_0x556869){_0x5c5e7d[_0xe494('0x2a')]=_0x5c5e7d[_0xe494('0x27')];_[_0xe494('0x2b')](_0x556869,_[_0xe494('0x2c')](_0x5c5e7d,[_0xe494('0x2d'),_0xe494('0x2e'),_0xe494('0x26'),_0xe494('0x27')]));logger[_0xe494('0x28')](_0xe494('0x2f'),util[_0xe494('0x1e')](_0x556869,{'showHidden':![],'depth':null}));this[_0xe494('0x23')](util[_0xe494('0x30')]('trunk:%s',_0x556869[_0xe494('0x31')]),_0xe494('0x32'),_0x556869);}}}catch(_0x45f878){logger['error'](_0xe494('0x29'),util[_0xe494('0x1e')](_0x45f878,{'showHidden':![],'depth':null}));}};UserReport['prototype'][_0xe494('0x14')]=function(_0x37c3d){try{if(this[_0xe494('0x21')](_0x37c3d)){logger['info']('[userReport][devicestatechange]\x20device:%s\x20state:%s',_0x37c3d[_0xe494('0x33')],_0x37c3d[_0xe494('0x27')]);logger[_0xe494('0x28')](_0xe494('0x34'),util['inspect'](_0x37c3d,{'showHidden':![],'depth':null}));if(this[_0xe494('0xd')][_0x37c3d['device']]){if(!this['agents'][_0x37c3d[_0xe494('0x33')]][_0xe494('0x35')]||_0x37c3d['state'][_0xe494('0x36')]()=='inuse'){this[_0xe494('0xd')][_0x37c3d[_0xe494('0x33')]][_0xe494('0x35')]=![];if(this[_0xe494('0xd')][_0x37c3d['device']][_0xe494('0x27')]!==_0x37c3d[_0xe494('0x27')][_0xe494('0x36')]()){this['agents'][_0x37c3d[_0xe494('0x33')]][_0xe494('0x37')]=_[_0xe494('0x38')](moment()[_0xe494('0x30')]('x'));}this['agents'][_0x37c3d[_0xe494('0x33')]][_0xe494('0x27')]=_0x37c3d[_0xe494('0x27')][_0xe494('0x36')]();this[_0xe494('0xd')][_0x37c3d[_0xe494('0x33')]]['updateStatusRealtime'](_0x37c3d);}}else if(this[_0xe494('0xe')][_0x37c3d[_0xe494('0x33')]]){if(this['telephones'][_0x37c3d['device']][_0xe494('0x27')]!==_0x37c3d[_0xe494('0x27')][_0xe494('0x36')]()){this[_0xe494('0xe')][_0x37c3d[_0xe494('0x33')]][_0xe494('0x37')]=_['toNumber'](moment()[_0xe494('0x30')]('x'));}this[_0xe494('0xe')][_0x37c3d['device']]['state']=_0x37c3d[_0xe494('0x27')]['toLowerCase']();logger['debug']('[userReport][devicestatechange]\x20sending\x20telephone:save\x20event:',util[_0xe494('0x1e')](this[_0xe494('0xe')][_0x37c3d['device']],{'showHidden':![],'depth':null}));this[_0xe494('0x23')](util[_0xe494('0x30')]('telephone:%s',this[_0xe494('0xe')][_0x37c3d[_0xe494('0x33')]][_0xe494('0x31')]),_0xe494('0x39'),this[_0xe494('0xe')][_0x37c3d['device']]);}else if(this[_0xe494('0xc')][_0x37c3d[_0xe494('0x33')]]){if(this[_0xe494('0xc')][_0x37c3d[_0xe494('0x33')]][_0xe494('0x27')]!==_0x37c3d['state'][_0xe494('0x36')]()){this[_0xe494('0xc')][_0x37c3d[_0xe494('0x33')]][_0xe494('0x37')]=_[_0xe494('0x38')](moment()[_0xe494('0x30')]('x'));}this[_0xe494('0xc')][_0x37c3d['device']][_0xe494('0x27')]=_0x37c3d[_0xe494('0x27')][_0xe494('0x36')]();logger[_0xe494('0x28')](_0xe494('0x3a'),util[_0xe494('0x1e')](this['trunks'][_0x37c3d['device']],{'showHidden':![],'depth':null}));this[_0xe494('0x23')](util[_0xe494('0x30')]('trunk:%s',this[_0xe494('0xc')][_0x37c3d['device']][_0xe494('0x31')]),_0xe494('0x32'),this[_0xe494('0xc')][_0x37c3d[_0xe494('0x33')]]);}else if(_['startsWith'](_0x37c3d['device'],'Local')){var _0x511825=_0x37c3d[_0xe494('0x33')];var _0x24b30a=_0x511825[_0xe494('0x3b')](_0x511825['indexOf']('/')+0x1,_0x511825[_0xe494('0x3c')]('@'));var _0x7b9179=_[_0xe494('0x3d')](this[_0xe494('0xd')],function(_0x1b874c){return _0x1b874c[_0xe494('0x3e')]==_0x24b30a||_0x1b874c[_0xe494('0x3f')]==_0x24b30a||_0x1b874c[_0xe494('0x40')]==_0x24b30a;});if(_0x7b9179){if(_0x7b9179[_0xe494('0x27')]!==_0x37c3d[_0xe494('0x27')][_0xe494('0x36')]()){_0x7b9179[_0xe494('0x37')]=_['toNumber'](moment()[_0xe494('0x30')]('x'));}_0x7b9179[_0xe494('0x27')]=_0x37c3d[_0xe494('0x27')][_0xe494('0x36')]();_0x7b9179[_0xe494('0x35')]=!![];_0x7b9179[_0xe494('0x41')](_0x37c3d);}}}}catch(_0x37dc4c){logger[_0xe494('0x1d')](_0xe494('0x34'),util[_0xe494('0x1e')](_0x37dc4c,{'showHidden':![],'depth':null}));}};UserReport['prototype'][_0xe494('0x42')]=function(_0xe17b60){try{if(this[_0xe494('0x21')](_0xe17b60)&&this['isNotNull'](_0xe17b60[_0xe494('0x15')])){logger[_0xe494('0x24')](_0xe494('0x43'),_0xe17b60[_0xe494('0x44')],_0xe17b60[_0xe494('0x45')],_0xe17b60[_0xe494('0x15')]);logger[_0xe494('0x28')]('[userReport][peerstatus]',util[_0xe494('0x1e')](_0xe17b60,{'showHidden':![],'depth':null}));if(this[_0xe494('0xd')][_0xe17b60[_0xe494('0x44')]]){if(!this[_0xe494('0xd')][_0xe17b60['peer']]['local']||_0xe17b60['peerstatus'][_0xe494('0x36')]()=='registered'){this[_0xe494('0xd')][_0xe17b60['peer']][_0xe494('0x35')]=![];this[_0xe494('0xd')][_0xe17b60['peer']]['status']=_0xe17b60[_0xe494('0x15')]['toLowerCase']();this[_0xe494('0xd')][_0xe17b60[_0xe494('0x44')]][_0xe494('0x45')]=_0xe17b60[_0xe494('0x45')];this[_0xe494('0xd')][_0xe17b60['peer']][_0xe494('0x41')](_0xe17b60);}}else if(this['telephones'][_0xe17b60[_0xe494('0x44')]]){this[_0xe494('0xe')][_0xe17b60[_0xe494('0x44')]][_0xe494('0x46')]=_0xe17b60[_0xe494('0x15')]['toLowerCase']();this[_0xe494('0xe')][_0xe17b60['peer']]['address']=_0xe17b60[_0xe494('0x45')];logger[_0xe494('0x28')](_0xe494('0x47'),util[_0xe494('0x1e')](this[_0xe494('0xe')][_0xe17b60[_0xe494('0x44')]],{'showHidden':![],'depth':null}));this['emit'](util[_0xe494('0x30')]('telephone:%s',this['telephones'][_0xe17b60['peer']]['name']),'telephone:save',this[_0xe494('0xe')][_0xe17b60[_0xe494('0x44')]]);}else if(this[_0xe494('0xc')][_0xe17b60['peer']]){this['trunks'][_0xe17b60['peer']]['status']=_0xe17b60[_0xe494('0x15')][_0xe494('0x36')]();this[_0xe494('0xc')][_0xe17b60['peer']]['address']=_0xe17b60[_0xe494('0x45')];logger[_0xe494('0x28')](_0xe494('0x48'),util[_0xe494('0x1e')](this[_0xe494('0xc')][_0xe17b60[_0xe494('0x44')]],{'showHidden':![],'depth':null}));this[_0xe494('0x23')](util[_0xe494('0x30')](_0xe494('0x49'),this['trunks'][_0xe17b60[_0xe494('0x44')]][_0xe494('0x31')]),'trunk:save',this['trunks'][_0xe17b60['peer']]);}}}catch(_0x43c48c){logger[_0xe494('0x1d')]('[userReport][peerstatus]',util[_0xe494('0x1e')](_0x43c48c,{'showHidden':![],'depth':null}));}};module[_0xe494('0x4a')]=UserReport;