Built motion from commit 449495f6.|2.6.27
[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 _0x2de2=['[userReport][sippeerstatus]','prototype','isNotNull','emit','username','[userReport][registry]','find','stateRegistry','merge','event','actionid','state','debug','format','trunk:%s','name','trunk:save','info','[userReport][devicestatechange]\x20device:%s\x20state:%s','device','[userReport][devicestatechange]','local','toLowerCase','inuse','toNumber','updateStatusRealtime','stateTime','[userReport][devicestatechange]\x20sending\x20telephone:save\x20event:','telephone:save','startsWith','substring','indexOf','mobile','accountcode','syncPeerStatus','[userReport][peerstatus]\x20peer:%s\x20address:%s\x20status:%s','peer','[userReport][peerstatus]','registered','status','address','[userReport][peerstatus]\x20sending\x20telephone:save\x20event:','telephone:%s','[userReport][peerstatus]\x20sending\x20trunk:save\x20event:','exports','lodash','moment','util','bluebird','../../../config/environment','../../../config/logger','ami','../ami','redis','localhost','socket.io-emitter','trunks','agents','telephones','registryentry','syncRegistry','bind','registry','devicestatechange','syncDeviceState','peerstatus','syncRealtimeShow','actionSipShowRegistry','catch','error','inspect','resolve','then','actionDeviceStateList','[userReport][devicestatelist]','actionSipPeerStatus'];(function(_0x24ab46,_0x21a944){var _0x2557a7=function(_0x5c241d){while(--_0x5c241d){_0x24ab46['push'](_0x24ab46['shift']());}};_0x2557a7(++_0x21a944);}(_0x2de2,0x1a9));var _0x22de=function(_0x15980c,_0x322a48){_0x15980c=_0x15980c-0x0;var _0x3693fb=_0x2de2[_0x15980c];return _0x3693fb;};'use strict';var _=require(_0x22de('0x0'));var moment=require(_0x22de('0x1'));var util=require(_0x22de('0x2'));var Redis=require('ioredis');var BPromise=require(_0x22de('0x3'));var config=require(_0x22de('0x4'));var logger=require(_0x22de('0x5'))(_0x22de('0x6'));var ami=require(_0x22de('0x7'));config['redis']=_['defaults'](config[_0x22de('0x8')],{'host':_0x22de('0x9'),'port':0x18eb});var io=require(_0x22de('0xa'))(new Redis(config[_0x22de('0x8')]));function UserReport(_0x2d0059){this[_0x22de('0xb')]=_0x2d0059[_0x22de('0xb')];this[_0x22de('0xc')]=_0x2d0059[_0x22de('0xc')];this['telephones']=_0x2d0059[_0x22de('0xd')];ami['on'](_0x22de('0xe'),this[_0x22de('0xf')][_0x22de('0x10')](this));ami['on'](_0x22de('0x11'),this[_0x22de('0xf')][_0x22de('0x10')](this));ami['on'](_0x22de('0x12'),this[_0x22de('0x13')]['bind'](this));ami['on'](_0x22de('0x14'),this['syncPeerStatus'][_0x22de('0x10')](this));return this[_0x22de('0x15')]();}function showSipRegistrations(){Promise['resolve']()['then'](ami[_0x22de('0x16')]())[_0x22de('0x17')](function(_0xae5a9a){logger[_0x22de('0x18')]('[userReport][sipshowregistry]',util[_0x22de('0x19')](_0xae5a9a,{'showHidden':![],'depth':null}));});}function listDeviceStates(){Promise[_0x22de('0x1a')]()[_0x22de('0x1b')](ami[_0x22de('0x1c')]())[_0x22de('0x17')](function(_0x33f44a){logger[_0x22de('0x18')](_0x22de('0x1d'),util[_0x22de('0x19')](_0x33f44a,{'showHidden':![],'depth':null}));});}function showPeersStatus(){Promise['resolve']()[_0x22de('0x1b')](ami[_0x22de('0x1e')]())[_0x22de('0x17')](function(_0x1bbba3){logger[_0x22de('0x18')](_0x22de('0x1f'),util[_0x22de('0x19')](_0x1bbba3,{'showHidden':![],'depth':null}));});}UserReport['prototype'][_0x22de('0x15')]=function(){setInterval(function(){BPromise[_0x22de('0x1a')]()[_0x22de('0x1b')](showSipRegistrations())['then'](listDeviceStates())['then'](showPeersStatus());},0x32c8);};UserReport[_0x22de('0x20')][_0x22de('0x21')]=function(_0x42b036){return _0x42b036!==null&&!_['isUndefined'](_0x42b036);};UserReport['prototype']['emit']=function(_0x3ae166,_0x398886,_0x4e685e){io['to'](_0x3ae166)[_0x22de('0x22')](_0x398886,_0x4e685e);};UserReport[_0x22de('0x20')]['syncRegistry']=function(_0x224349){try{if(this[_0x22de('0x21')](_0x224349)){logger['info']('[userReport][registry]\x20registry:%s\x20state:%s',_0x224349[_0x22de('0x23')],_0x224349['state']);logger['debug'](_0x22de('0x24'),util[_0x22de('0x19')](_0x224349,{'showHidden':![],'depth':null}));var _0x404182=_[_0x22de('0x25')](this[_0x22de('0xb')],{'defaultuser':_0x224349[_0x22de('0x23')]});if(_0x404182){_0x224349[_0x22de('0x26')]=_0x224349['state'];_[_0x22de('0x27')](_0x404182,_['omit'](_0x224349,[_0x22de('0x28'),_0x22de('0x29'),_0x22de('0x23'),_0x22de('0x2a')]));logger[_0x22de('0x2b')]('[userReport][registry]\x20sending\x20trunk:save\x20event:',util[_0x22de('0x19')](_0x404182,{'showHidden':![],'depth':null}));this['emit'](util[_0x22de('0x2c')](_0x22de('0x2d'),_0x404182[_0x22de('0x2e')]),_0x22de('0x2f'),_0x404182);}}}catch(_0x1350aa){logger[_0x22de('0x18')]('[userReport][registry]',util[_0x22de('0x19')](_0x1350aa,{'showHidden':![],'depth':null}));}};UserReport['prototype'][_0x22de('0x13')]=function(_0x5812fa){try{if(this[_0x22de('0x21')](_0x5812fa)){logger[_0x22de('0x30')](_0x22de('0x31'),_0x5812fa[_0x22de('0x32')],_0x5812fa['state']);logger[_0x22de('0x2b')](_0x22de('0x33'),util[_0x22de('0x19')](_0x5812fa,{'showHidden':![],'depth':null}));if(this[_0x22de('0xc')][_0x5812fa[_0x22de('0x32')]]){if(!this[_0x22de('0xc')][_0x5812fa['device']][_0x22de('0x34')]||_0x5812fa[_0x22de('0x2a')][_0x22de('0x35')]()==_0x22de('0x36')){this[_0x22de('0xc')][_0x5812fa[_0x22de('0x32')]][_0x22de('0x34')]=![];if(this['agents'][_0x5812fa['device']][_0x22de('0x2a')]!==_0x5812fa['state'][_0x22de('0x35')]()){this['agents'][_0x5812fa[_0x22de('0x32')]]['stateTime']=_[_0x22de('0x37')](moment()['format']('x'));}this[_0x22de('0xc')][_0x5812fa[_0x22de('0x32')]][_0x22de('0x2a')]=_0x5812fa[_0x22de('0x2a')][_0x22de('0x35')]();this[_0x22de('0xc')][_0x5812fa[_0x22de('0x32')]][_0x22de('0x38')](_0x5812fa);}}else if(this[_0x22de('0xd')][_0x5812fa[_0x22de('0x32')]]){if(this[_0x22de('0xd')][_0x5812fa[_0x22de('0x32')]][_0x22de('0x2a')]!==_0x5812fa['state']['toLowerCase']()){this[_0x22de('0xd')][_0x5812fa['device']][_0x22de('0x39')]=_[_0x22de('0x37')](moment()['format']('x'));}this['telephones'][_0x5812fa[_0x22de('0x32')]]['state']=_0x5812fa[_0x22de('0x2a')][_0x22de('0x35')]();logger['debug'](_0x22de('0x3a'),util[_0x22de('0x19')](this[_0x22de('0xd')][_0x5812fa['device']],{'showHidden':![],'depth':null}));this[_0x22de('0x22')](util[_0x22de('0x2c')]('telephone:%s',this[_0x22de('0xd')][_0x5812fa['device']][_0x22de('0x2e')]),_0x22de('0x3b'),this[_0x22de('0xd')][_0x5812fa['device']]);}else if(this[_0x22de('0xb')][_0x5812fa[_0x22de('0x32')]]){if(this[_0x22de('0xb')][_0x5812fa[_0x22de('0x32')]][_0x22de('0x2a')]!==_0x5812fa[_0x22de('0x2a')][_0x22de('0x35')]()){this['trunks'][_0x5812fa[_0x22de('0x32')]][_0x22de('0x39')]=_['toNumber'](moment()[_0x22de('0x2c')]('x'));}this[_0x22de('0xb')][_0x5812fa[_0x22de('0x32')]][_0x22de('0x2a')]=_0x5812fa[_0x22de('0x2a')][_0x22de('0x35')]();logger[_0x22de('0x2b')]('[userReport][devicestatechange]\x20sending\x20trunk:save\x20event:',util[_0x22de('0x19')](this[_0x22de('0xb')][_0x5812fa[_0x22de('0x32')]],{'showHidden':![],'depth':null}));this['emit'](util[_0x22de('0x2c')](_0x22de('0x2d'),this[_0x22de('0xb')][_0x5812fa[_0x22de('0x32')]][_0x22de('0x2e')]),_0x22de('0x2f'),this['trunks'][_0x5812fa[_0x22de('0x32')]]);}else if(_[_0x22de('0x3c')](_0x5812fa[_0x22de('0x32')],'Local')){var _0x302ffa=_0x5812fa[_0x22de('0x32')];var _0xde9730=_0x302ffa[_0x22de('0x3d')](_0x302ffa['indexOf']('/')+0x1,_0x302ffa[_0x22de('0x3e')]('@'));var _0x3f0952=_[_0x22de('0x25')](this[_0x22de('0xc')],function(_0x578608){return _0x578608[_0x22de('0x3f')]==_0xde9730||_0x578608['phone']==_0xde9730||_0x578608[_0x22de('0x40')]==_0xde9730;});if(_0x3f0952){if(_0x3f0952[_0x22de('0x2a')]!==_0x5812fa[_0x22de('0x2a')]['toLowerCase']()){_0x3f0952[_0x22de('0x39')]=_[_0x22de('0x37')](moment()[_0x22de('0x2c')]('x'));}_0x3f0952[_0x22de('0x2a')]=_0x5812fa['state'][_0x22de('0x35')]();_0x3f0952['local']=!![];_0x3f0952[_0x22de('0x38')](_0x5812fa);}}}}catch(_0x1c6c17){logger[_0x22de('0x18')](_0x22de('0x33'),util[_0x22de('0x19')](_0x1c6c17,{'showHidden':![],'depth':null}));}};UserReport['prototype'][_0x22de('0x41')]=function(_0x393a7f){try{if(this[_0x22de('0x21')](_0x393a7f)&&this[_0x22de('0x21')](_0x393a7f[_0x22de('0x14')])){logger[_0x22de('0x30')](_0x22de('0x42'),_0x393a7f[_0x22de('0x43')],_0x393a7f['address'],_0x393a7f[_0x22de('0x14')]);logger['debug'](_0x22de('0x44'),util['inspect'](_0x393a7f,{'showHidden':![],'depth':null}));if(this['agents'][_0x393a7f[_0x22de('0x43')]]){if(!this[_0x22de('0xc')][_0x393a7f[_0x22de('0x43')]][_0x22de('0x34')]||_0x393a7f[_0x22de('0x14')]['toLowerCase']()==_0x22de('0x45')){this['agents'][_0x393a7f[_0x22de('0x43')]][_0x22de('0x34')]=![];this[_0x22de('0xc')][_0x393a7f['peer']][_0x22de('0x46')]=_0x393a7f[_0x22de('0x14')]['toLowerCase']();this[_0x22de('0xc')][_0x393a7f[_0x22de('0x43')]][_0x22de('0x47')]=_0x393a7f[_0x22de('0x47')];this[_0x22de('0xc')][_0x393a7f['peer']][_0x22de('0x38')](_0x393a7f);}}else if(this[_0x22de('0xd')][_0x393a7f[_0x22de('0x43')]]){this[_0x22de('0xd')][_0x393a7f['peer']]['status']=_0x393a7f['peerstatus']['toLowerCase']();this[_0x22de('0xd')][_0x393a7f[_0x22de('0x43')]]['address']=_0x393a7f[_0x22de('0x47')];logger[_0x22de('0x2b')](_0x22de('0x48'),util[_0x22de('0x19')](this['telephones'][_0x393a7f[_0x22de('0x43')]],{'showHidden':![],'depth':null}));this[_0x22de('0x22')](util['format'](_0x22de('0x49'),this[_0x22de('0xd')][_0x393a7f[_0x22de('0x43')]][_0x22de('0x2e')]),'telephone:save',this['telephones'][_0x393a7f[_0x22de('0x43')]]);}else if(this[_0x22de('0xb')][_0x393a7f[_0x22de('0x43')]]){this['trunks'][_0x393a7f[_0x22de('0x43')]][_0x22de('0x46')]=_0x393a7f['peerstatus']['toLowerCase']();this[_0x22de('0xb')][_0x393a7f[_0x22de('0x43')]][_0x22de('0x47')]=_0x393a7f[_0x22de('0x47')];logger[_0x22de('0x2b')](_0x22de('0x4a'),util[_0x22de('0x19')](this[_0x22de('0xb')][_0x393a7f[_0x22de('0x43')]],{'showHidden':![],'depth':null}));this[_0x22de('0x22')](util[_0x22de('0x2c')](_0x22de('0x2d'),this[_0x22de('0xb')][_0x393a7f[_0x22de('0x43')]][_0x22de('0x2e')]),_0x22de('0x2f'),this[_0x22de('0xb')][_0x393a7f[_0x22de('0x43')]]);}}}catch(_0x3070e1){logger[_0x22de('0x18')]('[userReport][peerstatus]',util[_0x22de('0x19')](_0x3070e1,{'showHidden':![],'depth':null}));}};module[_0x22de('0x4b')]=UserReport;