Built motion from commit 7a4eb044.|2.5.36
[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 _0x56b3=['local','toLowerCase','stateTime','toNumber','[userReport][devicestatechange]\x20sending\x20telephone:save\x20event:','telephone:%s','telephone:save','[userReport][devicestatechange]\x20sending\x20trunk:save\x20event:','trunk:%s','startsWith','mobile','[userReport][devicestatechange]','syncPeerStatus','[userReport][peerstatus]\x20peer:%s\x20address:%s\x20status:%s','peer','address','status','updateStatusRealtime','[userReport][peerstatus]\x20sending\x20telephone:save\x20event:','[userReport][peerstatus]\x20sending\x20trunk:save\x20event:','[userReport][peerstatus]','exports','lodash','moment','util','bluebird','../../../config/environment','../../../config/logger','../ami','redis','defaults','localhost','socket.io-emitter','trunks','agents','telephones','registryentry','bind','registry','syncRegistry','devicestatechange','syncDeviceState','peerstatus','syncRealtimeShow','resolve','then','actionSipShowRegistry','catch','error','[userReport][sipshowregistry]','actionDeviceStateList','[userReport][devicestatelist]','actionSipPeerStatus','inspect','prototype','isNotNull','isUndefined','emit','info','[userReport][registry]\x20registry:%s\x20state:%s','state','debug','[userReport][registry]','find','stateRegistry','merge','omit','event','actionid','username','[userReport][registry]\x20sending\x20trunk:save\x20event:','format','name','trunk:save','device'];(function(_0x5eb4e4,_0x5e8a3f){var _0x536d2f=function(_0x2d619e){while(--_0x2d619e){_0x5eb4e4['push'](_0x5eb4e4['shift']());}};_0x536d2f(++_0x5e8a3f);}(_0x56b3,0x1d8));var _0x356b=function(_0x9e0cb3,_0x9cd497){_0x9e0cb3=_0x9e0cb3-0x0;var _0x5926b7=_0x56b3[_0x9e0cb3];return _0x5926b7;};'use strict';var _=require(_0x356b('0x0'));var moment=require(_0x356b('0x1'));var util=require(_0x356b('0x2'));var Redis=require('ioredis');var BPromise=require(_0x356b('0x3'));var config=require(_0x356b('0x4'));var logger=require(_0x356b('0x5'))('ami');var ami=require(_0x356b('0x6'));config[_0x356b('0x7')]=_[_0x356b('0x8')](config[_0x356b('0x7')],{'host':_0x356b('0x9'),'port':0x18eb});var io=require(_0x356b('0xa'))(new Redis(config[_0x356b('0x7')]));function UserReport(_0x5c3398){this[_0x356b('0xb')]=_0x5c3398['trunks'];this[_0x356b('0xc')]=_0x5c3398[_0x356b('0xc')];this[_0x356b('0xd')]=_0x5c3398[_0x356b('0xd')];ami['on'](_0x356b('0xe'),this['syncRegistry'][_0x356b('0xf')](this));ami['on'](_0x356b('0x10'),this[_0x356b('0x11')]['bind'](this));ami['on'](_0x356b('0x12'),this[_0x356b('0x13')][_0x356b('0xf')](this));ami['on'](_0x356b('0x14'),this['syncPeerStatus'][_0x356b('0xf')](this));return this[_0x356b('0x15')]();}function showSipRegistrations(){Promise[_0x356b('0x16')]()[_0x356b('0x17')](ami[_0x356b('0x18')]())[_0x356b('0x19')](function(_0x252562){logger[_0x356b('0x1a')](_0x356b('0x1b'),util['inspect'](_0x252562,{'showHidden':![],'depth':null}));});}function listDeviceStates(){Promise[_0x356b('0x16')]()['then'](ami[_0x356b('0x1c')]())[_0x356b('0x19')](function(_0x7e5626){logger['error'](_0x356b('0x1d'),util['inspect'](_0x7e5626,{'showHidden':![],'depth':null}));});}function showPeersStatus(){Promise[_0x356b('0x16')]()['then'](ami[_0x356b('0x1e')]())[_0x356b('0x19')](function(_0x294d7b){logger[_0x356b('0x1a')]('[userReport][sippeerstatus]',util[_0x356b('0x1f')](_0x294d7b,{'showHidden':![],'depth':null}));});}UserReport[_0x356b('0x20')][_0x356b('0x15')]=function(){setInterval(function(){BPromise[_0x356b('0x16')]()['then'](showSipRegistrations())[_0x356b('0x17')](listDeviceStates())[_0x356b('0x17')](showPeersStatus());},0x32c8);};UserReport[_0x356b('0x20')][_0x356b('0x21')]=function(_0xbbc329){return _0xbbc329!==null&&!_[_0x356b('0x22')](_0xbbc329);};UserReport[_0x356b('0x20')]['emit']=function(_0x3abd0d,_0x142eb1,_0xa0d69d){io['to'](_0x3abd0d)[_0x356b('0x23')](_0x142eb1,_0xa0d69d);};UserReport['prototype'][_0x356b('0x11')]=function(_0xd6064a){try{if(this[_0x356b('0x21')](_0xd6064a)){logger[_0x356b('0x24')](_0x356b('0x25'),_0xd6064a['username'],_0xd6064a[_0x356b('0x26')]);logger[_0x356b('0x27')](_0x356b('0x28'),util[_0x356b('0x1f')](_0xd6064a,{'showHidden':![],'depth':null}));var _0x2b428a=_[_0x356b('0x29')](this[_0x356b('0xb')],{'defaultuser':_0xd6064a['username']});if(_0x2b428a){_0xd6064a[_0x356b('0x2a')]=_0xd6064a['state'];_[_0x356b('0x2b')](_0x2b428a,_[_0x356b('0x2c')](_0xd6064a,[_0x356b('0x2d'),_0x356b('0x2e'),_0x356b('0x2f'),'state']));logger[_0x356b('0x27')](_0x356b('0x30'),util['inspect'](_0x2b428a,{'showHidden':![],'depth':null}));this[_0x356b('0x23')](util[_0x356b('0x31')]('trunk:%s',_0x2b428a[_0x356b('0x32')]),_0x356b('0x33'),_0x2b428a);}}}catch(_0x9a7c49){logger[_0x356b('0x1a')]('[userReport][registry]',util[_0x356b('0x1f')](_0x9a7c49,{'showHidden':![],'depth':null}));}};UserReport[_0x356b('0x20')][_0x356b('0x13')]=function(_0x136c8a){try{if(this[_0x356b('0x21')](_0x136c8a)){logger[_0x356b('0x24')]('[userReport][devicestatechange]\x20device:%s\x20state:%s',_0x136c8a[_0x356b('0x34')],_0x136c8a['state']);logger[_0x356b('0x27')]('[userReport][devicestatechange]',util[_0x356b('0x1f')](_0x136c8a,{'showHidden':![],'depth':null}));if(this[_0x356b('0xc')][_0x136c8a[_0x356b('0x34')]]){if(!this['agents'][_0x136c8a[_0x356b('0x34')]][_0x356b('0x35')]||_0x136c8a[_0x356b('0x26')][_0x356b('0x36')]()=='inuse'){this['agents'][_0x136c8a[_0x356b('0x34')]][_0x356b('0x35')]=![];if(this[_0x356b('0xc')][_0x136c8a[_0x356b('0x34')]][_0x356b('0x26')]!==_0x136c8a[_0x356b('0x26')][_0x356b('0x36')]()){this[_0x356b('0xc')][_0x136c8a['device']][_0x356b('0x37')]=_[_0x356b('0x38')](moment()['format']('x'));}this[_0x356b('0xc')][_0x136c8a[_0x356b('0x34')]][_0x356b('0x26')]=_0x136c8a[_0x356b('0x26')]['toLowerCase']();this['agents'][_0x136c8a[_0x356b('0x34')]]['updateStatusRealtime'](_0x136c8a);}}else if(this[_0x356b('0xd')][_0x136c8a[_0x356b('0x34')]]){if(this['telephones'][_0x136c8a[_0x356b('0x34')]][_0x356b('0x26')]!==_0x136c8a['state'][_0x356b('0x36')]()){this[_0x356b('0xd')][_0x136c8a[_0x356b('0x34')]][_0x356b('0x37')]=_['toNumber'](moment()['format']('x'));}this[_0x356b('0xd')][_0x136c8a[_0x356b('0x34')]][_0x356b('0x26')]=_0x136c8a['state']['toLowerCase']();logger[_0x356b('0x27')](_0x356b('0x39'),util[_0x356b('0x1f')](this['telephones'][_0x136c8a['device']],{'showHidden':![],'depth':null}));this['emit'](util[_0x356b('0x31')](_0x356b('0x3a'),this[_0x356b('0xd')][_0x136c8a['device']][_0x356b('0x32')]),_0x356b('0x3b'),this[_0x356b('0xd')][_0x136c8a[_0x356b('0x34')]]);}else if(this['trunks'][_0x136c8a[_0x356b('0x34')]]){if(this[_0x356b('0xb')][_0x136c8a[_0x356b('0x34')]][_0x356b('0x26')]!==_0x136c8a['state'][_0x356b('0x36')]()){this[_0x356b('0xb')][_0x136c8a['device']][_0x356b('0x37')]=_[_0x356b('0x38')](moment()[_0x356b('0x31')]('x'));}this[_0x356b('0xb')][_0x136c8a['device']][_0x356b('0x26')]=_0x136c8a['state'][_0x356b('0x36')]();logger[_0x356b('0x27')](_0x356b('0x3c'),util[_0x356b('0x1f')](this['trunks'][_0x136c8a[_0x356b('0x34')]],{'showHidden':![],'depth':null}));this[_0x356b('0x23')](util[_0x356b('0x31')](_0x356b('0x3d'),this['trunks'][_0x136c8a[_0x356b('0x34')]][_0x356b('0x32')]),_0x356b('0x33'),this['trunks'][_0x136c8a[_0x356b('0x34')]]);}else if(_[_0x356b('0x3e')](_0x136c8a[_0x356b('0x34')],'Local')){var _0x286c2c=_0x136c8a[_0x356b('0x34')];var _0x298f2a=_0x286c2c['substring'](_0x286c2c['indexOf']('/')+0x1,_0x286c2c['indexOf']('@'));var _0x31bb55=_[_0x356b('0x29')](this[_0x356b('0xc')],function(_0x47da24){return _0x47da24[_0x356b('0x3f')]==_0x298f2a||_0x47da24['phone']==_0x298f2a||_0x47da24['accountcode']==_0x298f2a;});if(_0x31bb55){if(_0x31bb55[_0x356b('0x26')]!==_0x136c8a['state']['toLowerCase']()){_0x31bb55[_0x356b('0x37')]=_[_0x356b('0x38')](moment()[_0x356b('0x31')]('x'));}_0x31bb55[_0x356b('0x26')]=_0x136c8a['state']['toLowerCase']();_0x31bb55[_0x356b('0x35')]=!![];_0x31bb55['updateStatusRealtime'](_0x136c8a);}}}}catch(_0x139be9){logger['error'](_0x356b('0x40'),util[_0x356b('0x1f')](_0x139be9,{'showHidden':![],'depth':null}));}};UserReport[_0x356b('0x20')][_0x356b('0x41')]=function(_0x3725e2){try{if(this[_0x356b('0x21')](_0x3725e2)&&this['isNotNull'](_0x3725e2[_0x356b('0x14')])){logger[_0x356b('0x24')](_0x356b('0x42'),_0x3725e2[_0x356b('0x43')],_0x3725e2[_0x356b('0x44')],_0x3725e2[_0x356b('0x14')]);logger[_0x356b('0x27')]('[userReport][peerstatus]',util[_0x356b('0x1f')](_0x3725e2,{'showHidden':![],'depth':null}));if(this['agents'][_0x3725e2[_0x356b('0x43')]]){if(!this['agents'][_0x3725e2[_0x356b('0x43')]]['local']||_0x3725e2[_0x356b('0x14')][_0x356b('0x36')]()=='registered'){this['agents'][_0x3725e2[_0x356b('0x43')]][_0x356b('0x35')]=![];this['agents'][_0x3725e2[_0x356b('0x43')]][_0x356b('0x45')]=_0x3725e2[_0x356b('0x14')][_0x356b('0x36')]();this[_0x356b('0xc')][_0x3725e2[_0x356b('0x43')]][_0x356b('0x44')]=_0x3725e2[_0x356b('0x44')];this['agents'][_0x3725e2[_0x356b('0x43')]][_0x356b('0x46')](_0x3725e2);}}else if(this[_0x356b('0xd')][_0x3725e2[_0x356b('0x43')]]){this[_0x356b('0xd')][_0x3725e2[_0x356b('0x43')]][_0x356b('0x45')]=_0x3725e2[_0x356b('0x14')]['toLowerCase']();this[_0x356b('0xd')][_0x3725e2[_0x356b('0x43')]][_0x356b('0x44')]=_0x3725e2[_0x356b('0x44')];logger['debug'](_0x356b('0x47'),util[_0x356b('0x1f')](this['telephones'][_0x3725e2['peer']],{'showHidden':![],'depth':null}));this[_0x356b('0x23')](util[_0x356b('0x31')](_0x356b('0x3a'),this[_0x356b('0xd')][_0x3725e2[_0x356b('0x43')]][_0x356b('0x32')]),_0x356b('0x3b'),this['telephones'][_0x3725e2['peer']]);}else if(this['trunks'][_0x3725e2['peer']]){this[_0x356b('0xb')][_0x3725e2[_0x356b('0x43')]][_0x356b('0x45')]=_0x3725e2[_0x356b('0x14')][_0x356b('0x36')]();this[_0x356b('0xb')][_0x3725e2['peer']][_0x356b('0x44')]=_0x3725e2[_0x356b('0x44')];logger[_0x356b('0x27')](_0x356b('0x48'),util[_0x356b('0x1f')](this[_0x356b('0xb')][_0x3725e2[_0x356b('0x43')]],{'showHidden':![],'depth':null}));this[_0x356b('0x23')](util[_0x356b('0x31')](_0x356b('0x3d'),this['trunks'][_0x3725e2[_0x356b('0x43')]][_0x356b('0x32')]),_0x356b('0x33'),this[_0x356b('0xb')][_0x3725e2[_0x356b('0x43')]]);}}}catch(_0x2187e9){logger[_0x356b('0x1a')](_0x356b('0x49'),util[_0x356b('0x1f')](_0x2187e9,{'showHidden':![],'depth':null}));}};module[_0x356b('0x4a')]=UserReport;