4a80a3cc128d2b77653e034c72981ee694a523b6
[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 _0xe1a7=['format','trunk:%s','name','syncDeviceState','[userReport][devicestatechange]\x20device:%s\x20state:%s','device','[userReport][devicestatechange]','local','toLowerCase','inuse','toNumber','[userReport][devicestatechange]\x20sending\x20telephone:save\x20event:','telephone:%s','telephone:save','[userReport][devicestatechange]\x20sending\x20trunk:save\x20event:','startsWith','Local','substring','indexOf','accountcode','stateTime','updateStatusRealtime','syncPeerStatus','[userReport][peerstatus]\x20peer:%s\x20address:%s\x20status:%s','peer','address','registered','status','[userReport][peerstatus]\x20sending\x20telephone:save\x20event:','[userReport][peerstatus]\x20sending\x20trunk:save\x20event:','trunk:save','[userReport][peerstatus]','exports','lodash','moment','ioredis','bluebird','../../../config/environment','../../../config/logger','ami','../ami','redis','localhost','socket.io-emitter','trunks','agents','telephones','registryentry','syncRegistry','bind','registry','devicestatechange','peerstatus','resolve','catch','error','[userReport][sipshowregistry]','inspect','then','[userReport][devicestatelist]','actionSipPeerStatus','prototype','syncRealtimeShow','isNotNull','isUndefined','emit','info','[userReport][registry]\x20registry:%s\x20state:%s','state','debug','[userReport][registry]','find','omit','event','actionid','username'];(function(_0x5ba6fd,_0x36db67){var _0x6709ab=function(_0x2a18a9){while(--_0x2a18a9){_0x5ba6fd['push'](_0x5ba6fd['shift']());}};_0x6709ab(++_0x36db67);}(_0xe1a7,0x151));var _0x7e1a=function(_0x5b567b,_0x19093b){_0x5b567b=_0x5b567b-0x0;var _0x5bc321=_0xe1a7[_0x5b567b];return _0x5bc321;};'use strict';var _=require(_0x7e1a('0x0'));var moment=require(_0x7e1a('0x1'));var util=require('util');var Redis=require(_0x7e1a('0x2'));var BPromise=require(_0x7e1a('0x3'));var config=require(_0x7e1a('0x4'));var logger=require(_0x7e1a('0x5'))(_0x7e1a('0x6'));var ami=require(_0x7e1a('0x7'));config[_0x7e1a('0x8')]=_['defaults'](config[_0x7e1a('0x8')],{'host':_0x7e1a('0x9'),'port':0x18eb});var io=require(_0x7e1a('0xa'))(new Redis(config[_0x7e1a('0x8')]));function UserReport(_0x3cfb60){this[_0x7e1a('0xb')]=_0x3cfb60[_0x7e1a('0xb')];this[_0x7e1a('0xc')]=_0x3cfb60[_0x7e1a('0xc')];this[_0x7e1a('0xd')]=_0x3cfb60['telephones'];ami['on'](_0x7e1a('0xe'),this[_0x7e1a('0xf')][_0x7e1a('0x10')](this));ami['on'](_0x7e1a('0x11'),this['syncRegistry'][_0x7e1a('0x10')](this));ami['on'](_0x7e1a('0x12'),this['syncDeviceState']['bind'](this));ami['on'](_0x7e1a('0x13'),this['syncPeerStatus']['bind'](this));return this['syncRealtimeShow']();}function showSipRegistrations(){Promise[_0x7e1a('0x14')]()['then'](ami['actionSipShowRegistry']())[_0x7e1a('0x15')](function(_0x26799a){logger[_0x7e1a('0x16')](_0x7e1a('0x17'),util[_0x7e1a('0x18')](_0x26799a,{'showHidden':![],'depth':null}));});}function listDeviceStates(){Promise[_0x7e1a('0x14')]()[_0x7e1a('0x19')](ami['actionDeviceStateList']())[_0x7e1a('0x15')](function(_0x480935){logger['error'](_0x7e1a('0x1a'),util[_0x7e1a('0x18')](_0x480935,{'showHidden':![],'depth':null}));});}function showPeersStatus(){Promise['resolve']()[_0x7e1a('0x19')](ami[_0x7e1a('0x1b')]())[_0x7e1a('0x15')](function(_0x43fbee){logger[_0x7e1a('0x16')]('[userReport][sippeerstatus]',util['inspect'](_0x43fbee,{'showHidden':![],'depth':null}));});}UserReport[_0x7e1a('0x1c')][_0x7e1a('0x1d')]=function(){setInterval(function(){BPromise['resolve']()['then'](showSipRegistrations())['then'](listDeviceStates())['then'](showPeersStatus());},0x32c8);};UserReport[_0x7e1a('0x1c')][_0x7e1a('0x1e')]=function(_0x52d5c4){return _0x52d5c4!==null&&!_[_0x7e1a('0x1f')](_0x52d5c4);};UserReport['prototype']['emit']=function(_0x31c4b6,_0x85b427,_0x2da209){io['to'](_0x31c4b6)[_0x7e1a('0x20')](_0x85b427,_0x2da209);};UserReport['prototype'][_0x7e1a('0xf')]=function(_0x1fb713){try{if(this[_0x7e1a('0x1e')](_0x1fb713)){logger[_0x7e1a('0x21')](_0x7e1a('0x22'),_0x1fb713['username'],_0x1fb713[_0x7e1a('0x23')]);logger[_0x7e1a('0x24')](_0x7e1a('0x25'),util['inspect'](_0x1fb713,{'showHidden':![],'depth':null}));var _0x5b911f=_[_0x7e1a('0x26')](this[_0x7e1a('0xb')],{'defaultuser':_0x1fb713['username']});if(_0x5b911f){_0x1fb713['stateRegistry']=_0x1fb713[_0x7e1a('0x23')];_['merge'](_0x5b911f,_[_0x7e1a('0x27')](_0x1fb713,[_0x7e1a('0x28'),_0x7e1a('0x29'),_0x7e1a('0x2a'),'state']));logger[_0x7e1a('0x24')]('[userReport][registry]\x20sending\x20trunk:save\x20event:',util[_0x7e1a('0x18')](_0x5b911f,{'showHidden':![],'depth':null}));this[_0x7e1a('0x20')](util[_0x7e1a('0x2b')](_0x7e1a('0x2c'),_0x5b911f[_0x7e1a('0x2d')]),'trunk:save',_0x5b911f);}}}catch(_0x1701b9){logger['error'](_0x7e1a('0x25'),util[_0x7e1a('0x18')](_0x1701b9,{'showHidden':![],'depth':null}));}};UserReport[_0x7e1a('0x1c')][_0x7e1a('0x2e')]=function(_0x10430e){try{if(this[_0x7e1a('0x1e')](_0x10430e)){logger[_0x7e1a('0x21')](_0x7e1a('0x2f'),_0x10430e[_0x7e1a('0x30')],_0x10430e[_0x7e1a('0x23')]);logger['debug'](_0x7e1a('0x31'),util[_0x7e1a('0x18')](_0x10430e,{'showHidden':![],'depth':null}));if(this[_0x7e1a('0xc')][_0x10430e['device']]){if(!this[_0x7e1a('0xc')][_0x10430e[_0x7e1a('0x30')]][_0x7e1a('0x32')]||_0x10430e[_0x7e1a('0x23')][_0x7e1a('0x33')]()==_0x7e1a('0x34')){this['agents'][_0x10430e[_0x7e1a('0x30')]][_0x7e1a('0x32')]=![];if(this['agents'][_0x10430e['device']][_0x7e1a('0x23')]!==_0x10430e['state'][_0x7e1a('0x33')]()){this[_0x7e1a('0xc')][_0x10430e[_0x7e1a('0x30')]]['stateTime']=_[_0x7e1a('0x35')](moment()[_0x7e1a('0x2b')]('x'));}this[_0x7e1a('0xc')][_0x10430e[_0x7e1a('0x30')]][_0x7e1a('0x23')]=_0x10430e[_0x7e1a('0x23')][_0x7e1a('0x33')]();this['agents'][_0x10430e[_0x7e1a('0x30')]]['updateStatusRealtime'](_0x10430e);}}else if(this['telephones'][_0x10430e[_0x7e1a('0x30')]]){if(this['telephones'][_0x10430e[_0x7e1a('0x30')]]['state']!==_0x10430e[_0x7e1a('0x23')]['toLowerCase']()){this['telephones'][_0x10430e['device']]['stateTime']=_['toNumber'](moment()['format']('x'));}this[_0x7e1a('0xd')][_0x10430e[_0x7e1a('0x30')]][_0x7e1a('0x23')]=_0x10430e[_0x7e1a('0x23')][_0x7e1a('0x33')]();logger[_0x7e1a('0x24')](_0x7e1a('0x36'),util[_0x7e1a('0x18')](this[_0x7e1a('0xd')][_0x10430e[_0x7e1a('0x30')]],{'showHidden':![],'depth':null}));this[_0x7e1a('0x20')](util[_0x7e1a('0x2b')](_0x7e1a('0x37'),this['telephones'][_0x10430e[_0x7e1a('0x30')]][_0x7e1a('0x2d')]),_0x7e1a('0x38'),this['telephones'][_0x10430e[_0x7e1a('0x30')]]);}else if(this[_0x7e1a('0xb')][_0x10430e[_0x7e1a('0x30')]]){if(this['trunks'][_0x10430e['device']][_0x7e1a('0x23')]!==_0x10430e[_0x7e1a('0x23')][_0x7e1a('0x33')]()){this[_0x7e1a('0xb')][_0x10430e[_0x7e1a('0x30')]]['stateTime']=_[_0x7e1a('0x35')](moment()[_0x7e1a('0x2b')]('x'));}this[_0x7e1a('0xb')][_0x10430e[_0x7e1a('0x30')]][_0x7e1a('0x23')]=_0x10430e[_0x7e1a('0x23')][_0x7e1a('0x33')]();logger[_0x7e1a('0x24')](_0x7e1a('0x39'),util[_0x7e1a('0x18')](this[_0x7e1a('0xb')][_0x10430e[_0x7e1a('0x30')]],{'showHidden':![],'depth':null}));this['emit'](util['format'](_0x7e1a('0x2c'),this['trunks'][_0x10430e[_0x7e1a('0x30')]][_0x7e1a('0x2d')]),'trunk:save',this[_0x7e1a('0xb')][_0x10430e['device']]);}else if(_[_0x7e1a('0x3a')](_0x10430e['device'],_0x7e1a('0x3b'))){var _0x430a0c=_0x10430e['device'];var _0x1587e1=_0x430a0c[_0x7e1a('0x3c')](_0x430a0c[_0x7e1a('0x3d')]('/')+0x1,_0x430a0c[_0x7e1a('0x3d')]('@'));var _0x2a03f5=_['find'](this[_0x7e1a('0xc')],function(_0x4d8a76){return _0x4d8a76['mobile']==_0x1587e1||_0x4d8a76['phone']==_0x1587e1||_0x4d8a76[_0x7e1a('0x3e')]==_0x1587e1;});if(_0x2a03f5){if(_0x2a03f5[_0x7e1a('0x23')]!==_0x10430e[_0x7e1a('0x23')][_0x7e1a('0x33')]()){_0x2a03f5[_0x7e1a('0x3f')]=_[_0x7e1a('0x35')](moment()[_0x7e1a('0x2b')]('x'));}_0x2a03f5['state']=_0x10430e[_0x7e1a('0x23')]['toLowerCase']();_0x2a03f5['local']=!![];_0x2a03f5[_0x7e1a('0x40')](_0x10430e);}}}}catch(_0x5dd25f){logger[_0x7e1a('0x16')]('[userReport][devicestatechange]',util[_0x7e1a('0x18')](_0x5dd25f,{'showHidden':![],'depth':null}));}};UserReport[_0x7e1a('0x1c')][_0x7e1a('0x41')]=function(_0x444f03){try{if(this[_0x7e1a('0x1e')](_0x444f03)&&this[_0x7e1a('0x1e')](_0x444f03[_0x7e1a('0x13')])){logger['info'](_0x7e1a('0x42'),_0x444f03[_0x7e1a('0x43')],_0x444f03[_0x7e1a('0x44')],_0x444f03['peerstatus']);logger[_0x7e1a('0x24')]('[userReport][peerstatus]',util['inspect'](_0x444f03,{'showHidden':![],'depth':null}));if(this['agents'][_0x444f03['peer']]){if(!this[_0x7e1a('0xc')][_0x444f03[_0x7e1a('0x43')]][_0x7e1a('0x32')]||_0x444f03[_0x7e1a('0x13')][_0x7e1a('0x33')]()==_0x7e1a('0x45')){this['agents'][_0x444f03[_0x7e1a('0x43')]][_0x7e1a('0x32')]=![];this[_0x7e1a('0xc')][_0x444f03['peer']][_0x7e1a('0x46')]=_0x444f03[_0x7e1a('0x13')]['toLowerCase']();this[_0x7e1a('0xc')][_0x444f03[_0x7e1a('0x43')]]['address']=_0x444f03['address'];this[_0x7e1a('0xc')][_0x444f03[_0x7e1a('0x43')]][_0x7e1a('0x40')](_0x444f03);}}else if(this[_0x7e1a('0xd')][_0x444f03['peer']]){this[_0x7e1a('0xd')][_0x444f03[_0x7e1a('0x43')]][_0x7e1a('0x46')]=_0x444f03[_0x7e1a('0x13')][_0x7e1a('0x33')]();this[_0x7e1a('0xd')][_0x444f03[_0x7e1a('0x43')]]['address']=_0x444f03[_0x7e1a('0x44')];logger[_0x7e1a('0x24')](_0x7e1a('0x47'),util[_0x7e1a('0x18')](this['telephones'][_0x444f03['peer']],{'showHidden':![],'depth':null}));this[_0x7e1a('0x20')](util['format']('telephone:%s',this['telephones'][_0x444f03['peer']][_0x7e1a('0x2d')]),_0x7e1a('0x38'),this['telephones'][_0x444f03[_0x7e1a('0x43')]]);}else if(this[_0x7e1a('0xb')][_0x444f03[_0x7e1a('0x43')]]){this[_0x7e1a('0xb')][_0x444f03[_0x7e1a('0x43')]][_0x7e1a('0x46')]=_0x444f03[_0x7e1a('0x13')]['toLowerCase']();this['trunks'][_0x444f03['peer']][_0x7e1a('0x44')]=_0x444f03[_0x7e1a('0x44')];logger[_0x7e1a('0x24')](_0x7e1a('0x48'),util[_0x7e1a('0x18')](this[_0x7e1a('0xb')][_0x444f03['peer']],{'showHidden':![],'depth':null}));this[_0x7e1a('0x20')](util[_0x7e1a('0x2b')](_0x7e1a('0x2c'),this[_0x7e1a('0xb')][_0x444f03[_0x7e1a('0x43')]][_0x7e1a('0x2d')]),_0x7e1a('0x49'),this['trunks'][_0x444f03['peer']]);}}}catch(_0x4d6107){logger[_0x7e1a('0x16')](_0x7e1a('0x4a'),util[_0x7e1a('0x18')](_0x4d6107,{'showHidden':![],'depth':null}));}};module[_0x7e1a('0x4b')]=UserReport;