4e09bc23e8e7d385442b6975fc23998a7a9f854b
[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 _0xeb44=['telephone:%s','telephone:save','[userReport][peerstatus]','util','ioredis','../../../config/environment','ami','redis','defaults','socket.io-emitter','trunks','agents','telephones','registryentry','syncRegistry','bind','registry','syncDeviceState','peerstatus','syncPeerStatus','syncRealtimeShow','resolve','actionSipShowRegistry','error','[userReport][sipshowregistry]','inspect','then','catch','[userReport][devicestatelist]','actionSipPeerStatus','[userReport][sippeerstatus]','prototype','isNotNull','isUndefined','emit','state','debug','find','username','stateRegistry','merge','event','actionid','[userReport][registry]\x20sending\x20trunk:save\x20event:','format','trunk:%s','name','trunk:save','[userReport][registry]','info','[userReport][devicestatechange]\x20device:%s\x20state:%s','device','[userReport][devicestatechange]','local','toLowerCase','stateTime','toNumber','updateStatusRealtime','[userReport][devicestatechange]\x20sending\x20telephone:save\x20event:','[userReport][devicestatechange]\x20sending\x20trunk:save\x20event:','Local','substring','indexOf','mobile','phone','accountcode','[userReport][peerstatus]\x20peer:%s\x20address:%s\x20status:%s','address','peer','registered','status'];(function(_0x4f26e5,_0x4aa9b4){var _0x4827b4=function(_0x42a10a){while(--_0x42a10a){_0x4f26e5['push'](_0x4f26e5['shift']());}};_0x4827b4(++_0x4aa9b4);}(_0xeb44,0x1ad));var _0x4eb4=function(_0x5b669e,_0x59ac43){_0x5b669e=_0x5b669e-0x0;var _0x3cf592=_0xeb44[_0x5b669e];return _0x3cf592;};'use strict';var _=require('lodash');var moment=require('moment');var util=require(_0x4eb4('0x0'));var Redis=require(_0x4eb4('0x1'));var BPromise=require('bluebird');var config=require(_0x4eb4('0x2'));var logger=require('../../../config/logger')(_0x4eb4('0x3'));var ami=require('../ami');config[_0x4eb4('0x4')]=_[_0x4eb4('0x5')](config['redis'],{'host':'localhost','port':0x18eb});var io=require(_0x4eb4('0x6'))(new Redis(config[_0x4eb4('0x4')]));function UserReport(_0x1641f8){this[_0x4eb4('0x7')]=_0x1641f8['trunks'];this[_0x4eb4('0x8')]=_0x1641f8[_0x4eb4('0x8')];this[_0x4eb4('0x9')]=_0x1641f8[_0x4eb4('0x9')];ami['on'](_0x4eb4('0xa'),this[_0x4eb4('0xb')][_0x4eb4('0xc')](this));ami['on'](_0x4eb4('0xd'),this['syncRegistry'][_0x4eb4('0xc')](this));ami['on']('devicestatechange',this[_0x4eb4('0xe')][_0x4eb4('0xc')](this));ami['on'](_0x4eb4('0xf'),this[_0x4eb4('0x10')][_0x4eb4('0xc')](this));return this[_0x4eb4('0x11')]();}function showSipRegistrations(){Promise[_0x4eb4('0x12')]()['then'](ami[_0x4eb4('0x13')]())['catch'](function(_0xadec77){logger[_0x4eb4('0x14')](_0x4eb4('0x15'),util[_0x4eb4('0x16')](_0xadec77,{'showHidden':![],'depth':null}));});}function listDeviceStates(){Promise[_0x4eb4('0x12')]()[_0x4eb4('0x17')](ami['actionDeviceStateList']())[_0x4eb4('0x18')](function(_0x2357b9){logger['error'](_0x4eb4('0x19'),util['inspect'](_0x2357b9,{'showHidden':![],'depth':null}));});}function showPeersStatus(){Promise[_0x4eb4('0x12')]()[_0x4eb4('0x17')](ami[_0x4eb4('0x1a')]())[_0x4eb4('0x18')](function(_0x3f8c90){logger[_0x4eb4('0x14')](_0x4eb4('0x1b'),util['inspect'](_0x3f8c90,{'showHidden':![],'depth':null}));});}UserReport[_0x4eb4('0x1c')][_0x4eb4('0x11')]=function(){setInterval(function(){BPromise['resolve']()['then'](showSipRegistrations())[_0x4eb4('0x17')](listDeviceStates())['then'](showPeersStatus());},0x32c8);};UserReport['prototype'][_0x4eb4('0x1d')]=function(_0x24c74a){return _0x24c74a!==null&&!_[_0x4eb4('0x1e')](_0x24c74a);};UserReport[_0x4eb4('0x1c')][_0x4eb4('0x1f')]=function(_0x37fcbd,_0x39643b,_0xa6262e){io['to'](_0x37fcbd)[_0x4eb4('0x1f')](_0x39643b,_0xa6262e);};UserReport[_0x4eb4('0x1c')][_0x4eb4('0xb')]=function(_0xdb681f){try{if(this['isNotNull'](_0xdb681f)){logger['info']('[userReport][registry]\x20registry:%s\x20state:%s',_0xdb681f['username'],_0xdb681f[_0x4eb4('0x20')]);logger[_0x4eb4('0x21')]('[userReport][registry]',util[_0x4eb4('0x16')](_0xdb681f,{'showHidden':![],'depth':null}));var _0x26d4b7=_[_0x4eb4('0x22')](this['trunks'],{'defaultuser':_0xdb681f[_0x4eb4('0x23')]});if(_0x26d4b7){_0xdb681f[_0x4eb4('0x24')]=_0xdb681f[_0x4eb4('0x20')];_[_0x4eb4('0x25')](_0x26d4b7,_['omit'](_0xdb681f,[_0x4eb4('0x26'),_0x4eb4('0x27'),_0x4eb4('0x23'),_0x4eb4('0x20')]));logger[_0x4eb4('0x21')](_0x4eb4('0x28'),util[_0x4eb4('0x16')](_0x26d4b7,{'showHidden':![],'depth':null}));this[_0x4eb4('0x1f')](util[_0x4eb4('0x29')](_0x4eb4('0x2a'),_0x26d4b7[_0x4eb4('0x2b')]),_0x4eb4('0x2c'),_0x26d4b7);}}}catch(_0x5bc4f1){logger[_0x4eb4('0x14')](_0x4eb4('0x2d'),util[_0x4eb4('0x16')](_0x5bc4f1,{'showHidden':![],'depth':null}));}};UserReport[_0x4eb4('0x1c')]['syncDeviceState']=function(_0x34a766){try{if(this[_0x4eb4('0x1d')](_0x34a766)){logger[_0x4eb4('0x2e')](_0x4eb4('0x2f'),_0x34a766[_0x4eb4('0x30')],_0x34a766[_0x4eb4('0x20')]);logger[_0x4eb4('0x21')](_0x4eb4('0x31'),util[_0x4eb4('0x16')](_0x34a766,{'showHidden':![],'depth':null}));if(this[_0x4eb4('0x8')][_0x34a766[_0x4eb4('0x30')]]){if(!this['agents'][_0x34a766[_0x4eb4('0x30')]][_0x4eb4('0x32')]||_0x34a766[_0x4eb4('0x20')][_0x4eb4('0x33')]()=='inuse'){this[_0x4eb4('0x8')][_0x34a766['device']][_0x4eb4('0x32')]=![];if(this[_0x4eb4('0x8')][_0x34a766[_0x4eb4('0x30')]][_0x4eb4('0x20')]!==_0x34a766[_0x4eb4('0x20')][_0x4eb4('0x33')]()){this[_0x4eb4('0x8')][_0x34a766[_0x4eb4('0x30')]][_0x4eb4('0x34')]=_[_0x4eb4('0x35')](moment()[_0x4eb4('0x29')]('x'));}this[_0x4eb4('0x8')][_0x34a766[_0x4eb4('0x30')]][_0x4eb4('0x20')]=_0x34a766['state'][_0x4eb4('0x33')]();this[_0x4eb4('0x8')][_0x34a766[_0x4eb4('0x30')]][_0x4eb4('0x36')](_0x34a766);}}else if(this[_0x4eb4('0x9')][_0x34a766['device']]){if(this[_0x4eb4('0x9')][_0x34a766[_0x4eb4('0x30')]]['state']!==_0x34a766[_0x4eb4('0x20')][_0x4eb4('0x33')]()){this[_0x4eb4('0x9')][_0x34a766[_0x4eb4('0x30')]]['stateTime']=_[_0x4eb4('0x35')](moment()[_0x4eb4('0x29')]('x'));}this[_0x4eb4('0x9')][_0x34a766[_0x4eb4('0x30')]]['state']=_0x34a766[_0x4eb4('0x20')][_0x4eb4('0x33')]();logger['debug'](_0x4eb4('0x37'),util[_0x4eb4('0x16')](this[_0x4eb4('0x9')][_0x34a766[_0x4eb4('0x30')]],{'showHidden':![],'depth':null}));this[_0x4eb4('0x1f')](util['format']('telephone:%s',this['telephones'][_0x34a766[_0x4eb4('0x30')]][_0x4eb4('0x2b')]),'telephone:save',this[_0x4eb4('0x9')][_0x34a766[_0x4eb4('0x30')]]);}else if(this[_0x4eb4('0x7')][_0x34a766[_0x4eb4('0x30')]]){if(this[_0x4eb4('0x7')][_0x34a766['device']]['state']!==_0x34a766[_0x4eb4('0x20')][_0x4eb4('0x33')]()){this['trunks'][_0x34a766[_0x4eb4('0x30')]]['stateTime']=_[_0x4eb4('0x35')](moment()[_0x4eb4('0x29')]('x'));}this['trunks'][_0x34a766[_0x4eb4('0x30')]][_0x4eb4('0x20')]=_0x34a766['state'][_0x4eb4('0x33')]();logger[_0x4eb4('0x21')](_0x4eb4('0x38'),util[_0x4eb4('0x16')](this[_0x4eb4('0x7')][_0x34a766[_0x4eb4('0x30')]],{'showHidden':![],'depth':null}));this[_0x4eb4('0x1f')](util[_0x4eb4('0x29')](_0x4eb4('0x2a'),this[_0x4eb4('0x7')][_0x34a766[_0x4eb4('0x30')]][_0x4eb4('0x2b')]),_0x4eb4('0x2c'),this[_0x4eb4('0x7')][_0x34a766[_0x4eb4('0x30')]]);}else if(_['startsWith'](_0x34a766['device'],_0x4eb4('0x39'))){var _0x4a6b0c=_0x34a766[_0x4eb4('0x30')];var _0x4d87cd=_0x4a6b0c[_0x4eb4('0x3a')](_0x4a6b0c['indexOf']('/')+0x1,_0x4a6b0c[_0x4eb4('0x3b')]('@'));var _0x468041=_[_0x4eb4('0x22')](this[_0x4eb4('0x8')],function(_0x33562c){return _0x33562c[_0x4eb4('0x3c')]==_0x4d87cd||_0x33562c[_0x4eb4('0x3d')]==_0x4d87cd||_0x33562c[_0x4eb4('0x3e')]==_0x4d87cd;});if(_0x468041){if(_0x468041[_0x4eb4('0x20')]!==_0x34a766[_0x4eb4('0x20')][_0x4eb4('0x33')]()){_0x468041[_0x4eb4('0x34')]=_[_0x4eb4('0x35')](moment()['format']('x'));}_0x468041['state']=_0x34a766['state'][_0x4eb4('0x33')]();_0x468041[_0x4eb4('0x32')]=!![];_0x468041[_0x4eb4('0x36')](_0x34a766);}}}}catch(_0x5d7c53){logger[_0x4eb4('0x14')](_0x4eb4('0x31'),util[_0x4eb4('0x16')](_0x5d7c53,{'showHidden':![],'depth':null}));}};UserReport[_0x4eb4('0x1c')][_0x4eb4('0x10')]=function(_0x460fe7){try{if(this['isNotNull'](_0x460fe7)&&this['isNotNull'](_0x460fe7[_0x4eb4('0xf')])){logger[_0x4eb4('0x2e')](_0x4eb4('0x3f'),_0x460fe7['peer'],_0x460fe7[_0x4eb4('0x40')],_0x460fe7[_0x4eb4('0xf')]);logger['debug']('[userReport][peerstatus]',util[_0x4eb4('0x16')](_0x460fe7,{'showHidden':![],'depth':null}));if(this['agents'][_0x460fe7[_0x4eb4('0x41')]]){if(!this[_0x4eb4('0x8')][_0x460fe7[_0x4eb4('0x41')]][_0x4eb4('0x32')]||_0x460fe7[_0x4eb4('0xf')][_0x4eb4('0x33')]()==_0x4eb4('0x42')){this[_0x4eb4('0x8')][_0x460fe7[_0x4eb4('0x41')]][_0x4eb4('0x32')]=![];this[_0x4eb4('0x8')][_0x460fe7['peer']][_0x4eb4('0x43')]=_0x460fe7[_0x4eb4('0xf')][_0x4eb4('0x33')]();this[_0x4eb4('0x8')][_0x460fe7[_0x4eb4('0x41')]][_0x4eb4('0x40')]=_0x460fe7[_0x4eb4('0x40')];this['agents'][_0x460fe7[_0x4eb4('0x41')]][_0x4eb4('0x36')](_0x460fe7);}}else if(this[_0x4eb4('0x9')][_0x460fe7[_0x4eb4('0x41')]]){this[_0x4eb4('0x9')][_0x460fe7['peer']][_0x4eb4('0x43')]=_0x460fe7[_0x4eb4('0xf')]['toLowerCase']();this[_0x4eb4('0x9')][_0x460fe7[_0x4eb4('0x41')]]['address']=_0x460fe7[_0x4eb4('0x40')];logger[_0x4eb4('0x21')]('[userReport][peerstatus]\x20sending\x20telephone:save\x20event:',util[_0x4eb4('0x16')](this[_0x4eb4('0x9')][_0x460fe7[_0x4eb4('0x41')]],{'showHidden':![],'depth':null}));this['emit'](util[_0x4eb4('0x29')](_0x4eb4('0x44'),this[_0x4eb4('0x9')][_0x460fe7['peer']][_0x4eb4('0x2b')]),_0x4eb4('0x45'),this[_0x4eb4('0x9')][_0x460fe7[_0x4eb4('0x41')]]);}else if(this[_0x4eb4('0x7')][_0x460fe7['peer']]){this[_0x4eb4('0x7')][_0x460fe7[_0x4eb4('0x41')]][_0x4eb4('0x43')]=_0x460fe7['peerstatus'][_0x4eb4('0x33')]();this[_0x4eb4('0x7')][_0x460fe7['peer']][_0x4eb4('0x40')]=_0x460fe7['address'];logger['debug']('[userReport][peerstatus]\x20sending\x20trunk:save\x20event:',util['inspect'](this[_0x4eb4('0x7')][_0x460fe7[_0x4eb4('0x41')]],{'showHidden':![],'depth':null}));this[_0x4eb4('0x1f')](util[_0x4eb4('0x29')](_0x4eb4('0x2a'),this[_0x4eb4('0x7')][_0x460fe7[_0x4eb4('0x41')]]['name']),_0x4eb4('0x2c'),this[_0x4eb4('0x7')][_0x460fe7[_0x4eb4('0x41')]]);}}}catch(_0x243733){logger[_0x4eb4('0x14')](_0x4eb4('0x46'),util['inspect'](_0x243733,{'showHidden':![],'depth':null}));}};module['exports']=UserReport;