efe471df3cde468ff281b043f0a9a4b901dae20a
[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 _0x1508=['catch','error','[userReport][sipshowregistry]','inspect','resolve','actionSipPeerStatus','prototype','emit','isNotNull','[userReport][registry]\x20registry:%s\x20state:%s','state','username','stateRegistry','event','actionid','debug','[userReport][registry]\x20sending\x20trunk:save\x20event:','format','trunk:%s','name','trunk:save','[userReport][registry]','info','[userReport][devicestatechange]\x20device:%s\x20state:%s','device','agents','local','toLowerCase','stateTime','toNumber','[userReport][devicestatechange]\x20sending\x20telephone:save\x20event:','telephone:%s','telephone:save','[userReport][devicestatechange]\x20sending\x20trunk:save\x20event:','Local','indexOf','mobile','phone','accountcode','updateStatusRealtime','[userReport][devicestatechange]','address','peer','registered','status','[userReport][peerstatus]\x20sending\x20trunk:save\x20event:','[userReport][peerstatus]','exports','lodash','moment','util','ioredis','bluebird','../../../config/environment','../../../config/logger','ami','../ami','redis','defaults','localhost','socket.io-emitter','trunks','telephones','registryentry','syncRegistry','devicestatechange','syncDeviceState','bind','peerstatus','syncPeerStatus','syncRealtimeShow','then'];(function(_0x319ebd,_0xca2c72){var _0x513fda=function(_0x592c6c){while(--_0x592c6c){_0x319ebd['push'](_0x319ebd['shift']());}};_0x513fda(++_0xca2c72);}(_0x1508,0x1e0));var _0x8150=function(_0xbca1b1,_0x33f0ce){_0xbca1b1=_0xbca1b1-0x0;var _0x4e1686=_0x1508[_0xbca1b1];return _0x4e1686;};'use strict';var _=require(_0x8150('0x0'));var moment=require(_0x8150('0x1'));var util=require(_0x8150('0x2'));var Redis=require(_0x8150('0x3'));var BPromise=require(_0x8150('0x4'));var config=require(_0x8150('0x5'));var logger=require(_0x8150('0x6'))(_0x8150('0x7'));var ami=require(_0x8150('0x8'));config[_0x8150('0x9')]=_[_0x8150('0xa')](config[_0x8150('0x9')],{'host':_0x8150('0xb'),'port':0x18eb});var io=require(_0x8150('0xc'))(new Redis(config[_0x8150('0x9')]));function UserReport(_0x15ffa4){this['trunks']=_0x15ffa4[_0x8150('0xd')];this['agents']=_0x15ffa4['agents'];this['telephones']=_0x15ffa4[_0x8150('0xe')];ami['on'](_0x8150('0xf'),this['syncRegistry']['bind'](this));ami['on']('registry',this[_0x8150('0x10')]['bind'](this));ami['on'](_0x8150('0x11'),this[_0x8150('0x12')][_0x8150('0x13')](this));ami['on'](_0x8150('0x14'),this[_0x8150('0x15')][_0x8150('0x13')](this));return this[_0x8150('0x16')]();}function showSipRegistrations(){Promise['resolve']()[_0x8150('0x17')](ami['actionSipShowRegistry']())[_0x8150('0x18')](function(_0x49097d){logger[_0x8150('0x19')](_0x8150('0x1a'),util[_0x8150('0x1b')](_0x49097d,{'showHidden':![],'depth':null}));});}function listDeviceStates(){Promise[_0x8150('0x1c')]()['then'](ami['actionDeviceStateList']())['catch'](function(_0xbe7e82){logger[_0x8150('0x19')]('[userReport][devicestatelist]',util[_0x8150('0x1b')](_0xbe7e82,{'showHidden':![],'depth':null}));});}function showPeersStatus(){Promise['resolve']()['then'](ami[_0x8150('0x1d')]())[_0x8150('0x18')](function(_0x509d00){logger[_0x8150('0x19')]('[userReport][sippeerstatus]',util[_0x8150('0x1b')](_0x509d00,{'showHidden':![],'depth':null}));});}UserReport[_0x8150('0x1e')][_0x8150('0x16')]=function(){setInterval(function(){BPromise[_0x8150('0x1c')]()[_0x8150('0x17')](showSipRegistrations())['then'](listDeviceStates())[_0x8150('0x17')](showPeersStatus());},0x32c8);};UserReport[_0x8150('0x1e')]['isNotNull']=function(_0x337612){return _0x337612!==null&&!_['isUndefined'](_0x337612);};UserReport[_0x8150('0x1e')][_0x8150('0x1f')]=function(_0x9a103c,_0x11a4f1,_0xbac0bf){io['to'](_0x9a103c)[_0x8150('0x1f')](_0x11a4f1,_0xbac0bf);};UserReport['prototype'][_0x8150('0x10')]=function(_0x2b8106){try{if(this[_0x8150('0x20')](_0x2b8106)){logger['info'](_0x8150('0x21'),_0x2b8106['username'],_0x2b8106[_0x8150('0x22')]);logger['debug']('[userReport][registry]',util['inspect'](_0x2b8106,{'showHidden':![],'depth':null}));var _0x5ca1c7=_['find'](this[_0x8150('0xd')],{'defaultuser':_0x2b8106[_0x8150('0x23')]});if(_0x5ca1c7){_0x2b8106[_0x8150('0x24')]=_0x2b8106[_0x8150('0x22')];_['merge'](_0x5ca1c7,_['omit'](_0x2b8106,[_0x8150('0x25'),_0x8150('0x26'),_0x8150('0x23'),_0x8150('0x22')]));logger[_0x8150('0x27')](_0x8150('0x28'),util[_0x8150('0x1b')](_0x5ca1c7,{'showHidden':![],'depth':null}));this[_0x8150('0x1f')](util[_0x8150('0x29')](_0x8150('0x2a'),_0x5ca1c7[_0x8150('0x2b')]),_0x8150('0x2c'),_0x5ca1c7);}}}catch(_0x25802f){logger[_0x8150('0x19')](_0x8150('0x2d'),util[_0x8150('0x1b')](_0x25802f,{'showHidden':![],'depth':null}));}};UserReport[_0x8150('0x1e')][_0x8150('0x12')]=function(_0x3258e1){try{if(this[_0x8150('0x20')](_0x3258e1)){logger[_0x8150('0x2e')](_0x8150('0x2f'),_0x3258e1[_0x8150('0x30')],_0x3258e1[_0x8150('0x22')]);logger[_0x8150('0x27')]('[userReport][devicestatechange]',util[_0x8150('0x1b')](_0x3258e1,{'showHidden':![],'depth':null}));if(this[_0x8150('0x31')][_0x3258e1[_0x8150('0x30')]]){if(!this[_0x8150('0x31')][_0x3258e1[_0x8150('0x30')]][_0x8150('0x32')]||_0x3258e1[_0x8150('0x22')][_0x8150('0x33')]()=='inuse'){this[_0x8150('0x31')][_0x3258e1[_0x8150('0x30')]][_0x8150('0x32')]=![];if(this[_0x8150('0x31')][_0x3258e1[_0x8150('0x30')]][_0x8150('0x22')]!==_0x3258e1[_0x8150('0x22')][_0x8150('0x33')]()){this['agents'][_0x3258e1[_0x8150('0x30')]][_0x8150('0x34')]=_[_0x8150('0x35')](moment()[_0x8150('0x29')]('x'));}this['agents'][_0x3258e1[_0x8150('0x30')]][_0x8150('0x22')]=_0x3258e1[_0x8150('0x22')][_0x8150('0x33')]();this[_0x8150('0x31')][_0x3258e1['device']]['updateStatusRealtime'](_0x3258e1);}}else if(this[_0x8150('0xe')][_0x3258e1['device']]){if(this[_0x8150('0xe')][_0x3258e1[_0x8150('0x30')]]['state']!==_0x3258e1['state'][_0x8150('0x33')]()){this[_0x8150('0xe')][_0x3258e1[_0x8150('0x30')]][_0x8150('0x34')]=_[_0x8150('0x35')](moment()[_0x8150('0x29')]('x'));}this[_0x8150('0xe')][_0x3258e1[_0x8150('0x30')]][_0x8150('0x22')]=_0x3258e1[_0x8150('0x22')]['toLowerCase']();logger[_0x8150('0x27')](_0x8150('0x36'),util[_0x8150('0x1b')](this[_0x8150('0xe')][_0x3258e1['device']],{'showHidden':![],'depth':null}));this[_0x8150('0x1f')](util[_0x8150('0x29')](_0x8150('0x37'),this[_0x8150('0xe')][_0x3258e1[_0x8150('0x30')]][_0x8150('0x2b')]),_0x8150('0x38'),this['telephones'][_0x3258e1[_0x8150('0x30')]]);}else if(this[_0x8150('0xd')][_0x3258e1[_0x8150('0x30')]]){if(this['trunks'][_0x3258e1[_0x8150('0x30')]]['state']!==_0x3258e1[_0x8150('0x22')][_0x8150('0x33')]()){this[_0x8150('0xd')][_0x3258e1[_0x8150('0x30')]]['stateTime']=_[_0x8150('0x35')](moment()['format']('x'));}this[_0x8150('0xd')][_0x3258e1[_0x8150('0x30')]][_0x8150('0x22')]=_0x3258e1[_0x8150('0x22')][_0x8150('0x33')]();logger[_0x8150('0x27')](_0x8150('0x39'),util[_0x8150('0x1b')](this[_0x8150('0xd')][_0x3258e1[_0x8150('0x30')]],{'showHidden':![],'depth':null}));this[_0x8150('0x1f')](util[_0x8150('0x29')](_0x8150('0x2a'),this[_0x8150('0xd')][_0x3258e1[_0x8150('0x30')]][_0x8150('0x2b')]),_0x8150('0x2c'),this[_0x8150('0xd')][_0x3258e1[_0x8150('0x30')]]);}else if(_['startsWith'](_0x3258e1['device'],_0x8150('0x3a'))){var _0x19fda4=_0x3258e1['device'];var _0x8ca436=_0x19fda4['substring'](_0x19fda4[_0x8150('0x3b')]('/')+0x1,_0x19fda4[_0x8150('0x3b')]('@'));var _0x3536ae=_['find'](this[_0x8150('0x31')],function(_0x371d72){return _0x371d72[_0x8150('0x3c')]==_0x8ca436||_0x371d72[_0x8150('0x3d')]==_0x8ca436||_0x371d72[_0x8150('0x3e')]==_0x8ca436;});if(_0x3536ae){if(_0x3536ae[_0x8150('0x22')]!==_0x3258e1[_0x8150('0x22')][_0x8150('0x33')]()){_0x3536ae[_0x8150('0x34')]=_[_0x8150('0x35')](moment()[_0x8150('0x29')]('x'));}_0x3536ae[_0x8150('0x22')]=_0x3258e1[_0x8150('0x22')][_0x8150('0x33')]();_0x3536ae[_0x8150('0x32')]=!![];_0x3536ae[_0x8150('0x3f')](_0x3258e1);}}}}catch(_0x3d50d2){logger['error'](_0x8150('0x40'),util[_0x8150('0x1b')](_0x3d50d2,{'showHidden':![],'depth':null}));}};UserReport[_0x8150('0x1e')][_0x8150('0x15')]=function(_0x19117d){try{if(this['isNotNull'](_0x19117d)&&this[_0x8150('0x20')](_0x19117d[_0x8150('0x14')])){logger[_0x8150('0x2e')]('[userReport][peerstatus]\x20peer:%s\x20address:%s\x20status:%s',_0x19117d['peer'],_0x19117d[_0x8150('0x41')],_0x19117d[_0x8150('0x14')]);logger[_0x8150('0x27')]('[userReport][peerstatus]',util[_0x8150('0x1b')](_0x19117d,{'showHidden':![],'depth':null}));if(this[_0x8150('0x31')][_0x19117d['peer']]){if(!this['agents'][_0x19117d[_0x8150('0x42')]][_0x8150('0x32')]||_0x19117d[_0x8150('0x14')][_0x8150('0x33')]()==_0x8150('0x43')){this['agents'][_0x19117d[_0x8150('0x42')]]['local']=![];this[_0x8150('0x31')][_0x19117d[_0x8150('0x42')]][_0x8150('0x44')]=_0x19117d[_0x8150('0x14')][_0x8150('0x33')]();this[_0x8150('0x31')][_0x19117d[_0x8150('0x42')]]['address']=_0x19117d['address'];this[_0x8150('0x31')][_0x19117d[_0x8150('0x42')]][_0x8150('0x3f')](_0x19117d);}}else if(this[_0x8150('0xe')][_0x19117d[_0x8150('0x42')]]){this[_0x8150('0xe')][_0x19117d[_0x8150('0x42')]][_0x8150('0x44')]=_0x19117d[_0x8150('0x14')][_0x8150('0x33')]();this[_0x8150('0xe')][_0x19117d[_0x8150('0x42')]][_0x8150('0x41')]=_0x19117d[_0x8150('0x41')];logger[_0x8150('0x27')]('[userReport][peerstatus]\x20sending\x20telephone:save\x20event:',util[_0x8150('0x1b')](this['telephones'][_0x19117d[_0x8150('0x42')]],{'showHidden':![],'depth':null}));this[_0x8150('0x1f')](util[_0x8150('0x29')](_0x8150('0x37'),this[_0x8150('0xe')][_0x19117d[_0x8150('0x42')]][_0x8150('0x2b')]),_0x8150('0x38'),this[_0x8150('0xe')][_0x19117d[_0x8150('0x42')]]);}else if(this['trunks'][_0x19117d[_0x8150('0x42')]]){this[_0x8150('0xd')][_0x19117d['peer']][_0x8150('0x44')]=_0x19117d['peerstatus'][_0x8150('0x33')]();this[_0x8150('0xd')][_0x19117d[_0x8150('0x42')]][_0x8150('0x41')]=_0x19117d[_0x8150('0x41')];logger[_0x8150('0x27')](_0x8150('0x45'),util['inspect'](this[_0x8150('0xd')][_0x19117d[_0x8150('0x42')]],{'showHidden':![],'depth':null}));this[_0x8150('0x1f')](util['format'](_0x8150('0x2a'),this[_0x8150('0xd')][_0x19117d[_0x8150('0x42')]][_0x8150('0x2b')]),_0x8150('0x2c'),this['trunks'][_0x19117d['peer']]);}}}catch(_0x1e0355){logger[_0x8150('0x19')](_0x8150('0x46'),util['inspect'](_0x1e0355,{'showHidden':![],'depth':null}));}};module[_0x8150('0x47')]=UserReport;