Built motion from commit d1eab355.|2.6.28
[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 _0xa590=['trunk:%s','info','[userReport][devicestatechange]\x20device:%s\x20state:%s','device','[userReport][devicestatechange]','local','toLowerCase','inuse','toNumber','updateStatusRealtime','stateTime','[userReport][devicestatechange]\x20sending\x20telephone:save\x20event:','telephone:%s','telephone:save','[userReport][devicestatechange]\x20sending\x20trunk:save\x20event:','name','trunk:save','Local','indexOf','mobile','phone','accountcode','peer','address','[userReport][peerstatus]','registered','status','[userReport][peerstatus]\x20sending\x20telephone:save\x20event:','[userReport][peerstatus]\x20sending\x20trunk:save\x20event:','moment','util','ioredis','bluebird','../../../config/environment','ami','../ami','defaults','redis','localhost','socket.io-emitter','trunks','agents','telephones','registryentry','bind','syncRegistry','devicestatechange','syncDeviceState','peerstatus','syncPeerStatus','syncRealtimeShow','actionSipShowRegistry','catch','error','inspect','resolve','then','actionDeviceStateList','prototype','isNotNull','isUndefined','emit','[userReport][registry]\x20registry:%s\x20state:%s','[userReport][registry]','find','stateRegistry','state','omit','event','username','debug','format'];(function(_0x54880a,_0x4ce03c){var _0x2eae69=function(_0x4c60fe){while(--_0x4c60fe){_0x54880a['push'](_0x54880a['shift']());}};_0x2eae69(++_0x4ce03c);}(_0xa590,0x185));var _0x0a59=function(_0xfb0281,_0x3ff38b){_0xfb0281=_0xfb0281-0x0;var _0x408dd3=_0xa590[_0xfb0281];return _0x408dd3;};'use strict';var _=require('lodash');var moment=require(_0x0a59('0x0'));var util=require(_0x0a59('0x1'));var Redis=require(_0x0a59('0x2'));var BPromise=require(_0x0a59('0x3'));var config=require(_0x0a59('0x4'));var logger=require('../../../config/logger')(_0x0a59('0x5'));var ami=require(_0x0a59('0x6'));config['redis']=_[_0x0a59('0x7')](config[_0x0a59('0x8')],{'host':_0x0a59('0x9'),'port':0x18eb});var io=require(_0x0a59('0xa'))(new Redis(config[_0x0a59('0x8')]));function UserReport(_0x53ec0c){this[_0x0a59('0xb')]=_0x53ec0c['trunks'];this['agents']=_0x53ec0c[_0x0a59('0xc')];this[_0x0a59('0xd')]=_0x53ec0c['telephones'];ami['on'](_0x0a59('0xe'),this['syncRegistry'][_0x0a59('0xf')](this));ami['on']('registry',this[_0x0a59('0x10')][_0x0a59('0xf')](this));ami['on'](_0x0a59('0x11'),this[_0x0a59('0x12')][_0x0a59('0xf')](this));ami['on'](_0x0a59('0x13'),this[_0x0a59('0x14')][_0x0a59('0xf')](this));return this[_0x0a59('0x15')]();}function showSipRegistrations(){Promise['resolve']()['then'](ami[_0x0a59('0x16')]())[_0x0a59('0x17')](function(_0x28503c){logger[_0x0a59('0x18')]('[userReport][sipshowregistry]',util[_0x0a59('0x19')](_0x28503c,{'showHidden':![],'depth':null}));});}function listDeviceStates(){Promise[_0x0a59('0x1a')]()[_0x0a59('0x1b')](ami[_0x0a59('0x1c')]())[_0x0a59('0x17')](function(_0x2ec15d){logger['error']('[userReport][devicestatelist]',util[_0x0a59('0x19')](_0x2ec15d,{'showHidden':![],'depth':null}));});}function showPeersStatus(){Promise[_0x0a59('0x1a')]()[_0x0a59('0x1b')](ami['actionSipPeerStatus']())['catch'](function(_0x47071e){logger['error']('[userReport][sippeerstatus]',util[_0x0a59('0x19')](_0x47071e,{'showHidden':![],'depth':null}));});}UserReport[_0x0a59('0x1d')][_0x0a59('0x15')]=function(){setInterval(function(){BPromise[_0x0a59('0x1a')]()[_0x0a59('0x1b')](showSipRegistrations())[_0x0a59('0x1b')](listDeviceStates())[_0x0a59('0x1b')](showPeersStatus());},0x32c8);};UserReport[_0x0a59('0x1d')][_0x0a59('0x1e')]=function(_0x6b1038){return _0x6b1038!==null&&!_[_0x0a59('0x1f')](_0x6b1038);};UserReport[_0x0a59('0x1d')][_0x0a59('0x20')]=function(_0x59bfaa,_0x35375c,_0x5372fe){io['to'](_0x59bfaa)['emit'](_0x35375c,_0x5372fe);};UserReport['prototype'][_0x0a59('0x10')]=function(_0x3298af){try{if(this[_0x0a59('0x1e')](_0x3298af)){logger['info'](_0x0a59('0x21'),_0x3298af['username'],_0x3298af['state']);logger['debug'](_0x0a59('0x22'),util[_0x0a59('0x19')](_0x3298af,{'showHidden':![],'depth':null}));var _0x1ebeac=_[_0x0a59('0x23')](this[_0x0a59('0xb')],{'defaultuser':_0x3298af['username']});if(_0x1ebeac){_0x3298af[_0x0a59('0x24')]=_0x3298af[_0x0a59('0x25')];_['merge'](_0x1ebeac,_[_0x0a59('0x26')](_0x3298af,[_0x0a59('0x27'),'actionid',_0x0a59('0x28'),_0x0a59('0x25')]));logger[_0x0a59('0x29')]('[userReport][registry]\x20sending\x20trunk:save\x20event:',util[_0x0a59('0x19')](_0x1ebeac,{'showHidden':![],'depth':null}));this[_0x0a59('0x20')](util[_0x0a59('0x2a')](_0x0a59('0x2b'),_0x1ebeac['name']),'trunk:save',_0x1ebeac);}}}catch(_0x50b7de){logger['error'](_0x0a59('0x22'),util[_0x0a59('0x19')](_0x50b7de,{'showHidden':![],'depth':null}));}};UserReport['prototype']['syncDeviceState']=function(_0xb62297){try{if(this['isNotNull'](_0xb62297)){logger[_0x0a59('0x2c')](_0x0a59('0x2d'),_0xb62297[_0x0a59('0x2e')],_0xb62297[_0x0a59('0x25')]);logger[_0x0a59('0x29')](_0x0a59('0x2f'),util['inspect'](_0xb62297,{'showHidden':![],'depth':null}));if(this['agents'][_0xb62297[_0x0a59('0x2e')]]){if(!this[_0x0a59('0xc')][_0xb62297[_0x0a59('0x2e')]][_0x0a59('0x30')]||_0xb62297[_0x0a59('0x25')][_0x0a59('0x31')]()==_0x0a59('0x32')){this[_0x0a59('0xc')][_0xb62297['device']][_0x0a59('0x30')]=![];if(this[_0x0a59('0xc')][_0xb62297[_0x0a59('0x2e')]][_0x0a59('0x25')]!==_0xb62297['state']['toLowerCase']()){this['agents'][_0xb62297[_0x0a59('0x2e')]]['stateTime']=_[_0x0a59('0x33')](moment()['format']('x'));}this['agents'][_0xb62297[_0x0a59('0x2e')]][_0x0a59('0x25')]=_0xb62297['state']['toLowerCase']();this[_0x0a59('0xc')][_0xb62297[_0x0a59('0x2e')]][_0x0a59('0x34')](_0xb62297);}}else if(this[_0x0a59('0xd')][_0xb62297['device']]){if(this['telephones'][_0xb62297['device']][_0x0a59('0x25')]!==_0xb62297[_0x0a59('0x25')][_0x0a59('0x31')]()){this[_0x0a59('0xd')][_0xb62297['device']][_0x0a59('0x35')]=_[_0x0a59('0x33')](moment()['format']('x'));}this[_0x0a59('0xd')][_0xb62297[_0x0a59('0x2e')]]['state']=_0xb62297['state'][_0x0a59('0x31')]();logger[_0x0a59('0x29')](_0x0a59('0x36'),util['inspect'](this[_0x0a59('0xd')][_0xb62297[_0x0a59('0x2e')]],{'showHidden':![],'depth':null}));this[_0x0a59('0x20')](util[_0x0a59('0x2a')](_0x0a59('0x37'),this[_0x0a59('0xd')][_0xb62297[_0x0a59('0x2e')]]['name']),_0x0a59('0x38'),this[_0x0a59('0xd')][_0xb62297[_0x0a59('0x2e')]]);}else if(this[_0x0a59('0xb')][_0xb62297[_0x0a59('0x2e')]]){if(this[_0x0a59('0xb')][_0xb62297[_0x0a59('0x2e')]][_0x0a59('0x25')]!==_0xb62297[_0x0a59('0x25')]['toLowerCase']()){this[_0x0a59('0xb')][_0xb62297['device']][_0x0a59('0x35')]=_[_0x0a59('0x33')](moment()[_0x0a59('0x2a')]('x'));}this[_0x0a59('0xb')][_0xb62297[_0x0a59('0x2e')]][_0x0a59('0x25')]=_0xb62297['state']['toLowerCase']();logger['debug'](_0x0a59('0x39'),util[_0x0a59('0x19')](this[_0x0a59('0xb')][_0xb62297[_0x0a59('0x2e')]],{'showHidden':![],'depth':null}));this[_0x0a59('0x20')](util[_0x0a59('0x2a')](_0x0a59('0x2b'),this[_0x0a59('0xb')][_0xb62297[_0x0a59('0x2e')]][_0x0a59('0x3a')]),_0x0a59('0x3b'),this['trunks'][_0xb62297[_0x0a59('0x2e')]]);}else if(_['startsWith'](_0xb62297[_0x0a59('0x2e')],_0x0a59('0x3c'))){var _0x269113=_0xb62297['device'];var _0xbd77b7=_0x269113['substring'](_0x269113[_0x0a59('0x3d')]('/')+0x1,_0x269113[_0x0a59('0x3d')]('@'));var _0x17675e=_['find'](this[_0x0a59('0xc')],function(_0x230abc){return _0x230abc[_0x0a59('0x3e')]==_0xbd77b7||_0x230abc[_0x0a59('0x3f')]==_0xbd77b7||_0x230abc[_0x0a59('0x40')]==_0xbd77b7;});if(_0x17675e){if(_0x17675e[_0x0a59('0x25')]!==_0xb62297[_0x0a59('0x25')][_0x0a59('0x31')]()){_0x17675e[_0x0a59('0x35')]=_['toNumber'](moment()['format']('x'));}_0x17675e[_0x0a59('0x25')]=_0xb62297[_0x0a59('0x25')][_0x0a59('0x31')]();_0x17675e['local']=!![];_0x17675e[_0x0a59('0x34')](_0xb62297);}}}}catch(_0x3e97f6){logger[_0x0a59('0x18')]('[userReport][devicestatechange]',util[_0x0a59('0x19')](_0x3e97f6,{'showHidden':![],'depth':null}));}};UserReport[_0x0a59('0x1d')]['syncPeerStatus']=function(_0xdb2bd4){try{if(this[_0x0a59('0x1e')](_0xdb2bd4)&&this[_0x0a59('0x1e')](_0xdb2bd4[_0x0a59('0x13')])){logger[_0x0a59('0x2c')]('[userReport][peerstatus]\x20peer:%s\x20address:%s\x20status:%s',_0xdb2bd4[_0x0a59('0x41')],_0xdb2bd4[_0x0a59('0x42')],_0xdb2bd4[_0x0a59('0x13')]);logger['debug'](_0x0a59('0x43'),util[_0x0a59('0x19')](_0xdb2bd4,{'showHidden':![],'depth':null}));if(this[_0x0a59('0xc')][_0xdb2bd4[_0x0a59('0x41')]]){if(!this[_0x0a59('0xc')][_0xdb2bd4[_0x0a59('0x41')]][_0x0a59('0x30')]||_0xdb2bd4[_0x0a59('0x13')][_0x0a59('0x31')]()==_0x0a59('0x44')){this[_0x0a59('0xc')][_0xdb2bd4[_0x0a59('0x41')]][_0x0a59('0x30')]=![];this[_0x0a59('0xc')][_0xdb2bd4[_0x0a59('0x41')]][_0x0a59('0x45')]=_0xdb2bd4[_0x0a59('0x13')][_0x0a59('0x31')]();this['agents'][_0xdb2bd4['peer']]['address']=_0xdb2bd4[_0x0a59('0x42')];this[_0x0a59('0xc')][_0xdb2bd4[_0x0a59('0x41')]]['updateStatusRealtime'](_0xdb2bd4);}}else if(this[_0x0a59('0xd')][_0xdb2bd4[_0x0a59('0x41')]]){this[_0x0a59('0xd')][_0xdb2bd4[_0x0a59('0x41')]]['status']=_0xdb2bd4[_0x0a59('0x13')][_0x0a59('0x31')]();this[_0x0a59('0xd')][_0xdb2bd4['peer']][_0x0a59('0x42')]=_0xdb2bd4[_0x0a59('0x42')];logger[_0x0a59('0x29')](_0x0a59('0x46'),util[_0x0a59('0x19')](this[_0x0a59('0xd')][_0xdb2bd4[_0x0a59('0x41')]],{'showHidden':![],'depth':null}));this['emit'](util['format'](_0x0a59('0x37'),this[_0x0a59('0xd')][_0xdb2bd4[_0x0a59('0x41')]][_0x0a59('0x3a')]),_0x0a59('0x38'),this[_0x0a59('0xd')][_0xdb2bd4[_0x0a59('0x41')]]);}else if(this[_0x0a59('0xb')][_0xdb2bd4[_0x0a59('0x41')]]){this[_0x0a59('0xb')][_0xdb2bd4[_0x0a59('0x41')]]['status']=_0xdb2bd4['peerstatus'][_0x0a59('0x31')]();this[_0x0a59('0xb')][_0xdb2bd4[_0x0a59('0x41')]]['address']=_0xdb2bd4[_0x0a59('0x42')];logger[_0x0a59('0x29')](_0x0a59('0x47'),util[_0x0a59('0x19')](this['trunks'][_0xdb2bd4[_0x0a59('0x41')]],{'showHidden':![],'depth':null}));this[_0x0a59('0x20')](util[_0x0a59('0x2a')]('trunk:%s',this['trunks'][_0xdb2bd4['peer']][_0x0a59('0x3a')]),_0x0a59('0x3b'),this[_0x0a59('0xb')][_0xdb2bd4['peer']]);}}}catch(_0x336ee4){logger[_0x0a59('0x18')](_0x0a59('0x43'),util[_0x0a59('0x19')](_0x336ee4,{'showHidden':![],'depth':null}));}};module['exports']=UserReport;