815b8f581ae3748256fa28572eb8f71b1973adad
[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 _0x3801=['status','address','[userReport][peerstatus]\x20sending\x20telephone:save\x20event:','telephone:%s','[userReport][peerstatus]\x20sending\x20trunk:save\x20event:','exports','lodash','util','ioredis','bluebird','../../../config/environment','../../../config/logger','ami','../ami','socket.io-emitter','redis','trunks','agents','registryentry','syncRegistry','bind','devicestatechange','syncDeviceState','syncPeerStatus','resolve','actionSipShowRegistry','catch','inspect','then','actionDeviceStateList','error','actionSipPeerStatus','prototype','syncRealtimeShow','isUndefined','emit','info','[userReport][registry]\x20registry:%s\x20state:%s','username','debug','[userReport][registry]','stateRegistry','merge','omit','event','actionid','state','[userReport][registry]\x20sending\x20trunk:save\x20event:','format','name','trunk:save','isNotNull','device','[userReport][devicestatechange]','inuse','local','toLowerCase','stateTime','toNumber','updateStatusRealtime','telephones','[userReport][devicestatechange]\x20sending\x20telephone:save\x20event:','telephone:save','[userReport][devicestatechange]\x20sending\x20trunk:save\x20event:','trunk:%s','startsWith','substring','indexOf','find','mobile','accountcode','peerstatus','[userReport][peerstatus]\x20peer:%s\x20address:%s\x20status:%s','peer','registered'];(function(_0x288a0f,_0x38c315){var _0x216213=function(_0x516c67){while(--_0x516c67){_0x288a0f['push'](_0x288a0f['shift']());}};_0x216213(++_0x38c315);}(_0x3801,0x9c));var _0x1380=function(_0x2d2885,_0x667d70){_0x2d2885=_0x2d2885-0x0;var _0x2cea6=_0x3801[_0x2d2885];return _0x2cea6;};'use strict';var _=require(_0x1380('0x0'));var moment=require('moment');var util=require(_0x1380('0x1'));var Redis=require(_0x1380('0x2'));var BPromise=require(_0x1380('0x3'));var config=require(_0x1380('0x4'));var logger=require(_0x1380('0x5'))(_0x1380('0x6'));var ami=require(_0x1380('0x7'));config['redis']=_['defaults'](config['redis'],{'host':'localhost','port':0x18eb});var io=require(_0x1380('0x8'))(new Redis(config[_0x1380('0x9')]));function UserReport(_0x2f753f){this[_0x1380('0xa')]=_0x2f753f['trunks'];this[_0x1380('0xb')]=_0x2f753f['agents'];this['telephones']=_0x2f753f['telephones'];ami['on'](_0x1380('0xc'),this[_0x1380('0xd')][_0x1380('0xe')](this));ami['on']('registry',this[_0x1380('0xd')][_0x1380('0xe')](this));ami['on'](_0x1380('0xf'),this[_0x1380('0x10')][_0x1380('0xe')](this));ami['on']('peerstatus',this[_0x1380('0x11')][_0x1380('0xe')](this));return this['syncRealtimeShow']();}function showSipRegistrations(){Promise[_0x1380('0x12')]()['then'](ami[_0x1380('0x13')]())[_0x1380('0x14')](function(_0x496710){logger['error']('[userReport][sipshowregistry]',util[_0x1380('0x15')](_0x496710,{'showHidden':![],'depth':null}));});}function listDeviceStates(){Promise['resolve']()[_0x1380('0x16')](ami[_0x1380('0x17')]())['catch'](function(_0x4db56b){logger[_0x1380('0x18')]('[userReport][devicestatelist]',util[_0x1380('0x15')](_0x4db56b,{'showHidden':![],'depth':null}));});}function showPeersStatus(){Promise[_0x1380('0x12')]()[_0x1380('0x16')](ami[_0x1380('0x19')]())['catch'](function(_0x4e51e1){logger[_0x1380('0x18')]('[userReport][sippeerstatus]',util[_0x1380('0x15')](_0x4e51e1,{'showHidden':![],'depth':null}));});}UserReport[_0x1380('0x1a')][_0x1380('0x1b')]=function(){setInterval(function(){BPromise[_0x1380('0x12')]()['then'](showSipRegistrations())[_0x1380('0x16')](listDeviceStates())[_0x1380('0x16')](showPeersStatus());},0x32c8);};UserReport[_0x1380('0x1a')]['isNotNull']=function(_0x236b6a){return _0x236b6a!==null&&!_[_0x1380('0x1c')](_0x236b6a);};UserReport[_0x1380('0x1a')]['emit']=function(_0x24c638,_0x593a37,_0x23acfc){io['to'](_0x24c638)[_0x1380('0x1d')](_0x593a37,_0x23acfc);};UserReport[_0x1380('0x1a')]['syncRegistry']=function(_0x5055ee){try{if(this['isNotNull'](_0x5055ee)){logger[_0x1380('0x1e')](_0x1380('0x1f'),_0x5055ee[_0x1380('0x20')],_0x5055ee['state']);logger[_0x1380('0x21')](_0x1380('0x22'),util['inspect'](_0x5055ee,{'showHidden':![],'depth':null}));var _0x438dd9=_['find'](this['trunks'],{'defaultuser':_0x5055ee[_0x1380('0x20')]});if(_0x438dd9){_0x5055ee[_0x1380('0x23')]=_0x5055ee['state'];_[_0x1380('0x24')](_0x438dd9,_[_0x1380('0x25')](_0x5055ee,[_0x1380('0x26'),_0x1380('0x27'),_0x1380('0x20'),_0x1380('0x28')]));logger[_0x1380('0x21')](_0x1380('0x29'),util[_0x1380('0x15')](_0x438dd9,{'showHidden':![],'depth':null}));this[_0x1380('0x1d')](util[_0x1380('0x2a')]('trunk:%s',_0x438dd9[_0x1380('0x2b')]),_0x1380('0x2c'),_0x438dd9);}}}catch(_0x18d845){logger[_0x1380('0x18')]('[userReport][registry]',util[_0x1380('0x15')](_0x18d845,{'showHidden':![],'depth':null}));}};UserReport[_0x1380('0x1a')]['syncDeviceState']=function(_0x36fbbc){try{if(this[_0x1380('0x2d')](_0x36fbbc)){logger[_0x1380('0x1e')]('[userReport][devicestatechange]\x20device:%s\x20state:%s',_0x36fbbc[_0x1380('0x2e')],_0x36fbbc[_0x1380('0x28')]);logger[_0x1380('0x21')](_0x1380('0x2f'),util['inspect'](_0x36fbbc,{'showHidden':![],'depth':null}));if(this['agents'][_0x36fbbc['device']]){if(!this[_0x1380('0xb')][_0x36fbbc[_0x1380('0x2e')]]['local']||_0x36fbbc[_0x1380('0x28')]['toLowerCase']()==_0x1380('0x30')){this[_0x1380('0xb')][_0x36fbbc[_0x1380('0x2e')]][_0x1380('0x31')]=![];if(this[_0x1380('0xb')][_0x36fbbc[_0x1380('0x2e')]][_0x1380('0x28')]!==_0x36fbbc[_0x1380('0x28')][_0x1380('0x32')]()){this[_0x1380('0xb')][_0x36fbbc['device']][_0x1380('0x33')]=_[_0x1380('0x34')](moment()[_0x1380('0x2a')]('x'));}this[_0x1380('0xb')][_0x36fbbc[_0x1380('0x2e')]][_0x1380('0x28')]=_0x36fbbc[_0x1380('0x28')]['toLowerCase']();this[_0x1380('0xb')][_0x36fbbc['device']][_0x1380('0x35')](_0x36fbbc);}}else if(this[_0x1380('0x36')][_0x36fbbc['device']]){if(this[_0x1380('0x36')][_0x36fbbc[_0x1380('0x2e')]][_0x1380('0x28')]!==_0x36fbbc[_0x1380('0x28')][_0x1380('0x32')]()){this[_0x1380('0x36')][_0x36fbbc['device']][_0x1380('0x33')]=_[_0x1380('0x34')](moment()[_0x1380('0x2a')]('x'));}this[_0x1380('0x36')][_0x36fbbc[_0x1380('0x2e')]][_0x1380('0x28')]=_0x36fbbc[_0x1380('0x28')][_0x1380('0x32')]();logger[_0x1380('0x21')](_0x1380('0x37'),util['inspect'](this['telephones'][_0x36fbbc['device']],{'showHidden':![],'depth':null}));this[_0x1380('0x1d')](util[_0x1380('0x2a')]('telephone:%s',this['telephones'][_0x36fbbc['device']][_0x1380('0x2b')]),_0x1380('0x38'),this[_0x1380('0x36')][_0x36fbbc[_0x1380('0x2e')]]);}else if(this[_0x1380('0xa')][_0x36fbbc[_0x1380('0x2e')]]){if(this[_0x1380('0xa')][_0x36fbbc[_0x1380('0x2e')]]['state']!==_0x36fbbc[_0x1380('0x28')][_0x1380('0x32')]()){this[_0x1380('0xa')][_0x36fbbc[_0x1380('0x2e')]]['stateTime']=_[_0x1380('0x34')](moment()[_0x1380('0x2a')]('x'));}this[_0x1380('0xa')][_0x36fbbc['device']][_0x1380('0x28')]=_0x36fbbc[_0x1380('0x28')][_0x1380('0x32')]();logger['debug'](_0x1380('0x39'),util[_0x1380('0x15')](this[_0x1380('0xa')][_0x36fbbc[_0x1380('0x2e')]],{'showHidden':![],'depth':null}));this[_0x1380('0x1d')](util[_0x1380('0x2a')](_0x1380('0x3a'),this[_0x1380('0xa')][_0x36fbbc['device']][_0x1380('0x2b')]),_0x1380('0x2c'),this[_0x1380('0xa')][_0x36fbbc[_0x1380('0x2e')]]);}else if(_[_0x1380('0x3b')](_0x36fbbc['device'],'Local')){var _0x4ed523=_0x36fbbc[_0x1380('0x2e')];var _0x27ded1=_0x4ed523[_0x1380('0x3c')](_0x4ed523[_0x1380('0x3d')]('/')+0x1,_0x4ed523[_0x1380('0x3d')]('@'));var _0x4bf646=_[_0x1380('0x3e')](this[_0x1380('0xb')],function(_0x20b22e){return _0x20b22e[_0x1380('0x3f')]==_0x27ded1||_0x20b22e['phone']==_0x27ded1||_0x20b22e[_0x1380('0x40')]==_0x27ded1;});if(_0x4bf646){if(_0x4bf646[_0x1380('0x28')]!==_0x36fbbc[_0x1380('0x28')]['toLowerCase']()){_0x4bf646['stateTime']=_[_0x1380('0x34')](moment()['format']('x'));}_0x4bf646[_0x1380('0x28')]=_0x36fbbc['state'][_0x1380('0x32')]();_0x4bf646[_0x1380('0x31')]=!![];_0x4bf646[_0x1380('0x35')](_0x36fbbc);}}}}catch(_0x2500be){logger[_0x1380('0x18')]('[userReport][devicestatechange]',util['inspect'](_0x2500be,{'showHidden':![],'depth':null}));}};UserReport[_0x1380('0x1a')]['syncPeerStatus']=function(_0x1f50bd){try{if(this['isNotNull'](_0x1f50bd)&&this['isNotNull'](_0x1f50bd[_0x1380('0x41')])){logger[_0x1380('0x1e')](_0x1380('0x42'),_0x1f50bd['peer'],_0x1f50bd['address'],_0x1f50bd[_0x1380('0x41')]);logger[_0x1380('0x21')]('[userReport][peerstatus]',util[_0x1380('0x15')](_0x1f50bd,{'showHidden':![],'depth':null}));if(this[_0x1380('0xb')][_0x1f50bd['peer']]){if(!this[_0x1380('0xb')][_0x1f50bd[_0x1380('0x43')]][_0x1380('0x31')]||_0x1f50bd[_0x1380('0x41')]['toLowerCase']()==_0x1380('0x44')){this[_0x1380('0xb')][_0x1f50bd[_0x1380('0x43')]][_0x1380('0x31')]=![];this[_0x1380('0xb')][_0x1f50bd[_0x1380('0x43')]][_0x1380('0x45')]=_0x1f50bd[_0x1380('0x41')]['toLowerCase']();this[_0x1380('0xb')][_0x1f50bd['peer']][_0x1380('0x46')]=_0x1f50bd[_0x1380('0x46')];this[_0x1380('0xb')][_0x1f50bd[_0x1380('0x43')]][_0x1380('0x35')](_0x1f50bd);}}else if(this[_0x1380('0x36')][_0x1f50bd[_0x1380('0x43')]]){this[_0x1380('0x36')][_0x1f50bd[_0x1380('0x43')]][_0x1380('0x45')]=_0x1f50bd['peerstatus'][_0x1380('0x32')]();this['telephones'][_0x1f50bd['peer']][_0x1380('0x46')]=_0x1f50bd[_0x1380('0x46')];logger['debug'](_0x1380('0x47'),util[_0x1380('0x15')](this[_0x1380('0x36')][_0x1f50bd[_0x1380('0x43')]],{'showHidden':![],'depth':null}));this[_0x1380('0x1d')](util[_0x1380('0x2a')](_0x1380('0x48'),this['telephones'][_0x1f50bd[_0x1380('0x43')]]['name']),_0x1380('0x38'),this[_0x1380('0x36')][_0x1f50bd['peer']]);}else if(this[_0x1380('0xa')][_0x1f50bd[_0x1380('0x43')]]){this[_0x1380('0xa')][_0x1f50bd[_0x1380('0x43')]]['status']=_0x1f50bd[_0x1380('0x41')]['toLowerCase']();this['trunks'][_0x1f50bd[_0x1380('0x43')]][_0x1380('0x46')]=_0x1f50bd[_0x1380('0x46')];logger[_0x1380('0x21')](_0x1380('0x49'),util['inspect'](this[_0x1380('0xa')][_0x1f50bd[_0x1380('0x43')]],{'showHidden':![],'depth':null}));this[_0x1380('0x1d')](util[_0x1380('0x2a')](_0x1380('0x3a'),this[_0x1380('0xa')][_0x1f50bd['peer']][_0x1380('0x2b')]),_0x1380('0x2c'),this[_0x1380('0xa')][_0x1f50bd[_0x1380('0x43')]]);}}}catch(_0x5389f6){logger[_0x1380('0x18')]('[userReport][peerstatus]',util['inspect'](_0x5389f6,{'showHidden':![],'depth':null}));}};module[_0x1380('0x4a')]=UserReport;