568b43aa54c6246a79ca7d0f37fead2a860d8808
[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 _0x6b1b=['telephone:save','[userReport][devicestatechange]\x20sending\x20trunk:save\x20event:','startsWith','substring','indexOf','mobile','phone','accountcode','syncPeerStatus','peerstatus','[userReport][peerstatus]\x20peer:%s\x20address:%s\x20status:%s','peer','address','[userReport][peerstatus]','registered','status','[userReport][peerstatus]\x20sending\x20telephone:save\x20event:','[userReport][peerstatus]\x20sending\x20trunk:save\x20event:','exports','moment','util','ioredis','../../../config/environment','../../../config/logger','ami','../ami','redis','defaults','localhost','socket.io-emitter','trunks','telephones','registryentry','bind','devicestatechange','syncRealtimeShow','resolve','then','actionSipShowRegistry','catch','error','[userReport][sipshowregistry]','inspect','[userReport][devicestatelist]','actionSipPeerStatus','[userReport][sippeerstatus]','prototype','isNotNull','emit','syncRegistry','info','[userReport][registry]\x20registry:%s\x20state:%s','username','debug','find','stateRegistry','state','merge','omit','event','actionid','[userReport][registry]\x20sending\x20trunk:save\x20event:','format','trunk:%s','name','trunk:save','syncDeviceState','device','[userReport][devicestatechange]','agents','inuse','local','toLowerCase','updateStatusRealtime','stateTime','toNumber','[userReport][devicestatechange]\x20sending\x20telephone:save\x20event:','telephone:%s'];(function(_0x1b0a00,_0xb772fd){var _0x24ba40=function(_0x47301a){while(--_0x47301a){_0x1b0a00['push'](_0x1b0a00['shift']());}};_0x24ba40(++_0xb772fd);}(_0x6b1b,0x1e7));var _0xb6b1=function(_0x4baae2,_0x487ab6){_0x4baae2=_0x4baae2-0x0;var _0x1a2285=_0x6b1b[_0x4baae2];return _0x1a2285;};'use strict';var _=require('lodash');var moment=require(_0xb6b1('0x0'));var util=require(_0xb6b1('0x1'));var Redis=require(_0xb6b1('0x2'));var BPromise=require('bluebird');var config=require(_0xb6b1('0x3'));var logger=require(_0xb6b1('0x4'))(_0xb6b1('0x5'));var ami=require(_0xb6b1('0x6'));config[_0xb6b1('0x7')]=_[_0xb6b1('0x8')](config[_0xb6b1('0x7')],{'host':_0xb6b1('0x9'),'port':0x18eb});var io=require(_0xb6b1('0xa'))(new Redis(config[_0xb6b1('0x7')]));function UserReport(_0x1a4cd0){this['trunks']=_0x1a4cd0[_0xb6b1('0xb')];this['agents']=_0x1a4cd0['agents'];this[_0xb6b1('0xc')]=_0x1a4cd0['telephones'];ami['on'](_0xb6b1('0xd'),this['syncRegistry']['bind'](this));ami['on']('registry',this['syncRegistry'][_0xb6b1('0xe')](this));ami['on'](_0xb6b1('0xf'),this['syncDeviceState'][_0xb6b1('0xe')](this));ami['on']('peerstatus',this['syncPeerStatus'][_0xb6b1('0xe')](this));return this[_0xb6b1('0x10')]();}function showSipRegistrations(){Promise[_0xb6b1('0x11')]()[_0xb6b1('0x12')](ami[_0xb6b1('0x13')]())[_0xb6b1('0x14')](function(_0x360fc7){logger[_0xb6b1('0x15')](_0xb6b1('0x16'),util[_0xb6b1('0x17')](_0x360fc7,{'showHidden':![],'depth':null}));});}function listDeviceStates(){Promise[_0xb6b1('0x11')]()[_0xb6b1('0x12')](ami['actionDeviceStateList']())['catch'](function(_0x513207){logger['error'](_0xb6b1('0x18'),util[_0xb6b1('0x17')](_0x513207,{'showHidden':![],'depth':null}));});}function showPeersStatus(){Promise[_0xb6b1('0x11')]()[_0xb6b1('0x12')](ami[_0xb6b1('0x19')]())[_0xb6b1('0x14')](function(_0x47a204){logger['error'](_0xb6b1('0x1a'),util[_0xb6b1('0x17')](_0x47a204,{'showHidden':![],'depth':null}));});}UserReport[_0xb6b1('0x1b')][_0xb6b1('0x10')]=function(){setInterval(function(){BPromise[_0xb6b1('0x11')]()[_0xb6b1('0x12')](showSipRegistrations())['then'](listDeviceStates())['then'](showPeersStatus());},0x32c8);};UserReport[_0xb6b1('0x1b')][_0xb6b1('0x1c')]=function(_0x5ce41c){return _0x5ce41c!==null&&!_['isUndefined'](_0x5ce41c);};UserReport[_0xb6b1('0x1b')]['emit']=function(_0x509c55,_0x232157,_0x2086ea){io['to'](_0x509c55)[_0xb6b1('0x1d')](_0x232157,_0x2086ea);};UserReport[_0xb6b1('0x1b')][_0xb6b1('0x1e')]=function(_0x3d0864){try{if(this[_0xb6b1('0x1c')](_0x3d0864)){logger[_0xb6b1('0x1f')](_0xb6b1('0x20'),_0x3d0864[_0xb6b1('0x21')],_0x3d0864['state']);logger[_0xb6b1('0x22')]('[userReport][registry]',util[_0xb6b1('0x17')](_0x3d0864,{'showHidden':![],'depth':null}));var _0x5864d6=_[_0xb6b1('0x23')](this['trunks'],{'registry':_0x3d0864[_0xb6b1('0x21')]});if(_0x5864d6){_0x3d0864[_0xb6b1('0x24')]=_0x3d0864[_0xb6b1('0x25')];_[_0xb6b1('0x26')](_0x5864d6,_[_0xb6b1('0x27')](_0x3d0864,[_0xb6b1('0x28'),_0xb6b1('0x29'),_0xb6b1('0x21'),_0xb6b1('0x25')]));logger['debug'](_0xb6b1('0x2a'),util['inspect'](_0x5864d6,{'showHidden':![],'depth':null}));this[_0xb6b1('0x1d')](util[_0xb6b1('0x2b')](_0xb6b1('0x2c'),_0x5864d6[_0xb6b1('0x2d')]),_0xb6b1('0x2e'),_0x5864d6);}}}catch(_0x12f369){logger[_0xb6b1('0x15')]('[userReport][registry]',util[_0xb6b1('0x17')](_0x12f369,{'showHidden':![],'depth':null}));}};UserReport[_0xb6b1('0x1b')][_0xb6b1('0x2f')]=function(_0x4e4e89){try{if(this[_0xb6b1('0x1c')](_0x4e4e89)){logger[_0xb6b1('0x1f')]('[userReport][devicestatechange]\x20device:%s\x20state:%s',_0x4e4e89[_0xb6b1('0x30')],_0x4e4e89[_0xb6b1('0x25')]);logger[_0xb6b1('0x22')](_0xb6b1('0x31'),util[_0xb6b1('0x17')](_0x4e4e89,{'showHidden':![],'depth':null}));if(this[_0xb6b1('0x32')][_0x4e4e89['device']]){if(!this[_0xb6b1('0x32')][_0x4e4e89[_0xb6b1('0x30')]]['local']||_0x4e4e89[_0xb6b1('0x25')]['toLowerCase']()==_0xb6b1('0x33')){this[_0xb6b1('0x32')][_0x4e4e89[_0xb6b1('0x30')]][_0xb6b1('0x34')]=![];if(this[_0xb6b1('0x32')][_0x4e4e89[_0xb6b1('0x30')]]['state']!==_0x4e4e89[_0xb6b1('0x25')][_0xb6b1('0x35')]()){this[_0xb6b1('0x32')][_0x4e4e89[_0xb6b1('0x30')]]['stateTime']=_['toNumber'](moment()['format']('x'));}this[_0xb6b1('0x32')][_0x4e4e89[_0xb6b1('0x30')]][_0xb6b1('0x25')]=_0x4e4e89[_0xb6b1('0x25')][_0xb6b1('0x35')]();this[_0xb6b1('0x32')][_0x4e4e89[_0xb6b1('0x30')]][_0xb6b1('0x36')](_0x4e4e89);}}else if(this[_0xb6b1('0xc')][_0x4e4e89[_0xb6b1('0x30')]]){if(this[_0xb6b1('0xc')][_0x4e4e89[_0xb6b1('0x30')]]['state']!==_0x4e4e89[_0xb6b1('0x25')][_0xb6b1('0x35')]()){this[_0xb6b1('0xc')][_0x4e4e89[_0xb6b1('0x30')]][_0xb6b1('0x37')]=_[_0xb6b1('0x38')](moment()[_0xb6b1('0x2b')]('x'));}this[_0xb6b1('0xc')][_0x4e4e89[_0xb6b1('0x30')]][_0xb6b1('0x25')]=_0x4e4e89[_0xb6b1('0x25')]['toLowerCase']();logger[_0xb6b1('0x22')](_0xb6b1('0x39'),util[_0xb6b1('0x17')](this[_0xb6b1('0xc')][_0x4e4e89[_0xb6b1('0x30')]],{'showHidden':![],'depth':null}));this[_0xb6b1('0x1d')](util[_0xb6b1('0x2b')](_0xb6b1('0x3a'),this['telephones'][_0x4e4e89['device']][_0xb6b1('0x2d')]),_0xb6b1('0x3b'),this[_0xb6b1('0xc')][_0x4e4e89['device']]);}else if(this[_0xb6b1('0xb')][_0x4e4e89[_0xb6b1('0x30')]]){if(this[_0xb6b1('0xb')][_0x4e4e89[_0xb6b1('0x30')]][_0xb6b1('0x25')]!==_0x4e4e89[_0xb6b1('0x25')][_0xb6b1('0x35')]()){this[_0xb6b1('0xb')][_0x4e4e89['device']][_0xb6b1('0x37')]=_['toNumber'](moment()[_0xb6b1('0x2b')]('x'));}this[_0xb6b1('0xb')][_0x4e4e89[_0xb6b1('0x30')]][_0xb6b1('0x25')]=_0x4e4e89[_0xb6b1('0x25')][_0xb6b1('0x35')]();logger['debug'](_0xb6b1('0x3c'),util[_0xb6b1('0x17')](this['trunks'][_0x4e4e89[_0xb6b1('0x30')]],{'showHidden':![],'depth':null}));this['emit'](util[_0xb6b1('0x2b')](_0xb6b1('0x2c'),this[_0xb6b1('0xb')][_0x4e4e89[_0xb6b1('0x30')]][_0xb6b1('0x2d')]),_0xb6b1('0x2e'),this[_0xb6b1('0xb')][_0x4e4e89[_0xb6b1('0x30')]]);}else if(_[_0xb6b1('0x3d')](_0x4e4e89['device'],'Local')){var _0x3826bd=_0x4e4e89[_0xb6b1('0x30')];var _0x5959ca=_0x3826bd[_0xb6b1('0x3e')](_0x3826bd[_0xb6b1('0x3f')]('/')+0x1,_0x3826bd[_0xb6b1('0x3f')]('@'));var _0x1a95cf=_[_0xb6b1('0x23')](this['agents'],function(_0x28f353){return _0x28f353[_0xb6b1('0x40')]==_0x5959ca||_0x28f353[_0xb6b1('0x41')]==_0x5959ca||_0x28f353[_0xb6b1('0x42')]==_0x5959ca;});if(_0x1a95cf){if(_0x1a95cf['state']!==_0x4e4e89['state'][_0xb6b1('0x35')]()){_0x1a95cf['stateTime']=_[_0xb6b1('0x38')](moment()[_0xb6b1('0x2b')]('x'));}_0x1a95cf['state']=_0x4e4e89[_0xb6b1('0x25')]['toLowerCase']();_0x1a95cf[_0xb6b1('0x34')]=!![];_0x1a95cf[_0xb6b1('0x36')](_0x4e4e89);}}}}catch(_0xbd7cec){logger[_0xb6b1('0x15')](_0xb6b1('0x31'),util[_0xb6b1('0x17')](_0xbd7cec,{'showHidden':![],'depth':null}));}};UserReport[_0xb6b1('0x1b')][_0xb6b1('0x43')]=function(_0x37bbbe){try{if(this[_0xb6b1('0x1c')](_0x37bbbe)&&this['isNotNull'](_0x37bbbe[_0xb6b1('0x44')])){logger[_0xb6b1('0x1f')](_0xb6b1('0x45'),_0x37bbbe[_0xb6b1('0x46')],_0x37bbbe[_0xb6b1('0x47')],_0x37bbbe[_0xb6b1('0x44')]);logger[_0xb6b1('0x22')](_0xb6b1('0x48'),util[_0xb6b1('0x17')](_0x37bbbe,{'showHidden':![],'depth':null}));if(this['agents'][_0x37bbbe[_0xb6b1('0x46')]]){if(!this['agents'][_0x37bbbe['peer']][_0xb6b1('0x34')]||_0x37bbbe[_0xb6b1('0x44')]['toLowerCase']()==_0xb6b1('0x49')){this[_0xb6b1('0x32')][_0x37bbbe[_0xb6b1('0x46')]]['local']=![];this[_0xb6b1('0x32')][_0x37bbbe['peer']]['status']=_0x37bbbe[_0xb6b1('0x44')][_0xb6b1('0x35')]();this['agents'][_0x37bbbe['peer']]['address']=_0x37bbbe[_0xb6b1('0x47')];this['agents'][_0x37bbbe['peer']]['updateStatusRealtime'](_0x37bbbe);}}else if(this[_0xb6b1('0xc')][_0x37bbbe[_0xb6b1('0x46')]]){this[_0xb6b1('0xc')][_0x37bbbe[_0xb6b1('0x46')]][_0xb6b1('0x4a')]=_0x37bbbe[_0xb6b1('0x44')]['toLowerCase']();this[_0xb6b1('0xc')][_0x37bbbe[_0xb6b1('0x46')]]['address']=_0x37bbbe['address'];logger[_0xb6b1('0x22')](_0xb6b1('0x4b'),util['inspect'](this['telephones'][_0x37bbbe[_0xb6b1('0x46')]],{'showHidden':![],'depth':null}));this['emit'](util[_0xb6b1('0x2b')](_0xb6b1('0x3a'),this['telephones'][_0x37bbbe[_0xb6b1('0x46')]][_0xb6b1('0x2d')]),_0xb6b1('0x3b'),this[_0xb6b1('0xc')][_0x37bbbe[_0xb6b1('0x46')]]);}else if(this[_0xb6b1('0xb')][_0x37bbbe[_0xb6b1('0x46')]]){this[_0xb6b1('0xb')][_0x37bbbe[_0xb6b1('0x46')]][_0xb6b1('0x4a')]=_0x37bbbe['peerstatus'][_0xb6b1('0x35')]();this[_0xb6b1('0xb')][_0x37bbbe[_0xb6b1('0x46')]][_0xb6b1('0x47')]=_0x37bbbe['address'];logger[_0xb6b1('0x22')](_0xb6b1('0x4c'),util[_0xb6b1('0x17')](this[_0xb6b1('0xb')][_0x37bbbe[_0xb6b1('0x46')]],{'showHidden':![],'depth':null}));this[_0xb6b1('0x1d')](util[_0xb6b1('0x2b')]('trunk:%s',this['trunks'][_0x37bbbe[_0xb6b1('0x46')]]['name']),_0xb6b1('0x2e'),this[_0xb6b1('0xb')][_0x37bbbe[_0xb6b1('0x46')]]);}}}catch(_0x4bd083){logger[_0xb6b1('0x15')](_0xb6b1('0x48'),util[_0xb6b1('0x17')](_0x4bd083,{'showHidden':![],'depth':null}));}};module[_0xb6b1('0x4d')]=UserReport;