Built motion from commit b0a9a629.|2.6.33
[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 _0xa6e7=['syncRegistry','devicestatechange','peerstatus','syncPeerStatus','syncRealtimeShow','then','actionSipShowRegistry','catch','error','[userReport][sipshowregistry]','inspect','resolve','actionDeviceStateList','[userReport][devicestatelist]','[userReport][sippeerstatus]','prototype','isUndefined','isNotNull','info','[userReport][registry]\x20registry:%s\x20state:%s','state','debug','[userReport][registry]','find','username','merge','omit','event','emit','format','trunk:%s','trunk:save','syncDeviceState','[userReport][devicestatechange]\x20device:%s\x20state:%s','[userReport][devicestatechange]','device','local','toLowerCase','toNumber','updateStatusRealtime','[userReport][devicestatechange]\x20sending\x20telephone:save\x20event:','telephone:%s','name','telephone:save','stateTime','[userReport][devicestatechange]\x20sending\x20trunk:save\x20event:','startsWith','substring','indexOf','peer','address','registered','status','[userReport][peerstatus]\x20sending\x20telephone:save\x20event:','[userReport][peerstatus]','exports','lodash','moment','util','ioredis','../../../config/environment','../../../config/logger','ami','redis','defaults','socket.io-emitter','trunks','agents','telephones','registryentry','bind','registry'];(function(_0x2fd85d,_0x39bb85){var _0x5380bf=function(_0x3d10b1){while(--_0x3d10b1){_0x2fd85d['push'](_0x2fd85d['shift']());}};_0x5380bf(++_0x39bb85);}(_0xa6e7,0x1e8));var _0x7a6e=function(_0x552e61,_0x41c1b0){_0x552e61=_0x552e61-0x0;var _0x570470=_0xa6e7[_0x552e61];return _0x570470;};'use strict';var _=require(_0x7a6e('0x0'));var moment=require(_0x7a6e('0x1'));var util=require(_0x7a6e('0x2'));var Redis=require(_0x7a6e('0x3'));var BPromise=require('bluebird');var config=require(_0x7a6e('0x4'));var logger=require(_0x7a6e('0x5'))(_0x7a6e('0x6'));var ami=require('../ami');config[_0x7a6e('0x7')]=_[_0x7a6e('0x8')](config[_0x7a6e('0x7')],{'host':'localhost','port':0x18eb});var io=require(_0x7a6e('0x9'))(new Redis(config[_0x7a6e('0x7')]));function UserReport(_0x5ca7e9){this[_0x7a6e('0xa')]=_0x5ca7e9[_0x7a6e('0xa')];this[_0x7a6e('0xb')]=_0x5ca7e9[_0x7a6e('0xb')];this[_0x7a6e('0xc')]=_0x5ca7e9[_0x7a6e('0xc')];ami['on'](_0x7a6e('0xd'),this['syncRegistry'][_0x7a6e('0xe')](this));ami['on'](_0x7a6e('0xf'),this[_0x7a6e('0x10')][_0x7a6e('0xe')](this));ami['on'](_0x7a6e('0x11'),this['syncDeviceState'][_0x7a6e('0xe')](this));ami['on'](_0x7a6e('0x12'),this[_0x7a6e('0x13')][_0x7a6e('0xe')](this));return this[_0x7a6e('0x14')]();}function showSipRegistrations(){Promise['resolve']()[_0x7a6e('0x15')](ami[_0x7a6e('0x16')]())[_0x7a6e('0x17')](function(_0x38cd9b){logger[_0x7a6e('0x18')](_0x7a6e('0x19'),util[_0x7a6e('0x1a')](_0x38cd9b,{'showHidden':![],'depth':null}));});}function listDeviceStates(){Promise[_0x7a6e('0x1b')]()[_0x7a6e('0x15')](ami[_0x7a6e('0x1c')]())['catch'](function(_0x178419){logger[_0x7a6e('0x18')](_0x7a6e('0x1d'),util['inspect'](_0x178419,{'showHidden':![],'depth':null}));});}function showPeersStatus(){Promise[_0x7a6e('0x1b')]()[_0x7a6e('0x15')](ami['actionSipPeerStatus']())[_0x7a6e('0x17')](function(_0x177dc9){logger[_0x7a6e('0x18')](_0x7a6e('0x1e'),util[_0x7a6e('0x1a')](_0x177dc9,{'showHidden':![],'depth':null}));});}UserReport[_0x7a6e('0x1f')][_0x7a6e('0x14')]=function(){setInterval(function(){BPromise[_0x7a6e('0x1b')]()[_0x7a6e('0x15')](showSipRegistrations())[_0x7a6e('0x15')](listDeviceStates())['then'](showPeersStatus());},0x32c8);};UserReport[_0x7a6e('0x1f')]['isNotNull']=function(_0x3ec495){return _0x3ec495!==null&&!_[_0x7a6e('0x20')](_0x3ec495);};UserReport[_0x7a6e('0x1f')]['emit']=function(_0x23b2aa,_0x10b2e5,_0x2e05d5){io['to'](_0x23b2aa)['emit'](_0x10b2e5,_0x2e05d5);};UserReport[_0x7a6e('0x1f')][_0x7a6e('0x10')]=function(_0x52e550){try{if(this[_0x7a6e('0x21')](_0x52e550)){logger[_0x7a6e('0x22')](_0x7a6e('0x23'),_0x52e550['username'],_0x52e550[_0x7a6e('0x24')]);logger[_0x7a6e('0x25')](_0x7a6e('0x26'),util[_0x7a6e('0x1a')](_0x52e550,{'showHidden':![],'depth':null}));var _0x312c99=_[_0x7a6e('0x27')](this[_0x7a6e('0xa')],{'defaultuser':_0x52e550[_0x7a6e('0x28')]});if(_0x312c99){_0x52e550['stateRegistry']=_0x52e550[_0x7a6e('0x24')];_[_0x7a6e('0x29')](_0x312c99,_[_0x7a6e('0x2a')](_0x52e550,[_0x7a6e('0x2b'),'actionid','username','state']));logger[_0x7a6e('0x25')]('[userReport][registry]\x20sending\x20trunk:save\x20event:',util[_0x7a6e('0x1a')](_0x312c99,{'showHidden':![],'depth':null}));this[_0x7a6e('0x2c')](util[_0x7a6e('0x2d')](_0x7a6e('0x2e'),_0x312c99['name']),_0x7a6e('0x2f'),_0x312c99);}}}catch(_0x10e21f){logger['error'](_0x7a6e('0x26'),util[_0x7a6e('0x1a')](_0x10e21f,{'showHidden':![],'depth':null}));}};UserReport[_0x7a6e('0x1f')][_0x7a6e('0x30')]=function(_0x2ef63f){try{if(this[_0x7a6e('0x21')](_0x2ef63f)){logger[_0x7a6e('0x22')](_0x7a6e('0x31'),_0x2ef63f['device'],_0x2ef63f[_0x7a6e('0x24')]);logger[_0x7a6e('0x25')](_0x7a6e('0x32'),util[_0x7a6e('0x1a')](_0x2ef63f,{'showHidden':![],'depth':null}));if(this['agents'][_0x2ef63f[_0x7a6e('0x33')]]){if(!this[_0x7a6e('0xb')][_0x2ef63f['device']][_0x7a6e('0x34')]||_0x2ef63f[_0x7a6e('0x24')][_0x7a6e('0x35')]()=='inuse'){this[_0x7a6e('0xb')][_0x2ef63f[_0x7a6e('0x33')]]['local']=![];if(this[_0x7a6e('0xb')][_0x2ef63f[_0x7a6e('0x33')]][_0x7a6e('0x24')]!==_0x2ef63f[_0x7a6e('0x24')]['toLowerCase']()){this[_0x7a6e('0xb')][_0x2ef63f[_0x7a6e('0x33')]]['stateTime']=_[_0x7a6e('0x36')](moment()[_0x7a6e('0x2d')]('x'));}this[_0x7a6e('0xb')][_0x2ef63f[_0x7a6e('0x33')]][_0x7a6e('0x24')]=_0x2ef63f['state'][_0x7a6e('0x35')]();this[_0x7a6e('0xb')][_0x2ef63f[_0x7a6e('0x33')]][_0x7a6e('0x37')](_0x2ef63f);}}else if(this['telephones'][_0x2ef63f[_0x7a6e('0x33')]]){if(this[_0x7a6e('0xc')][_0x2ef63f['device']][_0x7a6e('0x24')]!==_0x2ef63f['state'][_0x7a6e('0x35')]()){this[_0x7a6e('0xc')][_0x2ef63f[_0x7a6e('0x33')]]['stateTime']=_[_0x7a6e('0x36')](moment()[_0x7a6e('0x2d')]('x'));}this[_0x7a6e('0xc')][_0x2ef63f['device']]['state']=_0x2ef63f[_0x7a6e('0x24')][_0x7a6e('0x35')]();logger[_0x7a6e('0x25')](_0x7a6e('0x38'),util[_0x7a6e('0x1a')](this['telephones'][_0x2ef63f[_0x7a6e('0x33')]],{'showHidden':![],'depth':null}));this[_0x7a6e('0x2c')](util[_0x7a6e('0x2d')](_0x7a6e('0x39'),this[_0x7a6e('0xc')][_0x2ef63f[_0x7a6e('0x33')]][_0x7a6e('0x3a')]),_0x7a6e('0x3b'),this[_0x7a6e('0xc')][_0x2ef63f['device']]);}else if(this['trunks'][_0x2ef63f[_0x7a6e('0x33')]]){if(this['trunks'][_0x2ef63f[_0x7a6e('0x33')]][_0x7a6e('0x24')]!==_0x2ef63f['state'][_0x7a6e('0x35')]()){this[_0x7a6e('0xa')][_0x2ef63f['device']][_0x7a6e('0x3c')]=_[_0x7a6e('0x36')](moment()['format']('x'));}this['trunks'][_0x2ef63f[_0x7a6e('0x33')]][_0x7a6e('0x24')]=_0x2ef63f['state'][_0x7a6e('0x35')]();logger[_0x7a6e('0x25')](_0x7a6e('0x3d'),util[_0x7a6e('0x1a')](this[_0x7a6e('0xa')][_0x2ef63f['device']],{'showHidden':![],'depth':null}));this[_0x7a6e('0x2c')](util[_0x7a6e('0x2d')](_0x7a6e('0x2e'),this['trunks'][_0x2ef63f[_0x7a6e('0x33')]][_0x7a6e('0x3a')]),'trunk:save',this[_0x7a6e('0xa')][_0x2ef63f[_0x7a6e('0x33')]]);}else if(_[_0x7a6e('0x3e')](_0x2ef63f[_0x7a6e('0x33')],'Local')){var _0x56fae6=_0x2ef63f['device'];var _0x3b81b0=_0x56fae6[_0x7a6e('0x3f')](_0x56fae6['indexOf']('/')+0x1,_0x56fae6[_0x7a6e('0x40')]('@'));var _0x900334=_[_0x7a6e('0x27')](this[_0x7a6e('0xb')],function(_0x2a72b0){return _0x2a72b0['mobile']==_0x3b81b0||_0x2a72b0['phone']==_0x3b81b0||_0x2a72b0['accountcode']==_0x3b81b0;});if(_0x900334){if(_0x900334[_0x7a6e('0x24')]!==_0x2ef63f[_0x7a6e('0x24')][_0x7a6e('0x35')]()){_0x900334['stateTime']=_[_0x7a6e('0x36')](moment()['format']('x'));}_0x900334[_0x7a6e('0x24')]=_0x2ef63f['state'][_0x7a6e('0x35')]();_0x900334[_0x7a6e('0x34')]=!![];_0x900334[_0x7a6e('0x37')](_0x2ef63f);}}}}catch(_0x5e0074){logger[_0x7a6e('0x18')]('[userReport][devicestatechange]',util[_0x7a6e('0x1a')](_0x5e0074,{'showHidden':![],'depth':null}));}};UserReport[_0x7a6e('0x1f')][_0x7a6e('0x13')]=function(_0x52674b){try{if(this[_0x7a6e('0x21')](_0x52674b)&&this['isNotNull'](_0x52674b[_0x7a6e('0x12')])){logger['info']('[userReport][peerstatus]\x20peer:%s\x20address:%s\x20status:%s',_0x52674b[_0x7a6e('0x41')],_0x52674b[_0x7a6e('0x42')],_0x52674b[_0x7a6e('0x12')]);logger[_0x7a6e('0x25')]('[userReport][peerstatus]',util['inspect'](_0x52674b,{'showHidden':![],'depth':null}));if(this[_0x7a6e('0xb')][_0x52674b[_0x7a6e('0x41')]]){if(!this[_0x7a6e('0xb')][_0x52674b['peer']][_0x7a6e('0x34')]||_0x52674b[_0x7a6e('0x12')][_0x7a6e('0x35')]()==_0x7a6e('0x43')){this[_0x7a6e('0xb')][_0x52674b[_0x7a6e('0x41')]]['local']=![];this[_0x7a6e('0xb')][_0x52674b[_0x7a6e('0x41')]]['status']=_0x52674b['peerstatus'][_0x7a6e('0x35')]();this[_0x7a6e('0xb')][_0x52674b[_0x7a6e('0x41')]]['address']=_0x52674b[_0x7a6e('0x42')];this[_0x7a6e('0xb')][_0x52674b[_0x7a6e('0x41')]][_0x7a6e('0x37')](_0x52674b);}}else if(this[_0x7a6e('0xc')][_0x52674b[_0x7a6e('0x41')]]){this[_0x7a6e('0xc')][_0x52674b[_0x7a6e('0x41')]][_0x7a6e('0x44')]=_0x52674b[_0x7a6e('0x12')]['toLowerCase']();this[_0x7a6e('0xc')][_0x52674b[_0x7a6e('0x41')]][_0x7a6e('0x42')]=_0x52674b['address'];logger['debug'](_0x7a6e('0x45'),util[_0x7a6e('0x1a')](this[_0x7a6e('0xc')][_0x52674b['peer']],{'showHidden':![],'depth':null}));this['emit'](util['format'](_0x7a6e('0x39'),this[_0x7a6e('0xc')][_0x52674b[_0x7a6e('0x41')]][_0x7a6e('0x3a')]),_0x7a6e('0x3b'),this[_0x7a6e('0xc')][_0x52674b[_0x7a6e('0x41')]]);}else if(this[_0x7a6e('0xa')][_0x52674b[_0x7a6e('0x41')]]){this[_0x7a6e('0xa')][_0x52674b[_0x7a6e('0x41')]][_0x7a6e('0x44')]=_0x52674b['peerstatus'][_0x7a6e('0x35')]();this[_0x7a6e('0xa')][_0x52674b[_0x7a6e('0x41')]][_0x7a6e('0x42')]=_0x52674b[_0x7a6e('0x42')];logger[_0x7a6e('0x25')]('[userReport][peerstatus]\x20sending\x20trunk:save\x20event:',util[_0x7a6e('0x1a')](this['trunks'][_0x52674b[_0x7a6e('0x41')]],{'showHidden':![],'depth':null}));this[_0x7a6e('0x2c')](util['format']('trunk:%s',this[_0x7a6e('0xa')][_0x52674b[_0x7a6e('0x41')]][_0x7a6e('0x3a')]),'trunk:save',this[_0x7a6e('0xa')][_0x52674b[_0x7a6e('0x41')]]);}}}catch(_0x156f28){logger[_0x7a6e('0x18')](_0x7a6e('0x46'),util[_0x7a6e('0x1a')](_0x156f28,{'showHidden':![],'depth':null}));}};module[_0x7a6e('0x47')]=UserReport;