697387187c303a012dbe763d7caf126abc0a97f2
[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 _0xc142=['telephones','registryentry','syncRegistry','bind','registry','syncDeviceState','syncPeerStatus','syncRealtimeShow','resolve','then','actionSipShowRegistry','catch','error','[userReport][sipshowregistry]','actionDeviceStateList','[userReport][devicestatelist]','actionSipPeerStatus','[userReport][sippeerstatus]','inspect','prototype','isUndefined','emit','[userReport][registry]\x20registry:%s\x20state:%s','username','state','debug','stateRegistry','merge','omit','event','actionid','[userReport][registry]\x20sending\x20trunk:save\x20event:','format','trunk:%s','name','trunk:save','[userReport][registry]','isNotNull','[userReport][devicestatechange]\x20device:%s\x20state:%s','device','toLowerCase','stateTime','updateStatusRealtime','toNumber','[userReport][devicestatechange]\x20sending\x20telephone:save\x20event:','telephone:%s','telephone:save','[userReport][devicestatechange]\x20sending\x20trunk:save\x20event:','Local','substring','indexOf','find','mobile','phone','accountcode','local','peerstatus','info','[userReport][peerstatus]\x20peer:%s\x20address:%s\x20status:%s','peer','address','[userReport][peerstatus]','registered','status','[userReport][peerstatus]\x20sending\x20telephone:save\x20event:','exports','ioredis','bluebird','../../../config/environment','../../../config/logger','ami','../ami','redis','defaults','localhost','socket.io-emitter','trunks','agents'];(function(_0x8722c8,_0x297570){var _0x54ebd9=function(_0x3ded04){while(--_0x3ded04){_0x8722c8['push'](_0x8722c8['shift']());}};_0x54ebd9(++_0x297570);}(_0xc142,0x90));var _0x2c14=function(_0x4854d6,_0x2f1264){_0x4854d6=_0x4854d6-0x0;var _0x3885c0=_0xc142[_0x4854d6];return _0x3885c0;};'use strict';var _=require('lodash');var moment=require('moment');var util=require('util');var Redis=require(_0x2c14('0x0'));var BPromise=require(_0x2c14('0x1'));var config=require(_0x2c14('0x2'));var logger=require(_0x2c14('0x3'))(_0x2c14('0x4'));var ami=require(_0x2c14('0x5'));config[_0x2c14('0x6')]=_[_0x2c14('0x7')](config[_0x2c14('0x6')],{'host':_0x2c14('0x8'),'port':0x18eb});var io=require(_0x2c14('0x9'))(new Redis(config[_0x2c14('0x6')]));function UserReport(_0x26d367){this[_0x2c14('0xa')]=_0x26d367[_0x2c14('0xa')];this[_0x2c14('0xb')]=_0x26d367['agents'];this['telephones']=_0x26d367[_0x2c14('0xc')];ami['on'](_0x2c14('0xd'),this[_0x2c14('0xe')][_0x2c14('0xf')](this));ami['on'](_0x2c14('0x10'),this['syncRegistry'][_0x2c14('0xf')](this));ami['on']('devicestatechange',this[_0x2c14('0x11')]['bind'](this));ami['on']('peerstatus',this[_0x2c14('0x12')][_0x2c14('0xf')](this));return this[_0x2c14('0x13')]();}function showSipRegistrations(){Promise[_0x2c14('0x14')]()[_0x2c14('0x15')](ami[_0x2c14('0x16')]())[_0x2c14('0x17')](function(_0x362b75){logger[_0x2c14('0x18')](_0x2c14('0x19'),util['inspect'](_0x362b75,{'showHidden':![],'depth':null}));});}function listDeviceStates(){Promise['resolve']()[_0x2c14('0x15')](ami[_0x2c14('0x1a')]())[_0x2c14('0x17')](function(_0x56d6d7){logger[_0x2c14('0x18')](_0x2c14('0x1b'),util['inspect'](_0x56d6d7,{'showHidden':![],'depth':null}));});}function showPeersStatus(){Promise[_0x2c14('0x14')]()[_0x2c14('0x15')](ami[_0x2c14('0x1c')]())[_0x2c14('0x17')](function(_0x26398e){logger[_0x2c14('0x18')](_0x2c14('0x1d'),util[_0x2c14('0x1e')](_0x26398e,{'showHidden':![],'depth':null}));});}UserReport[_0x2c14('0x1f')][_0x2c14('0x13')]=function(){setInterval(function(){BPromise[_0x2c14('0x14')]()[_0x2c14('0x15')](showSipRegistrations())[_0x2c14('0x15')](listDeviceStates())['then'](showPeersStatus());},0x32c8);};UserReport['prototype']['isNotNull']=function(_0x26a3e4){return _0x26a3e4!==null&&!_[_0x2c14('0x20')](_0x26a3e4);};UserReport[_0x2c14('0x1f')][_0x2c14('0x21')]=function(_0x3f9e48,_0x5eefc9,_0x57fda9){io['to'](_0x3f9e48)[_0x2c14('0x21')](_0x5eefc9,_0x57fda9);};UserReport[_0x2c14('0x1f')][_0x2c14('0xe')]=function(_0x48c1f7){try{if(this['isNotNull'](_0x48c1f7)){logger['info'](_0x2c14('0x22'),_0x48c1f7[_0x2c14('0x23')],_0x48c1f7[_0x2c14('0x24')]);logger[_0x2c14('0x25')]('[userReport][registry]',util['inspect'](_0x48c1f7,{'showHidden':![],'depth':null}));var _0x2e658c=_['find'](this[_0x2c14('0xa')],{'defaultuser':_0x48c1f7[_0x2c14('0x23')]});if(_0x2e658c){_0x48c1f7[_0x2c14('0x26')]=_0x48c1f7[_0x2c14('0x24')];_[_0x2c14('0x27')](_0x2e658c,_[_0x2c14('0x28')](_0x48c1f7,[_0x2c14('0x29'),_0x2c14('0x2a'),'username',_0x2c14('0x24')]));logger['debug'](_0x2c14('0x2b'),util[_0x2c14('0x1e')](_0x2e658c,{'showHidden':![],'depth':null}));this[_0x2c14('0x21')](util[_0x2c14('0x2c')](_0x2c14('0x2d'),_0x2e658c[_0x2c14('0x2e')]),_0x2c14('0x2f'),_0x2e658c);}}}catch(_0xa9e02e){logger[_0x2c14('0x18')](_0x2c14('0x30'),util['inspect'](_0xa9e02e,{'showHidden':![],'depth':null}));}};UserReport[_0x2c14('0x1f')]['syncDeviceState']=function(_0x493d39){try{if(this[_0x2c14('0x31')](_0x493d39)){logger['info'](_0x2c14('0x32'),_0x493d39['device'],_0x493d39[_0x2c14('0x24')]);logger['debug']('[userReport][devicestatechange]',util[_0x2c14('0x1e')](_0x493d39,{'showHidden':![],'depth':null}));if(this[_0x2c14('0xb')][_0x493d39['device']]){if(!this[_0x2c14('0xb')][_0x493d39[_0x2c14('0x33')]]['local']||_0x493d39[_0x2c14('0x24')][_0x2c14('0x34')]()=='inuse'){this[_0x2c14('0xb')][_0x493d39[_0x2c14('0x33')]]['local']=![];if(this[_0x2c14('0xb')][_0x493d39[_0x2c14('0x33')]][_0x2c14('0x24')]!==_0x493d39[_0x2c14('0x24')][_0x2c14('0x34')]()){this['agents'][_0x493d39[_0x2c14('0x33')]][_0x2c14('0x35')]=_['toNumber'](moment()[_0x2c14('0x2c')]('x'));}this[_0x2c14('0xb')][_0x493d39[_0x2c14('0x33')]][_0x2c14('0x24')]=_0x493d39[_0x2c14('0x24')]['toLowerCase']();this['agents'][_0x493d39[_0x2c14('0x33')]][_0x2c14('0x36')](_0x493d39);}}else if(this[_0x2c14('0xc')][_0x493d39[_0x2c14('0x33')]]){if(this[_0x2c14('0xc')][_0x493d39[_0x2c14('0x33')]][_0x2c14('0x24')]!==_0x493d39['state'][_0x2c14('0x34')]()){this[_0x2c14('0xc')][_0x493d39[_0x2c14('0x33')]][_0x2c14('0x35')]=_[_0x2c14('0x37')](moment()[_0x2c14('0x2c')]('x'));}this[_0x2c14('0xc')][_0x493d39['device']][_0x2c14('0x24')]=_0x493d39[_0x2c14('0x24')][_0x2c14('0x34')]();logger[_0x2c14('0x25')](_0x2c14('0x38'),util[_0x2c14('0x1e')](this[_0x2c14('0xc')][_0x493d39[_0x2c14('0x33')]],{'showHidden':![],'depth':null}));this[_0x2c14('0x21')](util['format'](_0x2c14('0x39'),this[_0x2c14('0xc')][_0x493d39[_0x2c14('0x33')]][_0x2c14('0x2e')]),_0x2c14('0x3a'),this['telephones'][_0x493d39[_0x2c14('0x33')]]);}else if(this[_0x2c14('0xa')][_0x493d39[_0x2c14('0x33')]]){if(this[_0x2c14('0xa')][_0x493d39[_0x2c14('0x33')]][_0x2c14('0x24')]!==_0x493d39['state'][_0x2c14('0x34')]()){this[_0x2c14('0xa')][_0x493d39[_0x2c14('0x33')]][_0x2c14('0x35')]=_[_0x2c14('0x37')](moment()[_0x2c14('0x2c')]('x'));}this[_0x2c14('0xa')][_0x493d39[_0x2c14('0x33')]][_0x2c14('0x24')]=_0x493d39[_0x2c14('0x24')][_0x2c14('0x34')]();logger[_0x2c14('0x25')](_0x2c14('0x3b'),util[_0x2c14('0x1e')](this['trunks'][_0x493d39[_0x2c14('0x33')]],{'showHidden':![],'depth':null}));this['emit'](util[_0x2c14('0x2c')]('trunk:%s',this[_0x2c14('0xa')][_0x493d39[_0x2c14('0x33')]][_0x2c14('0x2e')]),_0x2c14('0x2f'),this['trunks'][_0x493d39['device']]);}else if(_['startsWith'](_0x493d39['device'],_0x2c14('0x3c'))){var _0x2d5303=_0x493d39[_0x2c14('0x33')];var _0x336cdc=_0x2d5303[_0x2c14('0x3d')](_0x2d5303[_0x2c14('0x3e')]('/')+0x1,_0x2d5303[_0x2c14('0x3e')]('@'));var _0x444a55=_[_0x2c14('0x3f')](this[_0x2c14('0xb')],function(_0xba8ea1){return _0xba8ea1[_0x2c14('0x40')]==_0x336cdc||_0xba8ea1[_0x2c14('0x41')]==_0x336cdc||_0xba8ea1[_0x2c14('0x42')]==_0x336cdc;});if(_0x444a55){if(_0x444a55['state']!==_0x493d39[_0x2c14('0x24')]['toLowerCase']()){_0x444a55[_0x2c14('0x35')]=_[_0x2c14('0x37')](moment()[_0x2c14('0x2c')]('x'));}_0x444a55[_0x2c14('0x24')]=_0x493d39[_0x2c14('0x24')][_0x2c14('0x34')]();_0x444a55[_0x2c14('0x43')]=!![];_0x444a55[_0x2c14('0x36')](_0x493d39);}}}}catch(_0x298b8b){logger[_0x2c14('0x18')]('[userReport][devicestatechange]',util[_0x2c14('0x1e')](_0x298b8b,{'showHidden':![],'depth':null}));}};UserReport['prototype']['syncPeerStatus']=function(_0x547935){try{if(this[_0x2c14('0x31')](_0x547935)&&this['isNotNull'](_0x547935[_0x2c14('0x44')])){logger[_0x2c14('0x45')](_0x2c14('0x46'),_0x547935[_0x2c14('0x47')],_0x547935[_0x2c14('0x48')],_0x547935[_0x2c14('0x44')]);logger['debug'](_0x2c14('0x49'),util[_0x2c14('0x1e')](_0x547935,{'showHidden':![],'depth':null}));if(this[_0x2c14('0xb')][_0x547935[_0x2c14('0x47')]]){if(!this[_0x2c14('0xb')][_0x547935[_0x2c14('0x47')]][_0x2c14('0x43')]||_0x547935[_0x2c14('0x44')]['toLowerCase']()==_0x2c14('0x4a')){this[_0x2c14('0xb')][_0x547935['peer']][_0x2c14('0x43')]=![];this[_0x2c14('0xb')][_0x547935[_0x2c14('0x47')]][_0x2c14('0x4b')]=_0x547935[_0x2c14('0x44')]['toLowerCase']();this[_0x2c14('0xb')][_0x547935[_0x2c14('0x47')]]['address']=_0x547935[_0x2c14('0x48')];this[_0x2c14('0xb')][_0x547935[_0x2c14('0x47')]][_0x2c14('0x36')](_0x547935);}}else if(this[_0x2c14('0xc')][_0x547935['peer']]){this['telephones'][_0x547935[_0x2c14('0x47')]][_0x2c14('0x4b')]=_0x547935[_0x2c14('0x44')][_0x2c14('0x34')]();this[_0x2c14('0xc')][_0x547935[_0x2c14('0x47')]][_0x2c14('0x48')]=_0x547935[_0x2c14('0x48')];logger[_0x2c14('0x25')](_0x2c14('0x4c'),util[_0x2c14('0x1e')](this[_0x2c14('0xc')][_0x547935[_0x2c14('0x47')]],{'showHidden':![],'depth':null}));this[_0x2c14('0x21')](util[_0x2c14('0x2c')](_0x2c14('0x39'),this[_0x2c14('0xc')][_0x547935[_0x2c14('0x47')]]['name']),'telephone:save',this[_0x2c14('0xc')][_0x547935[_0x2c14('0x47')]]);}else if(this[_0x2c14('0xa')][_0x547935[_0x2c14('0x47')]]){this[_0x2c14('0xa')][_0x547935[_0x2c14('0x47')]]['status']=_0x547935[_0x2c14('0x44')][_0x2c14('0x34')]();this[_0x2c14('0xa')][_0x547935[_0x2c14('0x47')]][_0x2c14('0x48')]=_0x547935[_0x2c14('0x48')];logger[_0x2c14('0x25')]('[userReport][peerstatus]\x20sending\x20trunk:save\x20event:',util[_0x2c14('0x1e')](this['trunks'][_0x547935[_0x2c14('0x47')]],{'showHidden':![],'depth':null}));this['emit'](util[_0x2c14('0x2c')](_0x2c14('0x2d'),this[_0x2c14('0xa')][_0x547935[_0x2c14('0x47')]][_0x2c14('0x2e')]),_0x2c14('0x2f'),this[_0x2c14('0xa')][_0x547935[_0x2c14('0x47')]]);}}}catch(_0x3e749a){logger[_0x2c14('0x18')]('[userReport][peerstatus]',util[_0x2c14('0x1e')](_0x3e749a,{'showHidden':![],'depth':null}));}};module[_0x2c14('0x4d')]=UserReport;