Built motion from commit 85328c08.|2.5.50
[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 _0x9783=['state','[userReport][registry]','stateRegistry','merge','omit','event','actionid','[userReport][registry]\x20sending\x20trunk:save\x20event:','trunk:%s','name','trunk:save','info','device','debug','toLowerCase','inuse','stateTime','toNumber','format','updateStatusRealtime','[userReport][devicestatechange]\x20sending\x20telephone:save\x20event:','telephone:%s','telephone:save','startsWith','Local','indexOf','mobile','phone','syncPeerStatus','peer','address','[userReport][peerstatus]','local','registered','status','[userReport][peerstatus]\x20sending\x20telephone:save\x20event:','[userReport][peerstatus]\x20sending\x20trunk:save\x20event:','exports','lodash','moment','util','ioredis','../../../config/environment','../../../config/logger','ami','defaults','trunks','agents','telephones','registryentry','bind','registry','syncRegistry','syncDeviceState','peerstatus','syncRealtimeShow','resolve','then','actionSipShowRegistry','catch','error','actionDeviceStateList','[userReport][devicestatelist]','inspect','actionSipPeerStatus','[userReport][sippeerstatus]','prototype','isUndefined','emit','isNotNull','[userReport][registry]\x20registry:%s\x20state:%s','username'];(function(_0xab0646,_0x1627f2){var _0x15929e=function(_0x496509){while(--_0x496509){_0xab0646['push'](_0xab0646['shift']());}};_0x15929e(++_0x1627f2);}(_0x9783,0x146));var _0x3978=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x9783[_0x3dd15e];return _0x231fd0;};'use strict';var _=require(_0x3978('0x0'));var moment=require(_0x3978('0x1'));var util=require(_0x3978('0x2'));var Redis=require(_0x3978('0x3'));var BPromise=require('bluebird');var config=require(_0x3978('0x4'));var logger=require(_0x3978('0x5'))(_0x3978('0x6'));var ami=require('../ami');config['redis']=_[_0x3978('0x7')](config['redis'],{'host':'localhost','port':0x18eb});var io=require('socket.io-emitter')(new Redis(config['redis']));function UserReport(_0x474572){this[_0x3978('0x8')]=_0x474572[_0x3978('0x8')];this['agents']=_0x474572[_0x3978('0x9')];this[_0x3978('0xa')]=_0x474572['telephones'];ami['on'](_0x3978('0xb'),this['syncRegistry'][_0x3978('0xc')](this));ami['on'](_0x3978('0xd'),this[_0x3978('0xe')]['bind'](this));ami['on']('devicestatechange',this[_0x3978('0xf')][_0x3978('0xc')](this));ami['on'](_0x3978('0x10'),this['syncPeerStatus'][_0x3978('0xc')](this));return this[_0x3978('0x11')]();}function showSipRegistrations(){Promise[_0x3978('0x12')]()[_0x3978('0x13')](ami[_0x3978('0x14')]())[_0x3978('0x15')](function(_0x30123b){logger[_0x3978('0x16')]('[userReport][sipshowregistry]',util['inspect'](_0x30123b,{'showHidden':![],'depth':null}));});}function listDeviceStates(){Promise[_0x3978('0x12')]()[_0x3978('0x13')](ami[_0x3978('0x17')]())['catch'](function(_0x4b6f1d){logger[_0x3978('0x16')](_0x3978('0x18'),util[_0x3978('0x19')](_0x4b6f1d,{'showHidden':![],'depth':null}));});}function showPeersStatus(){Promise['resolve']()[_0x3978('0x13')](ami[_0x3978('0x1a')]())['catch'](function(_0x2ac4d7){logger[_0x3978('0x16')](_0x3978('0x1b'),util['inspect'](_0x2ac4d7,{'showHidden':![],'depth':null}));});}UserReport[_0x3978('0x1c')][_0x3978('0x11')]=function(){setInterval(function(){BPromise[_0x3978('0x12')]()['then'](showSipRegistrations())[_0x3978('0x13')](listDeviceStates())[_0x3978('0x13')](showPeersStatus());},0x32c8);};UserReport[_0x3978('0x1c')]['isNotNull']=function(_0x231471){return _0x231471!==null&&!_[_0x3978('0x1d')](_0x231471);};UserReport[_0x3978('0x1c')][_0x3978('0x1e')]=function(_0x379176,_0xdd8221,_0x437c82){io['to'](_0x379176)[_0x3978('0x1e')](_0xdd8221,_0x437c82);};UserReport[_0x3978('0x1c')][_0x3978('0xe')]=function(_0x2d2e3a){try{if(this[_0x3978('0x1f')](_0x2d2e3a)){logger['info'](_0x3978('0x20'),_0x2d2e3a[_0x3978('0x21')],_0x2d2e3a[_0x3978('0x22')]);logger['debug'](_0x3978('0x23'),util['inspect'](_0x2d2e3a,{'showHidden':![],'depth':null}));var _0x4db6af=_['find'](this[_0x3978('0x8')],{'defaultuser':_0x2d2e3a[_0x3978('0x21')]});if(_0x4db6af){_0x2d2e3a[_0x3978('0x24')]=_0x2d2e3a[_0x3978('0x22')];_[_0x3978('0x25')](_0x4db6af,_[_0x3978('0x26')](_0x2d2e3a,[_0x3978('0x27'),_0x3978('0x28'),_0x3978('0x21'),'state']));logger['debug'](_0x3978('0x29'),util[_0x3978('0x19')](_0x4db6af,{'showHidden':![],'depth':null}));this[_0x3978('0x1e')](util['format'](_0x3978('0x2a'),_0x4db6af[_0x3978('0x2b')]),_0x3978('0x2c'),_0x4db6af);}}}catch(_0x3bd985){logger[_0x3978('0x16')](_0x3978('0x23'),util[_0x3978('0x19')](_0x3bd985,{'showHidden':![],'depth':null}));}};UserReport[_0x3978('0x1c')][_0x3978('0xf')]=function(_0x5de8f4){try{if(this[_0x3978('0x1f')](_0x5de8f4)){logger[_0x3978('0x2d')]('[userReport][devicestatechange]\x20device:%s\x20state:%s',_0x5de8f4[_0x3978('0x2e')],_0x5de8f4[_0x3978('0x22')]);logger[_0x3978('0x2f')]('[userReport][devicestatechange]',util[_0x3978('0x19')](_0x5de8f4,{'showHidden':![],'depth':null}));if(this['agents'][_0x5de8f4[_0x3978('0x2e')]]){if(!this['agents'][_0x5de8f4[_0x3978('0x2e')]]['local']||_0x5de8f4[_0x3978('0x22')][_0x3978('0x30')]()==_0x3978('0x31')){this[_0x3978('0x9')][_0x5de8f4['device']]['local']=![];if(this['agents'][_0x5de8f4[_0x3978('0x2e')]][_0x3978('0x22')]!==_0x5de8f4[_0x3978('0x22')]['toLowerCase']()){this[_0x3978('0x9')][_0x5de8f4[_0x3978('0x2e')]][_0x3978('0x32')]=_[_0x3978('0x33')](moment()[_0x3978('0x34')]('x'));}this['agents'][_0x5de8f4[_0x3978('0x2e')]][_0x3978('0x22')]=_0x5de8f4[_0x3978('0x22')]['toLowerCase']();this[_0x3978('0x9')][_0x5de8f4[_0x3978('0x2e')]][_0x3978('0x35')](_0x5de8f4);}}else if(this[_0x3978('0xa')][_0x5de8f4['device']]){if(this['telephones'][_0x5de8f4['device']][_0x3978('0x22')]!==_0x5de8f4[_0x3978('0x22')]['toLowerCase']()){this[_0x3978('0xa')][_0x5de8f4[_0x3978('0x2e')]]['stateTime']=_[_0x3978('0x33')](moment()['format']('x'));}this[_0x3978('0xa')][_0x5de8f4['device']][_0x3978('0x22')]=_0x5de8f4['state'][_0x3978('0x30')]();logger[_0x3978('0x2f')](_0x3978('0x36'),util[_0x3978('0x19')](this[_0x3978('0xa')][_0x5de8f4[_0x3978('0x2e')]],{'showHidden':![],'depth':null}));this[_0x3978('0x1e')](util['format'](_0x3978('0x37'),this['telephones'][_0x5de8f4[_0x3978('0x2e')]][_0x3978('0x2b')]),_0x3978('0x38'),this[_0x3978('0xa')][_0x5de8f4[_0x3978('0x2e')]]);}else if(this['trunks'][_0x5de8f4[_0x3978('0x2e')]]){if(this[_0x3978('0x8')][_0x5de8f4[_0x3978('0x2e')]][_0x3978('0x22')]!==_0x5de8f4[_0x3978('0x22')][_0x3978('0x30')]()){this['trunks'][_0x5de8f4[_0x3978('0x2e')]][_0x3978('0x32')]=_['toNumber'](moment()[_0x3978('0x34')]('x'));}this[_0x3978('0x8')][_0x5de8f4['device']][_0x3978('0x22')]=_0x5de8f4[_0x3978('0x22')]['toLowerCase']();logger['debug']('[userReport][devicestatechange]\x20sending\x20trunk:save\x20event:',util[_0x3978('0x19')](this[_0x3978('0x8')][_0x5de8f4[_0x3978('0x2e')]],{'showHidden':![],'depth':null}));this[_0x3978('0x1e')](util[_0x3978('0x34')](_0x3978('0x2a'),this[_0x3978('0x8')][_0x5de8f4['device']][_0x3978('0x2b')]),_0x3978('0x2c'),this[_0x3978('0x8')][_0x5de8f4['device']]);}else if(_[_0x3978('0x39')](_0x5de8f4[_0x3978('0x2e')],_0x3978('0x3a'))){var _0x56750f=_0x5de8f4[_0x3978('0x2e')];var _0x2893b8=_0x56750f['substring'](_0x56750f[_0x3978('0x3b')]('/')+0x1,_0x56750f[_0x3978('0x3b')]('@'));var _0x3e1f06=_['find'](this[_0x3978('0x9')],function(_0x1a44a4){return _0x1a44a4[_0x3978('0x3c')]==_0x2893b8||_0x1a44a4[_0x3978('0x3d')]==_0x2893b8||_0x1a44a4['accountcode']==_0x2893b8;});if(_0x3e1f06){if(_0x3e1f06['state']!==_0x5de8f4['state'][_0x3978('0x30')]()){_0x3e1f06['stateTime']=_[_0x3978('0x33')](moment()[_0x3978('0x34')]('x'));}_0x3e1f06[_0x3978('0x22')]=_0x5de8f4[_0x3978('0x22')]['toLowerCase']();_0x3e1f06['local']=!![];_0x3e1f06['updateStatusRealtime'](_0x5de8f4);}}}}catch(_0x523d0e){logger[_0x3978('0x16')]('[userReport][devicestatechange]',util[_0x3978('0x19')](_0x523d0e,{'showHidden':![],'depth':null}));}};UserReport[_0x3978('0x1c')][_0x3978('0x3e')]=function(_0x1ec46b){try{if(this[_0x3978('0x1f')](_0x1ec46b)&&this[_0x3978('0x1f')](_0x1ec46b[_0x3978('0x10')])){logger[_0x3978('0x2d')]('[userReport][peerstatus]\x20peer:%s\x20address:%s\x20status:%s',_0x1ec46b[_0x3978('0x3f')],_0x1ec46b[_0x3978('0x40')],_0x1ec46b[_0x3978('0x10')]);logger[_0x3978('0x2f')](_0x3978('0x41'),util['inspect'](_0x1ec46b,{'showHidden':![],'depth':null}));if(this[_0x3978('0x9')][_0x1ec46b[_0x3978('0x3f')]]){if(!this[_0x3978('0x9')][_0x1ec46b[_0x3978('0x3f')]][_0x3978('0x42')]||_0x1ec46b[_0x3978('0x10')][_0x3978('0x30')]()==_0x3978('0x43')){this[_0x3978('0x9')][_0x1ec46b[_0x3978('0x3f')]][_0x3978('0x42')]=![];this[_0x3978('0x9')][_0x1ec46b[_0x3978('0x3f')]][_0x3978('0x44')]=_0x1ec46b[_0x3978('0x10')][_0x3978('0x30')]();this[_0x3978('0x9')][_0x1ec46b[_0x3978('0x3f')]][_0x3978('0x40')]=_0x1ec46b[_0x3978('0x40')];this['agents'][_0x1ec46b[_0x3978('0x3f')]][_0x3978('0x35')](_0x1ec46b);}}else if(this[_0x3978('0xa')][_0x1ec46b[_0x3978('0x3f')]]){this[_0x3978('0xa')][_0x1ec46b[_0x3978('0x3f')]][_0x3978('0x44')]=_0x1ec46b[_0x3978('0x10')][_0x3978('0x30')]();this['telephones'][_0x1ec46b[_0x3978('0x3f')]][_0x3978('0x40')]=_0x1ec46b[_0x3978('0x40')];logger[_0x3978('0x2f')](_0x3978('0x45'),util['inspect'](this[_0x3978('0xa')][_0x1ec46b[_0x3978('0x3f')]],{'showHidden':![],'depth':null}));this[_0x3978('0x1e')](util[_0x3978('0x34')](_0x3978('0x37'),this[_0x3978('0xa')][_0x1ec46b[_0x3978('0x3f')]][_0x3978('0x2b')]),'telephone:save',this[_0x3978('0xa')][_0x1ec46b[_0x3978('0x3f')]]);}else if(this[_0x3978('0x8')][_0x1ec46b['peer']]){this[_0x3978('0x8')][_0x1ec46b[_0x3978('0x3f')]][_0x3978('0x44')]=_0x1ec46b[_0x3978('0x10')]['toLowerCase']();this[_0x3978('0x8')][_0x1ec46b[_0x3978('0x3f')]][_0x3978('0x40')]=_0x1ec46b[_0x3978('0x40')];logger['debug'](_0x3978('0x46'),util[_0x3978('0x19')](this[_0x3978('0x8')][_0x1ec46b['peer']],{'showHidden':![],'depth':null}));this['emit'](util[_0x3978('0x34')]('trunk:%s',this['trunks'][_0x1ec46b[_0x3978('0x3f')]][_0x3978('0x2b')]),_0x3978('0x2c'),this['trunks'][_0x1ec46b[_0x3978('0x3f')]]);}}}catch(_0x30deb2){logger[_0x3978('0x16')](_0x3978('0x41'),util['inspect'](_0x30deb2,{'showHidden':![],'depth':null}));}};module[_0x3978('0x47')]=UserReport;