ba2e8afc727611cb7421ea2bfd686233bb024b93
[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 _0xfb71=['peer','address','registered','status','[userReport][peerstatus]\x20sending\x20telephone:save\x20event:','[userReport][peerstatus]\x20sending\x20trunk:save\x20event:','lodash','util','ioredis','bluebird','../../../config/environment','../ami','redis','localhost','socket.io-emitter','trunks','agents','telephones','registryentry','bind','registry','syncRegistry','devicestatechange','syncDeviceState','peerstatus','syncPeerStatus','syncRealtimeShow','then','catch','error','[userReport][sipshowregistry]','inspect','resolve','actionDeviceStateList','[userReport][devicestatelist]','[userReport][sippeerstatus]','prototype','isNotNull','isUndefined','emit','info','[userReport][registry]\x20registry:%s\x20state:%s','state','debug','[userReport][registry]','username','stateRegistry','merge','event','actionid','format','trunk:%s','name','trunk:save','[userReport][devicestatechange]\x20device:%s\x20state:%s','device','[userReport][devicestatechange]','toLowerCase','local','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][peerstatus]\x20peer:%s\x20address:%s\x20status:%s'];(function(_0x27e811,_0x20137c){var _0x1627fa=function(_0x4498ca){while(--_0x4498ca){_0x27e811['push'](_0x27e811['shift']());}};_0x1627fa(++_0x20137c);}(_0xfb71,0x178));var _0x1fb7=function(_0x2b574a,_0x28283c){_0x2b574a=_0x2b574a-0x0;var _0x560602=_0xfb71[_0x2b574a];return _0x560602;};'use strict';var _=require(_0x1fb7('0x0'));var moment=require('moment');var util=require(_0x1fb7('0x1'));var Redis=require(_0x1fb7('0x2'));var BPromise=require(_0x1fb7('0x3'));var config=require(_0x1fb7('0x4'));var logger=require('../../../config/logger')('ami');var ami=require(_0x1fb7('0x5'));config[_0x1fb7('0x6')]=_['defaults'](config[_0x1fb7('0x6')],{'host':_0x1fb7('0x7'),'port':0x18eb});var io=require(_0x1fb7('0x8'))(new Redis(config[_0x1fb7('0x6')]));function UserReport(_0x3efe32){this['trunks']=_0x3efe32[_0x1fb7('0x9')];this[_0x1fb7('0xa')]=_0x3efe32[_0x1fb7('0xa')];this[_0x1fb7('0xb')]=_0x3efe32[_0x1fb7('0xb')];ami['on'](_0x1fb7('0xc'),this['syncRegistry'][_0x1fb7('0xd')](this));ami['on'](_0x1fb7('0xe'),this[_0x1fb7('0xf')][_0x1fb7('0xd')](this));ami['on'](_0x1fb7('0x10'),this[_0x1fb7('0x11')][_0x1fb7('0xd')](this));ami['on'](_0x1fb7('0x12'),this[_0x1fb7('0x13')][_0x1fb7('0xd')](this));return this[_0x1fb7('0x14')]();}function showSipRegistrations(){Promise['resolve']()[_0x1fb7('0x15')](ami['actionSipShowRegistry']())[_0x1fb7('0x16')](function(_0x35399f){logger[_0x1fb7('0x17')](_0x1fb7('0x18'),util[_0x1fb7('0x19')](_0x35399f,{'showHidden':![],'depth':null}));});}function listDeviceStates(){Promise[_0x1fb7('0x1a')]()[_0x1fb7('0x15')](ami[_0x1fb7('0x1b')]())[_0x1fb7('0x16')](function(_0x1173ec){logger['error'](_0x1fb7('0x1c'),util[_0x1fb7('0x19')](_0x1173ec,{'showHidden':![],'depth':null}));});}function showPeersStatus(){Promise[_0x1fb7('0x1a')]()[_0x1fb7('0x15')](ami['actionSipPeerStatus']())['catch'](function(_0x42a496){logger[_0x1fb7('0x17')](_0x1fb7('0x1d'),util['inspect'](_0x42a496,{'showHidden':![],'depth':null}));});}UserReport[_0x1fb7('0x1e')][_0x1fb7('0x14')]=function(){setInterval(function(){BPromise['resolve']()[_0x1fb7('0x15')](showSipRegistrations())[_0x1fb7('0x15')](listDeviceStates())[_0x1fb7('0x15')](showPeersStatus());},0x32c8);};UserReport[_0x1fb7('0x1e')][_0x1fb7('0x1f')]=function(_0x13fe95){return _0x13fe95!==null&&!_[_0x1fb7('0x20')](_0x13fe95);};UserReport['prototype'][_0x1fb7('0x21')]=function(_0x558823,_0x1a943d,_0x24f851){io['to'](_0x558823)[_0x1fb7('0x21')](_0x1a943d,_0x24f851);};UserReport[_0x1fb7('0x1e')]['syncRegistry']=function(_0x13122f){try{if(this[_0x1fb7('0x1f')](_0x13122f)){logger[_0x1fb7('0x22')](_0x1fb7('0x23'),_0x13122f['username'],_0x13122f[_0x1fb7('0x24')]);logger[_0x1fb7('0x25')](_0x1fb7('0x26'),util['inspect'](_0x13122f,{'showHidden':![],'depth':null}));var _0x5e4c1d=_['find'](this[_0x1fb7('0x9')],{'defaultuser':_0x13122f[_0x1fb7('0x27')]});if(_0x5e4c1d){_0x13122f[_0x1fb7('0x28')]=_0x13122f[_0x1fb7('0x24')];_[_0x1fb7('0x29')](_0x5e4c1d,_['omit'](_0x13122f,[_0x1fb7('0x2a'),_0x1fb7('0x2b'),'username','state']));logger[_0x1fb7('0x25')]('[userReport][registry]\x20sending\x20trunk:save\x20event:',util[_0x1fb7('0x19')](_0x5e4c1d,{'showHidden':![],'depth':null}));this[_0x1fb7('0x21')](util[_0x1fb7('0x2c')](_0x1fb7('0x2d'),_0x5e4c1d[_0x1fb7('0x2e')]),_0x1fb7('0x2f'),_0x5e4c1d);}}}catch(_0x5004cf){logger['error'](_0x1fb7('0x26'),util[_0x1fb7('0x19')](_0x5004cf,{'showHidden':![],'depth':null}));}};UserReport[_0x1fb7('0x1e')][_0x1fb7('0x11')]=function(_0x2035b7){try{if(this[_0x1fb7('0x1f')](_0x2035b7)){logger[_0x1fb7('0x22')](_0x1fb7('0x30'),_0x2035b7[_0x1fb7('0x31')],_0x2035b7[_0x1fb7('0x24')]);logger[_0x1fb7('0x25')](_0x1fb7('0x32'),util['inspect'](_0x2035b7,{'showHidden':![],'depth':null}));if(this['agents'][_0x2035b7[_0x1fb7('0x31')]]){if(!this[_0x1fb7('0xa')][_0x2035b7[_0x1fb7('0x31')]]['local']||_0x2035b7['state'][_0x1fb7('0x33')]()=='inuse'){this[_0x1fb7('0xa')][_0x2035b7['device']][_0x1fb7('0x34')]=![];if(this[_0x1fb7('0xa')][_0x2035b7[_0x1fb7('0x31')]]['state']!==_0x2035b7[_0x1fb7('0x24')][_0x1fb7('0x33')]()){this[_0x1fb7('0xa')][_0x2035b7['device']][_0x1fb7('0x35')]=_[_0x1fb7('0x36')](moment()[_0x1fb7('0x2c')]('x'));}this['agents'][_0x2035b7[_0x1fb7('0x31')]][_0x1fb7('0x24')]=_0x2035b7[_0x1fb7('0x24')][_0x1fb7('0x33')]();this['agents'][_0x2035b7[_0x1fb7('0x31')]][_0x1fb7('0x37')](_0x2035b7);}}else if(this[_0x1fb7('0xb')][_0x2035b7['device']]){if(this['telephones'][_0x2035b7[_0x1fb7('0x31')]]['state']!==_0x2035b7['state'][_0x1fb7('0x33')]()){this[_0x1fb7('0xb')][_0x2035b7[_0x1fb7('0x31')]][_0x1fb7('0x35')]=_[_0x1fb7('0x36')](moment()['format']('x'));}this['telephones'][_0x2035b7['device']][_0x1fb7('0x24')]=_0x2035b7['state'][_0x1fb7('0x33')]();logger[_0x1fb7('0x25')](_0x1fb7('0x38'),util[_0x1fb7('0x19')](this[_0x1fb7('0xb')][_0x2035b7[_0x1fb7('0x31')]],{'showHidden':![],'depth':null}));this['emit'](util['format'](_0x1fb7('0x39'),this[_0x1fb7('0xb')][_0x2035b7['device']]['name']),_0x1fb7('0x3a'),this[_0x1fb7('0xb')][_0x2035b7[_0x1fb7('0x31')]]);}else if(this['trunks'][_0x2035b7[_0x1fb7('0x31')]]){if(this['trunks'][_0x2035b7[_0x1fb7('0x31')]][_0x1fb7('0x24')]!==_0x2035b7[_0x1fb7('0x24')]['toLowerCase']()){this[_0x1fb7('0x9')][_0x2035b7[_0x1fb7('0x31')]][_0x1fb7('0x35')]=_[_0x1fb7('0x36')](moment()[_0x1fb7('0x2c')]('x'));}this[_0x1fb7('0x9')][_0x2035b7[_0x1fb7('0x31')]]['state']=_0x2035b7[_0x1fb7('0x24')]['toLowerCase']();logger[_0x1fb7('0x25')](_0x1fb7('0x3b'),util['inspect'](this['trunks'][_0x2035b7['device']],{'showHidden':![],'depth':null}));this[_0x1fb7('0x21')](util['format']('trunk:%s',this['trunks'][_0x2035b7[_0x1fb7('0x31')]][_0x1fb7('0x2e')]),_0x1fb7('0x2f'),this[_0x1fb7('0x9')][_0x2035b7[_0x1fb7('0x31')]]);}else if(_[_0x1fb7('0x3c')](_0x2035b7[_0x1fb7('0x31')],_0x1fb7('0x3d'))){var _0x5cfefd=_0x2035b7[_0x1fb7('0x31')];var _0x2f0168=_0x5cfefd[_0x1fb7('0x3e')](_0x5cfefd['indexOf']('/')+0x1,_0x5cfefd[_0x1fb7('0x3f')]('@'));var _0x29932a=_['find'](this[_0x1fb7('0xa')],function(_0x4b4564){return _0x4b4564[_0x1fb7('0x40')]==_0x2f0168||_0x4b4564[_0x1fb7('0x41')]==_0x2f0168||_0x4b4564[_0x1fb7('0x42')]==_0x2f0168;});if(_0x29932a){if(_0x29932a[_0x1fb7('0x24')]!==_0x2035b7[_0x1fb7('0x24')][_0x1fb7('0x33')]()){_0x29932a[_0x1fb7('0x35')]=_[_0x1fb7('0x36')](moment()[_0x1fb7('0x2c')]('x'));}_0x29932a[_0x1fb7('0x24')]=_0x2035b7[_0x1fb7('0x24')][_0x1fb7('0x33')]();_0x29932a[_0x1fb7('0x34')]=!![];_0x29932a[_0x1fb7('0x37')](_0x2035b7);}}}}catch(_0x3f578a){logger[_0x1fb7('0x17')](_0x1fb7('0x32'),util['inspect'](_0x3f578a,{'showHidden':![],'depth':null}));}};UserReport[_0x1fb7('0x1e')]['syncPeerStatus']=function(_0x1c5fee){try{if(this[_0x1fb7('0x1f')](_0x1c5fee)&&this[_0x1fb7('0x1f')](_0x1c5fee[_0x1fb7('0x12')])){logger[_0x1fb7('0x22')](_0x1fb7('0x43'),_0x1c5fee[_0x1fb7('0x44')],_0x1c5fee[_0x1fb7('0x45')],_0x1c5fee['peerstatus']);logger[_0x1fb7('0x25')]('[userReport][peerstatus]',util[_0x1fb7('0x19')](_0x1c5fee,{'showHidden':![],'depth':null}));if(this['agents'][_0x1c5fee[_0x1fb7('0x44')]]){if(!this[_0x1fb7('0xa')][_0x1c5fee[_0x1fb7('0x44')]][_0x1fb7('0x34')]||_0x1c5fee[_0x1fb7('0x12')][_0x1fb7('0x33')]()==_0x1fb7('0x46')){this[_0x1fb7('0xa')][_0x1c5fee[_0x1fb7('0x44')]][_0x1fb7('0x34')]=![];this['agents'][_0x1c5fee['peer']][_0x1fb7('0x47')]=_0x1c5fee[_0x1fb7('0x12')][_0x1fb7('0x33')]();this['agents'][_0x1c5fee[_0x1fb7('0x44')]][_0x1fb7('0x45')]=_0x1c5fee[_0x1fb7('0x45')];this[_0x1fb7('0xa')][_0x1c5fee[_0x1fb7('0x44')]][_0x1fb7('0x37')](_0x1c5fee);}}else if(this['telephones'][_0x1c5fee[_0x1fb7('0x44')]]){this['telephones'][_0x1c5fee['peer']][_0x1fb7('0x47')]=_0x1c5fee[_0x1fb7('0x12')][_0x1fb7('0x33')]();this[_0x1fb7('0xb')][_0x1c5fee[_0x1fb7('0x44')]][_0x1fb7('0x45')]=_0x1c5fee[_0x1fb7('0x45')];logger['debug'](_0x1fb7('0x48'),util[_0x1fb7('0x19')](this[_0x1fb7('0xb')][_0x1c5fee['peer']],{'showHidden':![],'depth':null}));this[_0x1fb7('0x21')](util[_0x1fb7('0x2c')]('telephone:%s',this[_0x1fb7('0xb')][_0x1c5fee[_0x1fb7('0x44')]][_0x1fb7('0x2e')]),'telephone:save',this[_0x1fb7('0xb')][_0x1c5fee[_0x1fb7('0x44')]]);}else if(this[_0x1fb7('0x9')][_0x1c5fee[_0x1fb7('0x44')]]){this[_0x1fb7('0x9')][_0x1c5fee[_0x1fb7('0x44')]]['status']=_0x1c5fee[_0x1fb7('0x12')][_0x1fb7('0x33')]();this['trunks'][_0x1c5fee['peer']][_0x1fb7('0x45')]=_0x1c5fee[_0x1fb7('0x45')];logger[_0x1fb7('0x25')](_0x1fb7('0x49'),util[_0x1fb7('0x19')](this[_0x1fb7('0x9')][_0x1c5fee['peer']],{'showHidden':![],'depth':null}));this['emit'](util['format'](_0x1fb7('0x2d'),this['trunks'][_0x1c5fee['peer']][_0x1fb7('0x2e')]),'trunk:save',this[_0x1fb7('0x9')][_0x1c5fee[_0x1fb7('0x44')]]);}}}catch(_0x1a4ab4){logger[_0x1fb7('0x17')]('[userReport][peerstatus]',util[_0x1fb7('0x19')](_0x1a4ab4,{'showHidden':![],'depth':null}));}};module['exports']=UserReport;