95c825d3cc9a5d670e53050f4aa849a78d54941e
[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 _0x8c8b=['actionSipPeerStatus','[userReport][sippeerstatus]','prototype','isNotNull','emit','info','[userReport][registry]\x20registry:%s\x20state:%s','username','state','[userReport][registry]','find','stateRegistry','merge','omit','event','debug','trunk:%s','trunk:save','[userReport][devicestatechange]\x20device:%s\x20state:%s','[userReport][devicestatechange]','device','local','toLowerCase','inuse','stateTime','format','toNumber','telephone:%s','name','[userReport][devicestatechange]\x20sending\x20trunk:save\x20event:','startsWith','Local','phone','accountcode','updateStatusRealtime','peer','status','address','[userReport][peerstatus]\x20sending\x20telephone:save\x20event:','telephone:save','[userReport][peerstatus]\x20sending\x20trunk:save\x20event:','[userReport][peerstatus]','exports','lodash','ioredis','bluebird','../../../config/environment','../../../config/logger','redis','defaults','localhost','socket.io-emitter','trunks','agents','telephones','registryentry','syncRegistry','bind','registry','devicestatechange','syncDeviceState','peerstatus','syncPeerStatus','syncRealtimeShow','then','actionSipShowRegistry','error','[userReport][sipshowregistry]','resolve','actionDeviceStateList','catch','[userReport][devicestatelist]','inspect'];(function(_0x531b6e,_0x3b71ec){var _0x353ad7=function(_0x41eb73){while(--_0x41eb73){_0x531b6e['push'](_0x531b6e['shift']());}};_0x353ad7(++_0x3b71ec);}(_0x8c8b,0x106));var _0xb8c8=function(_0x321bb2,_0x202794){_0x321bb2=_0x321bb2-0x0;var _0x9c12ed=_0x8c8b[_0x321bb2];return _0x9c12ed;};'use strict';var _=require(_0xb8c8('0x0'));var moment=require('moment');var util=require('util');var Redis=require(_0xb8c8('0x1'));var BPromise=require(_0xb8c8('0x2'));var config=require(_0xb8c8('0x3'));var logger=require(_0xb8c8('0x4'))('ami');var ami=require('../ami');config[_0xb8c8('0x5')]=_[_0xb8c8('0x6')](config[_0xb8c8('0x5')],{'host':_0xb8c8('0x7'),'port':0x18eb});var io=require(_0xb8c8('0x8'))(new Redis(config[_0xb8c8('0x5')]));function UserReport(_0x1fa488){this[_0xb8c8('0x9')]=_0x1fa488[_0xb8c8('0x9')];this[_0xb8c8('0xa')]=_0x1fa488[_0xb8c8('0xa')];this['telephones']=_0x1fa488[_0xb8c8('0xb')];ami['on'](_0xb8c8('0xc'),this[_0xb8c8('0xd')][_0xb8c8('0xe')](this));ami['on'](_0xb8c8('0xf'),this[_0xb8c8('0xd')][_0xb8c8('0xe')](this));ami['on'](_0xb8c8('0x10'),this[_0xb8c8('0x11')][_0xb8c8('0xe')](this));ami['on'](_0xb8c8('0x12'),this[_0xb8c8('0x13')]['bind'](this));return this[_0xb8c8('0x14')]();}function showSipRegistrations(){Promise['resolve']()[_0xb8c8('0x15')](ami[_0xb8c8('0x16')]())['catch'](function(_0x3df583){logger[_0xb8c8('0x17')](_0xb8c8('0x18'),util['inspect'](_0x3df583,{'showHidden':![],'depth':null}));});}function listDeviceStates(){Promise[_0xb8c8('0x19')]()[_0xb8c8('0x15')](ami[_0xb8c8('0x1a')]())[_0xb8c8('0x1b')](function(_0x50429e){logger[_0xb8c8('0x17')](_0xb8c8('0x1c'),util[_0xb8c8('0x1d')](_0x50429e,{'showHidden':![],'depth':null}));});}function showPeersStatus(){Promise[_0xb8c8('0x19')]()['then'](ami[_0xb8c8('0x1e')]())[_0xb8c8('0x1b')](function(_0x31886c){logger[_0xb8c8('0x17')](_0xb8c8('0x1f'),util[_0xb8c8('0x1d')](_0x31886c,{'showHidden':![],'depth':null}));});}UserReport[_0xb8c8('0x20')][_0xb8c8('0x14')]=function(){setInterval(function(){BPromise[_0xb8c8('0x19')]()[_0xb8c8('0x15')](showSipRegistrations())[_0xb8c8('0x15')](listDeviceStates())[_0xb8c8('0x15')](showPeersStatus());},0x32c8);};UserReport[_0xb8c8('0x20')][_0xb8c8('0x21')]=function(_0x3c1ab4){return _0x3c1ab4!==null&&!_['isUndefined'](_0x3c1ab4);};UserReport[_0xb8c8('0x20')][_0xb8c8('0x22')]=function(_0x44eaea,_0x37ec4a,_0x10adaa){io['to'](_0x44eaea)['emit'](_0x37ec4a,_0x10adaa);};UserReport[_0xb8c8('0x20')]['syncRegistry']=function(_0x58d7c0){try{if(this[_0xb8c8('0x21')](_0x58d7c0)){logger[_0xb8c8('0x23')](_0xb8c8('0x24'),_0x58d7c0[_0xb8c8('0x25')],_0x58d7c0[_0xb8c8('0x26')]);logger['debug'](_0xb8c8('0x27'),util[_0xb8c8('0x1d')](_0x58d7c0,{'showHidden':![],'depth':null}));var _0x2bf36f=_[_0xb8c8('0x28')](this['trunks'],{'registry':_0x58d7c0[_0xb8c8('0x25')]});if(_0x2bf36f){_0x58d7c0[_0xb8c8('0x29')]=_0x58d7c0['state'];_[_0xb8c8('0x2a')](_0x2bf36f,_[_0xb8c8('0x2b')](_0x58d7c0,[_0xb8c8('0x2c'),'actionid','username',_0xb8c8('0x26')]));logger[_0xb8c8('0x2d')]('[userReport][registry]\x20sending\x20trunk:save\x20event:',util[_0xb8c8('0x1d')](_0x2bf36f,{'showHidden':![],'depth':null}));this[_0xb8c8('0x22')](util['format'](_0xb8c8('0x2e'),_0x2bf36f['name']),_0xb8c8('0x2f'),_0x2bf36f);}}}catch(_0xcccbee){logger[_0xb8c8('0x17')](_0xb8c8('0x27'),util[_0xb8c8('0x1d')](_0xcccbee,{'showHidden':![],'depth':null}));}};UserReport[_0xb8c8('0x20')][_0xb8c8('0x11')]=function(_0x2751cc){try{if(this[_0xb8c8('0x21')](_0x2751cc)){logger['info'](_0xb8c8('0x30'),_0x2751cc['device'],_0x2751cc[_0xb8c8('0x26')]);logger[_0xb8c8('0x2d')](_0xb8c8('0x31'),util['inspect'](_0x2751cc,{'showHidden':![],'depth':null}));if(this[_0xb8c8('0xa')][_0x2751cc[_0xb8c8('0x32')]]){if(!this[_0xb8c8('0xa')][_0x2751cc[_0xb8c8('0x32')]][_0xb8c8('0x33')]||_0x2751cc[_0xb8c8('0x26')][_0xb8c8('0x34')]()==_0xb8c8('0x35')){this[_0xb8c8('0xa')][_0x2751cc[_0xb8c8('0x32')]]['local']=![];if(this[_0xb8c8('0xa')][_0x2751cc[_0xb8c8('0x32')]][_0xb8c8('0x26')]!==_0x2751cc[_0xb8c8('0x26')][_0xb8c8('0x34')]()){this[_0xb8c8('0xa')][_0x2751cc[_0xb8c8('0x32')]][_0xb8c8('0x36')]=_['toNumber'](moment()[_0xb8c8('0x37')]('x'));}this['agents'][_0x2751cc[_0xb8c8('0x32')]][_0xb8c8('0x26')]=_0x2751cc[_0xb8c8('0x26')][_0xb8c8('0x34')]();this[_0xb8c8('0xa')][_0x2751cc[_0xb8c8('0x32')]]['updateStatusRealtime'](_0x2751cc);}}else if(this[_0xb8c8('0xb')][_0x2751cc[_0xb8c8('0x32')]]){if(this[_0xb8c8('0xb')][_0x2751cc[_0xb8c8('0x32')]][_0xb8c8('0x26')]!==_0x2751cc['state']['toLowerCase']()){this[_0xb8c8('0xb')][_0x2751cc[_0xb8c8('0x32')]][_0xb8c8('0x36')]=_[_0xb8c8('0x38')](moment()[_0xb8c8('0x37')]('x'));}this[_0xb8c8('0xb')][_0x2751cc[_0xb8c8('0x32')]][_0xb8c8('0x26')]=_0x2751cc[_0xb8c8('0x26')]['toLowerCase']();logger[_0xb8c8('0x2d')]('[userReport][devicestatechange]\x20sending\x20telephone:save\x20event:',util[_0xb8c8('0x1d')](this[_0xb8c8('0xb')][_0x2751cc[_0xb8c8('0x32')]],{'showHidden':![],'depth':null}));this[_0xb8c8('0x22')](util[_0xb8c8('0x37')](_0xb8c8('0x39'),this[_0xb8c8('0xb')][_0x2751cc[_0xb8c8('0x32')]][_0xb8c8('0x3a')]),'telephone:save',this[_0xb8c8('0xb')][_0x2751cc[_0xb8c8('0x32')]]);}else if(this[_0xb8c8('0x9')][_0x2751cc[_0xb8c8('0x32')]]){if(this[_0xb8c8('0x9')][_0x2751cc[_0xb8c8('0x32')]][_0xb8c8('0x26')]!==_0x2751cc[_0xb8c8('0x26')][_0xb8c8('0x34')]()){this[_0xb8c8('0x9')][_0x2751cc[_0xb8c8('0x32')]][_0xb8c8('0x36')]=_[_0xb8c8('0x38')](moment()[_0xb8c8('0x37')]('x'));}this[_0xb8c8('0x9')][_0x2751cc[_0xb8c8('0x32')]][_0xb8c8('0x26')]=_0x2751cc['state']['toLowerCase']();logger[_0xb8c8('0x2d')](_0xb8c8('0x3b'),util[_0xb8c8('0x1d')](this[_0xb8c8('0x9')][_0x2751cc[_0xb8c8('0x32')]],{'showHidden':![],'depth':null}));this[_0xb8c8('0x22')](util[_0xb8c8('0x37')]('trunk:%s',this[_0xb8c8('0x9')][_0x2751cc['device']]['name']),_0xb8c8('0x2f'),this[_0xb8c8('0x9')][_0x2751cc[_0xb8c8('0x32')]]);}else if(_[_0xb8c8('0x3c')](_0x2751cc['device'],_0xb8c8('0x3d'))){var _0x381d9d=_0x2751cc['device'];var _0x44f3b6=_0x381d9d['substring'](_0x381d9d['indexOf']('/')+0x1,_0x381d9d['indexOf']('@'));var _0x334207=_[_0xb8c8('0x28')](this['agents'],function(_0x15e51c){return _0x15e51c['mobile']==_0x44f3b6||_0x15e51c[_0xb8c8('0x3e')]==_0x44f3b6||_0x15e51c[_0xb8c8('0x3f')]==_0x44f3b6;});if(_0x334207){if(_0x334207[_0xb8c8('0x26')]!==_0x2751cc['state'][_0xb8c8('0x34')]()){_0x334207[_0xb8c8('0x36')]=_['toNumber'](moment()[_0xb8c8('0x37')]('x'));}_0x334207[_0xb8c8('0x26')]=_0x2751cc[_0xb8c8('0x26')][_0xb8c8('0x34')]();_0x334207[_0xb8c8('0x33')]=!![];_0x334207[_0xb8c8('0x40')](_0x2751cc);}}}}catch(_0x509774){logger[_0xb8c8('0x17')]('[userReport][devicestatechange]',util[_0xb8c8('0x1d')](_0x509774,{'showHidden':![],'depth':null}));}};UserReport['prototype'][_0xb8c8('0x13')]=function(_0x277c84){try{if(this[_0xb8c8('0x21')](_0x277c84)&&this['isNotNull'](_0x277c84['peerstatus'])){logger[_0xb8c8('0x23')]('[userReport][peerstatus]\x20peer:%s\x20address:%s\x20status:%s',_0x277c84[_0xb8c8('0x41')],_0x277c84['address'],_0x277c84[_0xb8c8('0x12')]);logger[_0xb8c8('0x2d')]('[userReport][peerstatus]',util[_0xb8c8('0x1d')](_0x277c84,{'showHidden':![],'depth':null}));if(this[_0xb8c8('0xa')][_0x277c84[_0xb8c8('0x41')]]){if(!this[_0xb8c8('0xa')][_0x277c84[_0xb8c8('0x41')]][_0xb8c8('0x33')]||_0x277c84[_0xb8c8('0x12')][_0xb8c8('0x34')]()=='registered'){this[_0xb8c8('0xa')][_0x277c84[_0xb8c8('0x41')]]['local']=![];this[_0xb8c8('0xa')][_0x277c84[_0xb8c8('0x41')]][_0xb8c8('0x42')]=_0x277c84[_0xb8c8('0x12')][_0xb8c8('0x34')]();this[_0xb8c8('0xa')][_0x277c84['peer']]['address']=_0x277c84[_0xb8c8('0x43')];this[_0xb8c8('0xa')][_0x277c84[_0xb8c8('0x41')]]['updateStatusRealtime'](_0x277c84);}}else if(this[_0xb8c8('0xb')][_0x277c84[_0xb8c8('0x41')]]){this[_0xb8c8('0xb')][_0x277c84[_0xb8c8('0x41')]][_0xb8c8('0x42')]=_0x277c84[_0xb8c8('0x12')][_0xb8c8('0x34')]();this[_0xb8c8('0xb')][_0x277c84['peer']]['address']=_0x277c84[_0xb8c8('0x43')];logger[_0xb8c8('0x2d')](_0xb8c8('0x44'),util[_0xb8c8('0x1d')](this[_0xb8c8('0xb')][_0x277c84[_0xb8c8('0x41')]],{'showHidden':![],'depth':null}));this[_0xb8c8('0x22')](util['format'](_0xb8c8('0x39'),this[_0xb8c8('0xb')][_0x277c84[_0xb8c8('0x41')]][_0xb8c8('0x3a')]),_0xb8c8('0x45'),this[_0xb8c8('0xb')][_0x277c84[_0xb8c8('0x41')]]);}else if(this[_0xb8c8('0x9')][_0x277c84[_0xb8c8('0x41')]]){this[_0xb8c8('0x9')][_0x277c84[_0xb8c8('0x41')]]['status']=_0x277c84[_0xb8c8('0x12')][_0xb8c8('0x34')]();this[_0xb8c8('0x9')][_0x277c84[_0xb8c8('0x41')]][_0xb8c8('0x43')]=_0x277c84[_0xb8c8('0x43')];logger[_0xb8c8('0x2d')](_0xb8c8('0x46'),util[_0xb8c8('0x1d')](this['trunks'][_0x277c84[_0xb8c8('0x41')]],{'showHidden':![],'depth':null}));this[_0xb8c8('0x22')](util['format'](_0xb8c8('0x2e'),this['trunks'][_0x277c84[_0xb8c8('0x41')]][_0xb8c8('0x3a')]),_0xb8c8('0x2f'),this[_0xb8c8('0x9')][_0x277c84[_0xb8c8('0x41')]]);}}}catch(_0x47ab41){logger['error'](_0xb8c8('0x47'),util['inspect'](_0x47ab41,{'showHidden':![],'depth':null}));}};module[_0xb8c8('0x48')]=UserReport;