Built motion from commit (unavailable).|2.5.21
[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 _0xf364=['[userReport][peerstatus]\x20sending\x20telephone:save\x20event:','[userReport][peerstatus]\x20sending\x20trunk:save\x20event:','exports','lodash','util','ioredis','../../../config/environment','../../../config/logger','ami','../ami','redis','localhost','socket.io-emitter','trunks','agents','telephones','registryentry','syncRegistry','bind','devicestatechange','syncDeviceState','peerstatus','syncPeerStatus','syncRealtimeShow','then','catch','error','[userReport][sipshowregistry]','inspect','resolve','actionDeviceStateList','[userReport][devicestatelist]','prototype','emit','info','[userReport][registry]\x20registry:%s\x20state:%s','username','state','find','stateRegistry','merge','omit','actionid','debug','[userReport][registry]\x20sending\x20trunk:save\x20event:','trunk:%s','name','trunk:save','[userReport][registry]','isNotNull','[userReport][devicestatechange]\x20device:%s\x20state:%s','device','[userReport][devicestatechange]','local','toLowerCase','inuse','stateTime','toNumber','updateStatusRealtime','format','telephone:%s','telephone:save','[userReport][devicestatechange]\x20sending\x20trunk:save\x20event:','startsWith','Local','indexOf','mobile','accountcode','[userReport][peerstatus]\x20peer:%s\x20address:%s\x20status:%s','peer','address','[userReport][peerstatus]','status'];(function(_0x3faf7c,_0x561249){var _0xb9509b=function(_0x3eda1d){while(--_0x3eda1d){_0x3faf7c['push'](_0x3faf7c['shift']());}};_0xb9509b(++_0x561249);}(_0xf364,0x170));var _0x4f36=function(_0x4baae2,_0x487ab6){_0x4baae2=_0x4baae2-0x0;var _0x1a2285=_0xf364[_0x4baae2];return _0x1a2285;};'use strict';var _=require(_0x4f36('0x0'));var moment=require('moment');var util=require(_0x4f36('0x1'));var Redis=require(_0x4f36('0x2'));var BPromise=require('bluebird');var config=require(_0x4f36('0x3'));var logger=require(_0x4f36('0x4'))(_0x4f36('0x5'));var ami=require(_0x4f36('0x6'));config[_0x4f36('0x7')]=_['defaults'](config[_0x4f36('0x7')],{'host':_0x4f36('0x8'),'port':0x18eb});var io=require(_0x4f36('0x9'))(new Redis(config[_0x4f36('0x7')]));function UserReport(_0x43fe72){this[_0x4f36('0xa')]=_0x43fe72[_0x4f36('0xa')];this['agents']=_0x43fe72[_0x4f36('0xb')];this['telephones']=_0x43fe72[_0x4f36('0xc')];ami['on'](_0x4f36('0xd'),this[_0x4f36('0xe')][_0x4f36('0xf')](this));ami['on']('registry',this[_0x4f36('0xe')][_0x4f36('0xf')](this));ami['on'](_0x4f36('0x10'),this[_0x4f36('0x11')][_0x4f36('0xf')](this));ami['on'](_0x4f36('0x12'),this[_0x4f36('0x13')][_0x4f36('0xf')](this));return this[_0x4f36('0x14')]();}function showSipRegistrations(){Promise['resolve']()[_0x4f36('0x15')](ami['actionSipShowRegistry']())[_0x4f36('0x16')](function(_0x3f90ec){logger[_0x4f36('0x17')](_0x4f36('0x18'),util[_0x4f36('0x19')](_0x3f90ec,{'showHidden':![],'depth':null}));});}function listDeviceStates(){Promise[_0x4f36('0x1a')]()[_0x4f36('0x15')](ami[_0x4f36('0x1b')]())[_0x4f36('0x16')](function(_0x212645){logger['error'](_0x4f36('0x1c'),util[_0x4f36('0x19')](_0x212645,{'showHidden':![],'depth':null}));});}function showPeersStatus(){Promise[_0x4f36('0x1a')]()[_0x4f36('0x15')](ami['actionSipPeerStatus']())[_0x4f36('0x16')](function(_0x33a3ab){logger[_0x4f36('0x17')]('[userReport][sippeerstatus]',util[_0x4f36('0x19')](_0x33a3ab,{'showHidden':![],'depth':null}));});}UserReport[_0x4f36('0x1d')][_0x4f36('0x14')]=function(){setInterval(function(){BPromise['resolve']()[_0x4f36('0x15')](showSipRegistrations())[_0x4f36('0x15')](listDeviceStates())[_0x4f36('0x15')](showPeersStatus());},0x32c8);};UserReport[_0x4f36('0x1d')]['isNotNull']=function(_0x366050){return _0x366050!==null&&!_['isUndefined'](_0x366050);};UserReport[_0x4f36('0x1d')][_0x4f36('0x1e')]=function(_0x51c727,_0x4fb04a,_0xcaa50b){io['to'](_0x51c727)[_0x4f36('0x1e')](_0x4fb04a,_0xcaa50b);};UserReport[_0x4f36('0x1d')][_0x4f36('0xe')]=function(_0x3ce399){try{if(this['isNotNull'](_0x3ce399)){logger[_0x4f36('0x1f')](_0x4f36('0x20'),_0x3ce399[_0x4f36('0x21')],_0x3ce399[_0x4f36('0x22')]);logger['debug']('[userReport][registry]',util[_0x4f36('0x19')](_0x3ce399,{'showHidden':![],'depth':null}));var _0x21f0c0=_[_0x4f36('0x23')](this[_0x4f36('0xa')],{'registry':_0x3ce399['username']});if(_0x21f0c0){_0x3ce399[_0x4f36('0x24')]=_0x3ce399['state'];_[_0x4f36('0x25')](_0x21f0c0,_[_0x4f36('0x26')](_0x3ce399,['event',_0x4f36('0x27'),_0x4f36('0x21'),'state']));logger[_0x4f36('0x28')](_0x4f36('0x29'),util['inspect'](_0x21f0c0,{'showHidden':![],'depth':null}));this[_0x4f36('0x1e')](util['format'](_0x4f36('0x2a'),_0x21f0c0[_0x4f36('0x2b')]),_0x4f36('0x2c'),_0x21f0c0);}}}catch(_0x21ff8e){logger['error'](_0x4f36('0x2d'),util[_0x4f36('0x19')](_0x21ff8e,{'showHidden':![],'depth':null}));}};UserReport['prototype'][_0x4f36('0x11')]=function(_0x32c175){try{if(this[_0x4f36('0x2e')](_0x32c175)){logger[_0x4f36('0x1f')](_0x4f36('0x2f'),_0x32c175[_0x4f36('0x30')],_0x32c175[_0x4f36('0x22')]);logger['debug'](_0x4f36('0x31'),util['inspect'](_0x32c175,{'showHidden':![],'depth':null}));if(this[_0x4f36('0xb')][_0x32c175[_0x4f36('0x30')]]){if(!this[_0x4f36('0xb')][_0x32c175[_0x4f36('0x30')]][_0x4f36('0x32')]||_0x32c175[_0x4f36('0x22')][_0x4f36('0x33')]()==_0x4f36('0x34')){this['agents'][_0x32c175[_0x4f36('0x30')]][_0x4f36('0x32')]=![];if(this[_0x4f36('0xb')][_0x32c175[_0x4f36('0x30')]]['state']!==_0x32c175[_0x4f36('0x22')][_0x4f36('0x33')]()){this['agents'][_0x32c175['device']][_0x4f36('0x35')]=_[_0x4f36('0x36')](moment()['format']('x'));}this[_0x4f36('0xb')][_0x32c175[_0x4f36('0x30')]][_0x4f36('0x22')]=_0x32c175[_0x4f36('0x22')][_0x4f36('0x33')]();this[_0x4f36('0xb')][_0x32c175['device']][_0x4f36('0x37')](_0x32c175);}}else if(this[_0x4f36('0xc')][_0x32c175[_0x4f36('0x30')]]){if(this[_0x4f36('0xc')][_0x32c175[_0x4f36('0x30')]][_0x4f36('0x22')]!==_0x32c175['state'][_0x4f36('0x33')]()){this[_0x4f36('0xc')][_0x32c175[_0x4f36('0x30')]]['stateTime']=_[_0x4f36('0x36')](moment()[_0x4f36('0x38')]('x'));}this['telephones'][_0x32c175[_0x4f36('0x30')]][_0x4f36('0x22')]=_0x32c175[_0x4f36('0x22')][_0x4f36('0x33')]();logger[_0x4f36('0x28')]('[userReport][devicestatechange]\x20sending\x20telephone:save\x20event:',util[_0x4f36('0x19')](this[_0x4f36('0xc')][_0x32c175[_0x4f36('0x30')]],{'showHidden':![],'depth':null}));this[_0x4f36('0x1e')](util[_0x4f36('0x38')](_0x4f36('0x39'),this[_0x4f36('0xc')][_0x32c175[_0x4f36('0x30')]][_0x4f36('0x2b')]),_0x4f36('0x3a'),this[_0x4f36('0xc')][_0x32c175['device']]);}else if(this['trunks'][_0x32c175['device']]){if(this[_0x4f36('0xa')][_0x32c175[_0x4f36('0x30')]][_0x4f36('0x22')]!==_0x32c175['state'][_0x4f36('0x33')]()){this['trunks'][_0x32c175['device']][_0x4f36('0x35')]=_[_0x4f36('0x36')](moment()[_0x4f36('0x38')]('x'));}this[_0x4f36('0xa')][_0x32c175[_0x4f36('0x30')]]['state']=_0x32c175[_0x4f36('0x22')][_0x4f36('0x33')]();logger['debug'](_0x4f36('0x3b'),util[_0x4f36('0x19')](this[_0x4f36('0xa')][_0x32c175[_0x4f36('0x30')]],{'showHidden':![],'depth':null}));this[_0x4f36('0x1e')](util[_0x4f36('0x38')](_0x4f36('0x2a'),this[_0x4f36('0xa')][_0x32c175[_0x4f36('0x30')]][_0x4f36('0x2b')]),'trunk:save',this[_0x4f36('0xa')][_0x32c175['device']]);}else if(_[_0x4f36('0x3c')](_0x32c175['device'],_0x4f36('0x3d'))){var _0x3a6f60=_0x32c175[_0x4f36('0x30')];var _0x3cc8f4=_0x3a6f60['substring'](_0x3a6f60[_0x4f36('0x3e')]('/')+0x1,_0x3a6f60[_0x4f36('0x3e')]('@'));var _0x50d923=_[_0x4f36('0x23')](this['agents'],function(_0x4a91f8){return _0x4a91f8[_0x4f36('0x3f')]==_0x3cc8f4||_0x4a91f8['phone']==_0x3cc8f4||_0x4a91f8[_0x4f36('0x40')]==_0x3cc8f4;});if(_0x50d923){if(_0x50d923['state']!==_0x32c175[_0x4f36('0x22')][_0x4f36('0x33')]()){_0x50d923[_0x4f36('0x35')]=_['toNumber'](moment()['format']('x'));}_0x50d923['state']=_0x32c175[_0x4f36('0x22')][_0x4f36('0x33')]();_0x50d923[_0x4f36('0x32')]=!![];_0x50d923['updateStatusRealtime'](_0x32c175);}}}}catch(_0x3e342f){logger['error']('[userReport][devicestatechange]',util[_0x4f36('0x19')](_0x3e342f,{'showHidden':![],'depth':null}));}};UserReport[_0x4f36('0x1d')][_0x4f36('0x13')]=function(_0x5e8df0){try{if(this['isNotNull'](_0x5e8df0)&&this['isNotNull'](_0x5e8df0[_0x4f36('0x12')])){logger[_0x4f36('0x1f')](_0x4f36('0x41'),_0x5e8df0[_0x4f36('0x42')],_0x5e8df0[_0x4f36('0x43')],_0x5e8df0[_0x4f36('0x12')]);logger[_0x4f36('0x28')](_0x4f36('0x44'),util[_0x4f36('0x19')](_0x5e8df0,{'showHidden':![],'depth':null}));if(this[_0x4f36('0xb')][_0x5e8df0[_0x4f36('0x42')]]){if(!this[_0x4f36('0xb')][_0x5e8df0['peer']][_0x4f36('0x32')]||_0x5e8df0['peerstatus']['toLowerCase']()=='registered'){this[_0x4f36('0xb')][_0x5e8df0['peer']][_0x4f36('0x32')]=![];this[_0x4f36('0xb')][_0x5e8df0[_0x4f36('0x42')]][_0x4f36('0x45')]=_0x5e8df0[_0x4f36('0x12')][_0x4f36('0x33')]();this[_0x4f36('0xb')][_0x5e8df0[_0x4f36('0x42')]][_0x4f36('0x43')]=_0x5e8df0[_0x4f36('0x43')];this[_0x4f36('0xb')][_0x5e8df0['peer']]['updateStatusRealtime'](_0x5e8df0);}}else if(this[_0x4f36('0xc')][_0x5e8df0[_0x4f36('0x42')]]){this[_0x4f36('0xc')][_0x5e8df0[_0x4f36('0x42')]]['status']=_0x5e8df0[_0x4f36('0x12')]['toLowerCase']();this[_0x4f36('0xc')][_0x5e8df0['peer']][_0x4f36('0x43')]=_0x5e8df0[_0x4f36('0x43')];logger[_0x4f36('0x28')](_0x4f36('0x46'),util[_0x4f36('0x19')](this[_0x4f36('0xc')][_0x5e8df0['peer']],{'showHidden':![],'depth':null}));this[_0x4f36('0x1e')](util[_0x4f36('0x38')](_0x4f36('0x39'),this[_0x4f36('0xc')][_0x5e8df0[_0x4f36('0x42')]][_0x4f36('0x2b')]),_0x4f36('0x3a'),this[_0x4f36('0xc')][_0x5e8df0[_0x4f36('0x42')]]);}else if(this[_0x4f36('0xa')][_0x5e8df0[_0x4f36('0x42')]]){this['trunks'][_0x5e8df0[_0x4f36('0x42')]][_0x4f36('0x45')]=_0x5e8df0[_0x4f36('0x12')][_0x4f36('0x33')]();this[_0x4f36('0xa')][_0x5e8df0[_0x4f36('0x42')]][_0x4f36('0x43')]=_0x5e8df0[_0x4f36('0x43')];logger[_0x4f36('0x28')](_0x4f36('0x47'),util['inspect'](this[_0x4f36('0xa')][_0x5e8df0[_0x4f36('0x42')]],{'showHidden':![],'depth':null}));this[_0x4f36('0x1e')](util['format'](_0x4f36('0x2a'),this['trunks'][_0x5e8df0[_0x4f36('0x42')]]['name']),'trunk:save',this[_0x4f36('0xa')][_0x5e8df0[_0x4f36('0x42')]]);}}}catch(_0x1a9f05){logger['error']('[userReport][peerstatus]',util['inspect'](_0x1a9f05,{'showHidden':![],'depth':null}));}};module[_0x4f36('0x48')]=UserReport;