354cd786b35e0ea47c02cbcd5260c44b9482d7df
[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 _0x5c66=['exports','lodash','moment','ioredis','bluebird','../../../config/environment','ami','redis','trunks','agents','telephones','syncRegistry','bind','devicestatechange','syncDeviceState','peerstatus','syncPeerStatus','syncRealtimeShow','actionSipShowRegistry','catch','error','inspect','[userReport][devicestatelist]','resolve','actionSipPeerStatus','[userReport][sippeerstatus]','prototype','then','emit','isNotNull','info','[userReport][registry]\x20registry:%s\x20state:%s','username','state','debug','find','omit','event','[userReport][registry]\x20sending\x20trunk:save\x20event:','format','trunk:%s','name','[userReport][registry]','device','[userReport][devicestatechange]','local','inuse','toLowerCase','stateTime','toNumber','updateStatusRealtime','[userReport][devicestatechange]\x20sending\x20telephone:save\x20event:','telephone:save','[userReport][devicestatechange]\x20sending\x20trunk:save\x20event:','trunk:save','startsWith','Local','indexOf','phone','accountcode','peer','registered','status','address','[userReport][peerstatus]\x20sending\x20telephone:save\x20event:','telephone:%s'];(function(_0x680b65,_0x5b2e9c){var _0x1c2053=function(_0x1128e0){while(--_0x1128e0){_0x680b65['push'](_0x680b65['shift']());}};_0x1c2053(++_0x5b2e9c);}(_0x5c66,0x85));var _0x65c6=function(_0x566b7d,_0x1e357a){_0x566b7d=_0x566b7d-0x0;var _0x168c87=_0x5c66[_0x566b7d];return _0x168c87;};'use strict';var _=require(_0x65c6('0x0'));var moment=require(_0x65c6('0x1'));var util=require('util');var Redis=require(_0x65c6('0x2'));var BPromise=require(_0x65c6('0x3'));var config=require(_0x65c6('0x4'));var logger=require('../../../config/logger')(_0x65c6('0x5'));var ami=require('../ami');config[_0x65c6('0x6')]=_['defaults'](config[_0x65c6('0x6')],{'host':'localhost','port':0x18eb});var io=require('socket.io-emitter')(new Redis(config[_0x65c6('0x6')]));function UserReport(_0x162742){this[_0x65c6('0x7')]=_0x162742[_0x65c6('0x7')];this[_0x65c6('0x8')]=_0x162742['agents'];this['telephones']=_0x162742[_0x65c6('0x9')];ami['on']('registryentry',this[_0x65c6('0xa')]['bind'](this));ami['on']('registry',this[_0x65c6('0xa')][_0x65c6('0xb')](this));ami['on'](_0x65c6('0xc'),this[_0x65c6('0xd')][_0x65c6('0xb')](this));ami['on'](_0x65c6('0xe'),this[_0x65c6('0xf')]['bind'](this));return this[_0x65c6('0x10')]();}function showSipRegistrations(){Promise['resolve']()['then'](ami[_0x65c6('0x11')]())[_0x65c6('0x12')](function(_0x51b32f){logger[_0x65c6('0x13')]('[userReport][sipshowregistry]',util[_0x65c6('0x14')](_0x51b32f,{'showHidden':![],'depth':null}));});}function listDeviceStates(){Promise['resolve']()['then'](ami['actionDeviceStateList']())[_0x65c6('0x12')](function(_0x25004e){logger[_0x65c6('0x13')](_0x65c6('0x15'),util[_0x65c6('0x14')](_0x25004e,{'showHidden':![],'depth':null}));});}function showPeersStatus(){Promise[_0x65c6('0x16')]()['then'](ami[_0x65c6('0x17')]())['catch'](function(_0x2ca6d4){logger[_0x65c6('0x13')](_0x65c6('0x18'),util['inspect'](_0x2ca6d4,{'showHidden':![],'depth':null}));});}UserReport[_0x65c6('0x19')][_0x65c6('0x10')]=function(){setInterval(function(){BPromise[_0x65c6('0x16')]()[_0x65c6('0x1a')](showSipRegistrations())[_0x65c6('0x1a')](listDeviceStates())['then'](showPeersStatus());},0x32c8);};UserReport[_0x65c6('0x19')]['isNotNull']=function(_0x326409){return _0x326409!==null&&!_['isUndefined'](_0x326409);};UserReport['prototype']['emit']=function(_0x15fa97,_0x1eaa71,_0x56608f){io['to'](_0x15fa97)[_0x65c6('0x1b')](_0x1eaa71,_0x56608f);};UserReport[_0x65c6('0x19')][_0x65c6('0xa')]=function(_0x154d16){try{if(this[_0x65c6('0x1c')](_0x154d16)){logger[_0x65c6('0x1d')](_0x65c6('0x1e'),_0x154d16[_0x65c6('0x1f')],_0x154d16[_0x65c6('0x20')]);logger[_0x65c6('0x21')]('[userReport][registry]',util[_0x65c6('0x14')](_0x154d16,{'showHidden':![],'depth':null}));var _0x4825f5=_[_0x65c6('0x22')](this['trunks'],{'defaultuser':_0x154d16['username']});if(_0x4825f5){_0x154d16['stateRegistry']=_0x154d16['state'];_['merge'](_0x4825f5,_[_0x65c6('0x23')](_0x154d16,[_0x65c6('0x24'),'actionid',_0x65c6('0x1f'),_0x65c6('0x20')]));logger[_0x65c6('0x21')](_0x65c6('0x25'),util[_0x65c6('0x14')](_0x4825f5,{'showHidden':![],'depth':null}));this[_0x65c6('0x1b')](util[_0x65c6('0x26')](_0x65c6('0x27'),_0x4825f5[_0x65c6('0x28')]),'trunk:save',_0x4825f5);}}}catch(_0x27aa58){logger['error'](_0x65c6('0x29'),util['inspect'](_0x27aa58,{'showHidden':![],'depth':null}));}};UserReport['prototype'][_0x65c6('0xd')]=function(_0x3cd79c){try{if(this[_0x65c6('0x1c')](_0x3cd79c)){logger['info']('[userReport][devicestatechange]\x20device:%s\x20state:%s',_0x3cd79c[_0x65c6('0x2a')],_0x3cd79c['state']);logger[_0x65c6('0x21')](_0x65c6('0x2b'),util[_0x65c6('0x14')](_0x3cd79c,{'showHidden':![],'depth':null}));if(this[_0x65c6('0x8')][_0x3cd79c[_0x65c6('0x2a')]]){if(!this[_0x65c6('0x8')][_0x3cd79c[_0x65c6('0x2a')]][_0x65c6('0x2c')]||_0x3cd79c[_0x65c6('0x20')]['toLowerCase']()==_0x65c6('0x2d')){this[_0x65c6('0x8')][_0x3cd79c[_0x65c6('0x2a')]][_0x65c6('0x2c')]=![];if(this[_0x65c6('0x8')][_0x3cd79c[_0x65c6('0x2a')]][_0x65c6('0x20')]!==_0x3cd79c[_0x65c6('0x20')][_0x65c6('0x2e')]()){this[_0x65c6('0x8')][_0x3cd79c['device']][_0x65c6('0x2f')]=_[_0x65c6('0x30')](moment()['format']('x'));}this[_0x65c6('0x8')][_0x3cd79c[_0x65c6('0x2a')]]['state']=_0x3cd79c['state'][_0x65c6('0x2e')]();this[_0x65c6('0x8')][_0x3cd79c[_0x65c6('0x2a')]][_0x65c6('0x31')](_0x3cd79c);}}else if(this['telephones'][_0x3cd79c[_0x65c6('0x2a')]]){if(this[_0x65c6('0x9')][_0x3cd79c[_0x65c6('0x2a')]][_0x65c6('0x20')]!==_0x3cd79c[_0x65c6('0x20')]['toLowerCase']()){this[_0x65c6('0x9')][_0x3cd79c[_0x65c6('0x2a')]][_0x65c6('0x2f')]=_[_0x65c6('0x30')](moment()[_0x65c6('0x26')]('x'));}this[_0x65c6('0x9')][_0x3cd79c[_0x65c6('0x2a')]][_0x65c6('0x20')]=_0x3cd79c[_0x65c6('0x20')]['toLowerCase']();logger[_0x65c6('0x21')](_0x65c6('0x32'),util[_0x65c6('0x14')](this['telephones'][_0x3cd79c[_0x65c6('0x2a')]],{'showHidden':![],'depth':null}));this['emit'](util['format']('telephone:%s',this['telephones'][_0x3cd79c[_0x65c6('0x2a')]][_0x65c6('0x28')]),_0x65c6('0x33'),this[_0x65c6('0x9')][_0x3cd79c[_0x65c6('0x2a')]]);}else if(this[_0x65c6('0x7')][_0x3cd79c[_0x65c6('0x2a')]]){if(this[_0x65c6('0x7')][_0x3cd79c[_0x65c6('0x2a')]][_0x65c6('0x20')]!==_0x3cd79c[_0x65c6('0x20')]['toLowerCase']()){this[_0x65c6('0x7')][_0x3cd79c[_0x65c6('0x2a')]]['stateTime']=_[_0x65c6('0x30')](moment()[_0x65c6('0x26')]('x'));}this[_0x65c6('0x7')][_0x3cd79c[_0x65c6('0x2a')]]['state']=_0x3cd79c[_0x65c6('0x20')][_0x65c6('0x2e')]();logger[_0x65c6('0x21')](_0x65c6('0x34'),util[_0x65c6('0x14')](this[_0x65c6('0x7')][_0x3cd79c['device']],{'showHidden':![],'depth':null}));this[_0x65c6('0x1b')](util[_0x65c6('0x26')]('trunk:%s',this[_0x65c6('0x7')][_0x3cd79c[_0x65c6('0x2a')]]['name']),_0x65c6('0x35'),this[_0x65c6('0x7')][_0x3cd79c[_0x65c6('0x2a')]]);}else if(_[_0x65c6('0x36')](_0x3cd79c[_0x65c6('0x2a')],_0x65c6('0x37'))){var _0x1f3d32=_0x3cd79c[_0x65c6('0x2a')];var _0x2c00db=_0x1f3d32['substring'](_0x1f3d32[_0x65c6('0x38')]('/')+0x1,_0x1f3d32[_0x65c6('0x38')]('@'));var _0x24f145=_[_0x65c6('0x22')](this[_0x65c6('0x8')],function(_0x1b1fff){return _0x1b1fff['mobile']==_0x2c00db||_0x1b1fff[_0x65c6('0x39')]==_0x2c00db||_0x1b1fff[_0x65c6('0x3a')]==_0x2c00db;});if(_0x24f145){if(_0x24f145['state']!==_0x3cd79c[_0x65c6('0x20')][_0x65c6('0x2e')]()){_0x24f145[_0x65c6('0x2f')]=_[_0x65c6('0x30')](moment()[_0x65c6('0x26')]('x'));}_0x24f145[_0x65c6('0x20')]=_0x3cd79c[_0x65c6('0x20')][_0x65c6('0x2e')]();_0x24f145['local']=!![];_0x24f145['updateStatusRealtime'](_0x3cd79c);}}}}catch(_0x54dac6){logger[_0x65c6('0x13')](_0x65c6('0x2b'),util['inspect'](_0x54dac6,{'showHidden':![],'depth':null}));}};UserReport['prototype'][_0x65c6('0xf')]=function(_0x35e68e){try{if(this[_0x65c6('0x1c')](_0x35e68e)&&this[_0x65c6('0x1c')](_0x35e68e[_0x65c6('0xe')])){logger[_0x65c6('0x1d')]('[userReport][peerstatus]\x20peer:%s\x20address:%s\x20status:%s',_0x35e68e[_0x65c6('0x3b')],_0x35e68e['address'],_0x35e68e[_0x65c6('0xe')]);logger[_0x65c6('0x21')]('[userReport][peerstatus]',util['inspect'](_0x35e68e,{'showHidden':![],'depth':null}));if(this[_0x65c6('0x8')][_0x35e68e['peer']]){if(!this[_0x65c6('0x8')][_0x35e68e[_0x65c6('0x3b')]][_0x65c6('0x2c')]||_0x35e68e[_0x65c6('0xe')][_0x65c6('0x2e')]()==_0x65c6('0x3c')){this[_0x65c6('0x8')][_0x35e68e[_0x65c6('0x3b')]][_0x65c6('0x2c')]=![];this[_0x65c6('0x8')][_0x35e68e[_0x65c6('0x3b')]][_0x65c6('0x3d')]=_0x35e68e[_0x65c6('0xe')][_0x65c6('0x2e')]();this[_0x65c6('0x8')][_0x35e68e[_0x65c6('0x3b')]]['address']=_0x35e68e['address'];this[_0x65c6('0x8')][_0x35e68e[_0x65c6('0x3b')]][_0x65c6('0x31')](_0x35e68e);}}else if(this['telephones'][_0x35e68e[_0x65c6('0x3b')]]){this[_0x65c6('0x9')][_0x35e68e['peer']][_0x65c6('0x3d')]=_0x35e68e[_0x65c6('0xe')]['toLowerCase']();this['telephones'][_0x35e68e[_0x65c6('0x3b')]][_0x65c6('0x3e')]=_0x35e68e[_0x65c6('0x3e')];logger[_0x65c6('0x21')](_0x65c6('0x3f'),util[_0x65c6('0x14')](this['telephones'][_0x35e68e[_0x65c6('0x3b')]],{'showHidden':![],'depth':null}));this['emit'](util[_0x65c6('0x26')](_0x65c6('0x40'),this[_0x65c6('0x9')][_0x35e68e[_0x65c6('0x3b')]][_0x65c6('0x28')]),'telephone:save',this[_0x65c6('0x9')][_0x35e68e[_0x65c6('0x3b')]]);}else if(this[_0x65c6('0x7')][_0x35e68e[_0x65c6('0x3b')]]){this[_0x65c6('0x7')][_0x35e68e['peer']][_0x65c6('0x3d')]=_0x35e68e['peerstatus'][_0x65c6('0x2e')]();this[_0x65c6('0x7')][_0x35e68e[_0x65c6('0x3b')]][_0x65c6('0x3e')]=_0x35e68e[_0x65c6('0x3e')];logger[_0x65c6('0x21')]('[userReport][peerstatus]\x20sending\x20trunk:save\x20event:',util['inspect'](this[_0x65c6('0x7')][_0x35e68e[_0x65c6('0x3b')]],{'showHidden':![],'depth':null}));this[_0x65c6('0x1b')](util[_0x65c6('0x26')](_0x65c6('0x27'),this['trunks'][_0x35e68e[_0x65c6('0x3b')]][_0x65c6('0x28')]),_0x65c6('0x35'),this['trunks'][_0x35e68e['peer']]);}}}catch(_0x294d13){logger[_0x65c6('0x13')]('[userReport][peerstatus]',util[_0x65c6('0x14')](_0x294d13,{'showHidden':![],'depth':null}));}};module[_0x65c6('0x41')]=UserReport;