fe0c8467c1745b7b12700ffff864e7614482c027
[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 _0xbf83=['info','username','state','debug','[userReport][registry]','find','merge','omit','event','[userReport][registry]\x20sending\x20trunk:save\x20event:','trunk:%s','name','trunk:save','[userReport][devicestatechange]\x20device:%s\x20state:%s','device','local','toLowerCase','toNumber','format','updateStatusRealtime','stateTime','[userReport][devicestatechange]\x20sending\x20telephone:save\x20event:','telephone:%s','telephone:save','[userReport][devicestatechange]\x20sending\x20trunk:save\x20event:','startsWith','Local','substring','indexOf','mobile','peer','[userReport][peerstatus]','status','address','[userReport][peerstatus]\x20sending\x20telephone:save\x20event:','[userReport][peerstatus]\x20sending\x20trunk:save\x20event:','exports','lodash','moment','util','bluebird','../../../config/logger','redis','localhost','socket.io-emitter','trunks','agents','telephones','syncRegistry','devicestatechange','syncDeviceState','bind','peerstatus','syncPeerStatus','syncRealtimeShow','then','actionSipShowRegistry','catch','error','[userReport][sipshowregistry]','inspect','resolve','actionDeviceStateList','[userReport][devicestatelist]','actionSipPeerStatus','[userReport][sippeerstatus]','prototype','isUndefined','emit','isNotNull'];(function(_0x493c4f,_0x45fbcd){var _0x259d05=function(_0x1e27b2){while(--_0x1e27b2){_0x493c4f['push'](_0x493c4f['shift']());}};_0x259d05(++_0x45fbcd);}(_0xbf83,0xf7));var _0x3bf8=function(_0x3c3968,_0x1497d3){_0x3c3968=_0x3c3968-0x0;var _0x56dd03=_0xbf83[_0x3c3968];return _0x56dd03;};'use strict';var _=require(_0x3bf8('0x0'));var moment=require(_0x3bf8('0x1'));var util=require(_0x3bf8('0x2'));var Redis=require('ioredis');var BPromise=require(_0x3bf8('0x3'));var config=require('../../../config/environment');var logger=require(_0x3bf8('0x4'))('ami');var ami=require('../ami');config[_0x3bf8('0x5')]=_['defaults'](config['redis'],{'host':_0x3bf8('0x6'),'port':0x18eb});var io=require(_0x3bf8('0x7'))(new Redis(config[_0x3bf8('0x5')]));function UserReport(_0x4aba9a){this[_0x3bf8('0x8')]=_0x4aba9a[_0x3bf8('0x8')];this[_0x3bf8('0x9')]=_0x4aba9a[_0x3bf8('0x9')];this[_0x3bf8('0xa')]=_0x4aba9a['telephones'];ami['on']('registryentry',this[_0x3bf8('0xb')]['bind'](this));ami['on']('registry',this[_0x3bf8('0xb')]['bind'](this));ami['on'](_0x3bf8('0xc'),this[_0x3bf8('0xd')][_0x3bf8('0xe')](this));ami['on'](_0x3bf8('0xf'),this[_0x3bf8('0x10')][_0x3bf8('0xe')](this));return this[_0x3bf8('0x11')]();}function showSipRegistrations(){Promise['resolve']()[_0x3bf8('0x12')](ami[_0x3bf8('0x13')]())[_0x3bf8('0x14')](function(_0x105ac7){logger[_0x3bf8('0x15')](_0x3bf8('0x16'),util[_0x3bf8('0x17')](_0x105ac7,{'showHidden':![],'depth':null}));});}function listDeviceStates(){Promise[_0x3bf8('0x18')]()[_0x3bf8('0x12')](ami[_0x3bf8('0x19')]())['catch'](function(_0x31cf12){logger[_0x3bf8('0x15')](_0x3bf8('0x1a'),util[_0x3bf8('0x17')](_0x31cf12,{'showHidden':![],'depth':null}));});}function showPeersStatus(){Promise[_0x3bf8('0x18')]()['then'](ami[_0x3bf8('0x1b')]())[_0x3bf8('0x14')](function(_0x448970){logger[_0x3bf8('0x15')](_0x3bf8('0x1c'),util[_0x3bf8('0x17')](_0x448970,{'showHidden':![],'depth':null}));});}UserReport[_0x3bf8('0x1d')][_0x3bf8('0x11')]=function(){setInterval(function(){BPromise[_0x3bf8('0x18')]()[_0x3bf8('0x12')](showSipRegistrations())[_0x3bf8('0x12')](listDeviceStates())[_0x3bf8('0x12')](showPeersStatus());},0x32c8);};UserReport[_0x3bf8('0x1d')]['isNotNull']=function(_0x34b9e3){return _0x34b9e3!==null&&!_[_0x3bf8('0x1e')](_0x34b9e3);};UserReport[_0x3bf8('0x1d')][_0x3bf8('0x1f')]=function(_0x289f3e,_0x28bdc0,_0x3bdde6){io['to'](_0x289f3e)[_0x3bf8('0x1f')](_0x28bdc0,_0x3bdde6);};UserReport[_0x3bf8('0x1d')][_0x3bf8('0xb')]=function(_0x991c85){try{if(this[_0x3bf8('0x20')](_0x991c85)){logger[_0x3bf8('0x21')]('[userReport][registry]\x20registry:%s\x20state:%s',_0x991c85[_0x3bf8('0x22')],_0x991c85[_0x3bf8('0x23')]);logger[_0x3bf8('0x24')](_0x3bf8('0x25'),util['inspect'](_0x991c85,{'showHidden':![],'depth':null}));var _0x304359=_[_0x3bf8('0x26')](this['trunks'],{'defaultuser':_0x991c85['username']});if(_0x304359){_0x991c85['stateRegistry']=_0x991c85[_0x3bf8('0x23')];_[_0x3bf8('0x27')](_0x304359,_[_0x3bf8('0x28')](_0x991c85,[_0x3bf8('0x29'),'actionid',_0x3bf8('0x22'),'state']));logger[_0x3bf8('0x24')](_0x3bf8('0x2a'),util[_0x3bf8('0x17')](_0x304359,{'showHidden':![],'depth':null}));this[_0x3bf8('0x1f')](util['format'](_0x3bf8('0x2b'),_0x304359[_0x3bf8('0x2c')]),_0x3bf8('0x2d'),_0x304359);}}}catch(_0x284c07){logger['error'](_0x3bf8('0x25'),util[_0x3bf8('0x17')](_0x284c07,{'showHidden':![],'depth':null}));}};UserReport['prototype'][_0x3bf8('0xd')]=function(_0x381b06){try{if(this[_0x3bf8('0x20')](_0x381b06)){logger[_0x3bf8('0x21')](_0x3bf8('0x2e'),_0x381b06[_0x3bf8('0x2f')],_0x381b06[_0x3bf8('0x23')]);logger[_0x3bf8('0x24')]('[userReport][devicestatechange]',util[_0x3bf8('0x17')](_0x381b06,{'showHidden':![],'depth':null}));if(this[_0x3bf8('0x9')][_0x381b06[_0x3bf8('0x2f')]]){if(!this[_0x3bf8('0x9')][_0x381b06['device']][_0x3bf8('0x30')]||_0x381b06[_0x3bf8('0x23')][_0x3bf8('0x31')]()=='inuse'){this[_0x3bf8('0x9')][_0x381b06[_0x3bf8('0x2f')]]['local']=![];if(this[_0x3bf8('0x9')][_0x381b06[_0x3bf8('0x2f')]][_0x3bf8('0x23')]!==_0x381b06[_0x3bf8('0x23')][_0x3bf8('0x31')]()){this['agents'][_0x381b06['device']]['stateTime']=_[_0x3bf8('0x32')](moment()[_0x3bf8('0x33')]('x'));}this[_0x3bf8('0x9')][_0x381b06[_0x3bf8('0x2f')]][_0x3bf8('0x23')]=_0x381b06[_0x3bf8('0x23')][_0x3bf8('0x31')]();this['agents'][_0x381b06['device']][_0x3bf8('0x34')](_0x381b06);}}else if(this[_0x3bf8('0xa')][_0x381b06['device']]){if(this[_0x3bf8('0xa')][_0x381b06[_0x3bf8('0x2f')]][_0x3bf8('0x23')]!==_0x381b06['state']['toLowerCase']()){this[_0x3bf8('0xa')][_0x381b06['device']][_0x3bf8('0x35')]=_['toNumber'](moment()['format']('x'));}this[_0x3bf8('0xa')][_0x381b06['device']][_0x3bf8('0x23')]=_0x381b06[_0x3bf8('0x23')][_0x3bf8('0x31')]();logger[_0x3bf8('0x24')](_0x3bf8('0x36'),util[_0x3bf8('0x17')](this['telephones'][_0x381b06['device']],{'showHidden':![],'depth':null}));this['emit'](util[_0x3bf8('0x33')](_0x3bf8('0x37'),this[_0x3bf8('0xa')][_0x381b06[_0x3bf8('0x2f')]][_0x3bf8('0x2c')]),_0x3bf8('0x38'),this[_0x3bf8('0xa')][_0x381b06[_0x3bf8('0x2f')]]);}else if(this[_0x3bf8('0x8')][_0x381b06[_0x3bf8('0x2f')]]){if(this[_0x3bf8('0x8')][_0x381b06[_0x3bf8('0x2f')]][_0x3bf8('0x23')]!==_0x381b06['state']['toLowerCase']()){this[_0x3bf8('0x8')][_0x381b06[_0x3bf8('0x2f')]]['stateTime']=_[_0x3bf8('0x32')](moment()[_0x3bf8('0x33')]('x'));}this[_0x3bf8('0x8')][_0x381b06[_0x3bf8('0x2f')]][_0x3bf8('0x23')]=_0x381b06['state'][_0x3bf8('0x31')]();logger[_0x3bf8('0x24')](_0x3bf8('0x39'),util[_0x3bf8('0x17')](this[_0x3bf8('0x8')][_0x381b06[_0x3bf8('0x2f')]],{'showHidden':![],'depth':null}));this[_0x3bf8('0x1f')](util[_0x3bf8('0x33')](_0x3bf8('0x2b'),this['trunks'][_0x381b06[_0x3bf8('0x2f')]]['name']),'trunk:save',this[_0x3bf8('0x8')][_0x381b06[_0x3bf8('0x2f')]]);}else if(_[_0x3bf8('0x3a')](_0x381b06[_0x3bf8('0x2f')],_0x3bf8('0x3b'))){var _0x4d0bfe=_0x381b06['device'];var _0x6a628c=_0x4d0bfe[_0x3bf8('0x3c')](_0x4d0bfe[_0x3bf8('0x3d')]('/')+0x1,_0x4d0bfe[_0x3bf8('0x3d')]('@'));var _0x2e8619=_['find'](this[_0x3bf8('0x9')],function(_0x43bf7b){return _0x43bf7b[_0x3bf8('0x3e')]==_0x6a628c||_0x43bf7b['phone']==_0x6a628c||_0x43bf7b['accountcode']==_0x6a628c;});if(_0x2e8619){if(_0x2e8619[_0x3bf8('0x23')]!==_0x381b06['state'][_0x3bf8('0x31')]()){_0x2e8619[_0x3bf8('0x35')]=_[_0x3bf8('0x32')](moment()[_0x3bf8('0x33')]('x'));}_0x2e8619['state']=_0x381b06[_0x3bf8('0x23')][_0x3bf8('0x31')]();_0x2e8619[_0x3bf8('0x30')]=!![];_0x2e8619[_0x3bf8('0x34')](_0x381b06);}}}}catch(_0x57d695){logger[_0x3bf8('0x15')]('[userReport][devicestatechange]',util[_0x3bf8('0x17')](_0x57d695,{'showHidden':![],'depth':null}));}};UserReport[_0x3bf8('0x1d')]['syncPeerStatus']=function(_0x123966){try{if(this[_0x3bf8('0x20')](_0x123966)&&this['isNotNull'](_0x123966[_0x3bf8('0xf')])){logger['info']('[userReport][peerstatus]\x20peer:%s\x20address:%s\x20status:%s',_0x123966[_0x3bf8('0x3f')],_0x123966['address'],_0x123966[_0x3bf8('0xf')]);logger[_0x3bf8('0x24')](_0x3bf8('0x40'),util[_0x3bf8('0x17')](_0x123966,{'showHidden':![],'depth':null}));if(this[_0x3bf8('0x9')][_0x123966[_0x3bf8('0x3f')]]){if(!this['agents'][_0x123966[_0x3bf8('0x3f')]][_0x3bf8('0x30')]||_0x123966[_0x3bf8('0xf')][_0x3bf8('0x31')]()=='registered'){this[_0x3bf8('0x9')][_0x123966[_0x3bf8('0x3f')]][_0x3bf8('0x30')]=![];this['agents'][_0x123966['peer']][_0x3bf8('0x41')]=_0x123966[_0x3bf8('0xf')][_0x3bf8('0x31')]();this[_0x3bf8('0x9')][_0x123966['peer']][_0x3bf8('0x42')]=_0x123966[_0x3bf8('0x42')];this[_0x3bf8('0x9')][_0x123966['peer']][_0x3bf8('0x34')](_0x123966);}}else if(this[_0x3bf8('0xa')][_0x123966[_0x3bf8('0x3f')]]){this['telephones'][_0x123966[_0x3bf8('0x3f')]]['status']=_0x123966[_0x3bf8('0xf')]['toLowerCase']();this[_0x3bf8('0xa')][_0x123966[_0x3bf8('0x3f')]][_0x3bf8('0x42')]=_0x123966[_0x3bf8('0x42')];logger[_0x3bf8('0x24')](_0x3bf8('0x43'),util[_0x3bf8('0x17')](this[_0x3bf8('0xa')][_0x123966[_0x3bf8('0x3f')]],{'showHidden':![],'depth':null}));this[_0x3bf8('0x1f')](util[_0x3bf8('0x33')](_0x3bf8('0x37'),this[_0x3bf8('0xa')][_0x123966[_0x3bf8('0x3f')]][_0x3bf8('0x2c')]),_0x3bf8('0x38'),this[_0x3bf8('0xa')][_0x123966['peer']]);}else if(this[_0x3bf8('0x8')][_0x123966[_0x3bf8('0x3f')]]){this['trunks'][_0x123966[_0x3bf8('0x3f')]][_0x3bf8('0x41')]=_0x123966[_0x3bf8('0xf')]['toLowerCase']();this['trunks'][_0x123966[_0x3bf8('0x3f')]]['address']=_0x123966[_0x3bf8('0x42')];logger['debug'](_0x3bf8('0x44'),util[_0x3bf8('0x17')](this[_0x3bf8('0x8')][_0x123966[_0x3bf8('0x3f')]],{'showHidden':![],'depth':null}));this[_0x3bf8('0x1f')](util['format']('trunk:%s',this[_0x3bf8('0x8')][_0x123966['peer']]['name']),_0x3bf8('0x2d'),this['trunks'][_0x123966['peer']]);}}}catch(_0x54b067){logger['error']('[userReport][peerstatus]',util[_0x3bf8('0x17')](_0x54b067,{'showHidden':![],'depth':null}));}};module[_0x3bf8('0x45')]=UserReport;