Built motion from commit 0555bc41.|2.5.41
[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 _0xb73c=['telephones','registryentry','syncRegistry','registry','bind','devicestatechange','syncDeviceState','peerstatus','syncPeerStatus','resolve','then','actionSipShowRegistry','catch','error','[userReport][sipshowregistry]','inspect','actionDeviceStateList','[userReport][sippeerstatus]','syncRealtimeShow','prototype','isUndefined','emit','isNotNull','info','[userReport][registry]\x20registry:%s\x20state:%s','state','debug','[userReport][registry]','find','stateRegistry','merge','omit','event','actionid','username','[userReport][registry]\x20sending\x20trunk:save\x20event:','name','[userReport][devicestatechange]\x20device:%s\x20state:%s','device','local','toLowerCase','inuse','stateTime','toNumber','format','updateStatusRealtime','[userReport][devicestatechange]\x20sending\x20telephone:save\x20event:','telephone:%s','telephone:save','[userReport][devicestatechange]\x20sending\x20trunk:save\x20event:','startsWith','Local','substring','indexOf','accountcode','[userReport][devicestatechange]','[userReport][peerstatus]\x20peer:%s\x20address:%s\x20status:%s','peer','[userReport][peerstatus]','registered','status','address','[userReport][peerstatus]\x20sending\x20trunk:save\x20event:','trunk:%s','trunk:save','exports','lodash','ioredis','bluebird','ami','redis','localhost','socket.io-emitter','trunks','agents'];(function(_0x3ee9b2,_0xa090bb){var _0x51ac3e=function(_0x8ba28d){while(--_0x8ba28d){_0x3ee9b2['push'](_0x3ee9b2['shift']());}};_0x51ac3e(++_0xa090bb);}(_0xb73c,0x1b9));var _0xcb73=function(_0x4bda64,_0x178025){_0x4bda64=_0x4bda64-0x0;var _0x232860=_0xb73c[_0x4bda64];return _0x232860;};'use strict';var _=require(_0xcb73('0x0'));var moment=require('moment');var util=require('util');var Redis=require(_0xcb73('0x1'));var BPromise=require(_0xcb73('0x2'));var config=require('../../../config/environment');var logger=require('../../../config/logger')(_0xcb73('0x3'));var ami=require('../ami');config[_0xcb73('0x4')]=_['defaults'](config[_0xcb73('0x4')],{'host':_0xcb73('0x5'),'port':0x18eb});var io=require(_0xcb73('0x6'))(new Redis(config['redis']));function UserReport(_0x457044){this[_0xcb73('0x7')]=_0x457044[_0xcb73('0x7')];this[_0xcb73('0x8')]=_0x457044['agents'];this[_0xcb73('0x9')]=_0x457044[_0xcb73('0x9')];ami['on'](_0xcb73('0xa'),this[_0xcb73('0xb')]['bind'](this));ami['on'](_0xcb73('0xc'),this[_0xcb73('0xb')][_0xcb73('0xd')](this));ami['on'](_0xcb73('0xe'),this[_0xcb73('0xf')]['bind'](this));ami['on'](_0xcb73('0x10'),this[_0xcb73('0x11')][_0xcb73('0xd')](this));return this['syncRealtimeShow']();}function showSipRegistrations(){Promise[_0xcb73('0x12')]()[_0xcb73('0x13')](ami[_0xcb73('0x14')]())[_0xcb73('0x15')](function(_0x3f9385){logger[_0xcb73('0x16')](_0xcb73('0x17'),util[_0xcb73('0x18')](_0x3f9385,{'showHidden':![],'depth':null}));});}function listDeviceStates(){Promise[_0xcb73('0x12')]()['then'](ami[_0xcb73('0x19')]())[_0xcb73('0x15')](function(_0x52a51b){logger['error']('[userReport][devicestatelist]',util[_0xcb73('0x18')](_0x52a51b,{'showHidden':![],'depth':null}));});}function showPeersStatus(){Promise['resolve']()[_0xcb73('0x13')](ami['actionSipPeerStatus']())[_0xcb73('0x15')](function(_0x374fe4){logger[_0xcb73('0x16')](_0xcb73('0x1a'),util[_0xcb73('0x18')](_0x374fe4,{'showHidden':![],'depth':null}));});}UserReport['prototype'][_0xcb73('0x1b')]=function(){setInterval(function(){BPromise[_0xcb73('0x12')]()['then'](showSipRegistrations())[_0xcb73('0x13')](listDeviceStates())[_0xcb73('0x13')](showPeersStatus());},0x32c8);};UserReport[_0xcb73('0x1c')]['isNotNull']=function(_0x8721c){return _0x8721c!==null&&!_[_0xcb73('0x1d')](_0x8721c);};UserReport['prototype']['emit']=function(_0x4ece4e,_0x520d74,_0x1bce98){io['to'](_0x4ece4e)[_0xcb73('0x1e')](_0x520d74,_0x1bce98);};UserReport[_0xcb73('0x1c')][_0xcb73('0xb')]=function(_0x9b099){try{if(this[_0xcb73('0x1f')](_0x9b099)){logger[_0xcb73('0x20')](_0xcb73('0x21'),_0x9b099['username'],_0x9b099[_0xcb73('0x22')]);logger[_0xcb73('0x23')](_0xcb73('0x24'),util[_0xcb73('0x18')](_0x9b099,{'showHidden':![],'depth':null}));var _0x1efef7=_[_0xcb73('0x25')](this[_0xcb73('0x7')],{'defaultuser':_0x9b099['username']});if(_0x1efef7){_0x9b099[_0xcb73('0x26')]=_0x9b099[_0xcb73('0x22')];_[_0xcb73('0x27')](_0x1efef7,_[_0xcb73('0x28')](_0x9b099,[_0xcb73('0x29'),_0xcb73('0x2a'),_0xcb73('0x2b'),_0xcb73('0x22')]));logger['debug'](_0xcb73('0x2c'),util[_0xcb73('0x18')](_0x1efef7,{'showHidden':![],'depth':null}));this[_0xcb73('0x1e')](util['format']('trunk:%s',_0x1efef7[_0xcb73('0x2d')]),'trunk:save',_0x1efef7);}}}catch(_0x3950f6){logger[_0xcb73('0x16')](_0xcb73('0x24'),util[_0xcb73('0x18')](_0x3950f6,{'showHidden':![],'depth':null}));}};UserReport[_0xcb73('0x1c')][_0xcb73('0xf')]=function(_0x522fba){try{if(this['isNotNull'](_0x522fba)){logger['info'](_0xcb73('0x2e'),_0x522fba[_0xcb73('0x2f')],_0x522fba[_0xcb73('0x22')]);logger[_0xcb73('0x23')]('[userReport][devicestatechange]',util[_0xcb73('0x18')](_0x522fba,{'showHidden':![],'depth':null}));if(this[_0xcb73('0x8')][_0x522fba[_0xcb73('0x2f')]]){if(!this[_0xcb73('0x8')][_0x522fba[_0xcb73('0x2f')]][_0xcb73('0x30')]||_0x522fba[_0xcb73('0x22')][_0xcb73('0x31')]()==_0xcb73('0x32')){this['agents'][_0x522fba[_0xcb73('0x2f')]][_0xcb73('0x30')]=![];if(this['agents'][_0x522fba[_0xcb73('0x2f')]][_0xcb73('0x22')]!==_0x522fba[_0xcb73('0x22')][_0xcb73('0x31')]()){this['agents'][_0x522fba['device']][_0xcb73('0x33')]=_[_0xcb73('0x34')](moment()[_0xcb73('0x35')]('x'));}this['agents'][_0x522fba[_0xcb73('0x2f')]][_0xcb73('0x22')]=_0x522fba['state']['toLowerCase']();this['agents'][_0x522fba[_0xcb73('0x2f')]][_0xcb73('0x36')](_0x522fba);}}else if(this[_0xcb73('0x9')][_0x522fba['device']]){if(this['telephones'][_0x522fba[_0xcb73('0x2f')]][_0xcb73('0x22')]!==_0x522fba[_0xcb73('0x22')][_0xcb73('0x31')]()){this[_0xcb73('0x9')][_0x522fba[_0xcb73('0x2f')]][_0xcb73('0x33')]=_[_0xcb73('0x34')](moment()[_0xcb73('0x35')]('x'));}this[_0xcb73('0x9')][_0x522fba[_0xcb73('0x2f')]]['state']=_0x522fba[_0xcb73('0x22')]['toLowerCase']();logger[_0xcb73('0x23')](_0xcb73('0x37'),util[_0xcb73('0x18')](this[_0xcb73('0x9')][_0x522fba[_0xcb73('0x2f')]],{'showHidden':![],'depth':null}));this[_0xcb73('0x1e')](util['format'](_0xcb73('0x38'),this['telephones'][_0x522fba['device']][_0xcb73('0x2d')]),_0xcb73('0x39'),this[_0xcb73('0x9')][_0x522fba[_0xcb73('0x2f')]]);}else if(this[_0xcb73('0x7')][_0x522fba['device']]){if(this[_0xcb73('0x7')][_0x522fba[_0xcb73('0x2f')]][_0xcb73('0x22')]!==_0x522fba['state'][_0xcb73('0x31')]()){this[_0xcb73('0x7')][_0x522fba['device']]['stateTime']=_['toNumber'](moment()[_0xcb73('0x35')]('x'));}this[_0xcb73('0x7')][_0x522fba['device']][_0xcb73('0x22')]=_0x522fba['state'][_0xcb73('0x31')]();logger[_0xcb73('0x23')](_0xcb73('0x3a'),util[_0xcb73('0x18')](this[_0xcb73('0x7')][_0x522fba[_0xcb73('0x2f')]],{'showHidden':![],'depth':null}));this[_0xcb73('0x1e')](util[_0xcb73('0x35')]('trunk:%s',this[_0xcb73('0x7')][_0x522fba[_0xcb73('0x2f')]]['name']),'trunk:save',this['trunks'][_0x522fba[_0xcb73('0x2f')]]);}else if(_[_0xcb73('0x3b')](_0x522fba[_0xcb73('0x2f')],_0xcb73('0x3c'))){var _0x8e9f1e=_0x522fba['device'];var _0x48e379=_0x8e9f1e[_0xcb73('0x3d')](_0x8e9f1e[_0xcb73('0x3e')]('/')+0x1,_0x8e9f1e['indexOf']('@'));var _0x4dfbbb=_[_0xcb73('0x25')](this[_0xcb73('0x8')],function(_0x2b7435){return _0x2b7435['mobile']==_0x48e379||_0x2b7435['phone']==_0x48e379||_0x2b7435[_0xcb73('0x3f')]==_0x48e379;});if(_0x4dfbbb){if(_0x4dfbbb[_0xcb73('0x22')]!==_0x522fba[_0xcb73('0x22')][_0xcb73('0x31')]()){_0x4dfbbb['stateTime']=_[_0xcb73('0x34')](moment()['format']('x'));}_0x4dfbbb[_0xcb73('0x22')]=_0x522fba['state'][_0xcb73('0x31')]();_0x4dfbbb[_0xcb73('0x30')]=!![];_0x4dfbbb[_0xcb73('0x36')](_0x522fba);}}}}catch(_0x59fe37){logger[_0xcb73('0x16')](_0xcb73('0x40'),util[_0xcb73('0x18')](_0x59fe37,{'showHidden':![],'depth':null}));}};UserReport[_0xcb73('0x1c')][_0xcb73('0x11')]=function(_0x1b6f60){try{if(this[_0xcb73('0x1f')](_0x1b6f60)&&this['isNotNull'](_0x1b6f60[_0xcb73('0x10')])){logger['info'](_0xcb73('0x41'),_0x1b6f60[_0xcb73('0x42')],_0x1b6f60['address'],_0x1b6f60['peerstatus']);logger[_0xcb73('0x23')](_0xcb73('0x43'),util['inspect'](_0x1b6f60,{'showHidden':![],'depth':null}));if(this[_0xcb73('0x8')][_0x1b6f60['peer']]){if(!this[_0xcb73('0x8')][_0x1b6f60[_0xcb73('0x42')]]['local']||_0x1b6f60[_0xcb73('0x10')][_0xcb73('0x31')]()==_0xcb73('0x44')){this[_0xcb73('0x8')][_0x1b6f60[_0xcb73('0x42')]][_0xcb73('0x30')]=![];this['agents'][_0x1b6f60[_0xcb73('0x42')]][_0xcb73('0x45')]=_0x1b6f60[_0xcb73('0x10')][_0xcb73('0x31')]();this[_0xcb73('0x8')][_0x1b6f60[_0xcb73('0x42')]]['address']=_0x1b6f60['address'];this[_0xcb73('0x8')][_0x1b6f60[_0xcb73('0x42')]][_0xcb73('0x36')](_0x1b6f60);}}else if(this['telephones'][_0x1b6f60[_0xcb73('0x42')]]){this['telephones'][_0x1b6f60[_0xcb73('0x42')]]['status']=_0x1b6f60[_0xcb73('0x10')][_0xcb73('0x31')]();this[_0xcb73('0x9')][_0x1b6f60[_0xcb73('0x42')]][_0xcb73('0x46')]=_0x1b6f60['address'];logger[_0xcb73('0x23')]('[userReport][peerstatus]\x20sending\x20telephone:save\x20event:',util[_0xcb73('0x18')](this[_0xcb73('0x9')][_0x1b6f60[_0xcb73('0x42')]],{'showHidden':![],'depth':null}));this['emit'](util[_0xcb73('0x35')]('telephone:%s',this[_0xcb73('0x9')][_0x1b6f60[_0xcb73('0x42')]]['name']),_0xcb73('0x39'),this[_0xcb73('0x9')][_0x1b6f60[_0xcb73('0x42')]]);}else if(this[_0xcb73('0x7')][_0x1b6f60['peer']]){this['trunks'][_0x1b6f60[_0xcb73('0x42')]]['status']=_0x1b6f60[_0xcb73('0x10')][_0xcb73('0x31')]();this[_0xcb73('0x7')][_0x1b6f60[_0xcb73('0x42')]][_0xcb73('0x46')]=_0x1b6f60['address'];logger[_0xcb73('0x23')](_0xcb73('0x47'),util['inspect'](this[_0xcb73('0x7')][_0x1b6f60[_0xcb73('0x42')]],{'showHidden':![],'depth':null}));this['emit'](util[_0xcb73('0x35')](_0xcb73('0x48'),this['trunks'][_0x1b6f60[_0xcb73('0x42')]][_0xcb73('0x2d')]),_0xcb73('0x49'),this['trunks'][_0x1b6f60[_0xcb73('0x42')]]);}}}catch(_0x35ad7c){logger[_0xcb73('0x16')](_0xcb73('0x43'),util[_0xcb73('0x18')](_0x35ad7c,{'showHidden':![],'depth':null}));}};module[_0xcb73('0x4a')]=UserReport;