Built motion from commit 1fa89557.|2.6.10
[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 _0x85d3=['[userReport][peerstatus]\x20sending\x20telephone:save\x20event:','exports','lodash','moment','util','ioredis','bluebird','../../../config/environment','../../../config/logger','ami','redis','socket.io-emitter','trunks','agents','telephones','syncRegistry','bind','registry','devicestatechange','syncPeerStatus','syncRealtimeShow','resolve','then','actionSipShowRegistry','catch','[userReport][sipshowregistry]','inspect','actionDeviceStateList','error','actionSipPeerStatus','[userReport][sippeerstatus]','prototype','isNotNull','isUndefined','emit','[userReport][registry]\x20registry:%s\x20state:%s','username','state','debug','[userReport][registry]','find','stateRegistry','merge','omit','event','[userReport][registry]\x20sending\x20trunk:save\x20event:','format','name','syncDeviceState','info','device','[userReport][devicestatechange]','local','toLowerCase','inuse','stateTime','toNumber','updateStatusRealtime','[userReport][devicestatechange]\x20sending\x20telephone:save\x20event:','telephone:%s','telephone:save','trunk:%s','trunk:save','substring','indexOf','mobile','phone','accountcode','[userReport][peerstatus]\x20peer:%s\x20address:%s\x20status:%s','peer','[userReport][peerstatus]','peerstatus','status','address'];(function(_0x22656b,_0x2809d4){var _0x170fd3=function(_0x49fefc){while(--_0x49fefc){_0x22656b['push'](_0x22656b['shift']());}};_0x170fd3(++_0x2809d4);}(_0x85d3,0x96));var _0x385d=function(_0xbca1b1,_0x33f0ce){_0xbca1b1=_0xbca1b1-0x0;var _0x4e1686=_0x85d3[_0xbca1b1];return _0x4e1686;};'use strict';var _=require(_0x385d('0x0'));var moment=require(_0x385d('0x1'));var util=require(_0x385d('0x2'));var Redis=require(_0x385d('0x3'));var BPromise=require(_0x385d('0x4'));var config=require(_0x385d('0x5'));var logger=require(_0x385d('0x6'))(_0x385d('0x7'));var ami=require('../ami');config[_0x385d('0x8')]=_['defaults'](config[_0x385d('0x8')],{'host':'localhost','port':0x18eb});var io=require(_0x385d('0x9'))(new Redis(config[_0x385d('0x8')]));function UserReport(_0x246aab){this[_0x385d('0xa')]=_0x246aab[_0x385d('0xa')];this[_0x385d('0xb')]=_0x246aab[_0x385d('0xb')];this['telephones']=_0x246aab[_0x385d('0xc')];ami['on']('registryentry',this[_0x385d('0xd')][_0x385d('0xe')](this));ami['on'](_0x385d('0xf'),this['syncRegistry']['bind'](this));ami['on'](_0x385d('0x10'),this['syncDeviceState'][_0x385d('0xe')](this));ami['on']('peerstatus',this[_0x385d('0x11')]['bind'](this));return this[_0x385d('0x12')]();}function showSipRegistrations(){Promise[_0x385d('0x13')]()[_0x385d('0x14')](ami[_0x385d('0x15')]())[_0x385d('0x16')](function(_0x1a21d4){logger['error'](_0x385d('0x17'),util[_0x385d('0x18')](_0x1a21d4,{'showHidden':![],'depth':null}));});}function listDeviceStates(){Promise[_0x385d('0x13')]()[_0x385d('0x14')](ami[_0x385d('0x19')]())[_0x385d('0x16')](function(_0x5767c5){logger[_0x385d('0x1a')]('[userReport][devicestatelist]',util[_0x385d('0x18')](_0x5767c5,{'showHidden':![],'depth':null}));});}function showPeersStatus(){Promise[_0x385d('0x13')]()[_0x385d('0x14')](ami[_0x385d('0x1b')]())[_0x385d('0x16')](function(_0x3253a4){logger[_0x385d('0x1a')](_0x385d('0x1c'),util[_0x385d('0x18')](_0x3253a4,{'showHidden':![],'depth':null}));});}UserReport[_0x385d('0x1d')][_0x385d('0x12')]=function(){setInterval(function(){BPromise[_0x385d('0x13')]()[_0x385d('0x14')](showSipRegistrations())[_0x385d('0x14')](listDeviceStates())['then'](showPeersStatus());},0x32c8);};UserReport[_0x385d('0x1d')][_0x385d('0x1e')]=function(_0x4cc724){return _0x4cc724!==null&&!_[_0x385d('0x1f')](_0x4cc724);};UserReport['prototype'][_0x385d('0x20')]=function(_0x1846d9,_0x491554,_0xe6d4e9){io['to'](_0x1846d9)['emit'](_0x491554,_0xe6d4e9);};UserReport['prototype'][_0x385d('0xd')]=function(_0x27af38){try{if(this['isNotNull'](_0x27af38)){logger['info'](_0x385d('0x21'),_0x27af38[_0x385d('0x22')],_0x27af38[_0x385d('0x23')]);logger[_0x385d('0x24')](_0x385d('0x25'),util[_0x385d('0x18')](_0x27af38,{'showHidden':![],'depth':null}));var _0xd05e9c=_[_0x385d('0x26')](this[_0x385d('0xa')],{'defaultuser':_0x27af38[_0x385d('0x22')]});if(_0xd05e9c){_0x27af38[_0x385d('0x27')]=_0x27af38['state'];_[_0x385d('0x28')](_0xd05e9c,_[_0x385d('0x29')](_0x27af38,[_0x385d('0x2a'),'actionid',_0x385d('0x22'),_0x385d('0x23')]));logger[_0x385d('0x24')](_0x385d('0x2b'),util['inspect'](_0xd05e9c,{'showHidden':![],'depth':null}));this[_0x385d('0x20')](util[_0x385d('0x2c')]('trunk:%s',_0xd05e9c[_0x385d('0x2d')]),'trunk:save',_0xd05e9c);}}}catch(_0x4b1042){logger[_0x385d('0x1a')](_0x385d('0x25'),util[_0x385d('0x18')](_0x4b1042,{'showHidden':![],'depth':null}));}};UserReport['prototype'][_0x385d('0x2e')]=function(_0x4872e2){try{if(this['isNotNull'](_0x4872e2)){logger[_0x385d('0x2f')]('[userReport][devicestatechange]\x20device:%s\x20state:%s',_0x4872e2[_0x385d('0x30')],_0x4872e2['state']);logger[_0x385d('0x24')](_0x385d('0x31'),util[_0x385d('0x18')](_0x4872e2,{'showHidden':![],'depth':null}));if(this[_0x385d('0xb')][_0x4872e2['device']]){if(!this[_0x385d('0xb')][_0x4872e2[_0x385d('0x30')]][_0x385d('0x32')]||_0x4872e2['state'][_0x385d('0x33')]()==_0x385d('0x34')){this['agents'][_0x4872e2[_0x385d('0x30')]][_0x385d('0x32')]=![];if(this['agents'][_0x4872e2[_0x385d('0x30')]][_0x385d('0x23')]!==_0x4872e2[_0x385d('0x23')][_0x385d('0x33')]()){this['agents'][_0x4872e2['device']][_0x385d('0x35')]=_[_0x385d('0x36')](moment()[_0x385d('0x2c')]('x'));}this['agents'][_0x4872e2[_0x385d('0x30')]]['state']=_0x4872e2['state'][_0x385d('0x33')]();this[_0x385d('0xb')][_0x4872e2['device']][_0x385d('0x37')](_0x4872e2);}}else if(this[_0x385d('0xc')][_0x4872e2[_0x385d('0x30')]]){if(this[_0x385d('0xc')][_0x4872e2[_0x385d('0x30')]]['state']!==_0x4872e2['state'][_0x385d('0x33')]()){this['telephones'][_0x4872e2[_0x385d('0x30')]][_0x385d('0x35')]=_[_0x385d('0x36')](moment()[_0x385d('0x2c')]('x'));}this[_0x385d('0xc')][_0x4872e2[_0x385d('0x30')]][_0x385d('0x23')]=_0x4872e2['state'][_0x385d('0x33')]();logger[_0x385d('0x24')](_0x385d('0x38'),util[_0x385d('0x18')](this[_0x385d('0xc')][_0x4872e2[_0x385d('0x30')]],{'showHidden':![],'depth':null}));this[_0x385d('0x20')](util[_0x385d('0x2c')](_0x385d('0x39'),this[_0x385d('0xc')][_0x4872e2[_0x385d('0x30')]]['name']),_0x385d('0x3a'),this[_0x385d('0xc')][_0x4872e2[_0x385d('0x30')]]);}else if(this[_0x385d('0xa')][_0x4872e2[_0x385d('0x30')]]){if(this[_0x385d('0xa')][_0x4872e2[_0x385d('0x30')]][_0x385d('0x23')]!==_0x4872e2[_0x385d('0x23')][_0x385d('0x33')]()){this[_0x385d('0xa')][_0x4872e2[_0x385d('0x30')]][_0x385d('0x35')]=_['toNumber'](moment()['format']('x'));}this['trunks'][_0x4872e2[_0x385d('0x30')]][_0x385d('0x23')]=_0x4872e2[_0x385d('0x23')]['toLowerCase']();logger[_0x385d('0x24')]('[userReport][devicestatechange]\x20sending\x20trunk:save\x20event:',util[_0x385d('0x18')](this['trunks'][_0x4872e2[_0x385d('0x30')]],{'showHidden':![],'depth':null}));this[_0x385d('0x20')](util[_0x385d('0x2c')](_0x385d('0x3b'),this[_0x385d('0xa')][_0x4872e2[_0x385d('0x30')]][_0x385d('0x2d')]),_0x385d('0x3c'),this[_0x385d('0xa')][_0x4872e2['device']]);}else if(_['startsWith'](_0x4872e2[_0x385d('0x30')],'Local')){var _0xb2d484=_0x4872e2[_0x385d('0x30')];var _0x440c1=_0xb2d484[_0x385d('0x3d')](_0xb2d484[_0x385d('0x3e')]('/')+0x1,_0xb2d484[_0x385d('0x3e')]('@'));var _0xd3aa4b=_['find'](this[_0x385d('0xb')],function(_0x5010c9){return _0x5010c9[_0x385d('0x3f')]==_0x440c1||_0x5010c9[_0x385d('0x40')]==_0x440c1||_0x5010c9[_0x385d('0x41')]==_0x440c1;});if(_0xd3aa4b){if(_0xd3aa4b[_0x385d('0x23')]!==_0x4872e2[_0x385d('0x23')][_0x385d('0x33')]()){_0xd3aa4b['stateTime']=_[_0x385d('0x36')](moment()[_0x385d('0x2c')]('x'));}_0xd3aa4b[_0x385d('0x23')]=_0x4872e2['state']['toLowerCase']();_0xd3aa4b[_0x385d('0x32')]=!![];_0xd3aa4b['updateStatusRealtime'](_0x4872e2);}}}}catch(_0x2f9e1e){logger[_0x385d('0x1a')](_0x385d('0x31'),util[_0x385d('0x18')](_0x2f9e1e,{'showHidden':![],'depth':null}));}};UserReport['prototype']['syncPeerStatus']=function(_0x2bb907){try{if(this[_0x385d('0x1e')](_0x2bb907)&&this[_0x385d('0x1e')](_0x2bb907['peerstatus'])){logger[_0x385d('0x2f')](_0x385d('0x42'),_0x2bb907[_0x385d('0x43')],_0x2bb907['address'],_0x2bb907['peerstatus']);logger[_0x385d('0x24')](_0x385d('0x44'),util[_0x385d('0x18')](_0x2bb907,{'showHidden':![],'depth':null}));if(this[_0x385d('0xb')][_0x2bb907[_0x385d('0x43')]]){if(!this[_0x385d('0xb')][_0x2bb907[_0x385d('0x43')]][_0x385d('0x32')]||_0x2bb907[_0x385d('0x45')]['toLowerCase']()=='registered'){this['agents'][_0x2bb907[_0x385d('0x43')]][_0x385d('0x32')]=![];this[_0x385d('0xb')][_0x2bb907['peer']][_0x385d('0x46')]=_0x2bb907[_0x385d('0x45')][_0x385d('0x33')]();this[_0x385d('0xb')][_0x2bb907[_0x385d('0x43')]][_0x385d('0x47')]=_0x2bb907[_0x385d('0x47')];this['agents'][_0x2bb907['peer']]['updateStatusRealtime'](_0x2bb907);}}else if(this[_0x385d('0xc')][_0x2bb907[_0x385d('0x43')]]){this['telephones'][_0x2bb907[_0x385d('0x43')]][_0x385d('0x46')]=_0x2bb907[_0x385d('0x45')][_0x385d('0x33')]();this[_0x385d('0xc')][_0x2bb907[_0x385d('0x43')]]['address']=_0x2bb907[_0x385d('0x47')];logger['debug'](_0x385d('0x48'),util[_0x385d('0x18')](this['telephones'][_0x2bb907['peer']],{'showHidden':![],'depth':null}));this[_0x385d('0x20')](util[_0x385d('0x2c')](_0x385d('0x39'),this[_0x385d('0xc')][_0x2bb907[_0x385d('0x43')]]['name']),_0x385d('0x3a'),this[_0x385d('0xc')][_0x2bb907[_0x385d('0x43')]]);}else if(this[_0x385d('0xa')][_0x2bb907[_0x385d('0x43')]]){this['trunks'][_0x2bb907[_0x385d('0x43')]][_0x385d('0x46')]=_0x2bb907[_0x385d('0x45')][_0x385d('0x33')]();this[_0x385d('0xa')][_0x2bb907['peer']]['address']=_0x2bb907[_0x385d('0x47')];logger[_0x385d('0x24')]('[userReport][peerstatus]\x20sending\x20trunk:save\x20event:',util['inspect'](this[_0x385d('0xa')][_0x2bb907['peer']],{'showHidden':![],'depth':null}));this[_0x385d('0x20')](util[_0x385d('0x2c')](_0x385d('0x3b'),this[_0x385d('0xa')][_0x2bb907[_0x385d('0x43')]]['name']),_0x385d('0x3c'),this['trunks'][_0x2bb907[_0x385d('0x43')]]);}}}catch(_0x96a66f){logger[_0x385d('0x1a')](_0x385d('0x44'),util[_0x385d('0x18')](_0x96a66f,{'showHidden':![],'depth':null}));}};module[_0x385d('0x49')]=UserReport;