ceb46e986731ddd733e66be0078f5df915bec1fb
[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 _0x4ffa=['merge','omit','format','trunk:%s','trunk:save','[userReport][registry]','[userReport][devicestatechange]\x20device:%s\x20state:%s','device','[userReport][devicestatechange]','local','inuse','toLowerCase','toNumber','updateStatusRealtime','stateTime','[userReport][devicestatechange]\x20sending\x20telephone:save\x20event:','name','[userReport][devicestatechange]\x20sending\x20trunk:save\x20event:','startsWith','Local','substring','indexOf','phone','accountcode','[userReport][peerstatus]\x20peer:%s\x20address:%s\x20status:%s','address','peer','status','telephone:%s','telephone:save','[userReport][peerstatus]\x20sending\x20trunk:save\x20event:','[userReport][peerstatus]','exports','lodash','moment','util','bluebird','../../../config/environment','../../../config/logger','redis','defaults','socket.io-emitter','trunks','agents','telephones','registryentry','bind','registry','syncRegistry','devicestatechange','syncDeviceState','peerstatus','syncPeerStatus','resolve','then','error','[userReport][sipshowregistry]','actionDeviceStateList','catch','[userReport][devicestatelist]','inspect','actionSipPeerStatus','syncRealtimeShow','isUndefined','emit','prototype','isNotNull','info','[userReport][registry]\x20registry:%s\x20state:%s','state','debug','find','username','stateRegistry'];(function(_0x2c15ca,_0x17f86a){var _0x51b79f=function(_0x256d0c){while(--_0x256d0c){_0x2c15ca['push'](_0x2c15ca['shift']());}};_0x51b79f(++_0x17f86a);}(_0x4ffa,0x149));var _0xa4ff=function(_0x4565bf,_0x5ad9d6){_0x4565bf=_0x4565bf-0x0;var _0x5610ba=_0x4ffa[_0x4565bf];return _0x5610ba;};'use strict';var _=require(_0xa4ff('0x0'));var moment=require(_0xa4ff('0x1'));var util=require(_0xa4ff('0x2'));var Redis=require('ioredis');var BPromise=require(_0xa4ff('0x3'));var config=require(_0xa4ff('0x4'));var logger=require(_0xa4ff('0x5'))('ami');var ami=require('../ami');config[_0xa4ff('0x6')]=_[_0xa4ff('0x7')](config[_0xa4ff('0x6')],{'host':'localhost','port':0x18eb});var io=require(_0xa4ff('0x8'))(new Redis(config[_0xa4ff('0x6')]));function UserReport(_0x18b143){this['trunks']=_0x18b143[_0xa4ff('0x9')];this[_0xa4ff('0xa')]=_0x18b143['agents'];this[_0xa4ff('0xb')]=_0x18b143['telephones'];ami['on'](_0xa4ff('0xc'),this['syncRegistry'][_0xa4ff('0xd')](this));ami['on'](_0xa4ff('0xe'),this[_0xa4ff('0xf')]['bind'](this));ami['on'](_0xa4ff('0x10'),this[_0xa4ff('0x11')][_0xa4ff('0xd')](this));ami['on'](_0xa4ff('0x12'),this[_0xa4ff('0x13')][_0xa4ff('0xd')](this));return this['syncRealtimeShow']();}function showSipRegistrations(){Promise[_0xa4ff('0x14')]()[_0xa4ff('0x15')](ami['actionSipShowRegistry']())['catch'](function(_0x3dac3f){logger[_0xa4ff('0x16')](_0xa4ff('0x17'),util['inspect'](_0x3dac3f,{'showHidden':![],'depth':null}));});}function listDeviceStates(){Promise[_0xa4ff('0x14')]()[_0xa4ff('0x15')](ami[_0xa4ff('0x18')]())[_0xa4ff('0x19')](function(_0x3eba89){logger[_0xa4ff('0x16')](_0xa4ff('0x1a'),util[_0xa4ff('0x1b')](_0x3eba89,{'showHidden':![],'depth':null}));});}function showPeersStatus(){Promise[_0xa4ff('0x14')]()[_0xa4ff('0x15')](ami[_0xa4ff('0x1c')]())['catch'](function(_0x23bbc5){logger[_0xa4ff('0x16')]('[userReport][sippeerstatus]',util[_0xa4ff('0x1b')](_0x23bbc5,{'showHidden':![],'depth':null}));});}UserReport['prototype'][_0xa4ff('0x1d')]=function(){setInterval(function(){BPromise[_0xa4ff('0x14')]()['then'](showSipRegistrations())[_0xa4ff('0x15')](listDeviceStates())[_0xa4ff('0x15')](showPeersStatus());},0x32c8);};UserReport['prototype']['isNotNull']=function(_0xdfdbab){return _0xdfdbab!==null&&!_[_0xa4ff('0x1e')](_0xdfdbab);};UserReport['prototype'][_0xa4ff('0x1f')]=function(_0x3c8092,_0x39e192,_0x4c2379){io['to'](_0x3c8092)[_0xa4ff('0x1f')](_0x39e192,_0x4c2379);};UserReport[_0xa4ff('0x20')][_0xa4ff('0xf')]=function(_0x3ebf9e){try{if(this[_0xa4ff('0x21')](_0x3ebf9e)){logger[_0xa4ff('0x22')](_0xa4ff('0x23'),_0x3ebf9e['username'],_0x3ebf9e[_0xa4ff('0x24')]);logger[_0xa4ff('0x25')]('[userReport][registry]',util[_0xa4ff('0x1b')](_0x3ebf9e,{'showHidden':![],'depth':null}));var _0x1540e1=_[_0xa4ff('0x26')](this[_0xa4ff('0x9')],{'defaultuser':_0x3ebf9e[_0xa4ff('0x27')]});if(_0x1540e1){_0x3ebf9e[_0xa4ff('0x28')]=_0x3ebf9e[_0xa4ff('0x24')];_[_0xa4ff('0x29')](_0x1540e1,_[_0xa4ff('0x2a')](_0x3ebf9e,['event','actionid',_0xa4ff('0x27'),_0xa4ff('0x24')]));logger[_0xa4ff('0x25')]('[userReport][registry]\x20sending\x20trunk:save\x20event:',util['inspect'](_0x1540e1,{'showHidden':![],'depth':null}));this[_0xa4ff('0x1f')](util[_0xa4ff('0x2b')](_0xa4ff('0x2c'),_0x1540e1['name']),_0xa4ff('0x2d'),_0x1540e1);}}}catch(_0x4e8f42){logger[_0xa4ff('0x16')](_0xa4ff('0x2e'),util[_0xa4ff('0x1b')](_0x4e8f42,{'showHidden':![],'depth':null}));}};UserReport['prototype'][_0xa4ff('0x11')]=function(_0x4661cb){try{if(this[_0xa4ff('0x21')](_0x4661cb)){logger[_0xa4ff('0x22')](_0xa4ff('0x2f'),_0x4661cb[_0xa4ff('0x30')],_0x4661cb[_0xa4ff('0x24')]);logger[_0xa4ff('0x25')](_0xa4ff('0x31'),util[_0xa4ff('0x1b')](_0x4661cb,{'showHidden':![],'depth':null}));if(this['agents'][_0x4661cb['device']]){if(!this[_0xa4ff('0xa')][_0x4661cb[_0xa4ff('0x30')]][_0xa4ff('0x32')]||_0x4661cb[_0xa4ff('0x24')]['toLowerCase']()==_0xa4ff('0x33')){this[_0xa4ff('0xa')][_0x4661cb['device']][_0xa4ff('0x32')]=![];if(this[_0xa4ff('0xa')][_0x4661cb[_0xa4ff('0x30')]][_0xa4ff('0x24')]!==_0x4661cb['state'][_0xa4ff('0x34')]()){this[_0xa4ff('0xa')][_0x4661cb['device']]['stateTime']=_[_0xa4ff('0x35')](moment()[_0xa4ff('0x2b')]('x'));}this[_0xa4ff('0xa')][_0x4661cb[_0xa4ff('0x30')]][_0xa4ff('0x24')]=_0x4661cb[_0xa4ff('0x24')][_0xa4ff('0x34')]();this[_0xa4ff('0xa')][_0x4661cb['device']][_0xa4ff('0x36')](_0x4661cb);}}else if(this[_0xa4ff('0xb')][_0x4661cb[_0xa4ff('0x30')]]){if(this[_0xa4ff('0xb')][_0x4661cb['device']]['state']!==_0x4661cb[_0xa4ff('0x24')][_0xa4ff('0x34')]()){this[_0xa4ff('0xb')][_0x4661cb[_0xa4ff('0x30')]][_0xa4ff('0x37')]=_[_0xa4ff('0x35')](moment()['format']('x'));}this[_0xa4ff('0xb')][_0x4661cb[_0xa4ff('0x30')]][_0xa4ff('0x24')]=_0x4661cb['state'][_0xa4ff('0x34')]();logger['debug'](_0xa4ff('0x38'),util[_0xa4ff('0x1b')](this[_0xa4ff('0xb')][_0x4661cb[_0xa4ff('0x30')]],{'showHidden':![],'depth':null}));this[_0xa4ff('0x1f')](util[_0xa4ff('0x2b')]('telephone:%s',this[_0xa4ff('0xb')][_0x4661cb[_0xa4ff('0x30')]][_0xa4ff('0x39')]),'telephone:save',this['telephones'][_0x4661cb[_0xa4ff('0x30')]]);}else if(this[_0xa4ff('0x9')][_0x4661cb['device']]){if(this[_0xa4ff('0x9')][_0x4661cb[_0xa4ff('0x30')]][_0xa4ff('0x24')]!==_0x4661cb[_0xa4ff('0x24')][_0xa4ff('0x34')]()){this[_0xa4ff('0x9')][_0x4661cb[_0xa4ff('0x30')]][_0xa4ff('0x37')]=_['toNumber'](moment()[_0xa4ff('0x2b')]('x'));}this[_0xa4ff('0x9')][_0x4661cb['device']][_0xa4ff('0x24')]=_0x4661cb[_0xa4ff('0x24')][_0xa4ff('0x34')]();logger['debug'](_0xa4ff('0x3a'),util['inspect'](this[_0xa4ff('0x9')][_0x4661cb['device']],{'showHidden':![],'depth':null}));this[_0xa4ff('0x1f')](util[_0xa4ff('0x2b')]('trunk:%s',this[_0xa4ff('0x9')][_0x4661cb['device']][_0xa4ff('0x39')]),_0xa4ff('0x2d'),this[_0xa4ff('0x9')][_0x4661cb[_0xa4ff('0x30')]]);}else if(_[_0xa4ff('0x3b')](_0x4661cb[_0xa4ff('0x30')],_0xa4ff('0x3c'))){var _0x156ebb=_0x4661cb[_0xa4ff('0x30')];var _0x2b9cb3=_0x156ebb[_0xa4ff('0x3d')](_0x156ebb[_0xa4ff('0x3e')]('/')+0x1,_0x156ebb[_0xa4ff('0x3e')]('@'));var _0x31e2f3=_[_0xa4ff('0x26')](this[_0xa4ff('0xa')],function(_0x5482ea){return _0x5482ea['mobile']==_0x2b9cb3||_0x5482ea[_0xa4ff('0x3f')]==_0x2b9cb3||_0x5482ea[_0xa4ff('0x40')]==_0x2b9cb3;});if(_0x31e2f3){if(_0x31e2f3['state']!==_0x4661cb[_0xa4ff('0x24')][_0xa4ff('0x34')]()){_0x31e2f3[_0xa4ff('0x37')]=_[_0xa4ff('0x35')](moment()['format']('x'));}_0x31e2f3[_0xa4ff('0x24')]=_0x4661cb['state'][_0xa4ff('0x34')]();_0x31e2f3['local']=!![];_0x31e2f3[_0xa4ff('0x36')](_0x4661cb);}}}}catch(_0x57e0e7){logger[_0xa4ff('0x16')](_0xa4ff('0x31'),util['inspect'](_0x57e0e7,{'showHidden':![],'depth':null}));}};UserReport[_0xa4ff('0x20')][_0xa4ff('0x13')]=function(_0x4eb420){try{if(this['isNotNull'](_0x4eb420)&&this[_0xa4ff('0x21')](_0x4eb420[_0xa4ff('0x12')])){logger[_0xa4ff('0x22')](_0xa4ff('0x41'),_0x4eb420['peer'],_0x4eb420[_0xa4ff('0x42')],_0x4eb420[_0xa4ff('0x12')]);logger[_0xa4ff('0x25')]('[userReport][peerstatus]',util[_0xa4ff('0x1b')](_0x4eb420,{'showHidden':![],'depth':null}));if(this[_0xa4ff('0xa')][_0x4eb420[_0xa4ff('0x43')]]){if(!this[_0xa4ff('0xa')][_0x4eb420[_0xa4ff('0x43')]][_0xa4ff('0x32')]||_0x4eb420[_0xa4ff('0x12')]['toLowerCase']()=='registered'){this['agents'][_0x4eb420[_0xa4ff('0x43')]][_0xa4ff('0x32')]=![];this['agents'][_0x4eb420[_0xa4ff('0x43')]][_0xa4ff('0x44')]=_0x4eb420[_0xa4ff('0x12')][_0xa4ff('0x34')]();this[_0xa4ff('0xa')][_0x4eb420[_0xa4ff('0x43')]][_0xa4ff('0x42')]=_0x4eb420[_0xa4ff('0x42')];this[_0xa4ff('0xa')][_0x4eb420[_0xa4ff('0x43')]]['updateStatusRealtime'](_0x4eb420);}}else if(this[_0xa4ff('0xb')][_0x4eb420[_0xa4ff('0x43')]]){this[_0xa4ff('0xb')][_0x4eb420[_0xa4ff('0x43')]]['status']=_0x4eb420[_0xa4ff('0x12')]['toLowerCase']();this[_0xa4ff('0xb')][_0x4eb420[_0xa4ff('0x43')]]['address']=_0x4eb420[_0xa4ff('0x42')];logger[_0xa4ff('0x25')]('[userReport][peerstatus]\x20sending\x20telephone:save\x20event:',util[_0xa4ff('0x1b')](this['telephones'][_0x4eb420['peer']],{'showHidden':![],'depth':null}));this[_0xa4ff('0x1f')](util[_0xa4ff('0x2b')](_0xa4ff('0x45'),this[_0xa4ff('0xb')][_0x4eb420[_0xa4ff('0x43')]]['name']),_0xa4ff('0x46'),this['telephones'][_0x4eb420[_0xa4ff('0x43')]]);}else if(this[_0xa4ff('0x9')][_0x4eb420['peer']]){this['trunks'][_0x4eb420[_0xa4ff('0x43')]][_0xa4ff('0x44')]=_0x4eb420[_0xa4ff('0x12')][_0xa4ff('0x34')]();this[_0xa4ff('0x9')][_0x4eb420['peer']][_0xa4ff('0x42')]=_0x4eb420[_0xa4ff('0x42')];logger[_0xa4ff('0x25')](_0xa4ff('0x47'),util[_0xa4ff('0x1b')](this['trunks'][_0x4eb420[_0xa4ff('0x43')]],{'showHidden':![],'depth':null}));this[_0xa4ff('0x1f')](util[_0xa4ff('0x2b')](_0xa4ff('0x2c'),this[_0xa4ff('0x9')][_0x4eb420[_0xa4ff('0x43')]]['name']),'trunk:save',this[_0xa4ff('0x9')][_0x4eb420['peer']]);}}}catch(_0x2baab4){logger[_0xa4ff('0x16')](_0xa4ff('0x48'),util[_0xa4ff('0x1b')](_0x2baab4,{'showHidden':![],'depth':null}));}};module[_0xa4ff('0x49')]=UserReport;