88f040ee308f7eadf18ce3a13ad4b5d6b03e7000
[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 _0x1fb6=['isNotNull','info','username','state','debug','[userReport][registry]','stateRegistry','merge','event','format','trunk:%s','name','[userReport][devicestatechange]\x20device:%s\x20state:%s','device','[userReport][devicestatechange]','local','toLowerCase','inuse','stateTime','updateStatusRealtime','toNumber','[userReport][devicestatechange]\x20sending\x20telephone:save\x20event:','telephone:%s','telephone:save','[userReport][devicestatechange]\x20sending\x20trunk:save\x20event:','startsWith','Local','substring','indexOf','find','phone','accountcode','[userReport][peerstatus]\x20peer:%s\x20address:%s\x20status:%s','peerstatus','[userReport][peerstatus]','peer','registered','address','status','[userReport][peerstatus]\x20sending\x20telephone:save\x20event:','[userReport][peerstatus]\x20sending\x20trunk:save\x20event:','trunk:save','lodash','moment','bluebird','../../../config/environment','../../../config/logger','ami','../ami','localhost','socket.io-emitter','redis','trunks','agents','telephones','registryentry','syncRegistry','bind','devicestatechange','syncDeviceState','syncRealtimeShow','resolve','then','actionSipShowRegistry','catch','inspect','error','[userReport][devicestatelist]','actionSipPeerStatus','[userReport][sippeerstatus]','prototype','isUndefined','emit'];(function(_0x852e47,_0x5297bd){var _0x35a316=function(_0x5a5c63){while(--_0x5a5c63){_0x852e47['push'](_0x852e47['shift']());}};_0x35a316(++_0x5297bd);}(_0x1fb6,0x14e));var _0x61fb=function(_0x2da991,_0x11f052){_0x2da991=_0x2da991-0x0;var _0x4613da=_0x1fb6[_0x2da991];return _0x4613da;};'use strict';var _=require(_0x61fb('0x0'));var moment=require(_0x61fb('0x1'));var util=require('util');var Redis=require('ioredis');var BPromise=require(_0x61fb('0x2'));var config=require(_0x61fb('0x3'));var logger=require(_0x61fb('0x4'))(_0x61fb('0x5'));var ami=require(_0x61fb('0x6'));config['redis']=_['defaults'](config['redis'],{'host':_0x61fb('0x7'),'port':0x18eb});var io=require(_0x61fb('0x8'))(new Redis(config[_0x61fb('0x9')]));function UserReport(_0x544810){this[_0x61fb('0xa')]=_0x544810[_0x61fb('0xa')];this[_0x61fb('0xb')]=_0x544810[_0x61fb('0xb')];this[_0x61fb('0xc')]=_0x544810['telephones'];ami['on'](_0x61fb('0xd'),this[_0x61fb('0xe')][_0x61fb('0xf')](this));ami['on']('registry',this[_0x61fb('0xe')][_0x61fb('0xf')](this));ami['on'](_0x61fb('0x10'),this[_0x61fb('0x11')][_0x61fb('0xf')](this));ami['on']('peerstatus',this['syncPeerStatus'][_0x61fb('0xf')](this));return this[_0x61fb('0x12')]();}function showSipRegistrations(){Promise[_0x61fb('0x13')]()[_0x61fb('0x14')](ami[_0x61fb('0x15')]())[_0x61fb('0x16')](function(_0x175cb0){logger['error']('[userReport][sipshowregistry]',util[_0x61fb('0x17')](_0x175cb0,{'showHidden':![],'depth':null}));});}function listDeviceStates(){Promise[_0x61fb('0x13')]()[_0x61fb('0x14')](ami['actionDeviceStateList']())[_0x61fb('0x16')](function(_0x35adb2){logger[_0x61fb('0x18')](_0x61fb('0x19'),util[_0x61fb('0x17')](_0x35adb2,{'showHidden':![],'depth':null}));});}function showPeersStatus(){Promise['resolve']()[_0x61fb('0x14')](ami[_0x61fb('0x1a')]())['catch'](function(_0x4e4991){logger[_0x61fb('0x18')](_0x61fb('0x1b'),util[_0x61fb('0x17')](_0x4e4991,{'showHidden':![],'depth':null}));});}UserReport[_0x61fb('0x1c')][_0x61fb('0x12')]=function(){setInterval(function(){BPromise['resolve']()['then'](showSipRegistrations())[_0x61fb('0x14')](listDeviceStates())['then'](showPeersStatus());},0x32c8);};UserReport[_0x61fb('0x1c')]['isNotNull']=function(_0x3b71d0){return _0x3b71d0!==null&&!_[_0x61fb('0x1d')](_0x3b71d0);};UserReport[_0x61fb('0x1c')][_0x61fb('0x1e')]=function(_0x5146b5,_0x1f2833,_0x3b0aa8){io['to'](_0x5146b5)[_0x61fb('0x1e')](_0x1f2833,_0x3b0aa8);};UserReport[_0x61fb('0x1c')][_0x61fb('0xe')]=function(_0x2e1efc){try{if(this[_0x61fb('0x1f')](_0x2e1efc)){logger[_0x61fb('0x20')]('[userReport][registry]\x20registry:%s\x20state:%s',_0x2e1efc[_0x61fb('0x21')],_0x2e1efc[_0x61fb('0x22')]);logger[_0x61fb('0x23')](_0x61fb('0x24'),util[_0x61fb('0x17')](_0x2e1efc,{'showHidden':![],'depth':null}));var _0x7b4dcb=_['find'](this[_0x61fb('0xa')],{'defaultuser':_0x2e1efc[_0x61fb('0x21')]});if(_0x7b4dcb){_0x2e1efc[_0x61fb('0x25')]=_0x2e1efc['state'];_[_0x61fb('0x26')](_0x7b4dcb,_['omit'](_0x2e1efc,[_0x61fb('0x27'),'actionid',_0x61fb('0x21'),'state']));logger[_0x61fb('0x23')]('[userReport][registry]\x20sending\x20trunk:save\x20event:',util['inspect'](_0x7b4dcb,{'showHidden':![],'depth':null}));this[_0x61fb('0x1e')](util[_0x61fb('0x28')](_0x61fb('0x29'),_0x7b4dcb[_0x61fb('0x2a')]),'trunk:save',_0x7b4dcb);}}}catch(_0x39ee7c){logger[_0x61fb('0x18')](_0x61fb('0x24'),util[_0x61fb('0x17')](_0x39ee7c,{'showHidden':![],'depth':null}));}};UserReport[_0x61fb('0x1c')]['syncDeviceState']=function(_0x2ac8b9){try{if(this['isNotNull'](_0x2ac8b9)){logger[_0x61fb('0x20')](_0x61fb('0x2b'),_0x2ac8b9[_0x61fb('0x2c')],_0x2ac8b9[_0x61fb('0x22')]);logger['debug'](_0x61fb('0x2d'),util[_0x61fb('0x17')](_0x2ac8b9,{'showHidden':![],'depth':null}));if(this[_0x61fb('0xb')][_0x2ac8b9[_0x61fb('0x2c')]]){if(!this[_0x61fb('0xb')][_0x2ac8b9[_0x61fb('0x2c')]][_0x61fb('0x2e')]||_0x2ac8b9['state'][_0x61fb('0x2f')]()==_0x61fb('0x30')){this[_0x61fb('0xb')][_0x2ac8b9['device']][_0x61fb('0x2e')]=![];if(this[_0x61fb('0xb')][_0x2ac8b9[_0x61fb('0x2c')]][_0x61fb('0x22')]!==_0x2ac8b9[_0x61fb('0x22')]['toLowerCase']()){this[_0x61fb('0xb')][_0x2ac8b9['device']][_0x61fb('0x31')]=_['toNumber'](moment()[_0x61fb('0x28')]('x'));}this[_0x61fb('0xb')][_0x2ac8b9[_0x61fb('0x2c')]]['state']=_0x2ac8b9[_0x61fb('0x22')]['toLowerCase']();this[_0x61fb('0xb')][_0x2ac8b9['device']][_0x61fb('0x32')](_0x2ac8b9);}}else if(this['telephones'][_0x2ac8b9['device']]){if(this['telephones'][_0x2ac8b9[_0x61fb('0x2c')]]['state']!==_0x2ac8b9['state'][_0x61fb('0x2f')]()){this['telephones'][_0x2ac8b9[_0x61fb('0x2c')]][_0x61fb('0x31')]=_[_0x61fb('0x33')](moment()[_0x61fb('0x28')]('x'));}this['telephones'][_0x2ac8b9['device']][_0x61fb('0x22')]=_0x2ac8b9['state']['toLowerCase']();logger[_0x61fb('0x23')](_0x61fb('0x34'),util['inspect'](this[_0x61fb('0xc')][_0x2ac8b9[_0x61fb('0x2c')]],{'showHidden':![],'depth':null}));this[_0x61fb('0x1e')](util[_0x61fb('0x28')](_0x61fb('0x35'),this[_0x61fb('0xc')][_0x2ac8b9['device']][_0x61fb('0x2a')]),_0x61fb('0x36'),this['telephones'][_0x2ac8b9[_0x61fb('0x2c')]]);}else if(this['trunks'][_0x2ac8b9['device']]){if(this[_0x61fb('0xa')][_0x2ac8b9[_0x61fb('0x2c')]][_0x61fb('0x22')]!==_0x2ac8b9[_0x61fb('0x22')][_0x61fb('0x2f')]()){this[_0x61fb('0xa')][_0x2ac8b9[_0x61fb('0x2c')]]['stateTime']=_[_0x61fb('0x33')](moment()[_0x61fb('0x28')]('x'));}this[_0x61fb('0xa')][_0x2ac8b9[_0x61fb('0x2c')]][_0x61fb('0x22')]=_0x2ac8b9[_0x61fb('0x22')][_0x61fb('0x2f')]();logger[_0x61fb('0x23')](_0x61fb('0x37'),util[_0x61fb('0x17')](this[_0x61fb('0xa')][_0x2ac8b9['device']],{'showHidden':![],'depth':null}));this[_0x61fb('0x1e')](util[_0x61fb('0x28')]('trunk:%s',this['trunks'][_0x2ac8b9[_0x61fb('0x2c')]][_0x61fb('0x2a')]),'trunk:save',this[_0x61fb('0xa')][_0x2ac8b9[_0x61fb('0x2c')]]);}else if(_[_0x61fb('0x38')](_0x2ac8b9[_0x61fb('0x2c')],_0x61fb('0x39'))){var _0x4b9ae1=_0x2ac8b9['device'];var _0x3d8d8d=_0x4b9ae1[_0x61fb('0x3a')](_0x4b9ae1[_0x61fb('0x3b')]('/')+0x1,_0x4b9ae1[_0x61fb('0x3b')]('@'));var _0x25f196=_[_0x61fb('0x3c')](this[_0x61fb('0xb')],function(_0xe00a42){return _0xe00a42['mobile']==_0x3d8d8d||_0xe00a42[_0x61fb('0x3d')]==_0x3d8d8d||_0xe00a42[_0x61fb('0x3e')]==_0x3d8d8d;});if(_0x25f196){if(_0x25f196['state']!==_0x2ac8b9[_0x61fb('0x22')][_0x61fb('0x2f')]()){_0x25f196['stateTime']=_[_0x61fb('0x33')](moment()['format']('x'));}_0x25f196[_0x61fb('0x22')]=_0x2ac8b9[_0x61fb('0x22')][_0x61fb('0x2f')]();_0x25f196[_0x61fb('0x2e')]=!![];_0x25f196[_0x61fb('0x32')](_0x2ac8b9);}}}}catch(_0x28f875){logger[_0x61fb('0x18')]('[userReport][devicestatechange]',util[_0x61fb('0x17')](_0x28f875,{'showHidden':![],'depth':null}));}};UserReport[_0x61fb('0x1c')]['syncPeerStatus']=function(_0x551155){try{if(this[_0x61fb('0x1f')](_0x551155)&&this[_0x61fb('0x1f')](_0x551155['peerstatus'])){logger[_0x61fb('0x20')](_0x61fb('0x3f'),_0x551155['peer'],_0x551155['address'],_0x551155[_0x61fb('0x40')]);logger['debug'](_0x61fb('0x41'),util[_0x61fb('0x17')](_0x551155,{'showHidden':![],'depth':null}));if(this['agents'][_0x551155[_0x61fb('0x42')]]){if(!this[_0x61fb('0xb')][_0x551155['peer']][_0x61fb('0x2e')]||_0x551155['peerstatus'][_0x61fb('0x2f')]()==_0x61fb('0x43')){this[_0x61fb('0xb')][_0x551155['peer']]['local']=![];this[_0x61fb('0xb')][_0x551155[_0x61fb('0x42')]]['status']=_0x551155[_0x61fb('0x40')]['toLowerCase']();this[_0x61fb('0xb')][_0x551155['peer']][_0x61fb('0x44')]=_0x551155[_0x61fb('0x44')];this[_0x61fb('0xb')][_0x551155['peer']]['updateStatusRealtime'](_0x551155);}}else if(this['telephones'][_0x551155[_0x61fb('0x42')]]){this[_0x61fb('0xc')][_0x551155[_0x61fb('0x42')]][_0x61fb('0x45')]=_0x551155[_0x61fb('0x40')]['toLowerCase']();this[_0x61fb('0xc')][_0x551155[_0x61fb('0x42')]][_0x61fb('0x44')]=_0x551155[_0x61fb('0x44')];logger[_0x61fb('0x23')](_0x61fb('0x46'),util[_0x61fb('0x17')](this[_0x61fb('0xc')][_0x551155[_0x61fb('0x42')]],{'showHidden':![],'depth':null}));this[_0x61fb('0x1e')](util[_0x61fb('0x28')](_0x61fb('0x35'),this[_0x61fb('0xc')][_0x551155[_0x61fb('0x42')]]['name']),'telephone:save',this['telephones'][_0x551155[_0x61fb('0x42')]]);}else if(this[_0x61fb('0xa')][_0x551155['peer']]){this[_0x61fb('0xa')][_0x551155[_0x61fb('0x42')]][_0x61fb('0x45')]=_0x551155['peerstatus'][_0x61fb('0x2f')]();this['trunks'][_0x551155['peer']]['address']=_0x551155['address'];logger['debug'](_0x61fb('0x47'),util[_0x61fb('0x17')](this[_0x61fb('0xa')][_0x551155[_0x61fb('0x42')]],{'showHidden':![],'depth':null}));this[_0x61fb('0x1e')](util['format'](_0x61fb('0x29'),this[_0x61fb('0xa')][_0x551155[_0x61fb('0x42')]]['name']),_0x61fb('0x48'),this['trunks'][_0x551155['peer']]);}}}catch(_0x3aec80){logger['error'](_0x61fb('0x41'),util[_0x61fb('0x17')](_0x3aec80,{'showHidden':![],'depth':null}));}};module['exports']=UserReport;