819bfa0c1a70c64d58eb7635bb22a8163654db98
[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 _0x0153=['peer','address','[userReport][peerstatus]','status','[userReport][peerstatus]\x20sending\x20telephone:save\x20event:','[userReport][peerstatus]\x20sending\x20trunk:save\x20event:','exports','moment','util','ioredis','bluebird','../../../config/environment','../../../config/logger','ami','../ami','redis','defaults','localhost','socket.io-emitter','trunks','agents','telephones','registryentry','syncRegistry','bind','devicestatechange','syncDeviceState','peerstatus','resolve','then','actionSipShowRegistry','error','inspect','actionDeviceStateList','catch','[userReport][devicestatelist]','[userReport][sippeerstatus]','prototype','syncRealtimeShow','isNotNull','isUndefined','emit','[userReport][registry]\x20registry:%s\x20state:%s','username','state','debug','[userReport][registry]','find','stateRegistry','merge','omit','event','actionid','format','trunk:%s','name','trunk:save','info','[userReport][devicestatechange]\x20device:%s\x20state:%s','device','local','toLowerCase','stateTime','toNumber','updateStatusRealtime','[userReport][devicestatechange]\x20sending\x20telephone:save\x20event:','telephone:%s','telephone:save','[userReport][devicestatechange]\x20sending\x20trunk:save\x20event:','startsWith','Local','substring','indexOf','mobile','phone','accountcode','[userReport][devicestatechange]','syncPeerStatus','[userReport][peerstatus]\x20peer:%s\x20address:%s\x20status:%s'];(function(_0x55c219,_0x19cf7a){var _0xd3a30a=function(_0x4e77a7){while(--_0x4e77a7){_0x55c219['push'](_0x55c219['shift']());}};_0xd3a30a(++_0x19cf7a);}(_0x0153,0x192));var _0x3015=function(_0x35289d,_0x230ce7){_0x35289d=_0x35289d-0x0;var _0x2dec71=_0x0153[_0x35289d];return _0x2dec71;};'use strict';var _=require('lodash');var moment=require(_0x3015('0x0'));var util=require(_0x3015('0x1'));var Redis=require(_0x3015('0x2'));var BPromise=require(_0x3015('0x3'));var config=require(_0x3015('0x4'));var logger=require(_0x3015('0x5'))(_0x3015('0x6'));var ami=require(_0x3015('0x7'));config[_0x3015('0x8')]=_[_0x3015('0x9')](config['redis'],{'host':_0x3015('0xa'),'port':0x18eb});var io=require(_0x3015('0xb'))(new Redis(config['redis']));function UserReport(_0x1a056e){this['trunks']=_0x1a056e[_0x3015('0xc')];this[_0x3015('0xd')]=_0x1a056e[_0x3015('0xd')];this[_0x3015('0xe')]=_0x1a056e[_0x3015('0xe')];ami['on'](_0x3015('0xf'),this[_0x3015('0x10')][_0x3015('0x11')](this));ami['on']('registry',this[_0x3015('0x10')][_0x3015('0x11')](this));ami['on'](_0x3015('0x12'),this[_0x3015('0x13')]['bind'](this));ami['on'](_0x3015('0x14'),this['syncPeerStatus'][_0x3015('0x11')](this));return this['syncRealtimeShow']();}function showSipRegistrations(){Promise[_0x3015('0x15')]()[_0x3015('0x16')](ami[_0x3015('0x17')]())['catch'](function(_0x138d8a){logger[_0x3015('0x18')]('[userReport][sipshowregistry]',util[_0x3015('0x19')](_0x138d8a,{'showHidden':![],'depth':null}));});}function listDeviceStates(){Promise[_0x3015('0x15')]()[_0x3015('0x16')](ami[_0x3015('0x1a')]())[_0x3015('0x1b')](function(_0x433b96){logger[_0x3015('0x18')](_0x3015('0x1c'),util[_0x3015('0x19')](_0x433b96,{'showHidden':![],'depth':null}));});}function showPeersStatus(){Promise[_0x3015('0x15')]()[_0x3015('0x16')](ami['actionSipPeerStatus']())[_0x3015('0x1b')](function(_0x3c6345){logger[_0x3015('0x18')](_0x3015('0x1d'),util[_0x3015('0x19')](_0x3c6345,{'showHidden':![],'depth':null}));});}UserReport[_0x3015('0x1e')][_0x3015('0x1f')]=function(){setInterval(function(){BPromise[_0x3015('0x15')]()[_0x3015('0x16')](showSipRegistrations())[_0x3015('0x16')](listDeviceStates())['then'](showPeersStatus());},0x32c8);};UserReport[_0x3015('0x1e')][_0x3015('0x20')]=function(_0x14c348){return _0x14c348!==null&&!_[_0x3015('0x21')](_0x14c348);};UserReport['prototype'][_0x3015('0x22')]=function(_0x377836,_0x199053,_0x1e6011){io['to'](_0x377836)['emit'](_0x199053,_0x1e6011);};UserReport[_0x3015('0x1e')][_0x3015('0x10')]=function(_0x1fd92a){try{if(this[_0x3015('0x20')](_0x1fd92a)){logger['info'](_0x3015('0x23'),_0x1fd92a[_0x3015('0x24')],_0x1fd92a[_0x3015('0x25')]);logger[_0x3015('0x26')](_0x3015('0x27'),util['inspect'](_0x1fd92a,{'showHidden':![],'depth':null}));var _0x30f0fd=_[_0x3015('0x28')](this[_0x3015('0xc')],{'defaultuser':_0x1fd92a[_0x3015('0x24')]});if(_0x30f0fd){_0x1fd92a[_0x3015('0x29')]=_0x1fd92a[_0x3015('0x25')];_[_0x3015('0x2a')](_0x30f0fd,_[_0x3015('0x2b')](_0x1fd92a,[_0x3015('0x2c'),_0x3015('0x2d'),_0x3015('0x24'),'state']));logger[_0x3015('0x26')]('[userReport][registry]\x20sending\x20trunk:save\x20event:',util[_0x3015('0x19')](_0x30f0fd,{'showHidden':![],'depth':null}));this[_0x3015('0x22')](util[_0x3015('0x2e')](_0x3015('0x2f'),_0x30f0fd[_0x3015('0x30')]),_0x3015('0x31'),_0x30f0fd);}}}catch(_0x43fb67){logger[_0x3015('0x18')](_0x3015('0x27'),util[_0x3015('0x19')](_0x43fb67,{'showHidden':![],'depth':null}));}};UserReport[_0x3015('0x1e')]['syncDeviceState']=function(_0x1ec78e){try{if(this[_0x3015('0x20')](_0x1ec78e)){logger[_0x3015('0x32')](_0x3015('0x33'),_0x1ec78e['device'],_0x1ec78e['state']);logger[_0x3015('0x26')]('[userReport][devicestatechange]',util[_0x3015('0x19')](_0x1ec78e,{'showHidden':![],'depth':null}));if(this[_0x3015('0xd')][_0x1ec78e[_0x3015('0x34')]]){if(!this[_0x3015('0xd')][_0x1ec78e['device']][_0x3015('0x35')]||_0x1ec78e[_0x3015('0x25')][_0x3015('0x36')]()=='inuse'){this['agents'][_0x1ec78e[_0x3015('0x34')]]['local']=![];if(this[_0x3015('0xd')][_0x1ec78e['device']][_0x3015('0x25')]!==_0x1ec78e[_0x3015('0x25')][_0x3015('0x36')]()){this[_0x3015('0xd')][_0x1ec78e['device']][_0x3015('0x37')]=_[_0x3015('0x38')](moment()[_0x3015('0x2e')]('x'));}this[_0x3015('0xd')][_0x1ec78e[_0x3015('0x34')]]['state']=_0x1ec78e[_0x3015('0x25')][_0x3015('0x36')]();this[_0x3015('0xd')][_0x1ec78e[_0x3015('0x34')]][_0x3015('0x39')](_0x1ec78e);}}else if(this[_0x3015('0xe')][_0x1ec78e['device']]){if(this['telephones'][_0x1ec78e[_0x3015('0x34')]][_0x3015('0x25')]!==_0x1ec78e[_0x3015('0x25')][_0x3015('0x36')]()){this[_0x3015('0xe')][_0x1ec78e[_0x3015('0x34')]][_0x3015('0x37')]=_[_0x3015('0x38')](moment()[_0x3015('0x2e')]('x'));}this[_0x3015('0xe')][_0x1ec78e[_0x3015('0x34')]]['state']=_0x1ec78e[_0x3015('0x25')][_0x3015('0x36')]();logger[_0x3015('0x26')](_0x3015('0x3a'),util[_0x3015('0x19')](this[_0x3015('0xe')][_0x1ec78e[_0x3015('0x34')]],{'showHidden':![],'depth':null}));this['emit'](util['format'](_0x3015('0x3b'),this['telephones'][_0x1ec78e['device']][_0x3015('0x30')]),_0x3015('0x3c'),this[_0x3015('0xe')][_0x1ec78e['device']]);}else if(this[_0x3015('0xc')][_0x1ec78e[_0x3015('0x34')]]){if(this[_0x3015('0xc')][_0x1ec78e[_0x3015('0x34')]][_0x3015('0x25')]!==_0x1ec78e[_0x3015('0x25')][_0x3015('0x36')]()){this[_0x3015('0xc')][_0x1ec78e['device']][_0x3015('0x37')]=_[_0x3015('0x38')](moment()[_0x3015('0x2e')]('x'));}this[_0x3015('0xc')][_0x1ec78e[_0x3015('0x34')]][_0x3015('0x25')]=_0x1ec78e[_0x3015('0x25')]['toLowerCase']();logger[_0x3015('0x26')](_0x3015('0x3d'),util[_0x3015('0x19')](this[_0x3015('0xc')][_0x1ec78e[_0x3015('0x34')]],{'showHidden':![],'depth':null}));this[_0x3015('0x22')](util[_0x3015('0x2e')](_0x3015('0x2f'),this[_0x3015('0xc')][_0x1ec78e['device']]['name']),_0x3015('0x31'),this[_0x3015('0xc')][_0x1ec78e['device']]);}else if(_[_0x3015('0x3e')](_0x1ec78e[_0x3015('0x34')],_0x3015('0x3f'))){var _0x15e856=_0x1ec78e[_0x3015('0x34')];var _0x2c78d6=_0x15e856[_0x3015('0x40')](_0x15e856[_0x3015('0x41')]('/')+0x1,_0x15e856[_0x3015('0x41')]('@'));var _0x5eae2b=_[_0x3015('0x28')](this['agents'],function(_0x5a9077){return _0x5a9077[_0x3015('0x42')]==_0x2c78d6||_0x5a9077[_0x3015('0x43')]==_0x2c78d6||_0x5a9077[_0x3015('0x44')]==_0x2c78d6;});if(_0x5eae2b){if(_0x5eae2b[_0x3015('0x25')]!==_0x1ec78e['state'][_0x3015('0x36')]()){_0x5eae2b[_0x3015('0x37')]=_[_0x3015('0x38')](moment()[_0x3015('0x2e')]('x'));}_0x5eae2b['state']=_0x1ec78e[_0x3015('0x25')]['toLowerCase']();_0x5eae2b['local']=!![];_0x5eae2b[_0x3015('0x39')](_0x1ec78e);}}}}catch(_0x4f8085){logger[_0x3015('0x18')](_0x3015('0x45'),util[_0x3015('0x19')](_0x4f8085,{'showHidden':![],'depth':null}));}};UserReport['prototype'][_0x3015('0x46')]=function(_0x1f644e){try{if(this[_0x3015('0x20')](_0x1f644e)&&this[_0x3015('0x20')](_0x1f644e[_0x3015('0x14')])){logger[_0x3015('0x32')](_0x3015('0x47'),_0x1f644e[_0x3015('0x48')],_0x1f644e[_0x3015('0x49')],_0x1f644e[_0x3015('0x14')]);logger[_0x3015('0x26')](_0x3015('0x4a'),util[_0x3015('0x19')](_0x1f644e,{'showHidden':![],'depth':null}));if(this['agents'][_0x1f644e[_0x3015('0x48')]]){if(!this[_0x3015('0xd')][_0x1f644e[_0x3015('0x48')]]['local']||_0x1f644e[_0x3015('0x14')]['toLowerCase']()=='registered'){this[_0x3015('0xd')][_0x1f644e[_0x3015('0x48')]]['local']=![];this[_0x3015('0xd')][_0x1f644e[_0x3015('0x48')]][_0x3015('0x4b')]=_0x1f644e[_0x3015('0x14')][_0x3015('0x36')]();this[_0x3015('0xd')][_0x1f644e[_0x3015('0x48')]][_0x3015('0x49')]=_0x1f644e[_0x3015('0x49')];this[_0x3015('0xd')][_0x1f644e[_0x3015('0x48')]][_0x3015('0x39')](_0x1f644e);}}else if(this['telephones'][_0x1f644e['peer']]){this[_0x3015('0xe')][_0x1f644e[_0x3015('0x48')]][_0x3015('0x4b')]=_0x1f644e[_0x3015('0x14')][_0x3015('0x36')]();this[_0x3015('0xe')][_0x1f644e['peer']][_0x3015('0x49')]=_0x1f644e['address'];logger[_0x3015('0x26')](_0x3015('0x4c'),util[_0x3015('0x19')](this[_0x3015('0xe')][_0x1f644e[_0x3015('0x48')]],{'showHidden':![],'depth':null}));this[_0x3015('0x22')](util[_0x3015('0x2e')](_0x3015('0x3b'),this[_0x3015('0xe')][_0x1f644e[_0x3015('0x48')]]['name']),_0x3015('0x3c'),this[_0x3015('0xe')][_0x1f644e[_0x3015('0x48')]]);}else if(this[_0x3015('0xc')][_0x1f644e[_0x3015('0x48')]]){this[_0x3015('0xc')][_0x1f644e[_0x3015('0x48')]][_0x3015('0x4b')]=_0x1f644e[_0x3015('0x14')]['toLowerCase']();this['trunks'][_0x1f644e['peer']][_0x3015('0x49')]=_0x1f644e['address'];logger[_0x3015('0x26')](_0x3015('0x4d'),util[_0x3015('0x19')](this[_0x3015('0xc')][_0x1f644e['peer']],{'showHidden':![],'depth':null}));this['emit'](util[_0x3015('0x2e')](_0x3015('0x2f'),this[_0x3015('0xc')][_0x1f644e[_0x3015('0x48')]]['name']),'trunk:save',this[_0x3015('0xc')][_0x1f644e[_0x3015('0x48')]]);}}}catch(_0x417351){logger[_0x3015('0x18')](_0x3015('0x4a'),util['inspect'](_0x417351,{'showHidden':![],'depth':null}));}};module[_0x3015('0x4e')]=UserReport;