Built motion from commit 52c8a02d.|2.6.29
[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 _0xa0b0=['inspect','actionDeviceStateList','[userReport][devicestatelist]','resolve','actionSipPeerStatus','[userReport][sippeerstatus]','prototype','isUndefined','emit','isNotNull','info','[userReport][registry]\x20registry:%s\x20state:%s','username','[userReport][registry]','find','state','merge','event','[userReport][registry]\x20sending\x20trunk:save\x20event:','format','trunk:%s','name','trunk:save','[userReport][devicestatechange]\x20device:%s\x20state:%s','device','debug','[userReport][devicestatechange]','local','toLowerCase','stateTime','toNumber','[userReport][devicestatechange]\x20sending\x20telephone:save\x20event:','telephone:%s','telephone:save','Local','substring','mobile','phone','accountcode','updateStatusRealtime','peerstatus','peer','[userReport][peerstatus]','registered','address','status','[userReport][peerstatus]\x20sending\x20telephone:save\x20event:','exports','moment','../../../config/environment','../../../config/logger','ami','../ami','redis','defaults','socket.io-emitter','trunks','agents','telephones','registryentry','syncRegistry','registry','bind','devicestatechange','syncDeviceState','syncPeerStatus','syncRealtimeShow','then','actionSipShowRegistry','catch','error'];(function(_0x3b41d5,_0x34aa42){var _0x306af3=function(_0x1f9da8){while(--_0x1f9da8){_0x3b41d5['push'](_0x3b41d5['shift']());}};_0x306af3(++_0x34aa42);}(_0xa0b0,0x193));var _0x0a0b=function(_0x588ca2,_0xad3527){_0x588ca2=_0x588ca2-0x0;var _0x32a666=_0xa0b0[_0x588ca2];return _0x32a666;};'use strict';var _=require('lodash');var moment=require(_0x0a0b('0x0'));var util=require('util');var Redis=require('ioredis');var BPromise=require('bluebird');var config=require(_0x0a0b('0x1'));var logger=require(_0x0a0b('0x2'))(_0x0a0b('0x3'));var ami=require(_0x0a0b('0x4'));config[_0x0a0b('0x5')]=_[_0x0a0b('0x6')](config[_0x0a0b('0x5')],{'host':'localhost','port':0x18eb});var io=require(_0x0a0b('0x7'))(new Redis(config[_0x0a0b('0x5')]));function UserReport(_0x4b9aa0){this['trunks']=_0x4b9aa0[_0x0a0b('0x8')];this[_0x0a0b('0x9')]=_0x4b9aa0[_0x0a0b('0x9')];this['telephones']=_0x4b9aa0[_0x0a0b('0xa')];ami['on'](_0x0a0b('0xb'),this[_0x0a0b('0xc')]['bind'](this));ami['on'](_0x0a0b('0xd'),this[_0x0a0b('0xc')][_0x0a0b('0xe')](this));ami['on'](_0x0a0b('0xf'),this[_0x0a0b('0x10')][_0x0a0b('0xe')](this));ami['on']('peerstatus',this[_0x0a0b('0x11')][_0x0a0b('0xe')](this));return this[_0x0a0b('0x12')]();}function showSipRegistrations(){Promise['resolve']()[_0x0a0b('0x13')](ami[_0x0a0b('0x14')]())[_0x0a0b('0x15')](function(_0x17efe0){logger[_0x0a0b('0x16')]('[userReport][sipshowregistry]',util[_0x0a0b('0x17')](_0x17efe0,{'showHidden':![],'depth':null}));});}function listDeviceStates(){Promise['resolve']()['then'](ami[_0x0a0b('0x18')]())['catch'](function(_0x5acc7c){logger[_0x0a0b('0x16')](_0x0a0b('0x19'),util[_0x0a0b('0x17')](_0x5acc7c,{'showHidden':![],'depth':null}));});}function showPeersStatus(){Promise[_0x0a0b('0x1a')]()[_0x0a0b('0x13')](ami[_0x0a0b('0x1b')]())[_0x0a0b('0x15')](function(_0x54a3a1){logger[_0x0a0b('0x16')](_0x0a0b('0x1c'),util[_0x0a0b('0x17')](_0x54a3a1,{'showHidden':![],'depth':null}));});}UserReport[_0x0a0b('0x1d')][_0x0a0b('0x12')]=function(){setInterval(function(){BPromise[_0x0a0b('0x1a')]()[_0x0a0b('0x13')](showSipRegistrations())['then'](listDeviceStates())['then'](showPeersStatus());},0x32c8);};UserReport[_0x0a0b('0x1d')]['isNotNull']=function(_0x7b2962){return _0x7b2962!==null&&!_[_0x0a0b('0x1e')](_0x7b2962);};UserReport[_0x0a0b('0x1d')][_0x0a0b('0x1f')]=function(_0x3662b1,_0x4966c4,_0x2e8a98){io['to'](_0x3662b1)[_0x0a0b('0x1f')](_0x4966c4,_0x2e8a98);};UserReport[_0x0a0b('0x1d')][_0x0a0b('0xc')]=function(_0x48c9b0){try{if(this[_0x0a0b('0x20')](_0x48c9b0)){logger[_0x0a0b('0x21')](_0x0a0b('0x22'),_0x48c9b0[_0x0a0b('0x23')],_0x48c9b0['state']);logger['debug'](_0x0a0b('0x24'),util['inspect'](_0x48c9b0,{'showHidden':![],'depth':null}));var _0x5cb65f=_[_0x0a0b('0x25')](this[_0x0a0b('0x8')],{'defaultuser':_0x48c9b0['username']});if(_0x5cb65f){_0x48c9b0['stateRegistry']=_0x48c9b0[_0x0a0b('0x26')];_[_0x0a0b('0x27')](_0x5cb65f,_['omit'](_0x48c9b0,[_0x0a0b('0x28'),'actionid',_0x0a0b('0x23'),_0x0a0b('0x26')]));logger['debug'](_0x0a0b('0x29'),util[_0x0a0b('0x17')](_0x5cb65f,{'showHidden':![],'depth':null}));this[_0x0a0b('0x1f')](util[_0x0a0b('0x2a')](_0x0a0b('0x2b'),_0x5cb65f[_0x0a0b('0x2c')]),_0x0a0b('0x2d'),_0x5cb65f);}}}catch(_0x4a4918){logger[_0x0a0b('0x16')](_0x0a0b('0x24'),util[_0x0a0b('0x17')](_0x4a4918,{'showHidden':![],'depth':null}));}};UserReport[_0x0a0b('0x1d')][_0x0a0b('0x10')]=function(_0xb8d3ab){try{if(this['isNotNull'](_0xb8d3ab)){logger[_0x0a0b('0x21')](_0x0a0b('0x2e'),_0xb8d3ab[_0x0a0b('0x2f')],_0xb8d3ab[_0x0a0b('0x26')]);logger[_0x0a0b('0x30')](_0x0a0b('0x31'),util[_0x0a0b('0x17')](_0xb8d3ab,{'showHidden':![],'depth':null}));if(this[_0x0a0b('0x9')][_0xb8d3ab[_0x0a0b('0x2f')]]){if(!this[_0x0a0b('0x9')][_0xb8d3ab[_0x0a0b('0x2f')]][_0x0a0b('0x32')]||_0xb8d3ab['state'][_0x0a0b('0x33')]()=='inuse'){this[_0x0a0b('0x9')][_0xb8d3ab[_0x0a0b('0x2f')]][_0x0a0b('0x32')]=![];if(this[_0x0a0b('0x9')][_0xb8d3ab[_0x0a0b('0x2f')]][_0x0a0b('0x26')]!==_0xb8d3ab['state']['toLowerCase']()){this[_0x0a0b('0x9')][_0xb8d3ab[_0x0a0b('0x2f')]][_0x0a0b('0x34')]=_[_0x0a0b('0x35')](moment()['format']('x'));}this[_0x0a0b('0x9')][_0xb8d3ab[_0x0a0b('0x2f')]][_0x0a0b('0x26')]=_0xb8d3ab[_0x0a0b('0x26')][_0x0a0b('0x33')]();this[_0x0a0b('0x9')][_0xb8d3ab[_0x0a0b('0x2f')]]['updateStatusRealtime'](_0xb8d3ab);}}else if(this[_0x0a0b('0xa')][_0xb8d3ab[_0x0a0b('0x2f')]]){if(this[_0x0a0b('0xa')][_0xb8d3ab[_0x0a0b('0x2f')]]['state']!==_0xb8d3ab[_0x0a0b('0x26')]['toLowerCase']()){this[_0x0a0b('0xa')][_0xb8d3ab[_0x0a0b('0x2f')]][_0x0a0b('0x34')]=_[_0x0a0b('0x35')](moment()[_0x0a0b('0x2a')]('x'));}this['telephones'][_0xb8d3ab['device']][_0x0a0b('0x26')]=_0xb8d3ab[_0x0a0b('0x26')]['toLowerCase']();logger[_0x0a0b('0x30')](_0x0a0b('0x36'),util[_0x0a0b('0x17')](this[_0x0a0b('0xa')][_0xb8d3ab[_0x0a0b('0x2f')]],{'showHidden':![],'depth':null}));this[_0x0a0b('0x1f')](util[_0x0a0b('0x2a')](_0x0a0b('0x37'),this[_0x0a0b('0xa')][_0xb8d3ab[_0x0a0b('0x2f')]][_0x0a0b('0x2c')]),_0x0a0b('0x38'),this[_0x0a0b('0xa')][_0xb8d3ab['device']]);}else if(this[_0x0a0b('0x8')][_0xb8d3ab['device']]){if(this[_0x0a0b('0x8')][_0xb8d3ab['device']][_0x0a0b('0x26')]!==_0xb8d3ab['state'][_0x0a0b('0x33')]()){this['trunks'][_0xb8d3ab[_0x0a0b('0x2f')]][_0x0a0b('0x34')]=_['toNumber'](moment()['format']('x'));}this[_0x0a0b('0x8')][_0xb8d3ab[_0x0a0b('0x2f')]][_0x0a0b('0x26')]=_0xb8d3ab[_0x0a0b('0x26')]['toLowerCase']();logger[_0x0a0b('0x30')]('[userReport][devicestatechange]\x20sending\x20trunk:save\x20event:',util[_0x0a0b('0x17')](this[_0x0a0b('0x8')][_0xb8d3ab[_0x0a0b('0x2f')]],{'showHidden':![],'depth':null}));this[_0x0a0b('0x1f')](util[_0x0a0b('0x2a')](_0x0a0b('0x2b'),this[_0x0a0b('0x8')][_0xb8d3ab[_0x0a0b('0x2f')]][_0x0a0b('0x2c')]),_0x0a0b('0x2d'),this[_0x0a0b('0x8')][_0xb8d3ab[_0x0a0b('0x2f')]]);}else if(_['startsWith'](_0xb8d3ab['device'],_0x0a0b('0x39'))){var _0x105d26=_0xb8d3ab[_0x0a0b('0x2f')];var _0x1a3ad3=_0x105d26[_0x0a0b('0x3a')](_0x105d26['indexOf']('/')+0x1,_0x105d26['indexOf']('@'));var _0x145e3b=_['find'](this[_0x0a0b('0x9')],function(_0x53ae96){return _0x53ae96[_0x0a0b('0x3b')]==_0x1a3ad3||_0x53ae96[_0x0a0b('0x3c')]==_0x1a3ad3||_0x53ae96[_0x0a0b('0x3d')]==_0x1a3ad3;});if(_0x145e3b){if(_0x145e3b[_0x0a0b('0x26')]!==_0xb8d3ab[_0x0a0b('0x26')]['toLowerCase']()){_0x145e3b['stateTime']=_[_0x0a0b('0x35')](moment()['format']('x'));}_0x145e3b[_0x0a0b('0x26')]=_0xb8d3ab[_0x0a0b('0x26')]['toLowerCase']();_0x145e3b[_0x0a0b('0x32')]=!![];_0x145e3b[_0x0a0b('0x3e')](_0xb8d3ab);}}}}catch(_0xef74d6){logger[_0x0a0b('0x16')]('[userReport][devicestatechange]',util[_0x0a0b('0x17')](_0xef74d6,{'showHidden':![],'depth':null}));}};UserReport[_0x0a0b('0x1d')][_0x0a0b('0x11')]=function(_0x36f3db){try{if(this[_0x0a0b('0x20')](_0x36f3db)&&this[_0x0a0b('0x20')](_0x36f3db[_0x0a0b('0x3f')])){logger[_0x0a0b('0x21')]('[userReport][peerstatus]\x20peer:%s\x20address:%s\x20status:%s',_0x36f3db[_0x0a0b('0x40')],_0x36f3db['address'],_0x36f3db[_0x0a0b('0x3f')]);logger[_0x0a0b('0x30')](_0x0a0b('0x41'),util[_0x0a0b('0x17')](_0x36f3db,{'showHidden':![],'depth':null}));if(this[_0x0a0b('0x9')][_0x36f3db[_0x0a0b('0x40')]]){if(!this[_0x0a0b('0x9')][_0x36f3db[_0x0a0b('0x40')]][_0x0a0b('0x32')]||_0x36f3db[_0x0a0b('0x3f')]['toLowerCase']()==_0x0a0b('0x42')){this[_0x0a0b('0x9')][_0x36f3db[_0x0a0b('0x40')]][_0x0a0b('0x32')]=![];this[_0x0a0b('0x9')][_0x36f3db[_0x0a0b('0x40')]]['status']=_0x36f3db[_0x0a0b('0x3f')]['toLowerCase']();this['agents'][_0x36f3db[_0x0a0b('0x40')]][_0x0a0b('0x43')]=_0x36f3db[_0x0a0b('0x43')];this[_0x0a0b('0x9')][_0x36f3db[_0x0a0b('0x40')]][_0x0a0b('0x3e')](_0x36f3db);}}else if(this['telephones'][_0x36f3db[_0x0a0b('0x40')]]){this['telephones'][_0x36f3db[_0x0a0b('0x40')]][_0x0a0b('0x44')]=_0x36f3db['peerstatus'][_0x0a0b('0x33')]();this[_0x0a0b('0xa')][_0x36f3db[_0x0a0b('0x40')]][_0x0a0b('0x43')]=_0x36f3db[_0x0a0b('0x43')];logger[_0x0a0b('0x30')](_0x0a0b('0x45'),util['inspect'](this[_0x0a0b('0xa')][_0x36f3db[_0x0a0b('0x40')]],{'showHidden':![],'depth':null}));this[_0x0a0b('0x1f')](util[_0x0a0b('0x2a')](_0x0a0b('0x37'),this[_0x0a0b('0xa')][_0x36f3db[_0x0a0b('0x40')]][_0x0a0b('0x2c')]),'telephone:save',this[_0x0a0b('0xa')][_0x36f3db[_0x0a0b('0x40')]]);}else if(this[_0x0a0b('0x8')][_0x36f3db[_0x0a0b('0x40')]]){this[_0x0a0b('0x8')][_0x36f3db[_0x0a0b('0x40')]][_0x0a0b('0x44')]=_0x36f3db[_0x0a0b('0x3f')][_0x0a0b('0x33')]();this[_0x0a0b('0x8')][_0x36f3db['peer']][_0x0a0b('0x43')]=_0x36f3db[_0x0a0b('0x43')];logger[_0x0a0b('0x30')]('[userReport][peerstatus]\x20sending\x20trunk:save\x20event:',util['inspect'](this[_0x0a0b('0x8')][_0x36f3db[_0x0a0b('0x40')]],{'showHidden':![],'depth':null}));this[_0x0a0b('0x1f')](util[_0x0a0b('0x2a')](_0x0a0b('0x2b'),this['trunks'][_0x36f3db['peer']]['name']),_0x0a0b('0x2d'),this[_0x0a0b('0x8')][_0x36f3db[_0x0a0b('0x40')]]);}}}catch(_0x3c497c){logger[_0x0a0b('0x16')](_0x0a0b('0x41'),util[_0x0a0b('0x17')](_0x3c497c,{'showHidden':![],'depth':null}));}};module[_0x0a0b('0x46')]=UserReport;