d41c15227820e12c33834817d1a42782b1708ab0
[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 _0x5ca3=['indexOf','mobile','phone','accountcode','updateStatusRealtime','syncPeerStatus','peer','address','[userReport][peerstatus]','registered','status','[userReport][peerstatus]\x20sending\x20telephone:save\x20event:','[userReport][peerstatus]\x20sending\x20trunk:save\x20event:','trunk:save','exports','lodash','moment','util','bluebird','../../../config/environment','../../../config/logger','ami','../ami','redis','defaults','socket.io-emitter','trunks','agents','telephones','syncRegistry','bind','devicestatechange','syncDeviceState','peerstatus','syncRealtimeShow','resolve','then','catch','error','actionDeviceStateList','actionSipPeerStatus','[userReport][sippeerstatus]','inspect','prototype','isNotNull','isUndefined','emit','info','[userReport][registry]\x20registry:%s\x20state:%s','state','[userReport][registry]','find','username','omit','event','actionid','[userReport][registry]\x20sending\x20trunk:save\x20event:','format','trunk:%s','name','[userReport][devicestatechange]\x20device:%s\x20state:%s','device','debug','[userReport][devicestatechange]','local','toLowerCase','stateTime','toNumber','[userReport][devicestatechange]\x20sending\x20telephone:save\x20event:','telephone:%s','telephone:save','[userReport][devicestatechange]\x20sending\x20trunk:save\x20event:','startsWith','Local','substring'];(function(_0x2be8c2,_0x14a4b5){var _0x97f531=function(_0xcee58d){while(--_0xcee58d){_0x2be8c2['push'](_0x2be8c2['shift']());}};_0x97f531(++_0x14a4b5);}(_0x5ca3,0x13b));var _0x35ca=function(_0x35d2a9,_0x13feca){_0x35d2a9=_0x35d2a9-0x0;var _0x337c79=_0x5ca3[_0x35d2a9];return _0x337c79;};'use strict';var _=require(_0x35ca('0x0'));var moment=require(_0x35ca('0x1'));var util=require(_0x35ca('0x2'));var Redis=require('ioredis');var BPromise=require(_0x35ca('0x3'));var config=require(_0x35ca('0x4'));var logger=require(_0x35ca('0x5'))(_0x35ca('0x6'));var ami=require(_0x35ca('0x7'));config[_0x35ca('0x8')]=_[_0x35ca('0x9')](config[_0x35ca('0x8')],{'host':'localhost','port':0x18eb});var io=require(_0x35ca('0xa'))(new Redis(config['redis']));function UserReport(_0x2a2f2d){this['trunks']=_0x2a2f2d[_0x35ca('0xb')];this[_0x35ca('0xc')]=_0x2a2f2d['agents'];this['telephones']=_0x2a2f2d[_0x35ca('0xd')];ami['on']('registryentry',this[_0x35ca('0xe')][_0x35ca('0xf')](this));ami['on']('registry',this[_0x35ca('0xe')][_0x35ca('0xf')](this));ami['on'](_0x35ca('0x10'),this[_0x35ca('0x11')][_0x35ca('0xf')](this));ami['on'](_0x35ca('0x12'),this['syncPeerStatus'][_0x35ca('0xf')](this));return this[_0x35ca('0x13')]();}function showSipRegistrations(){Promise[_0x35ca('0x14')]()[_0x35ca('0x15')](ami['actionSipShowRegistry']())[_0x35ca('0x16')](function(_0x5c0c8d){logger[_0x35ca('0x17')]('[userReport][sipshowregistry]',util['inspect'](_0x5c0c8d,{'showHidden':![],'depth':null}));});}function listDeviceStates(){Promise[_0x35ca('0x14')]()[_0x35ca('0x15')](ami[_0x35ca('0x18')]())[_0x35ca('0x16')](function(_0x1f4674){logger['error']('[userReport][devicestatelist]',util['inspect'](_0x1f4674,{'showHidden':![],'depth':null}));});}function showPeersStatus(){Promise[_0x35ca('0x14')]()[_0x35ca('0x15')](ami[_0x35ca('0x19')]())[_0x35ca('0x16')](function(_0x2aeb72){logger[_0x35ca('0x17')](_0x35ca('0x1a'),util[_0x35ca('0x1b')](_0x2aeb72,{'showHidden':![],'depth':null}));});}UserReport[_0x35ca('0x1c')]['syncRealtimeShow']=function(){setInterval(function(){BPromise[_0x35ca('0x14')]()['then'](showSipRegistrations())[_0x35ca('0x15')](listDeviceStates())[_0x35ca('0x15')](showPeersStatus());},0x32c8);};UserReport[_0x35ca('0x1c')][_0x35ca('0x1d')]=function(_0x5b2c1d){return _0x5b2c1d!==null&&!_[_0x35ca('0x1e')](_0x5b2c1d);};UserReport[_0x35ca('0x1c')][_0x35ca('0x1f')]=function(_0x4f5625,_0x15e39a,_0x4a072a){io['to'](_0x4f5625)['emit'](_0x15e39a,_0x4a072a);};UserReport[_0x35ca('0x1c')][_0x35ca('0xe')]=function(_0x404734){try{if(this['isNotNull'](_0x404734)){logger[_0x35ca('0x20')](_0x35ca('0x21'),_0x404734['username'],_0x404734[_0x35ca('0x22')]);logger['debug'](_0x35ca('0x23'),util[_0x35ca('0x1b')](_0x404734,{'showHidden':![],'depth':null}));var _0xb1fd6f=_[_0x35ca('0x24')](this[_0x35ca('0xb')],{'defaultuser':_0x404734[_0x35ca('0x25')]});if(_0xb1fd6f){_0x404734['stateRegistry']=_0x404734[_0x35ca('0x22')];_['merge'](_0xb1fd6f,_[_0x35ca('0x26')](_0x404734,[_0x35ca('0x27'),_0x35ca('0x28'),_0x35ca('0x25'),_0x35ca('0x22')]));logger['debug'](_0x35ca('0x29'),util[_0x35ca('0x1b')](_0xb1fd6f,{'showHidden':![],'depth':null}));this[_0x35ca('0x1f')](util[_0x35ca('0x2a')](_0x35ca('0x2b'),_0xb1fd6f[_0x35ca('0x2c')]),'trunk:save',_0xb1fd6f);}}}catch(_0x419d33){logger[_0x35ca('0x17')](_0x35ca('0x23'),util[_0x35ca('0x1b')](_0x419d33,{'showHidden':![],'depth':null}));}};UserReport[_0x35ca('0x1c')]['syncDeviceState']=function(_0xfad35b){try{if(this[_0x35ca('0x1d')](_0xfad35b)){logger[_0x35ca('0x20')](_0x35ca('0x2d'),_0xfad35b[_0x35ca('0x2e')],_0xfad35b[_0x35ca('0x22')]);logger[_0x35ca('0x2f')](_0x35ca('0x30'),util['inspect'](_0xfad35b,{'showHidden':![],'depth':null}));if(this[_0x35ca('0xc')][_0xfad35b[_0x35ca('0x2e')]]){if(!this[_0x35ca('0xc')][_0xfad35b[_0x35ca('0x2e')]][_0x35ca('0x31')]||_0xfad35b[_0x35ca('0x22')][_0x35ca('0x32')]()=='inuse'){this['agents'][_0xfad35b[_0x35ca('0x2e')]][_0x35ca('0x31')]=![];if(this[_0x35ca('0xc')][_0xfad35b[_0x35ca('0x2e')]][_0x35ca('0x22')]!==_0xfad35b['state'][_0x35ca('0x32')]()){this[_0x35ca('0xc')][_0xfad35b['device']][_0x35ca('0x33')]=_[_0x35ca('0x34')](moment()['format']('x'));}this[_0x35ca('0xc')][_0xfad35b['device']]['state']=_0xfad35b[_0x35ca('0x22')][_0x35ca('0x32')]();this[_0x35ca('0xc')][_0xfad35b[_0x35ca('0x2e')]]['updateStatusRealtime'](_0xfad35b);}}else if(this[_0x35ca('0xd')][_0xfad35b[_0x35ca('0x2e')]]){if(this[_0x35ca('0xd')][_0xfad35b[_0x35ca('0x2e')]][_0x35ca('0x22')]!==_0xfad35b[_0x35ca('0x22')][_0x35ca('0x32')]()){this[_0x35ca('0xd')][_0xfad35b[_0x35ca('0x2e')]][_0x35ca('0x33')]=_[_0x35ca('0x34')](moment()['format']('x'));}this[_0x35ca('0xd')][_0xfad35b[_0x35ca('0x2e')]]['state']=_0xfad35b['state'][_0x35ca('0x32')]();logger['debug'](_0x35ca('0x35'),util[_0x35ca('0x1b')](this[_0x35ca('0xd')][_0xfad35b[_0x35ca('0x2e')]],{'showHidden':![],'depth':null}));this[_0x35ca('0x1f')](util[_0x35ca('0x2a')](_0x35ca('0x36'),this[_0x35ca('0xd')][_0xfad35b['device']][_0x35ca('0x2c')]),_0x35ca('0x37'),this['telephones'][_0xfad35b['device']]);}else if(this[_0x35ca('0xb')][_0xfad35b['device']]){if(this[_0x35ca('0xb')][_0xfad35b[_0x35ca('0x2e')]][_0x35ca('0x22')]!==_0xfad35b[_0x35ca('0x22')][_0x35ca('0x32')]()){this[_0x35ca('0xb')][_0xfad35b[_0x35ca('0x2e')]][_0x35ca('0x33')]=_[_0x35ca('0x34')](moment()['format']('x'));}this['trunks'][_0xfad35b['device']][_0x35ca('0x22')]=_0xfad35b[_0x35ca('0x22')][_0x35ca('0x32')]();logger[_0x35ca('0x2f')](_0x35ca('0x38'),util[_0x35ca('0x1b')](this[_0x35ca('0xb')][_0xfad35b[_0x35ca('0x2e')]],{'showHidden':![],'depth':null}));this[_0x35ca('0x1f')](util[_0x35ca('0x2a')](_0x35ca('0x2b'),this['trunks'][_0xfad35b[_0x35ca('0x2e')]]['name']),'trunk:save',this[_0x35ca('0xb')][_0xfad35b[_0x35ca('0x2e')]]);}else if(_[_0x35ca('0x39')](_0xfad35b['device'],_0x35ca('0x3a'))){var _0x83821=_0xfad35b[_0x35ca('0x2e')];var _0x5c632a=_0x83821[_0x35ca('0x3b')](_0x83821[_0x35ca('0x3c')]('/')+0x1,_0x83821[_0x35ca('0x3c')]('@'));var _0x27bc35=_[_0x35ca('0x24')](this[_0x35ca('0xc')],function(_0x37ea70){return _0x37ea70[_0x35ca('0x3d')]==_0x5c632a||_0x37ea70[_0x35ca('0x3e')]==_0x5c632a||_0x37ea70[_0x35ca('0x3f')]==_0x5c632a;});if(_0x27bc35){if(_0x27bc35['state']!==_0xfad35b[_0x35ca('0x22')][_0x35ca('0x32')]()){_0x27bc35[_0x35ca('0x33')]=_['toNumber'](moment()[_0x35ca('0x2a')]('x'));}_0x27bc35['state']=_0xfad35b['state'][_0x35ca('0x32')]();_0x27bc35['local']=!![];_0x27bc35[_0x35ca('0x40')](_0xfad35b);}}}}catch(_0x27a947){logger['error'](_0x35ca('0x30'),util['inspect'](_0x27a947,{'showHidden':![],'depth':null}));}};UserReport[_0x35ca('0x1c')][_0x35ca('0x41')]=function(_0x2c19e2){try{if(this['isNotNull'](_0x2c19e2)&&this[_0x35ca('0x1d')](_0x2c19e2['peerstatus'])){logger['info']('[userReport][peerstatus]\x20peer:%s\x20address:%s\x20status:%s',_0x2c19e2[_0x35ca('0x42')],_0x2c19e2[_0x35ca('0x43')],_0x2c19e2[_0x35ca('0x12')]);logger[_0x35ca('0x2f')](_0x35ca('0x44'),util[_0x35ca('0x1b')](_0x2c19e2,{'showHidden':![],'depth':null}));if(this['agents'][_0x2c19e2[_0x35ca('0x42')]]){if(!this[_0x35ca('0xc')][_0x2c19e2[_0x35ca('0x42')]]['local']||_0x2c19e2[_0x35ca('0x12')][_0x35ca('0x32')]()==_0x35ca('0x45')){this[_0x35ca('0xc')][_0x2c19e2[_0x35ca('0x42')]][_0x35ca('0x31')]=![];this[_0x35ca('0xc')][_0x2c19e2[_0x35ca('0x42')]][_0x35ca('0x46')]=_0x2c19e2[_0x35ca('0x12')][_0x35ca('0x32')]();this['agents'][_0x2c19e2[_0x35ca('0x42')]][_0x35ca('0x43')]=_0x2c19e2[_0x35ca('0x43')];this[_0x35ca('0xc')][_0x2c19e2[_0x35ca('0x42')]][_0x35ca('0x40')](_0x2c19e2);}}else if(this['telephones'][_0x2c19e2[_0x35ca('0x42')]]){this[_0x35ca('0xd')][_0x2c19e2[_0x35ca('0x42')]][_0x35ca('0x46')]=_0x2c19e2[_0x35ca('0x12')][_0x35ca('0x32')]();this[_0x35ca('0xd')][_0x2c19e2[_0x35ca('0x42')]]['address']=_0x2c19e2[_0x35ca('0x43')];logger[_0x35ca('0x2f')](_0x35ca('0x47'),util[_0x35ca('0x1b')](this['telephones'][_0x2c19e2['peer']],{'showHidden':![],'depth':null}));this[_0x35ca('0x1f')](util[_0x35ca('0x2a')](_0x35ca('0x36'),this['telephones'][_0x2c19e2[_0x35ca('0x42')]][_0x35ca('0x2c')]),'telephone:save',this['telephones'][_0x2c19e2[_0x35ca('0x42')]]);}else if(this[_0x35ca('0xb')][_0x2c19e2[_0x35ca('0x42')]]){this[_0x35ca('0xb')][_0x2c19e2[_0x35ca('0x42')]][_0x35ca('0x46')]=_0x2c19e2['peerstatus'][_0x35ca('0x32')]();this['trunks'][_0x2c19e2[_0x35ca('0x42')]][_0x35ca('0x43')]=_0x2c19e2['address'];logger[_0x35ca('0x2f')](_0x35ca('0x48'),util['inspect'](this[_0x35ca('0xb')][_0x2c19e2['peer']],{'showHidden':![],'depth':null}));this['emit'](util[_0x35ca('0x2a')](_0x35ca('0x2b'),this[_0x35ca('0xb')][_0x2c19e2[_0x35ca('0x42')]][_0x35ca('0x2c')]),_0x35ca('0x49'),this['trunks'][_0x2c19e2[_0x35ca('0x42')]]);}}}catch(_0x230da2){logger['error']('[userReport][peerstatus]',util[_0x35ca('0x1b')](_0x230da2,{'showHidden':![],'depth':null}));}};module[_0x35ca('0x4a')]=UserReport;