Built motion from commit da617fac.|2.6.6
[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 _0xa732=['lodash','moment','util','ioredis','bluebird','../../../config/environment','../../../config/logger','ami','../ami','redis','defaults','localhost','socket.io-emitter','trunks','agents','telephones','registryentry','registry','syncRegistry','devicestatechange','syncDeviceState','bind','syncPeerStatus','syncRealtimeShow','resolve','then','catch','error','[userReport][sipshowregistry]','[userReport][devicestatelist]','actionSipPeerStatus','[userReport][sippeerstatus]','inspect','prototype','isNotNull','isUndefined','emit','info','[userReport][registry]\x20registry:%s\x20state:%s','username','state','stateRegistry','merge','event','actionid','[userReport][registry]\x20sending\x20trunk:save\x20event:','format','trunk:%s','name','[userReport][devicestatechange]\x20device:%s\x20state:%s','device','debug','[userReport][devicestatechange]','local','toLowerCase','inuse','toNumber','updateStatusRealtime','stateTime','telephone:%s','telephone:save','[userReport][devicestatechange]\x20sending\x20trunk:save\x20event:','trunk:save','startsWith','Local','substring','indexOf','find','phone','accountcode','peerstatus','peer','address','[userReport][peerstatus]','registered','status','[userReport][peerstatus]\x20sending\x20telephone:save\x20event:','[userReport][peerstatus]\x20sending\x20trunk:save\x20event:','exports'];(function(_0x11c5f5,_0x5a2c47){var _0x35f0ea=function(_0x486a14){while(--_0x486a14){_0x11c5f5['push'](_0x11c5f5['shift']());}};_0x35f0ea(++_0x5a2c47);}(_0xa732,0x18b));var _0x2a73=function(_0x4f397c,_0x4df4dd){_0x4f397c=_0x4f397c-0x0;var _0x3ed155=_0xa732[_0x4f397c];return _0x3ed155;};'use strict';var _=require(_0x2a73('0x0'));var moment=require(_0x2a73('0x1'));var util=require(_0x2a73('0x2'));var Redis=require(_0x2a73('0x3'));var BPromise=require(_0x2a73('0x4'));var config=require(_0x2a73('0x5'));var logger=require(_0x2a73('0x6'))(_0x2a73('0x7'));var ami=require(_0x2a73('0x8'));config[_0x2a73('0x9')]=_[_0x2a73('0xa')](config[_0x2a73('0x9')],{'host':_0x2a73('0xb'),'port':0x18eb});var io=require(_0x2a73('0xc'))(new Redis(config[_0x2a73('0x9')]));function UserReport(_0x247480){this['trunks']=_0x247480[_0x2a73('0xd')];this[_0x2a73('0xe')]=_0x247480[_0x2a73('0xe')];this[_0x2a73('0xf')]=_0x247480[_0x2a73('0xf')];ami['on'](_0x2a73('0x10'),this['syncRegistry']['bind'](this));ami['on'](_0x2a73('0x11'),this[_0x2a73('0x12')]['bind'](this));ami['on'](_0x2a73('0x13'),this[_0x2a73('0x14')][_0x2a73('0x15')](this));ami['on']('peerstatus',this[_0x2a73('0x16')][_0x2a73('0x15')](this));return this[_0x2a73('0x17')]();}function showSipRegistrations(){Promise[_0x2a73('0x18')]()[_0x2a73('0x19')](ami['actionSipShowRegistry']())[_0x2a73('0x1a')](function(_0xa95f77){logger[_0x2a73('0x1b')](_0x2a73('0x1c'),util['inspect'](_0xa95f77,{'showHidden':![],'depth':null}));});}function listDeviceStates(){Promise[_0x2a73('0x18')]()['then'](ami['actionDeviceStateList']())[_0x2a73('0x1a')](function(_0xc16626){logger[_0x2a73('0x1b')](_0x2a73('0x1d'),util['inspect'](_0xc16626,{'showHidden':![],'depth':null}));});}function showPeersStatus(){Promise[_0x2a73('0x18')]()['then'](ami[_0x2a73('0x1e')]())['catch'](function(_0x4cfbc5){logger[_0x2a73('0x1b')](_0x2a73('0x1f'),util[_0x2a73('0x20')](_0x4cfbc5,{'showHidden':![],'depth':null}));});}UserReport[_0x2a73('0x21')][_0x2a73('0x17')]=function(){setInterval(function(){BPromise['resolve']()[_0x2a73('0x19')](showSipRegistrations())['then'](listDeviceStates())[_0x2a73('0x19')](showPeersStatus());},0x32c8);};UserReport[_0x2a73('0x21')][_0x2a73('0x22')]=function(_0x43cc6e){return _0x43cc6e!==null&&!_[_0x2a73('0x23')](_0x43cc6e);};UserReport[_0x2a73('0x21')][_0x2a73('0x24')]=function(_0x511e36,_0x198b92,_0x18e12c){io['to'](_0x511e36)[_0x2a73('0x24')](_0x198b92,_0x18e12c);};UserReport[_0x2a73('0x21')]['syncRegistry']=function(_0x159e19){try{if(this[_0x2a73('0x22')](_0x159e19)){logger[_0x2a73('0x25')](_0x2a73('0x26'),_0x159e19[_0x2a73('0x27')],_0x159e19[_0x2a73('0x28')]);logger['debug']('[userReport][registry]',util['inspect'](_0x159e19,{'showHidden':![],'depth':null}));var _0x333864=_['find'](this['trunks'],{'defaultuser':_0x159e19[_0x2a73('0x27')]});if(_0x333864){_0x159e19[_0x2a73('0x29')]=_0x159e19['state'];_[_0x2a73('0x2a')](_0x333864,_['omit'](_0x159e19,[_0x2a73('0x2b'),_0x2a73('0x2c'),'username',_0x2a73('0x28')]));logger['debug'](_0x2a73('0x2d'),util['inspect'](_0x333864,{'showHidden':![],'depth':null}));this[_0x2a73('0x24')](util[_0x2a73('0x2e')](_0x2a73('0x2f'),_0x333864[_0x2a73('0x30')]),'trunk:save',_0x333864);}}}catch(_0x3243ac){logger[_0x2a73('0x1b')]('[userReport][registry]',util[_0x2a73('0x20')](_0x3243ac,{'showHidden':![],'depth':null}));}};UserReport[_0x2a73('0x21')][_0x2a73('0x14')]=function(_0x3ae13d){try{if(this[_0x2a73('0x22')](_0x3ae13d)){logger[_0x2a73('0x25')](_0x2a73('0x31'),_0x3ae13d[_0x2a73('0x32')],_0x3ae13d['state']);logger[_0x2a73('0x33')](_0x2a73('0x34'),util[_0x2a73('0x20')](_0x3ae13d,{'showHidden':![],'depth':null}));if(this[_0x2a73('0xe')][_0x3ae13d['device']]){if(!this[_0x2a73('0xe')][_0x3ae13d[_0x2a73('0x32')]][_0x2a73('0x35')]||_0x3ae13d[_0x2a73('0x28')][_0x2a73('0x36')]()==_0x2a73('0x37')){this[_0x2a73('0xe')][_0x3ae13d[_0x2a73('0x32')]][_0x2a73('0x35')]=![];if(this['agents'][_0x3ae13d[_0x2a73('0x32')]][_0x2a73('0x28')]!==_0x3ae13d['state']['toLowerCase']()){this[_0x2a73('0xe')][_0x3ae13d['device']]['stateTime']=_[_0x2a73('0x38')](moment()['format']('x'));}this[_0x2a73('0xe')][_0x3ae13d[_0x2a73('0x32')]][_0x2a73('0x28')]=_0x3ae13d[_0x2a73('0x28')]['toLowerCase']();this[_0x2a73('0xe')][_0x3ae13d['device']][_0x2a73('0x39')](_0x3ae13d);}}else if(this[_0x2a73('0xf')][_0x3ae13d[_0x2a73('0x32')]]){if(this[_0x2a73('0xf')][_0x3ae13d[_0x2a73('0x32')]][_0x2a73('0x28')]!==_0x3ae13d[_0x2a73('0x28')][_0x2a73('0x36')]()){this[_0x2a73('0xf')][_0x3ae13d[_0x2a73('0x32')]][_0x2a73('0x3a')]=_['toNumber'](moment()[_0x2a73('0x2e')]('x'));}this[_0x2a73('0xf')][_0x3ae13d[_0x2a73('0x32')]][_0x2a73('0x28')]=_0x3ae13d['state']['toLowerCase']();logger[_0x2a73('0x33')]('[userReport][devicestatechange]\x20sending\x20telephone:save\x20event:',util[_0x2a73('0x20')](this[_0x2a73('0xf')][_0x3ae13d[_0x2a73('0x32')]],{'showHidden':![],'depth':null}));this[_0x2a73('0x24')](util[_0x2a73('0x2e')](_0x2a73('0x3b'),this[_0x2a73('0xf')][_0x3ae13d[_0x2a73('0x32')]]['name']),_0x2a73('0x3c'),this[_0x2a73('0xf')][_0x3ae13d[_0x2a73('0x32')]]);}else if(this['trunks'][_0x3ae13d[_0x2a73('0x32')]]){if(this[_0x2a73('0xd')][_0x3ae13d[_0x2a73('0x32')]][_0x2a73('0x28')]!==_0x3ae13d[_0x2a73('0x28')][_0x2a73('0x36')]()){this[_0x2a73('0xd')][_0x3ae13d[_0x2a73('0x32')]][_0x2a73('0x3a')]=_['toNumber'](moment()[_0x2a73('0x2e')]('x'));}this['trunks'][_0x3ae13d['device']][_0x2a73('0x28')]=_0x3ae13d[_0x2a73('0x28')][_0x2a73('0x36')]();logger['debug'](_0x2a73('0x3d'),util[_0x2a73('0x20')](this[_0x2a73('0xd')][_0x3ae13d[_0x2a73('0x32')]],{'showHidden':![],'depth':null}));this[_0x2a73('0x24')](util[_0x2a73('0x2e')](_0x2a73('0x2f'),this['trunks'][_0x3ae13d[_0x2a73('0x32')]][_0x2a73('0x30')]),_0x2a73('0x3e'),this[_0x2a73('0xd')][_0x3ae13d['device']]);}else if(_[_0x2a73('0x3f')](_0x3ae13d[_0x2a73('0x32')],_0x2a73('0x40'))){var _0x4144d7=_0x3ae13d[_0x2a73('0x32')];var _0x4a1e49=_0x4144d7[_0x2a73('0x41')](_0x4144d7[_0x2a73('0x42')]('/')+0x1,_0x4144d7['indexOf']('@'));var _0x192178=_[_0x2a73('0x43')](this['agents'],function(_0x57c2cb){return _0x57c2cb['mobile']==_0x4a1e49||_0x57c2cb[_0x2a73('0x44')]==_0x4a1e49||_0x57c2cb[_0x2a73('0x45')]==_0x4a1e49;});if(_0x192178){if(_0x192178['state']!==_0x3ae13d[_0x2a73('0x28')][_0x2a73('0x36')]()){_0x192178['stateTime']=_['toNumber'](moment()['format']('x'));}_0x192178[_0x2a73('0x28')]=_0x3ae13d[_0x2a73('0x28')][_0x2a73('0x36')]();_0x192178[_0x2a73('0x35')]=!![];_0x192178[_0x2a73('0x39')](_0x3ae13d);}}}}catch(_0x402b69){logger[_0x2a73('0x1b')](_0x2a73('0x34'),util[_0x2a73('0x20')](_0x402b69,{'showHidden':![],'depth':null}));}};UserReport[_0x2a73('0x21')][_0x2a73('0x16')]=function(_0x187e48){try{if(this['isNotNull'](_0x187e48)&&this['isNotNull'](_0x187e48[_0x2a73('0x46')])){logger[_0x2a73('0x25')]('[userReport][peerstatus]\x20peer:%s\x20address:%s\x20status:%s',_0x187e48[_0x2a73('0x47')],_0x187e48[_0x2a73('0x48')],_0x187e48[_0x2a73('0x46')]);logger['debug'](_0x2a73('0x49'),util['inspect'](_0x187e48,{'showHidden':![],'depth':null}));if(this[_0x2a73('0xe')][_0x187e48[_0x2a73('0x47')]]){if(!this[_0x2a73('0xe')][_0x187e48[_0x2a73('0x47')]][_0x2a73('0x35')]||_0x187e48['peerstatus'][_0x2a73('0x36')]()==_0x2a73('0x4a')){this[_0x2a73('0xe')][_0x187e48[_0x2a73('0x47')]][_0x2a73('0x35')]=![];this[_0x2a73('0xe')][_0x187e48[_0x2a73('0x47')]][_0x2a73('0x4b')]=_0x187e48[_0x2a73('0x46')]['toLowerCase']();this['agents'][_0x187e48[_0x2a73('0x47')]][_0x2a73('0x48')]=_0x187e48[_0x2a73('0x48')];this[_0x2a73('0xe')][_0x187e48[_0x2a73('0x47')]]['updateStatusRealtime'](_0x187e48);}}else if(this[_0x2a73('0xf')][_0x187e48[_0x2a73('0x47')]]){this[_0x2a73('0xf')][_0x187e48['peer']][_0x2a73('0x4b')]=_0x187e48['peerstatus'][_0x2a73('0x36')]();this[_0x2a73('0xf')][_0x187e48[_0x2a73('0x47')]][_0x2a73('0x48')]=_0x187e48[_0x2a73('0x48')];logger[_0x2a73('0x33')](_0x2a73('0x4c'),util['inspect'](this[_0x2a73('0xf')][_0x187e48['peer']],{'showHidden':![],'depth':null}));this[_0x2a73('0x24')](util[_0x2a73('0x2e')](_0x2a73('0x3b'),this[_0x2a73('0xf')][_0x187e48[_0x2a73('0x47')]][_0x2a73('0x30')]),'telephone:save',this[_0x2a73('0xf')][_0x187e48[_0x2a73('0x47')]]);}else if(this[_0x2a73('0xd')][_0x187e48[_0x2a73('0x47')]]){this[_0x2a73('0xd')][_0x187e48[_0x2a73('0x47')]]['status']=_0x187e48[_0x2a73('0x46')][_0x2a73('0x36')]();this['trunks'][_0x187e48[_0x2a73('0x47')]][_0x2a73('0x48')]=_0x187e48[_0x2a73('0x48')];logger[_0x2a73('0x33')](_0x2a73('0x4d'),util[_0x2a73('0x20')](this[_0x2a73('0xd')][_0x187e48['peer']],{'showHidden':![],'depth':null}));this[_0x2a73('0x24')](util[_0x2a73('0x2e')](_0x2a73('0x2f'),this['trunks'][_0x187e48[_0x2a73('0x47')]][_0x2a73('0x30')]),'trunk:save',this['trunks'][_0x187e48[_0x2a73('0x47')]]);}}}catch(_0x4f24b4){logger['error'](_0x2a73('0x49'),util[_0x2a73('0x20')](_0x4f24b4,{'showHidden':![],'depth':null}));}};module[_0x2a73('0x4e')]=UserReport;