Built motion from commit b5413ace.|2.6.9
[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 _0x9dac=['find','stateRegistry','merge','event','actionid','[userReport][registry]\x20sending\x20trunk:save\x20event:','format','trunk:%s','trunk:save','[userReport][devicestatechange]\x20device:%s\x20state:%s','device','inuse','local','toLowerCase','toNumber','updateStatusRealtime','stateTime','name','Local','substring','indexOf','phone','accountcode','[userReport][devicestatechange]','[userReport][peerstatus]\x20peer:%s\x20address:%s\x20status:%s','peer','address','registered','status','[userReport][peerstatus]\x20sending\x20telephone:save\x20event:','telephone:save','[userReport][peerstatus]\x20sending\x20trunk:save\x20event:','[userReport][peerstatus]','exports','lodash','ioredis','bluebird','../ami','redis','defaults','localhost','socket.io-emitter','trunks','agents','telephones','registryentry','syncRegistry','bind','registry','devicestatechange','syncDeviceState','peerstatus','syncPeerStatus','resolve','then','actionSipShowRegistry','[userReport][sipshowregistry]','inspect','actionDeviceStateList','catch','error','[userReport][devicestatelist]','[userReport][sippeerstatus]','syncRealtimeShow','prototype','isNotNull','isUndefined','emit','username','state','debug','[userReport][registry]'];(function(_0x4cbd73,_0x3b44bb){var _0x320ac8=function(_0x593f78){while(--_0x593f78){_0x4cbd73['push'](_0x4cbd73['shift']());}};_0x320ac8(++_0x3b44bb);}(_0x9dac,0x142));var _0xc9da=function(_0x3a0230,_0x4b4afc){_0x3a0230=_0x3a0230-0x0;var _0xe56cbe=_0x9dac[_0x3a0230];return _0xe56cbe;};'use strict';var _=require(_0xc9da('0x0'));var moment=require('moment');var util=require('util');var Redis=require(_0xc9da('0x1'));var BPromise=require(_0xc9da('0x2'));var config=require('../../../config/environment');var logger=require('../../../config/logger')('ami');var ami=require(_0xc9da('0x3'));config[_0xc9da('0x4')]=_[_0xc9da('0x5')](config[_0xc9da('0x4')],{'host':_0xc9da('0x6'),'port':0x18eb});var io=require(_0xc9da('0x7'))(new Redis(config[_0xc9da('0x4')]));function UserReport(_0x48c165){this[_0xc9da('0x8')]=_0x48c165[_0xc9da('0x8')];this[_0xc9da('0x9')]=_0x48c165[_0xc9da('0x9')];this['telephones']=_0x48c165[_0xc9da('0xa')];ami['on'](_0xc9da('0xb'),this[_0xc9da('0xc')][_0xc9da('0xd')](this));ami['on'](_0xc9da('0xe'),this['syncRegistry'][_0xc9da('0xd')](this));ami['on'](_0xc9da('0xf'),this[_0xc9da('0x10')][_0xc9da('0xd')](this));ami['on'](_0xc9da('0x11'),this[_0xc9da('0x12')][_0xc9da('0xd')](this));return this['syncRealtimeShow']();}function showSipRegistrations(){Promise[_0xc9da('0x13')]()[_0xc9da('0x14')](ami[_0xc9da('0x15')]())['catch'](function(_0xe2f6d){logger['error'](_0xc9da('0x16'),util[_0xc9da('0x17')](_0xe2f6d,{'showHidden':![],'depth':null}));});}function listDeviceStates(){Promise[_0xc9da('0x13')]()[_0xc9da('0x14')](ami[_0xc9da('0x18')]())[_0xc9da('0x19')](function(_0x51637f){logger[_0xc9da('0x1a')](_0xc9da('0x1b'),util[_0xc9da('0x17')](_0x51637f,{'showHidden':![],'depth':null}));});}function showPeersStatus(){Promise[_0xc9da('0x13')]()[_0xc9da('0x14')](ami['actionSipPeerStatus']())[_0xc9da('0x19')](function(_0x467ebc){logger[_0xc9da('0x1a')](_0xc9da('0x1c'),util[_0xc9da('0x17')](_0x467ebc,{'showHidden':![],'depth':null}));});}UserReport['prototype'][_0xc9da('0x1d')]=function(){setInterval(function(){BPromise[_0xc9da('0x13')]()[_0xc9da('0x14')](showSipRegistrations())[_0xc9da('0x14')](listDeviceStates())[_0xc9da('0x14')](showPeersStatus());},0x32c8);};UserReport[_0xc9da('0x1e')][_0xc9da('0x1f')]=function(_0xdb56c4){return _0xdb56c4!==null&&!_[_0xc9da('0x20')](_0xdb56c4);};UserReport[_0xc9da('0x1e')][_0xc9da('0x21')]=function(_0x4f0358,_0x1732ff,_0x49b2c6){io['to'](_0x4f0358)['emit'](_0x1732ff,_0x49b2c6);};UserReport[_0xc9da('0x1e')][_0xc9da('0xc')]=function(_0x284fdb){try{if(this['isNotNull'](_0x284fdb)){logger['info']('[userReport][registry]\x20registry:%s\x20state:%s',_0x284fdb[_0xc9da('0x22')],_0x284fdb[_0xc9da('0x23')]);logger[_0xc9da('0x24')](_0xc9da('0x25'),util[_0xc9da('0x17')](_0x284fdb,{'showHidden':![],'depth':null}));var _0x3cc608=_[_0xc9da('0x26')](this[_0xc9da('0x8')],{'defaultuser':_0x284fdb[_0xc9da('0x22')]});if(_0x3cc608){_0x284fdb[_0xc9da('0x27')]=_0x284fdb[_0xc9da('0x23')];_[_0xc9da('0x28')](_0x3cc608,_['omit'](_0x284fdb,[_0xc9da('0x29'),_0xc9da('0x2a'),'username',_0xc9da('0x23')]));logger[_0xc9da('0x24')](_0xc9da('0x2b'),util[_0xc9da('0x17')](_0x3cc608,{'showHidden':![],'depth':null}));this['emit'](util[_0xc9da('0x2c')](_0xc9da('0x2d'),_0x3cc608['name']),_0xc9da('0x2e'),_0x3cc608);}}}catch(_0x333637){logger['error']('[userReport][registry]',util['inspect'](_0x333637,{'showHidden':![],'depth':null}));}};UserReport[_0xc9da('0x1e')]['syncDeviceState']=function(_0x57d831){try{if(this['isNotNull'](_0x57d831)){logger['info'](_0xc9da('0x2f'),_0x57d831['device'],_0x57d831[_0xc9da('0x23')]);logger[_0xc9da('0x24')]('[userReport][devicestatechange]',util[_0xc9da('0x17')](_0x57d831,{'showHidden':![],'depth':null}));if(this[_0xc9da('0x9')][_0x57d831['device']]){if(!this[_0xc9da('0x9')][_0x57d831[_0xc9da('0x30')]]['local']||_0x57d831[_0xc9da('0x23')]['toLowerCase']()==_0xc9da('0x31')){this[_0xc9da('0x9')][_0x57d831[_0xc9da('0x30')]][_0xc9da('0x32')]=![];if(this['agents'][_0x57d831[_0xc9da('0x30')]][_0xc9da('0x23')]!==_0x57d831[_0xc9da('0x23')][_0xc9da('0x33')]()){this[_0xc9da('0x9')][_0x57d831[_0xc9da('0x30')]]['stateTime']=_[_0xc9da('0x34')](moment()['format']('x'));}this[_0xc9da('0x9')][_0x57d831[_0xc9da('0x30')]][_0xc9da('0x23')]=_0x57d831[_0xc9da('0x23')][_0xc9da('0x33')]();this[_0xc9da('0x9')][_0x57d831['device']][_0xc9da('0x35')](_0x57d831);}}else if(this['telephones'][_0x57d831[_0xc9da('0x30')]]){if(this['telephones'][_0x57d831[_0xc9da('0x30')]][_0xc9da('0x23')]!==_0x57d831[_0xc9da('0x23')][_0xc9da('0x33')]()){this[_0xc9da('0xa')][_0x57d831['device']][_0xc9da('0x36')]=_[_0xc9da('0x34')](moment()[_0xc9da('0x2c')]('x'));}this[_0xc9da('0xa')][_0x57d831[_0xc9da('0x30')]][_0xc9da('0x23')]=_0x57d831[_0xc9da('0x23')][_0xc9da('0x33')]();logger['debug']('[userReport][devicestatechange]\x20sending\x20telephone:save\x20event:',util['inspect'](this[_0xc9da('0xa')][_0x57d831[_0xc9da('0x30')]],{'showHidden':![],'depth':null}));this[_0xc9da('0x21')](util[_0xc9da('0x2c')]('telephone:%s',this[_0xc9da('0xa')][_0x57d831[_0xc9da('0x30')]]['name']),'telephone:save',this['telephones'][_0x57d831['device']]);}else if(this['trunks'][_0x57d831[_0xc9da('0x30')]]){if(this['trunks'][_0x57d831['device']][_0xc9da('0x23')]!==_0x57d831[_0xc9da('0x23')][_0xc9da('0x33')]()){this[_0xc9da('0x8')][_0x57d831[_0xc9da('0x30')]]['stateTime']=_['toNumber'](moment()[_0xc9da('0x2c')]('x'));}this[_0xc9da('0x8')][_0x57d831[_0xc9da('0x30')]]['state']=_0x57d831[_0xc9da('0x23')][_0xc9da('0x33')]();logger[_0xc9da('0x24')]('[userReport][devicestatechange]\x20sending\x20trunk:save\x20event:',util[_0xc9da('0x17')](this[_0xc9da('0x8')][_0x57d831['device']],{'showHidden':![],'depth':null}));this[_0xc9da('0x21')](util['format']('trunk:%s',this['trunks'][_0x57d831[_0xc9da('0x30')]][_0xc9da('0x37')]),_0xc9da('0x2e'),this[_0xc9da('0x8')][_0x57d831[_0xc9da('0x30')]]);}else if(_['startsWith'](_0x57d831[_0xc9da('0x30')],_0xc9da('0x38'))){var _0x2de22f=_0x57d831[_0xc9da('0x30')];var _0x18f265=_0x2de22f[_0xc9da('0x39')](_0x2de22f[_0xc9da('0x3a')]('/')+0x1,_0x2de22f[_0xc9da('0x3a')]('@'));var _0x525374=_[_0xc9da('0x26')](this['agents'],function(_0x1a7c2c){return _0x1a7c2c['mobile']==_0x18f265||_0x1a7c2c[_0xc9da('0x3b')]==_0x18f265||_0x1a7c2c[_0xc9da('0x3c')]==_0x18f265;});if(_0x525374){if(_0x525374[_0xc9da('0x23')]!==_0x57d831[_0xc9da('0x23')][_0xc9da('0x33')]()){_0x525374[_0xc9da('0x36')]=_[_0xc9da('0x34')](moment()[_0xc9da('0x2c')]('x'));}_0x525374['state']=_0x57d831[_0xc9da('0x23')][_0xc9da('0x33')]();_0x525374[_0xc9da('0x32')]=!![];_0x525374[_0xc9da('0x35')](_0x57d831);}}}}catch(_0x3c2744){logger[_0xc9da('0x1a')](_0xc9da('0x3d'),util[_0xc9da('0x17')](_0x3c2744,{'showHidden':![],'depth':null}));}};UserReport['prototype']['syncPeerStatus']=function(_0x3593b6){try{if(this[_0xc9da('0x1f')](_0x3593b6)&&this[_0xc9da('0x1f')](_0x3593b6[_0xc9da('0x11')])){logger['info'](_0xc9da('0x3e'),_0x3593b6[_0xc9da('0x3f')],_0x3593b6[_0xc9da('0x40')],_0x3593b6[_0xc9da('0x11')]);logger[_0xc9da('0x24')]('[userReport][peerstatus]',util['inspect'](_0x3593b6,{'showHidden':![],'depth':null}));if(this['agents'][_0x3593b6[_0xc9da('0x3f')]]){if(!this['agents'][_0x3593b6[_0xc9da('0x3f')]][_0xc9da('0x32')]||_0x3593b6[_0xc9da('0x11')][_0xc9da('0x33')]()==_0xc9da('0x41')){this['agents'][_0x3593b6[_0xc9da('0x3f')]]['local']=![];this[_0xc9da('0x9')][_0x3593b6['peer']][_0xc9da('0x42')]=_0x3593b6['peerstatus'][_0xc9da('0x33')]();this[_0xc9da('0x9')][_0x3593b6[_0xc9da('0x3f')]][_0xc9da('0x40')]=_0x3593b6[_0xc9da('0x40')];this['agents'][_0x3593b6[_0xc9da('0x3f')]][_0xc9da('0x35')](_0x3593b6);}}else if(this[_0xc9da('0xa')][_0x3593b6['peer']]){this[_0xc9da('0xa')][_0x3593b6[_0xc9da('0x3f')]]['status']=_0x3593b6[_0xc9da('0x11')][_0xc9da('0x33')]();this['telephones'][_0x3593b6[_0xc9da('0x3f')]][_0xc9da('0x40')]=_0x3593b6[_0xc9da('0x40')];logger['debug'](_0xc9da('0x43'),util[_0xc9da('0x17')](this[_0xc9da('0xa')][_0x3593b6[_0xc9da('0x3f')]],{'showHidden':![],'depth':null}));this[_0xc9da('0x21')](util[_0xc9da('0x2c')]('telephone:%s',this[_0xc9da('0xa')][_0x3593b6[_0xc9da('0x3f')]]['name']),_0xc9da('0x44'),this[_0xc9da('0xa')][_0x3593b6['peer']]);}else if(this[_0xc9da('0x8')][_0x3593b6[_0xc9da('0x3f')]]){this[_0xc9da('0x8')][_0x3593b6[_0xc9da('0x3f')]][_0xc9da('0x42')]=_0x3593b6[_0xc9da('0x11')]['toLowerCase']();this[_0xc9da('0x8')][_0x3593b6['peer']]['address']=_0x3593b6[_0xc9da('0x40')];logger[_0xc9da('0x24')](_0xc9da('0x45'),util['inspect'](this['trunks'][_0x3593b6[_0xc9da('0x3f')]],{'showHidden':![],'depth':null}));this[_0xc9da('0x21')](util['format'](_0xc9da('0x2d'),this[_0xc9da('0x8')][_0x3593b6[_0xc9da('0x3f')]]['name']),'trunk:save',this[_0xc9da('0x8')][_0x3593b6[_0xc9da('0x3f')]]);}}}catch(_0x3a5b48){logger['error'](_0xc9da('0x46'),util[_0xc9da('0x17')](_0x3a5b48,{'showHidden':![],'depth':null}));}};module[_0xc9da('0x47')]=UserReport;