Built motion from commit 753c950e.|2.5.42
[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 _0x3df1=['trunks','agents','telephones','bind','syncRegistry','devicestatechange','syncDeviceState','peerstatus','syncPeerStatus','syncRealtimeShow','resolve','catch','error','inspect','then','actionDeviceStateList','[userReport][devicestatelist]','actionSipPeerStatus','prototype','isUndefined','emit','info','state','debug','find','username','stateRegistry','merge','omit','event','actionid','[userReport][registry]\x20sending\x20trunk:save\x20event:','format','trunk:%s','name','[userReport][registry]','device','local','inuse','toLowerCase','stateTime','toNumber','updateStatusRealtime','telephone:%s','[userReport][devicestatechange]\x20sending\x20trunk:save\x20event:','trunk:save','startsWith','Local','indexOf','mobile','accountcode','[userReport][devicestatechange]','[userReport][peerstatus]\x20peer:%s\x20address:%s\x20status:%s','peer','address','registered','status','[userReport][peerstatus]\x20sending\x20telephone:save\x20event:','[userReport][peerstatus]\x20sending\x20trunk:save\x20event:','[userReport][peerstatus]','lodash','moment','util','ioredis','bluebird','../../../config/environment','../../../config/logger','../ami','redis','defaults','localhost'];(function(_0x27e3aa,_0x3b7a27){var _0x59cbe8=function(_0x27f5cd){while(--_0x27f5cd){_0x27e3aa['push'](_0x27e3aa['shift']());}};_0x59cbe8(++_0x3b7a27);}(_0x3df1,0x111));var _0x13df=function(_0x3bf83f,_0x181cac){_0x3bf83f=_0x3bf83f-0x0;var _0x22c4a9=_0x3df1[_0x3bf83f];return _0x22c4a9;};'use strict';var _=require(_0x13df('0x0'));var moment=require(_0x13df('0x1'));var util=require(_0x13df('0x2'));var Redis=require(_0x13df('0x3'));var BPromise=require(_0x13df('0x4'));var config=require(_0x13df('0x5'));var logger=require(_0x13df('0x6'))('ami');var ami=require(_0x13df('0x7'));config[_0x13df('0x8')]=_[_0x13df('0x9')](config[_0x13df('0x8')],{'host':_0x13df('0xa'),'port':0x18eb});var io=require('socket.io-emitter')(new Redis(config[_0x13df('0x8')]));function UserReport(_0x42d010){this[_0x13df('0xb')]=_0x42d010[_0x13df('0xb')];this[_0x13df('0xc')]=_0x42d010[_0x13df('0xc')];this[_0x13df('0xd')]=_0x42d010[_0x13df('0xd')];ami['on']('registryentry',this['syncRegistry'][_0x13df('0xe')](this));ami['on']('registry',this[_0x13df('0xf')][_0x13df('0xe')](this));ami['on'](_0x13df('0x10'),this[_0x13df('0x11')][_0x13df('0xe')](this));ami['on'](_0x13df('0x12'),this[_0x13df('0x13')][_0x13df('0xe')](this));return this[_0x13df('0x14')]();}function showSipRegistrations(){Promise[_0x13df('0x15')]()['then'](ami['actionSipShowRegistry']())[_0x13df('0x16')](function(_0x51b34f){logger[_0x13df('0x17')]('[userReport][sipshowregistry]',util[_0x13df('0x18')](_0x51b34f,{'showHidden':![],'depth':null}));});}function listDeviceStates(){Promise[_0x13df('0x15')]()[_0x13df('0x19')](ami[_0x13df('0x1a')]())[_0x13df('0x16')](function(_0x2c6329){logger['error'](_0x13df('0x1b'),util[_0x13df('0x18')](_0x2c6329,{'showHidden':![],'depth':null}));});}function showPeersStatus(){Promise[_0x13df('0x15')]()[_0x13df('0x19')](ami[_0x13df('0x1c')]())[_0x13df('0x16')](function(_0x4778bb){logger[_0x13df('0x17')]('[userReport][sippeerstatus]',util[_0x13df('0x18')](_0x4778bb,{'showHidden':![],'depth':null}));});}UserReport[_0x13df('0x1d')]['syncRealtimeShow']=function(){setInterval(function(){BPromise[_0x13df('0x15')]()[_0x13df('0x19')](showSipRegistrations())[_0x13df('0x19')](listDeviceStates())['then'](showPeersStatus());},0x32c8);};UserReport['prototype']['isNotNull']=function(_0x492ca2){return _0x492ca2!==null&&!_[_0x13df('0x1e')](_0x492ca2);};UserReport[_0x13df('0x1d')][_0x13df('0x1f')]=function(_0x227b8a,_0x50ebad,_0x45dad2){io['to'](_0x227b8a)[_0x13df('0x1f')](_0x50ebad,_0x45dad2);};UserReport[_0x13df('0x1d')][_0x13df('0xf')]=function(_0x211bda){try{if(this['isNotNull'](_0x211bda)){logger[_0x13df('0x20')]('[userReport][registry]\x20registry:%s\x20state:%s',_0x211bda['username'],_0x211bda[_0x13df('0x21')]);logger[_0x13df('0x22')]('[userReport][registry]',util['inspect'](_0x211bda,{'showHidden':![],'depth':null}));var _0x2b7716=_[_0x13df('0x23')](this[_0x13df('0xb')],{'defaultuser':_0x211bda[_0x13df('0x24')]});if(_0x2b7716){_0x211bda[_0x13df('0x25')]=_0x211bda[_0x13df('0x21')];_[_0x13df('0x26')](_0x2b7716,_[_0x13df('0x27')](_0x211bda,[_0x13df('0x28'),_0x13df('0x29'),'username',_0x13df('0x21')]));logger[_0x13df('0x22')](_0x13df('0x2a'),util[_0x13df('0x18')](_0x2b7716,{'showHidden':![],'depth':null}));this[_0x13df('0x1f')](util[_0x13df('0x2b')](_0x13df('0x2c'),_0x2b7716[_0x13df('0x2d')]),'trunk:save',_0x2b7716);}}}catch(_0x3174ad){logger['error'](_0x13df('0x2e'),util[_0x13df('0x18')](_0x3174ad,{'showHidden':![],'depth':null}));}};UserReport['prototype']['syncDeviceState']=function(_0x306a7c){try{if(this['isNotNull'](_0x306a7c)){logger['info']('[userReport][devicestatechange]\x20device:%s\x20state:%s',_0x306a7c['device'],_0x306a7c[_0x13df('0x21')]);logger[_0x13df('0x22')]('[userReport][devicestatechange]',util['inspect'](_0x306a7c,{'showHidden':![],'depth':null}));if(this[_0x13df('0xc')][_0x306a7c[_0x13df('0x2f')]]){if(!this[_0x13df('0xc')][_0x306a7c[_0x13df('0x2f')]][_0x13df('0x30')]||_0x306a7c[_0x13df('0x21')]['toLowerCase']()==_0x13df('0x31')){this[_0x13df('0xc')][_0x306a7c[_0x13df('0x2f')]][_0x13df('0x30')]=![];if(this[_0x13df('0xc')][_0x306a7c[_0x13df('0x2f')]][_0x13df('0x21')]!==_0x306a7c['state'][_0x13df('0x32')]()){this[_0x13df('0xc')][_0x306a7c[_0x13df('0x2f')]][_0x13df('0x33')]=_[_0x13df('0x34')](moment()[_0x13df('0x2b')]('x'));}this[_0x13df('0xc')][_0x306a7c[_0x13df('0x2f')]][_0x13df('0x21')]=_0x306a7c['state'][_0x13df('0x32')]();this['agents'][_0x306a7c[_0x13df('0x2f')]][_0x13df('0x35')](_0x306a7c);}}else if(this['telephones'][_0x306a7c[_0x13df('0x2f')]]){if(this[_0x13df('0xd')][_0x306a7c['device']]['state']!==_0x306a7c[_0x13df('0x21')][_0x13df('0x32')]()){this['telephones'][_0x306a7c[_0x13df('0x2f')]][_0x13df('0x33')]=_['toNumber'](moment()[_0x13df('0x2b')]('x'));}this[_0x13df('0xd')][_0x306a7c['device']][_0x13df('0x21')]=_0x306a7c[_0x13df('0x21')][_0x13df('0x32')]();logger['debug']('[userReport][devicestatechange]\x20sending\x20telephone:save\x20event:',util[_0x13df('0x18')](this[_0x13df('0xd')][_0x306a7c[_0x13df('0x2f')]],{'showHidden':![],'depth':null}));this[_0x13df('0x1f')](util[_0x13df('0x2b')](_0x13df('0x36'),this[_0x13df('0xd')][_0x306a7c['device']][_0x13df('0x2d')]),'telephone:save',this['telephones'][_0x306a7c[_0x13df('0x2f')]]);}else if(this['trunks'][_0x306a7c[_0x13df('0x2f')]]){if(this[_0x13df('0xb')][_0x306a7c[_0x13df('0x2f')]][_0x13df('0x21')]!==_0x306a7c[_0x13df('0x21')][_0x13df('0x32')]()){this['trunks'][_0x306a7c['device']][_0x13df('0x33')]=_[_0x13df('0x34')](moment()[_0x13df('0x2b')]('x'));}this[_0x13df('0xb')][_0x306a7c[_0x13df('0x2f')]][_0x13df('0x21')]=_0x306a7c[_0x13df('0x21')][_0x13df('0x32')]();logger['debug'](_0x13df('0x37'),util[_0x13df('0x18')](this[_0x13df('0xb')][_0x306a7c[_0x13df('0x2f')]],{'showHidden':![],'depth':null}));this['emit'](util['format'](_0x13df('0x2c'),this[_0x13df('0xb')][_0x306a7c[_0x13df('0x2f')]][_0x13df('0x2d')]),_0x13df('0x38'),this['trunks'][_0x306a7c[_0x13df('0x2f')]]);}else if(_[_0x13df('0x39')](_0x306a7c[_0x13df('0x2f')],_0x13df('0x3a'))){var _0x2727ef=_0x306a7c[_0x13df('0x2f')];var _0x3a0657=_0x2727ef['substring'](_0x2727ef[_0x13df('0x3b')]('/')+0x1,_0x2727ef[_0x13df('0x3b')]('@'));var _0x4fb85d=_[_0x13df('0x23')](this[_0x13df('0xc')],function(_0x27aaa3){return _0x27aaa3[_0x13df('0x3c')]==_0x3a0657||_0x27aaa3['phone']==_0x3a0657||_0x27aaa3[_0x13df('0x3d')]==_0x3a0657;});if(_0x4fb85d){if(_0x4fb85d[_0x13df('0x21')]!==_0x306a7c[_0x13df('0x21')][_0x13df('0x32')]()){_0x4fb85d[_0x13df('0x33')]=_[_0x13df('0x34')](moment()[_0x13df('0x2b')]('x'));}_0x4fb85d[_0x13df('0x21')]=_0x306a7c['state'][_0x13df('0x32')]();_0x4fb85d[_0x13df('0x30')]=!![];_0x4fb85d[_0x13df('0x35')](_0x306a7c);}}}}catch(_0x428ed3){logger[_0x13df('0x17')](_0x13df('0x3e'),util[_0x13df('0x18')](_0x428ed3,{'showHidden':![],'depth':null}));}};UserReport[_0x13df('0x1d')][_0x13df('0x13')]=function(_0x32c30f){try{if(this['isNotNull'](_0x32c30f)&&this['isNotNull'](_0x32c30f[_0x13df('0x12')])){logger[_0x13df('0x20')](_0x13df('0x3f'),_0x32c30f[_0x13df('0x40')],_0x32c30f[_0x13df('0x41')],_0x32c30f[_0x13df('0x12')]);logger[_0x13df('0x22')]('[userReport][peerstatus]',util['inspect'](_0x32c30f,{'showHidden':![],'depth':null}));if(this[_0x13df('0xc')][_0x32c30f['peer']]){if(!this[_0x13df('0xc')][_0x32c30f['peer']][_0x13df('0x30')]||_0x32c30f[_0x13df('0x12')][_0x13df('0x32')]()==_0x13df('0x42')){this['agents'][_0x32c30f[_0x13df('0x40')]][_0x13df('0x30')]=![];this[_0x13df('0xc')][_0x32c30f['peer']][_0x13df('0x43')]=_0x32c30f[_0x13df('0x12')][_0x13df('0x32')]();this[_0x13df('0xc')][_0x32c30f['peer']][_0x13df('0x41')]=_0x32c30f['address'];this[_0x13df('0xc')][_0x32c30f[_0x13df('0x40')]]['updateStatusRealtime'](_0x32c30f);}}else if(this['telephones'][_0x32c30f[_0x13df('0x40')]]){this[_0x13df('0xd')][_0x32c30f['peer']][_0x13df('0x43')]=_0x32c30f[_0x13df('0x12')][_0x13df('0x32')]();this['telephones'][_0x32c30f['peer']][_0x13df('0x41')]=_0x32c30f[_0x13df('0x41')];logger['debug'](_0x13df('0x44'),util[_0x13df('0x18')](this[_0x13df('0xd')][_0x32c30f['peer']],{'showHidden':![],'depth':null}));this[_0x13df('0x1f')](util[_0x13df('0x2b')](_0x13df('0x36'),this[_0x13df('0xd')][_0x32c30f[_0x13df('0x40')]][_0x13df('0x2d')]),'telephone:save',this['telephones'][_0x32c30f[_0x13df('0x40')]]);}else if(this['trunks'][_0x32c30f[_0x13df('0x40')]]){this['trunks'][_0x32c30f[_0x13df('0x40')]][_0x13df('0x43')]=_0x32c30f[_0x13df('0x12')]['toLowerCase']();this['trunks'][_0x32c30f['peer']][_0x13df('0x41')]=_0x32c30f[_0x13df('0x41')];logger[_0x13df('0x22')](_0x13df('0x45'),util['inspect'](this[_0x13df('0xb')][_0x32c30f[_0x13df('0x40')]],{'showHidden':![],'depth':null}));this['emit'](util[_0x13df('0x2b')](_0x13df('0x2c'),this[_0x13df('0xb')][_0x32c30f['peer']][_0x13df('0x2d')]),_0x13df('0x38'),this['trunks'][_0x32c30f[_0x13df('0x40')]]);}}}catch(_0x3b1df5){logger[_0x13df('0x17')](_0x13df('0x46'),util['inspect'](_0x3b1df5,{'showHidden':![],'depth':null}));}};module['exports']=UserReport;