3008abbc70380e655333d2366e4a7bbeb82aeac0
[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 _0xaf13=['[userReport][peerstatus]\x20sending\x20trunk:save\x20event:','exports','lodash','ioredis','bluebird','redis','localhost','socket.io-emitter','trunks','agents','telephones','registryentry','syncRegistry','bind','registry','devicestatechange','syncDeviceState','peerstatus','syncPeerStatus','then','actionSipShowRegistry','error','[userReport][sipshowregistry]','inspect','resolve','actionDeviceStateList','catch','[userReport][devicestatelist]','actionSipPeerStatus','[userReport][sippeerstatus]','syncRealtimeShow','prototype','isNotNull','isUndefined','emit','info','[userReport][registry]\x20registry:%s\x20state:%s','username','state','debug','[userReport][registry]','stateRegistry','merge','actionid','format','trunk:%s','name','trunk:save','[userReport][devicestatechange]\x20device:%s\x20state:%s','[userReport][devicestatechange]','device','toLowerCase','inuse','local','stateTime','toNumber','[userReport][devicestatechange]\x20sending\x20telephone:save\x20event:','telephone:%s','[userReport][devicestatechange]\x20sending\x20trunk:save\x20event:','Local','substring','indexOf','find','accountcode','updateStatusRealtime','[userReport][peerstatus]\x20peer:%s\x20address:%s\x20status:%s','address','[userReport][peerstatus]','peer','registered','status','telephone:save'];(function(_0x206719,_0x43e3bd){var _0x13df0f=function(_0x3d253b){while(--_0x3d253b){_0x206719['push'](_0x206719['shift']());}};_0x13df0f(++_0x43e3bd);}(_0xaf13,0x1b2));var _0x3af1=function(_0xa464c9,_0x7c86d8){_0xa464c9=_0xa464c9-0x0;var _0x3d73c4=_0xaf13[_0xa464c9];return _0x3d73c4;};'use strict';var _=require(_0x3af1('0x0'));var moment=require('moment');var util=require('util');var Redis=require(_0x3af1('0x1'));var BPromise=require(_0x3af1('0x2'));var config=require('../../../config/environment');var logger=require('../../../config/logger')('ami');var ami=require('../ami');config[_0x3af1('0x3')]=_['defaults'](config['redis'],{'host':_0x3af1('0x4'),'port':0x18eb});var io=require(_0x3af1('0x5'))(new Redis(config[_0x3af1('0x3')]));function UserReport(_0x43f541){this[_0x3af1('0x6')]=_0x43f541[_0x3af1('0x6')];this[_0x3af1('0x7')]=_0x43f541['agents'];this[_0x3af1('0x8')]=_0x43f541[_0x3af1('0x8')];ami['on'](_0x3af1('0x9'),this[_0x3af1('0xa')][_0x3af1('0xb')](this));ami['on'](_0x3af1('0xc'),this[_0x3af1('0xa')][_0x3af1('0xb')](this));ami['on'](_0x3af1('0xd'),this[_0x3af1('0xe')][_0x3af1('0xb')](this));ami['on'](_0x3af1('0xf'),this[_0x3af1('0x10')][_0x3af1('0xb')](this));return this['syncRealtimeShow']();}function showSipRegistrations(){Promise['resolve']()[_0x3af1('0x11')](ami[_0x3af1('0x12')]())['catch'](function(_0x42a3f2){logger[_0x3af1('0x13')](_0x3af1('0x14'),util[_0x3af1('0x15')](_0x42a3f2,{'showHidden':![],'depth':null}));});}function listDeviceStates(){Promise[_0x3af1('0x16')]()['then'](ami[_0x3af1('0x17')]())[_0x3af1('0x18')](function(_0x532d19){logger['error'](_0x3af1('0x19'),util['inspect'](_0x532d19,{'showHidden':![],'depth':null}));});}function showPeersStatus(){Promise[_0x3af1('0x16')]()[_0x3af1('0x11')](ami[_0x3af1('0x1a')]())[_0x3af1('0x18')](function(_0x3f3f40){logger[_0x3af1('0x13')](_0x3af1('0x1b'),util[_0x3af1('0x15')](_0x3f3f40,{'showHidden':![],'depth':null}));});}UserReport['prototype'][_0x3af1('0x1c')]=function(){setInterval(function(){BPromise[_0x3af1('0x16')]()['then'](showSipRegistrations())['then'](listDeviceStates())[_0x3af1('0x11')](showPeersStatus());},0x32c8);};UserReport[_0x3af1('0x1d')][_0x3af1('0x1e')]=function(_0x65e61f){return _0x65e61f!==null&&!_[_0x3af1('0x1f')](_0x65e61f);};UserReport[_0x3af1('0x1d')][_0x3af1('0x20')]=function(_0x67beac,_0x1e59cc,_0x589c44){io['to'](_0x67beac)[_0x3af1('0x20')](_0x1e59cc,_0x589c44);};UserReport['prototype']['syncRegistry']=function(_0x12f182){try{if(this[_0x3af1('0x1e')](_0x12f182)){logger[_0x3af1('0x21')](_0x3af1('0x22'),_0x12f182[_0x3af1('0x23')],_0x12f182[_0x3af1('0x24')]);logger[_0x3af1('0x25')](_0x3af1('0x26'),util[_0x3af1('0x15')](_0x12f182,{'showHidden':![],'depth':null}));var _0x342192=_['find'](this[_0x3af1('0x6')],{'defaultuser':_0x12f182[_0x3af1('0x23')]});if(_0x342192){_0x12f182[_0x3af1('0x27')]=_0x12f182['state'];_[_0x3af1('0x28')](_0x342192,_['omit'](_0x12f182,['event',_0x3af1('0x29'),_0x3af1('0x23'),_0x3af1('0x24')]));logger[_0x3af1('0x25')]('[userReport][registry]\x20sending\x20trunk:save\x20event:',util[_0x3af1('0x15')](_0x342192,{'showHidden':![],'depth':null}));this['emit'](util[_0x3af1('0x2a')](_0x3af1('0x2b'),_0x342192[_0x3af1('0x2c')]),_0x3af1('0x2d'),_0x342192);}}}catch(_0x8e43de){logger[_0x3af1('0x13')]('[userReport][registry]',util[_0x3af1('0x15')](_0x8e43de,{'showHidden':![],'depth':null}));}};UserReport['prototype']['syncDeviceState']=function(_0x3d2b3a){try{if(this[_0x3af1('0x1e')](_0x3d2b3a)){logger[_0x3af1('0x21')](_0x3af1('0x2e'),_0x3d2b3a['device'],_0x3d2b3a[_0x3af1('0x24')]);logger[_0x3af1('0x25')](_0x3af1('0x2f'),util[_0x3af1('0x15')](_0x3d2b3a,{'showHidden':![],'depth':null}));if(this[_0x3af1('0x7')][_0x3d2b3a[_0x3af1('0x30')]]){if(!this[_0x3af1('0x7')][_0x3d2b3a[_0x3af1('0x30')]]['local']||_0x3d2b3a[_0x3af1('0x24')][_0x3af1('0x31')]()==_0x3af1('0x32')){this[_0x3af1('0x7')][_0x3d2b3a[_0x3af1('0x30')]][_0x3af1('0x33')]=![];if(this[_0x3af1('0x7')][_0x3d2b3a[_0x3af1('0x30')]][_0x3af1('0x24')]!==_0x3d2b3a[_0x3af1('0x24')][_0x3af1('0x31')]()){this[_0x3af1('0x7')][_0x3d2b3a[_0x3af1('0x30')]][_0x3af1('0x34')]=_[_0x3af1('0x35')](moment()[_0x3af1('0x2a')]('x'));}this[_0x3af1('0x7')][_0x3d2b3a['device']]['state']=_0x3d2b3a['state']['toLowerCase']();this[_0x3af1('0x7')][_0x3d2b3a['device']]['updateStatusRealtime'](_0x3d2b3a);}}else if(this['telephones'][_0x3d2b3a['device']]){if(this['telephones'][_0x3d2b3a['device']][_0x3af1('0x24')]!==_0x3d2b3a[_0x3af1('0x24')][_0x3af1('0x31')]()){this[_0x3af1('0x8')][_0x3d2b3a[_0x3af1('0x30')]][_0x3af1('0x34')]=_[_0x3af1('0x35')](moment()['format']('x'));}this[_0x3af1('0x8')][_0x3d2b3a[_0x3af1('0x30')]][_0x3af1('0x24')]=_0x3d2b3a[_0x3af1('0x24')][_0x3af1('0x31')]();logger[_0x3af1('0x25')](_0x3af1('0x36'),util['inspect'](this[_0x3af1('0x8')][_0x3d2b3a[_0x3af1('0x30')]],{'showHidden':![],'depth':null}));this[_0x3af1('0x20')](util[_0x3af1('0x2a')](_0x3af1('0x37'),this[_0x3af1('0x8')][_0x3d2b3a[_0x3af1('0x30')]]['name']),'telephone:save',this[_0x3af1('0x8')][_0x3d2b3a[_0x3af1('0x30')]]);}else if(this['trunks'][_0x3d2b3a[_0x3af1('0x30')]]){if(this[_0x3af1('0x6')][_0x3d2b3a[_0x3af1('0x30')]]['state']!==_0x3d2b3a[_0x3af1('0x24')][_0x3af1('0x31')]()){this['trunks'][_0x3d2b3a[_0x3af1('0x30')]][_0x3af1('0x34')]=_[_0x3af1('0x35')](moment()[_0x3af1('0x2a')]('x'));}this[_0x3af1('0x6')][_0x3d2b3a[_0x3af1('0x30')]][_0x3af1('0x24')]=_0x3d2b3a['state']['toLowerCase']();logger[_0x3af1('0x25')](_0x3af1('0x38'),util[_0x3af1('0x15')](this[_0x3af1('0x6')][_0x3d2b3a[_0x3af1('0x30')]],{'showHidden':![],'depth':null}));this[_0x3af1('0x20')](util[_0x3af1('0x2a')](_0x3af1('0x2b'),this[_0x3af1('0x6')][_0x3d2b3a['device']][_0x3af1('0x2c')]),'trunk:save',this[_0x3af1('0x6')][_0x3d2b3a[_0x3af1('0x30')]]);}else if(_['startsWith'](_0x3d2b3a[_0x3af1('0x30')],_0x3af1('0x39'))){var _0x411e3c=_0x3d2b3a['device'];var _0x35b1df=_0x411e3c[_0x3af1('0x3a')](_0x411e3c[_0x3af1('0x3b')]('/')+0x1,_0x411e3c[_0x3af1('0x3b')]('@'));var _0x381ed5=_[_0x3af1('0x3c')](this[_0x3af1('0x7')],function(_0x39448c){return _0x39448c['mobile']==_0x35b1df||_0x39448c['phone']==_0x35b1df||_0x39448c[_0x3af1('0x3d')]==_0x35b1df;});if(_0x381ed5){if(_0x381ed5[_0x3af1('0x24')]!==_0x3d2b3a[_0x3af1('0x24')]['toLowerCase']()){_0x381ed5[_0x3af1('0x34')]=_['toNumber'](moment()[_0x3af1('0x2a')]('x'));}_0x381ed5[_0x3af1('0x24')]=_0x3d2b3a[_0x3af1('0x24')][_0x3af1('0x31')]();_0x381ed5[_0x3af1('0x33')]=!![];_0x381ed5[_0x3af1('0x3e')](_0x3d2b3a);}}}}catch(_0x238660){logger[_0x3af1('0x13')](_0x3af1('0x2f'),util['inspect'](_0x238660,{'showHidden':![],'depth':null}));}};UserReport[_0x3af1('0x1d')][_0x3af1('0x10')]=function(_0x5915e0){try{if(this[_0x3af1('0x1e')](_0x5915e0)&&this['isNotNull'](_0x5915e0[_0x3af1('0xf')])){logger[_0x3af1('0x21')](_0x3af1('0x3f'),_0x5915e0['peer'],_0x5915e0[_0x3af1('0x40')],_0x5915e0[_0x3af1('0xf')]);logger[_0x3af1('0x25')](_0x3af1('0x41'),util['inspect'](_0x5915e0,{'showHidden':![],'depth':null}));if(this[_0x3af1('0x7')][_0x5915e0[_0x3af1('0x42')]]){if(!this[_0x3af1('0x7')][_0x5915e0['peer']]['local']||_0x5915e0[_0x3af1('0xf')][_0x3af1('0x31')]()==_0x3af1('0x43')){this['agents'][_0x5915e0[_0x3af1('0x42')]]['local']=![];this['agents'][_0x5915e0[_0x3af1('0x42')]]['status']=_0x5915e0[_0x3af1('0xf')][_0x3af1('0x31')]();this[_0x3af1('0x7')][_0x5915e0[_0x3af1('0x42')]][_0x3af1('0x40')]=_0x5915e0[_0x3af1('0x40')];this['agents'][_0x5915e0['peer']]['updateStatusRealtime'](_0x5915e0);}}else if(this[_0x3af1('0x8')][_0x5915e0[_0x3af1('0x42')]]){this[_0x3af1('0x8')][_0x5915e0[_0x3af1('0x42')]][_0x3af1('0x44')]=_0x5915e0['peerstatus'][_0x3af1('0x31')]();this['telephones'][_0x5915e0[_0x3af1('0x42')]][_0x3af1('0x40')]=_0x5915e0[_0x3af1('0x40')];logger[_0x3af1('0x25')]('[userReport][peerstatus]\x20sending\x20telephone:save\x20event:',util[_0x3af1('0x15')](this[_0x3af1('0x8')][_0x5915e0[_0x3af1('0x42')]],{'showHidden':![],'depth':null}));this[_0x3af1('0x20')](util[_0x3af1('0x2a')]('telephone:%s',this[_0x3af1('0x8')][_0x5915e0['peer']][_0x3af1('0x2c')]),_0x3af1('0x45'),this[_0x3af1('0x8')][_0x5915e0[_0x3af1('0x42')]]);}else if(this[_0x3af1('0x6')][_0x5915e0[_0x3af1('0x42')]]){this['trunks'][_0x5915e0[_0x3af1('0x42')]][_0x3af1('0x44')]=_0x5915e0[_0x3af1('0xf')][_0x3af1('0x31')]();this[_0x3af1('0x6')][_0x5915e0[_0x3af1('0x42')]]['address']=_0x5915e0['address'];logger['debug'](_0x3af1('0x46'),util['inspect'](this[_0x3af1('0x6')][_0x5915e0[_0x3af1('0x42')]],{'showHidden':![],'depth':null}));this['emit'](util[_0x3af1('0x2a')]('trunk:%s',this[_0x3af1('0x6')][_0x5915e0['peer']][_0x3af1('0x2c')]),_0x3af1('0x2d'),this[_0x3af1('0x6')][_0x5915e0[_0x3af1('0x42')]]);}}}catch(_0x4ff8af){logger[_0x3af1('0x13')](_0x3af1('0x41'),util[_0x3af1('0x15')](_0x4ff8af,{'showHidden':![],'depth':null}));}};module[_0x3af1('0x47')]=UserReport;