Built motion from commit 19a84241.|2.5.34
[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 _0xee5b=['indexOf','mobile','phone','peer','[userReport][peerstatus]','registered','status','address','telephone:save','exports','lodash','util','ioredis','../../../config/environment','../../../config/logger','ami','../ami','redis','localhost','socket.io-emitter','telephones','registryentry','syncRegistry','registry','bind','devicestatechange','syncDeviceState','peerstatus','syncPeerStatus','resolve','actionSipShowRegistry','catch','inspect','then','error','actionSipPeerStatus','[userReport][sippeerstatus]','prototype','syncRealtimeShow','isNotNull','emit','info','[userReport][registry]\x20registry:%s\x20state:%s','find','trunks','username','stateRegistry','state','merge','event','actionid','debug','format','trunk:%s','name','trunk:save','[userReport][registry]','device','[userReport][devicestatechange]','agents','local','inuse','toLowerCase','toNumber','updateStatusRealtime','[userReport][devicestatechange]\x20sending\x20telephone:save\x20event:','telephone:%s','stateTime','startsWith','substring'];(function(_0x588bd0,_0x3a760b){var _0x824a8d=function(_0x205eb2){while(--_0x205eb2){_0x588bd0['push'](_0x588bd0['shift']());}};_0x824a8d(++_0x3a760b);}(_0xee5b,0x1f4));var _0xbee5=function(_0x464a95,_0x3b6006){_0x464a95=_0x464a95-0x0;var _0x15e7b6=_0xee5b[_0x464a95];return _0x15e7b6;};'use strict';var _=require(_0xbee5('0x0'));var moment=require('moment');var util=require(_0xbee5('0x1'));var Redis=require(_0xbee5('0x2'));var BPromise=require('bluebird');var config=require(_0xbee5('0x3'));var logger=require(_0xbee5('0x4'))(_0xbee5('0x5'));var ami=require(_0xbee5('0x6'));config['redis']=_['defaults'](config[_0xbee5('0x7')],{'host':_0xbee5('0x8'),'port':0x18eb});var io=require(_0xbee5('0x9'))(new Redis(config[_0xbee5('0x7')]));function UserReport(_0x4f5065){this['trunks']=_0x4f5065['trunks'];this['agents']=_0x4f5065['agents'];this[_0xbee5('0xa')]=_0x4f5065[_0xbee5('0xa')];ami['on'](_0xbee5('0xb'),this[_0xbee5('0xc')]['bind'](this));ami['on'](_0xbee5('0xd'),this[_0xbee5('0xc')][_0xbee5('0xe')](this));ami['on'](_0xbee5('0xf'),this[_0xbee5('0x10')][_0xbee5('0xe')](this));ami['on'](_0xbee5('0x11'),this[_0xbee5('0x12')][_0xbee5('0xe')](this));return this['syncRealtimeShow']();}function showSipRegistrations(){Promise[_0xbee5('0x13')]()['then'](ami[_0xbee5('0x14')]())[_0xbee5('0x15')](function(_0x8a268f){logger['error']('[userReport][sipshowregistry]',util[_0xbee5('0x16')](_0x8a268f,{'showHidden':![],'depth':null}));});}function listDeviceStates(){Promise['resolve']()[_0xbee5('0x17')](ami['actionDeviceStateList']())[_0xbee5('0x15')](function(_0x141878){logger[_0xbee5('0x18')]('[userReport][devicestatelist]',util[_0xbee5('0x16')](_0x141878,{'showHidden':![],'depth':null}));});}function showPeersStatus(){Promise[_0xbee5('0x13')]()['then'](ami[_0xbee5('0x19')]())[_0xbee5('0x15')](function(_0x11b4a3){logger[_0xbee5('0x18')](_0xbee5('0x1a'),util[_0xbee5('0x16')](_0x11b4a3,{'showHidden':![],'depth':null}));});}UserReport[_0xbee5('0x1b')][_0xbee5('0x1c')]=function(){setInterval(function(){BPromise[_0xbee5('0x13')]()[_0xbee5('0x17')](showSipRegistrations())[_0xbee5('0x17')](listDeviceStates())[_0xbee5('0x17')](showPeersStatus());},0x32c8);};UserReport[_0xbee5('0x1b')][_0xbee5('0x1d')]=function(_0x450824){return _0x450824!==null&&!_['isUndefined'](_0x450824);};UserReport['prototype'][_0xbee5('0x1e')]=function(_0x48bfb5,_0x205491,_0x117cb3){io['to'](_0x48bfb5)[_0xbee5('0x1e')](_0x205491,_0x117cb3);};UserReport[_0xbee5('0x1b')][_0xbee5('0xc')]=function(_0xb665df){try{if(this[_0xbee5('0x1d')](_0xb665df)){logger[_0xbee5('0x1f')](_0xbee5('0x20'),_0xb665df['username'],_0xb665df['state']);logger['debug']('[userReport][registry]',util['inspect'](_0xb665df,{'showHidden':![],'depth':null}));var _0x1af3de=_[_0xbee5('0x21')](this[_0xbee5('0x22')],{'defaultuser':_0xb665df[_0xbee5('0x23')]});if(_0x1af3de){_0xb665df[_0xbee5('0x24')]=_0xb665df[_0xbee5('0x25')];_[_0xbee5('0x26')](_0x1af3de,_['omit'](_0xb665df,[_0xbee5('0x27'),_0xbee5('0x28'),_0xbee5('0x23'),_0xbee5('0x25')]));logger[_0xbee5('0x29')]('[userReport][registry]\x20sending\x20trunk:save\x20event:',util[_0xbee5('0x16')](_0x1af3de,{'showHidden':![],'depth':null}));this[_0xbee5('0x1e')](util[_0xbee5('0x2a')](_0xbee5('0x2b'),_0x1af3de[_0xbee5('0x2c')]),_0xbee5('0x2d'),_0x1af3de);}}}catch(_0x34b7df){logger[_0xbee5('0x18')](_0xbee5('0x2e'),util['inspect'](_0x34b7df,{'showHidden':![],'depth':null}));}};UserReport[_0xbee5('0x1b')]['syncDeviceState']=function(_0x36de82){try{if(this['isNotNull'](_0x36de82)){logger[_0xbee5('0x1f')]('[userReport][devicestatechange]\x20device:%s\x20state:%s',_0x36de82[_0xbee5('0x2f')],_0x36de82['state']);logger[_0xbee5('0x29')](_0xbee5('0x30'),util[_0xbee5('0x16')](_0x36de82,{'showHidden':![],'depth':null}));if(this[_0xbee5('0x31')][_0x36de82['device']]){if(!this[_0xbee5('0x31')][_0x36de82[_0xbee5('0x2f')]][_0xbee5('0x32')]||_0x36de82[_0xbee5('0x25')]['toLowerCase']()==_0xbee5('0x33')){this[_0xbee5('0x31')][_0x36de82[_0xbee5('0x2f')]][_0xbee5('0x32')]=![];if(this['agents'][_0x36de82[_0xbee5('0x2f')]][_0xbee5('0x25')]!==_0x36de82[_0xbee5('0x25')][_0xbee5('0x34')]()){this['agents'][_0x36de82[_0xbee5('0x2f')]]['stateTime']=_[_0xbee5('0x35')](moment()['format']('x'));}this['agents'][_0x36de82['device']][_0xbee5('0x25')]=_0x36de82[_0xbee5('0x25')][_0xbee5('0x34')]();this[_0xbee5('0x31')][_0x36de82[_0xbee5('0x2f')]][_0xbee5('0x36')](_0x36de82);}}else if(this[_0xbee5('0xa')][_0x36de82[_0xbee5('0x2f')]]){if(this['telephones'][_0x36de82[_0xbee5('0x2f')]]['state']!==_0x36de82[_0xbee5('0x25')][_0xbee5('0x34')]()){this[_0xbee5('0xa')][_0x36de82[_0xbee5('0x2f')]]['stateTime']=_[_0xbee5('0x35')](moment()['format']('x'));}this['telephones'][_0x36de82[_0xbee5('0x2f')]][_0xbee5('0x25')]=_0x36de82[_0xbee5('0x25')][_0xbee5('0x34')]();logger['debug'](_0xbee5('0x37'),util[_0xbee5('0x16')](this[_0xbee5('0xa')][_0x36de82[_0xbee5('0x2f')]],{'showHidden':![],'depth':null}));this[_0xbee5('0x1e')](util[_0xbee5('0x2a')](_0xbee5('0x38'),this[_0xbee5('0xa')][_0x36de82[_0xbee5('0x2f')]][_0xbee5('0x2c')]),'telephone:save',this[_0xbee5('0xa')][_0x36de82[_0xbee5('0x2f')]]);}else if(this['trunks'][_0x36de82[_0xbee5('0x2f')]]){if(this[_0xbee5('0x22')][_0x36de82[_0xbee5('0x2f')]][_0xbee5('0x25')]!==_0x36de82['state']['toLowerCase']()){this['trunks'][_0x36de82[_0xbee5('0x2f')]][_0xbee5('0x39')]=_[_0xbee5('0x35')](moment()[_0xbee5('0x2a')]('x'));}this[_0xbee5('0x22')][_0x36de82[_0xbee5('0x2f')]][_0xbee5('0x25')]=_0x36de82[_0xbee5('0x25')][_0xbee5('0x34')]();logger['debug']('[userReport][devicestatechange]\x20sending\x20trunk:save\x20event:',util[_0xbee5('0x16')](this['trunks'][_0x36de82[_0xbee5('0x2f')]],{'showHidden':![],'depth':null}));this[_0xbee5('0x1e')](util['format'](_0xbee5('0x2b'),this[_0xbee5('0x22')][_0x36de82['device']]['name']),_0xbee5('0x2d'),this[_0xbee5('0x22')][_0x36de82['device']]);}else if(_[_0xbee5('0x3a')](_0x36de82[_0xbee5('0x2f')],'Local')){var _0x42b164=_0x36de82[_0xbee5('0x2f')];var _0x11c894=_0x42b164[_0xbee5('0x3b')](_0x42b164[_0xbee5('0x3c')]('/')+0x1,_0x42b164[_0xbee5('0x3c')]('@'));var _0x228deb=_['find'](this[_0xbee5('0x31')],function(_0x34f01d){return _0x34f01d[_0xbee5('0x3d')]==_0x11c894||_0x34f01d[_0xbee5('0x3e')]==_0x11c894||_0x34f01d['accountcode']==_0x11c894;});if(_0x228deb){if(_0x228deb[_0xbee5('0x25')]!==_0x36de82[_0xbee5('0x25')][_0xbee5('0x34')]()){_0x228deb['stateTime']=_[_0xbee5('0x35')](moment()[_0xbee5('0x2a')]('x'));}_0x228deb['state']=_0x36de82['state']['toLowerCase']();_0x228deb[_0xbee5('0x32')]=!![];_0x228deb['updateStatusRealtime'](_0x36de82);}}}}catch(_0x1a4e78){logger[_0xbee5('0x18')](_0xbee5('0x30'),util[_0xbee5('0x16')](_0x1a4e78,{'showHidden':![],'depth':null}));}};UserReport[_0xbee5('0x1b')][_0xbee5('0x12')]=function(_0x55e654){try{if(this[_0xbee5('0x1d')](_0x55e654)&&this[_0xbee5('0x1d')](_0x55e654[_0xbee5('0x11')])){logger[_0xbee5('0x1f')]('[userReport][peerstatus]\x20peer:%s\x20address:%s\x20status:%s',_0x55e654[_0xbee5('0x3f')],_0x55e654['address'],_0x55e654[_0xbee5('0x11')]);logger[_0xbee5('0x29')](_0xbee5('0x40'),util[_0xbee5('0x16')](_0x55e654,{'showHidden':![],'depth':null}));if(this[_0xbee5('0x31')][_0x55e654[_0xbee5('0x3f')]]){if(!this[_0xbee5('0x31')][_0x55e654[_0xbee5('0x3f')]][_0xbee5('0x32')]||_0x55e654[_0xbee5('0x11')][_0xbee5('0x34')]()==_0xbee5('0x41')){this[_0xbee5('0x31')][_0x55e654[_0xbee5('0x3f')]][_0xbee5('0x32')]=![];this['agents'][_0x55e654[_0xbee5('0x3f')]][_0xbee5('0x42')]=_0x55e654[_0xbee5('0x11')]['toLowerCase']();this[_0xbee5('0x31')][_0x55e654[_0xbee5('0x3f')]][_0xbee5('0x43')]=_0x55e654['address'];this[_0xbee5('0x31')][_0x55e654['peer']][_0xbee5('0x36')](_0x55e654);}}else if(this['telephones'][_0x55e654[_0xbee5('0x3f')]]){this[_0xbee5('0xa')][_0x55e654[_0xbee5('0x3f')]]['status']=_0x55e654['peerstatus']['toLowerCase']();this[_0xbee5('0xa')][_0x55e654[_0xbee5('0x3f')]][_0xbee5('0x43')]=_0x55e654['address'];logger[_0xbee5('0x29')]('[userReport][peerstatus]\x20sending\x20telephone:save\x20event:',util[_0xbee5('0x16')](this[_0xbee5('0xa')][_0x55e654[_0xbee5('0x3f')]],{'showHidden':![],'depth':null}));this['emit'](util[_0xbee5('0x2a')](_0xbee5('0x38'),this[_0xbee5('0xa')][_0x55e654[_0xbee5('0x3f')]][_0xbee5('0x2c')]),_0xbee5('0x44'),this[_0xbee5('0xa')][_0x55e654[_0xbee5('0x3f')]]);}else if(this[_0xbee5('0x22')][_0x55e654[_0xbee5('0x3f')]]){this[_0xbee5('0x22')][_0x55e654[_0xbee5('0x3f')]][_0xbee5('0x42')]=_0x55e654[_0xbee5('0x11')][_0xbee5('0x34')]();this[_0xbee5('0x22')][_0x55e654[_0xbee5('0x3f')]]['address']=_0x55e654[_0xbee5('0x43')];logger['debug']('[userReport][peerstatus]\x20sending\x20trunk:save\x20event:',util[_0xbee5('0x16')](this[_0xbee5('0x22')][_0x55e654['peer']],{'showHidden':![],'depth':null}));this['emit'](util[_0xbee5('0x2a')]('trunk:%s',this[_0xbee5('0x22')][_0x55e654[_0xbee5('0x3f')]]['name']),_0xbee5('0x2d'),this[_0xbee5('0x22')][_0x55e654[_0xbee5('0x3f')]]);}}}catch(_0x1be42a){logger['error'](_0xbee5('0x40'),util['inspect'](_0x1be42a,{'showHidden':![],'depth':null}));}};module[_0xbee5('0x45')]=UserReport;