7f6935e9304bc3116fc29c74ae4e1e71097d3121
[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 _0x5ba6=['devicestatechange','syncDeviceState','peerstatus','syncRealtimeShow','then','actionSipShowRegistry','catch','error','inspect','resolve','actionDeviceStateList','actionSipPeerStatus','[userReport][sippeerstatus]','prototype','isNotNull','isUndefined','emit','info','[userReport][registry]\x20registry:%s\x20state:%s','username','state','debug','[userReport][registry]','stateRegistry','event','actionid','[userReport][registry]\x20sending\x20trunk:save\x20event:','format','trunk:%s','name','[userReport][devicestatechange]\x20device:%s\x20state:%s','device','[userReport][devicestatechange]','local','toLowerCase','inuse','stateTime','toNumber','updateStatusRealtime','[userReport][devicestatechange]\x20sending\x20telephone:save\x20event:','[userReport][devicestatechange]\x20sending\x20trunk:save\x20event:','trunk:save','startsWith','substring','indexOf','find','mobile','phone','accountcode','syncPeerStatus','[userReport][peerstatus]\x20peer:%s\x20address:%s\x20status:%s','peer','address','[userReport][peerstatus]','registered','status','[userReport][peerstatus]\x20sending\x20telephone:save\x20event:','telephone:%s','telephone:save','[userReport][peerstatus]\x20sending\x20trunk:save\x20event:','exports','lodash','moment','ioredis','bluebird','../../../config/environment','../ami','redis','defaults','localhost','socket.io-emitter','trunks','agents','telephones','registryentry','syncRegistry','bind'];(function(_0x20a584,_0xe384a5){var _0x4b41a8=function(_0x2127c6){while(--_0x2127c6){_0x20a584['push'](_0x20a584['shift']());}};_0x4b41a8(++_0xe384a5);}(_0x5ba6,0x1be));var _0x65ba=function(_0x4b2f0b,_0x5b758b){_0x4b2f0b=_0x4b2f0b-0x0;var _0x5f1de9=_0x5ba6[_0x4b2f0b];return _0x5f1de9;};'use strict';var _=require(_0x65ba('0x0'));var moment=require(_0x65ba('0x1'));var util=require('util');var Redis=require(_0x65ba('0x2'));var BPromise=require(_0x65ba('0x3'));var config=require(_0x65ba('0x4'));var logger=require('../../../config/logger')('ami');var ami=require(_0x65ba('0x5'));config[_0x65ba('0x6')]=_[_0x65ba('0x7')](config[_0x65ba('0x6')],{'host':_0x65ba('0x8'),'port':0x18eb});var io=require(_0x65ba('0x9'))(new Redis(config[_0x65ba('0x6')]));function UserReport(_0x1b327d){this[_0x65ba('0xa')]=_0x1b327d['trunks'];this[_0x65ba('0xb')]=_0x1b327d[_0x65ba('0xb')];this['telephones']=_0x1b327d[_0x65ba('0xc')];ami['on'](_0x65ba('0xd'),this[_0x65ba('0xe')][_0x65ba('0xf')](this));ami['on']('registry',this[_0x65ba('0xe')][_0x65ba('0xf')](this));ami['on'](_0x65ba('0x10'),this[_0x65ba('0x11')][_0x65ba('0xf')](this));ami['on'](_0x65ba('0x12'),this['syncPeerStatus']['bind'](this));return this[_0x65ba('0x13')]();}function showSipRegistrations(){Promise['resolve']()[_0x65ba('0x14')](ami[_0x65ba('0x15')]())[_0x65ba('0x16')](function(_0x54202b){logger[_0x65ba('0x17')]('[userReport][sipshowregistry]',util[_0x65ba('0x18')](_0x54202b,{'showHidden':![],'depth':null}));});}function listDeviceStates(){Promise[_0x65ba('0x19')]()['then'](ami[_0x65ba('0x1a')]())['catch'](function(_0x23dc96){logger[_0x65ba('0x17')]('[userReport][devicestatelist]',util['inspect'](_0x23dc96,{'showHidden':![],'depth':null}));});}function showPeersStatus(){Promise[_0x65ba('0x19')]()[_0x65ba('0x14')](ami[_0x65ba('0x1b')]())['catch'](function(_0x1a853c){logger[_0x65ba('0x17')](_0x65ba('0x1c'),util[_0x65ba('0x18')](_0x1a853c,{'showHidden':![],'depth':null}));});}UserReport['prototype'][_0x65ba('0x13')]=function(){setInterval(function(){BPromise[_0x65ba('0x19')]()[_0x65ba('0x14')](showSipRegistrations())['then'](listDeviceStates())[_0x65ba('0x14')](showPeersStatus());},0x32c8);};UserReport[_0x65ba('0x1d')][_0x65ba('0x1e')]=function(_0x557738){return _0x557738!==null&&!_[_0x65ba('0x1f')](_0x557738);};UserReport[_0x65ba('0x1d')][_0x65ba('0x20')]=function(_0x28186c,_0x3b4f34,_0x374af4){io['to'](_0x28186c)['emit'](_0x3b4f34,_0x374af4);};UserReport[_0x65ba('0x1d')]['syncRegistry']=function(_0x140098){try{if(this[_0x65ba('0x1e')](_0x140098)){logger[_0x65ba('0x21')](_0x65ba('0x22'),_0x140098[_0x65ba('0x23')],_0x140098[_0x65ba('0x24')]);logger[_0x65ba('0x25')](_0x65ba('0x26'),util[_0x65ba('0x18')](_0x140098,{'showHidden':![],'depth':null}));var _0x55dad4=_['find'](this['trunks'],{'defaultuser':_0x140098['username']});if(_0x55dad4){_0x140098[_0x65ba('0x27')]=_0x140098[_0x65ba('0x24')];_['merge'](_0x55dad4,_['omit'](_0x140098,[_0x65ba('0x28'),_0x65ba('0x29'),_0x65ba('0x23'),_0x65ba('0x24')]));logger[_0x65ba('0x25')](_0x65ba('0x2a'),util[_0x65ba('0x18')](_0x55dad4,{'showHidden':![],'depth':null}));this[_0x65ba('0x20')](util[_0x65ba('0x2b')](_0x65ba('0x2c'),_0x55dad4[_0x65ba('0x2d')]),'trunk:save',_0x55dad4);}}}catch(_0x68842a){logger['error'](_0x65ba('0x26'),util[_0x65ba('0x18')](_0x68842a,{'showHidden':![],'depth':null}));}};UserReport[_0x65ba('0x1d')][_0x65ba('0x11')]=function(_0x4a5cfe){try{if(this[_0x65ba('0x1e')](_0x4a5cfe)){logger[_0x65ba('0x21')](_0x65ba('0x2e'),_0x4a5cfe[_0x65ba('0x2f')],_0x4a5cfe[_0x65ba('0x24')]);logger['debug'](_0x65ba('0x30'),util['inspect'](_0x4a5cfe,{'showHidden':![],'depth':null}));if(this[_0x65ba('0xb')][_0x4a5cfe[_0x65ba('0x2f')]]){if(!this[_0x65ba('0xb')][_0x4a5cfe[_0x65ba('0x2f')]][_0x65ba('0x31')]||_0x4a5cfe[_0x65ba('0x24')][_0x65ba('0x32')]()==_0x65ba('0x33')){this[_0x65ba('0xb')][_0x4a5cfe[_0x65ba('0x2f')]][_0x65ba('0x31')]=![];if(this['agents'][_0x4a5cfe['device']]['state']!==_0x4a5cfe[_0x65ba('0x24')][_0x65ba('0x32')]()){this[_0x65ba('0xb')][_0x4a5cfe[_0x65ba('0x2f')]][_0x65ba('0x34')]=_[_0x65ba('0x35')](moment()[_0x65ba('0x2b')]('x'));}this['agents'][_0x4a5cfe['device']][_0x65ba('0x24')]=_0x4a5cfe[_0x65ba('0x24')][_0x65ba('0x32')]();this[_0x65ba('0xb')][_0x4a5cfe[_0x65ba('0x2f')]][_0x65ba('0x36')](_0x4a5cfe);}}else if(this[_0x65ba('0xc')][_0x4a5cfe['device']]){if(this[_0x65ba('0xc')][_0x4a5cfe[_0x65ba('0x2f')]][_0x65ba('0x24')]!==_0x4a5cfe[_0x65ba('0x24')]['toLowerCase']()){this[_0x65ba('0xc')][_0x4a5cfe[_0x65ba('0x2f')]][_0x65ba('0x34')]=_[_0x65ba('0x35')](moment()[_0x65ba('0x2b')]('x'));}this[_0x65ba('0xc')][_0x4a5cfe[_0x65ba('0x2f')]][_0x65ba('0x24')]=_0x4a5cfe[_0x65ba('0x24')][_0x65ba('0x32')]();logger[_0x65ba('0x25')](_0x65ba('0x37'),util['inspect'](this[_0x65ba('0xc')][_0x4a5cfe[_0x65ba('0x2f')]],{'showHidden':![],'depth':null}));this['emit'](util[_0x65ba('0x2b')]('telephone:%s',this[_0x65ba('0xc')][_0x4a5cfe[_0x65ba('0x2f')]][_0x65ba('0x2d')]),'telephone:save',this[_0x65ba('0xc')][_0x4a5cfe[_0x65ba('0x2f')]]);}else if(this[_0x65ba('0xa')][_0x4a5cfe[_0x65ba('0x2f')]]){if(this[_0x65ba('0xa')][_0x4a5cfe[_0x65ba('0x2f')]][_0x65ba('0x24')]!==_0x4a5cfe[_0x65ba('0x24')]['toLowerCase']()){this[_0x65ba('0xa')][_0x4a5cfe[_0x65ba('0x2f')]][_0x65ba('0x34')]=_['toNumber'](moment()[_0x65ba('0x2b')]('x'));}this[_0x65ba('0xa')][_0x4a5cfe[_0x65ba('0x2f')]]['state']=_0x4a5cfe[_0x65ba('0x24')][_0x65ba('0x32')]();logger[_0x65ba('0x25')](_0x65ba('0x38'),util[_0x65ba('0x18')](this[_0x65ba('0xa')][_0x4a5cfe[_0x65ba('0x2f')]],{'showHidden':![],'depth':null}));this['emit'](util[_0x65ba('0x2b')](_0x65ba('0x2c'),this[_0x65ba('0xa')][_0x4a5cfe[_0x65ba('0x2f')]][_0x65ba('0x2d')]),_0x65ba('0x39'),this['trunks'][_0x4a5cfe[_0x65ba('0x2f')]]);}else if(_[_0x65ba('0x3a')](_0x4a5cfe[_0x65ba('0x2f')],'Local')){var _0x564340=_0x4a5cfe[_0x65ba('0x2f')];var _0x46d45b=_0x564340[_0x65ba('0x3b')](_0x564340[_0x65ba('0x3c')]('/')+0x1,_0x564340[_0x65ba('0x3c')]('@'));var _0x590cc2=_[_0x65ba('0x3d')](this[_0x65ba('0xb')],function(_0xbf8ab6){return _0xbf8ab6[_0x65ba('0x3e')]==_0x46d45b||_0xbf8ab6[_0x65ba('0x3f')]==_0x46d45b||_0xbf8ab6[_0x65ba('0x40')]==_0x46d45b;});if(_0x590cc2){if(_0x590cc2['state']!==_0x4a5cfe[_0x65ba('0x24')][_0x65ba('0x32')]()){_0x590cc2[_0x65ba('0x34')]=_['toNumber'](moment()[_0x65ba('0x2b')]('x'));}_0x590cc2[_0x65ba('0x24')]=_0x4a5cfe[_0x65ba('0x24')][_0x65ba('0x32')]();_0x590cc2[_0x65ba('0x31')]=!![];_0x590cc2[_0x65ba('0x36')](_0x4a5cfe);}}}}catch(_0x3671fd){logger[_0x65ba('0x17')]('[userReport][devicestatechange]',util[_0x65ba('0x18')](_0x3671fd,{'showHidden':![],'depth':null}));}};UserReport['prototype'][_0x65ba('0x41')]=function(_0x1a02ce){try{if(this['isNotNull'](_0x1a02ce)&&this[_0x65ba('0x1e')](_0x1a02ce['peerstatus'])){logger[_0x65ba('0x21')](_0x65ba('0x42'),_0x1a02ce[_0x65ba('0x43')],_0x1a02ce[_0x65ba('0x44')],_0x1a02ce['peerstatus']);logger[_0x65ba('0x25')](_0x65ba('0x45'),util['inspect'](_0x1a02ce,{'showHidden':![],'depth':null}));if(this[_0x65ba('0xb')][_0x1a02ce[_0x65ba('0x43')]]){if(!this[_0x65ba('0xb')][_0x1a02ce[_0x65ba('0x43')]][_0x65ba('0x31')]||_0x1a02ce['peerstatus']['toLowerCase']()==_0x65ba('0x46')){this[_0x65ba('0xb')][_0x1a02ce[_0x65ba('0x43')]][_0x65ba('0x31')]=![];this[_0x65ba('0xb')][_0x1a02ce['peer']][_0x65ba('0x47')]=_0x1a02ce[_0x65ba('0x12')][_0x65ba('0x32')]();this[_0x65ba('0xb')][_0x1a02ce['peer']]['address']=_0x1a02ce[_0x65ba('0x44')];this[_0x65ba('0xb')][_0x1a02ce['peer']][_0x65ba('0x36')](_0x1a02ce);}}else if(this['telephones'][_0x1a02ce[_0x65ba('0x43')]]){this[_0x65ba('0xc')][_0x1a02ce['peer']][_0x65ba('0x47')]=_0x1a02ce[_0x65ba('0x12')][_0x65ba('0x32')]();this[_0x65ba('0xc')][_0x1a02ce[_0x65ba('0x43')]][_0x65ba('0x44')]=_0x1a02ce[_0x65ba('0x44')];logger['debug'](_0x65ba('0x48'),util[_0x65ba('0x18')](this['telephones'][_0x1a02ce['peer']],{'showHidden':![],'depth':null}));this[_0x65ba('0x20')](util[_0x65ba('0x2b')](_0x65ba('0x49'),this[_0x65ba('0xc')][_0x1a02ce[_0x65ba('0x43')]][_0x65ba('0x2d')]),_0x65ba('0x4a'),this[_0x65ba('0xc')][_0x1a02ce[_0x65ba('0x43')]]);}else if(this[_0x65ba('0xa')][_0x1a02ce[_0x65ba('0x43')]]){this['trunks'][_0x1a02ce[_0x65ba('0x43')]][_0x65ba('0x47')]=_0x1a02ce['peerstatus']['toLowerCase']();this[_0x65ba('0xa')][_0x1a02ce[_0x65ba('0x43')]][_0x65ba('0x44')]=_0x1a02ce['address'];logger['debug'](_0x65ba('0x4b'),util['inspect'](this[_0x65ba('0xa')][_0x1a02ce['peer']],{'showHidden':![],'depth':null}));this[_0x65ba('0x20')](util['format'](_0x65ba('0x2c'),this['trunks'][_0x1a02ce['peer']][_0x65ba('0x2d')]),_0x65ba('0x39'),this[_0x65ba('0xa')][_0x1a02ce[_0x65ba('0x43')]]);}}}catch(_0x1a526b){logger[_0x65ba('0x17')](_0x65ba('0x45'),util[_0x65ba('0x18')](_0x1a526b,{'showHidden':![],'depth':null}));}};module[_0x65ba('0x4c')]=UserReport;