b4301fe4ebb54237e8d890632a434084d034a35a
[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 _0x8f41=['stateTime','toNumber','updateStatusRealtime','[userReport][devicestatechange]\x20sending\x20telephone:save\x20event:','telephone:%s','telephone:save','[userReport][devicestatechange]\x20sending\x20trunk:save\x20event:','trunk:%s','startsWith','Local','indexOf','mobile','phone','[userReport][devicestatechange]','[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:','trunk:save','exports','lodash','ioredis','bluebird','../../../config/environment','../../../config/logger','ami','redis','defaults','socket.io-emitter','trunks','agents','telephones','registryentry','syncRegistry','bind','registry','devicestatechange','peerstatus','syncPeerStatus','syncRealtimeShow','then','actionSipShowRegistry','catch','[userReport][sipshowregistry]','resolve','actionDeviceStateList','error','inspect','actionSipPeerStatus','[userReport][sippeerstatus]','prototype','isNotNull','isUndefined','emit','[userReport][registry]\x20registry:%s\x20state:%s','username','debug','[userReport][registry]','find','state','omit','event','actionid','[userReport][registry]\x20sending\x20trunk:save\x20event:','format','name','syncDeviceState','info','[userReport][devicestatechange]\x20device:%s\x20state:%s','device','toLowerCase','inuse','local'];(function(_0xbfbc04,_0x3aa836){var _0x129c77=function(_0x2abcb9){while(--_0x2abcb9){_0xbfbc04['push'](_0xbfbc04['shift']());}};_0x129c77(++_0x3aa836);}(_0x8f41,0x1e6));var _0x18f4=function(_0x2c643d,_0x5084a0){_0x2c643d=_0x2c643d-0x0;var _0x270650=_0x8f41[_0x2c643d];return _0x270650;};'use strict';var _=require(_0x18f4('0x0'));var moment=require('moment');var util=require('util');var Redis=require(_0x18f4('0x1'));var BPromise=require(_0x18f4('0x2'));var config=require(_0x18f4('0x3'));var logger=require(_0x18f4('0x4'))(_0x18f4('0x5'));var ami=require('../ami');config[_0x18f4('0x6')]=_[_0x18f4('0x7')](config['redis'],{'host':'localhost','port':0x18eb});var io=require(_0x18f4('0x8'))(new Redis(config[_0x18f4('0x6')]));function UserReport(_0x531718){this[_0x18f4('0x9')]=_0x531718[_0x18f4('0x9')];this[_0x18f4('0xa')]=_0x531718[_0x18f4('0xa')];this[_0x18f4('0xb')]=_0x531718[_0x18f4('0xb')];ami['on'](_0x18f4('0xc'),this[_0x18f4('0xd')][_0x18f4('0xe')](this));ami['on'](_0x18f4('0xf'),this[_0x18f4('0xd')][_0x18f4('0xe')](this));ami['on'](_0x18f4('0x10'),this['syncDeviceState']['bind'](this));ami['on'](_0x18f4('0x11'),this[_0x18f4('0x12')][_0x18f4('0xe')](this));return this[_0x18f4('0x13')]();}function showSipRegistrations(){Promise['resolve']()[_0x18f4('0x14')](ami[_0x18f4('0x15')]())[_0x18f4('0x16')](function(_0x2cda1b){logger['error'](_0x18f4('0x17'),util['inspect'](_0x2cda1b,{'showHidden':![],'depth':null}));});}function listDeviceStates(){Promise[_0x18f4('0x18')]()[_0x18f4('0x14')](ami[_0x18f4('0x19')]())[_0x18f4('0x16')](function(_0x225ca1){logger[_0x18f4('0x1a')]('[userReport][devicestatelist]',util[_0x18f4('0x1b')](_0x225ca1,{'showHidden':![],'depth':null}));});}function showPeersStatus(){Promise['resolve']()[_0x18f4('0x14')](ami[_0x18f4('0x1c')]())['catch'](function(_0x50130b){logger[_0x18f4('0x1a')](_0x18f4('0x1d'),util[_0x18f4('0x1b')](_0x50130b,{'showHidden':![],'depth':null}));});}UserReport[_0x18f4('0x1e')]['syncRealtimeShow']=function(){setInterval(function(){BPromise[_0x18f4('0x18')]()[_0x18f4('0x14')](showSipRegistrations())[_0x18f4('0x14')](listDeviceStates())[_0x18f4('0x14')](showPeersStatus());},0x32c8);};UserReport[_0x18f4('0x1e')][_0x18f4('0x1f')]=function(_0x17dad5){return _0x17dad5!==null&&!_[_0x18f4('0x20')](_0x17dad5);};UserReport[_0x18f4('0x1e')][_0x18f4('0x21')]=function(_0x288e45,_0x389fb9,_0xf3a44a){io['to'](_0x288e45)[_0x18f4('0x21')](_0x389fb9,_0xf3a44a);};UserReport['prototype'][_0x18f4('0xd')]=function(_0x2b412f){try{if(this['isNotNull'](_0x2b412f)){logger['info'](_0x18f4('0x22'),_0x2b412f[_0x18f4('0x23')],_0x2b412f['state']);logger[_0x18f4('0x24')](_0x18f4('0x25'),util[_0x18f4('0x1b')](_0x2b412f,{'showHidden':![],'depth':null}));var _0x149fab=_[_0x18f4('0x26')](this[_0x18f4('0x9')],{'defaultuser':_0x2b412f[_0x18f4('0x23')]});if(_0x149fab){_0x2b412f['stateRegistry']=_0x2b412f[_0x18f4('0x27')];_['merge'](_0x149fab,_[_0x18f4('0x28')](_0x2b412f,[_0x18f4('0x29'),_0x18f4('0x2a'),_0x18f4('0x23'),_0x18f4('0x27')]));logger[_0x18f4('0x24')](_0x18f4('0x2b'),util[_0x18f4('0x1b')](_0x149fab,{'showHidden':![],'depth':null}));this[_0x18f4('0x21')](util[_0x18f4('0x2c')]('trunk:%s',_0x149fab[_0x18f4('0x2d')]),'trunk:save',_0x149fab);}}}catch(_0xafb64d){logger['error']('[userReport][registry]',util[_0x18f4('0x1b')](_0xafb64d,{'showHidden':![],'depth':null}));}};UserReport['prototype'][_0x18f4('0x2e')]=function(_0x4227ca){try{if(this[_0x18f4('0x1f')](_0x4227ca)){logger[_0x18f4('0x2f')](_0x18f4('0x30'),_0x4227ca['device'],_0x4227ca[_0x18f4('0x27')]);logger[_0x18f4('0x24')]('[userReport][devicestatechange]',util[_0x18f4('0x1b')](_0x4227ca,{'showHidden':![],'depth':null}));if(this[_0x18f4('0xa')][_0x4227ca[_0x18f4('0x31')]]){if(!this[_0x18f4('0xa')][_0x4227ca[_0x18f4('0x31')]]['local']||_0x4227ca[_0x18f4('0x27')][_0x18f4('0x32')]()==_0x18f4('0x33')){this[_0x18f4('0xa')][_0x4227ca[_0x18f4('0x31')]][_0x18f4('0x34')]=![];if(this[_0x18f4('0xa')][_0x4227ca[_0x18f4('0x31')]]['state']!==_0x4227ca['state']['toLowerCase']()){this['agents'][_0x4227ca[_0x18f4('0x31')]][_0x18f4('0x35')]=_[_0x18f4('0x36')](moment()[_0x18f4('0x2c')]('x'));}this['agents'][_0x4227ca[_0x18f4('0x31')]][_0x18f4('0x27')]=_0x4227ca['state'][_0x18f4('0x32')]();this[_0x18f4('0xa')][_0x4227ca[_0x18f4('0x31')]][_0x18f4('0x37')](_0x4227ca);}}else if(this[_0x18f4('0xb')][_0x4227ca[_0x18f4('0x31')]]){if(this['telephones'][_0x4227ca[_0x18f4('0x31')]][_0x18f4('0x27')]!==_0x4227ca['state'][_0x18f4('0x32')]()){this[_0x18f4('0xb')][_0x4227ca[_0x18f4('0x31')]][_0x18f4('0x35')]=_[_0x18f4('0x36')](moment()['format']('x'));}this[_0x18f4('0xb')][_0x4227ca[_0x18f4('0x31')]]['state']=_0x4227ca['state'][_0x18f4('0x32')]();logger[_0x18f4('0x24')](_0x18f4('0x38'),util[_0x18f4('0x1b')](this[_0x18f4('0xb')][_0x4227ca[_0x18f4('0x31')]],{'showHidden':![],'depth':null}));this['emit'](util[_0x18f4('0x2c')](_0x18f4('0x39'),this[_0x18f4('0xb')][_0x4227ca[_0x18f4('0x31')]][_0x18f4('0x2d')]),_0x18f4('0x3a'),this[_0x18f4('0xb')][_0x4227ca[_0x18f4('0x31')]]);}else if(this['trunks'][_0x4227ca[_0x18f4('0x31')]]){if(this[_0x18f4('0x9')][_0x4227ca[_0x18f4('0x31')]][_0x18f4('0x27')]!==_0x4227ca[_0x18f4('0x27')]['toLowerCase']()){this[_0x18f4('0x9')][_0x4227ca['device']][_0x18f4('0x35')]=_[_0x18f4('0x36')](moment()[_0x18f4('0x2c')]('x'));}this['trunks'][_0x4227ca[_0x18f4('0x31')]][_0x18f4('0x27')]=_0x4227ca[_0x18f4('0x27')][_0x18f4('0x32')]();logger['debug'](_0x18f4('0x3b'),util[_0x18f4('0x1b')](this['trunks'][_0x4227ca[_0x18f4('0x31')]],{'showHidden':![],'depth':null}));this['emit'](util[_0x18f4('0x2c')](_0x18f4('0x3c'),this[_0x18f4('0x9')][_0x4227ca['device']]['name']),'trunk:save',this[_0x18f4('0x9')][_0x4227ca[_0x18f4('0x31')]]);}else if(_[_0x18f4('0x3d')](_0x4227ca['device'],_0x18f4('0x3e'))){var _0x5d80bc=_0x4227ca['device'];var _0x3a2e39=_0x5d80bc['substring'](_0x5d80bc['indexOf']('/')+0x1,_0x5d80bc[_0x18f4('0x3f')]('@'));var _0x1312b4=_[_0x18f4('0x26')](this[_0x18f4('0xa')],function(_0x532dfa){return _0x532dfa[_0x18f4('0x40')]==_0x3a2e39||_0x532dfa[_0x18f4('0x41')]==_0x3a2e39||_0x532dfa['accountcode']==_0x3a2e39;});if(_0x1312b4){if(_0x1312b4[_0x18f4('0x27')]!==_0x4227ca[_0x18f4('0x27')][_0x18f4('0x32')]()){_0x1312b4[_0x18f4('0x35')]=_[_0x18f4('0x36')](moment()[_0x18f4('0x2c')]('x'));}_0x1312b4['state']=_0x4227ca[_0x18f4('0x27')][_0x18f4('0x32')]();_0x1312b4['local']=!![];_0x1312b4[_0x18f4('0x37')](_0x4227ca);}}}}catch(_0x3994ee){logger['error'](_0x18f4('0x42'),util['inspect'](_0x3994ee,{'showHidden':![],'depth':null}));}};UserReport['prototype'][_0x18f4('0x12')]=function(_0x5d2347){try{if(this['isNotNull'](_0x5d2347)&&this[_0x18f4('0x1f')](_0x5d2347[_0x18f4('0x11')])){logger[_0x18f4('0x2f')](_0x18f4('0x43'),_0x5d2347[_0x18f4('0x44')],_0x5d2347[_0x18f4('0x45')],_0x5d2347[_0x18f4('0x11')]);logger[_0x18f4('0x24')](_0x18f4('0x46'),util[_0x18f4('0x1b')](_0x5d2347,{'showHidden':![],'depth':null}));if(this[_0x18f4('0xa')][_0x5d2347[_0x18f4('0x44')]]){if(!this[_0x18f4('0xa')][_0x5d2347[_0x18f4('0x44')]][_0x18f4('0x34')]||_0x5d2347[_0x18f4('0x11')][_0x18f4('0x32')]()==_0x18f4('0x47')){this[_0x18f4('0xa')][_0x5d2347[_0x18f4('0x44')]][_0x18f4('0x34')]=![];this[_0x18f4('0xa')][_0x5d2347[_0x18f4('0x44')]][_0x18f4('0x48')]=_0x5d2347[_0x18f4('0x11')][_0x18f4('0x32')]();this['agents'][_0x5d2347[_0x18f4('0x44')]][_0x18f4('0x45')]=_0x5d2347[_0x18f4('0x45')];this[_0x18f4('0xa')][_0x5d2347[_0x18f4('0x44')]][_0x18f4('0x37')](_0x5d2347);}}else if(this['telephones'][_0x5d2347[_0x18f4('0x44')]]){this[_0x18f4('0xb')][_0x5d2347['peer']][_0x18f4('0x48')]=_0x5d2347[_0x18f4('0x11')][_0x18f4('0x32')]();this[_0x18f4('0xb')][_0x5d2347[_0x18f4('0x44')]]['address']=_0x5d2347[_0x18f4('0x45')];logger[_0x18f4('0x24')](_0x18f4('0x49'),util[_0x18f4('0x1b')](this[_0x18f4('0xb')][_0x5d2347['peer']],{'showHidden':![],'depth':null}));this['emit'](util[_0x18f4('0x2c')](_0x18f4('0x39'),this[_0x18f4('0xb')][_0x5d2347[_0x18f4('0x44')]][_0x18f4('0x2d')]),'telephone:save',this['telephones'][_0x5d2347[_0x18f4('0x44')]]);}else if(this[_0x18f4('0x9')][_0x5d2347['peer']]){this[_0x18f4('0x9')][_0x5d2347['peer']][_0x18f4('0x48')]=_0x5d2347[_0x18f4('0x11')][_0x18f4('0x32')]();this[_0x18f4('0x9')][_0x5d2347[_0x18f4('0x44')]][_0x18f4('0x45')]=_0x5d2347[_0x18f4('0x45')];logger[_0x18f4('0x24')](_0x18f4('0x4a'),util[_0x18f4('0x1b')](this[_0x18f4('0x9')][_0x5d2347[_0x18f4('0x44')]],{'showHidden':![],'depth':null}));this['emit'](util[_0x18f4('0x2c')](_0x18f4('0x3c'),this['trunks'][_0x5d2347[_0x18f4('0x44')]]['name']),_0x18f4('0x4b'),this[_0x18f4('0x9')][_0x5d2347[_0x18f4('0x44')]]);}}}catch(_0x2160c2){logger[_0x18f4('0x1a')]('[userReport][peerstatus]',util['inspect'](_0x2160c2,{'showHidden':![],'depth':null}));}};module[_0x18f4('0x4c')]=UserReport;