3e1387507e0b2662bb6c0a6bc72f3ee97081e7f5
[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 _0xe3de=['inspect','actionDeviceStateList','catch','[userReport][devicestatelist]','actionSipPeerStatus','[userReport][sippeerstatus]','prototype','isNotNull','emit','info','[userReport][registry]\x20registry:%s\x20state:%s','state','debug','[userReport][registry]','find','username','merge','omit','event','actionid','trunk:%s','name','trunk:save','syncDeviceState','[userReport][devicestatechange]\x20device:%s\x20state:%s','device','[userReport][devicestatechange]','local','toLowerCase','toNumber','format','updateStatusRealtime','stateTime','[userReport][devicestatechange]\x20sending\x20telephone:save\x20event:','telephone:%s','telephone:save','[userReport][devicestatechange]\x20sending\x20trunk:save\x20event:','startsWith','substring','indexOf','mobile','phone','peerstatus','[userReport][peerstatus]\x20peer:%s\x20address:%s\x20status:%s','address','peer','registered','status','[userReport][peerstatus]\x20sending\x20telephone:save\x20event:','[userReport][peerstatus]\x20sending\x20trunk:save\x20event:','lodash','moment','util','ioredis','bluebird','../../../config/environment','ami','../ami','redis','defaults','localhost','socket.io-emitter','trunks','agents','telephones','registryentry','syncRegistry','bind','registry','devicestatechange','syncPeerStatus','syncRealtimeShow','resolve','then','error'];(function(_0x5b644e,_0x2e5e07){var _0x49c6bf=function(_0x3032d9){while(--_0x3032d9){_0x5b644e['push'](_0x5b644e['shift']());}};_0x49c6bf(++_0x2e5e07);}(_0xe3de,0x7d));var _0xee3d=function(_0x2f5ac5,_0x1ee939){_0x2f5ac5=_0x2f5ac5-0x0;var _0x37c9a8=_0xe3de[_0x2f5ac5];return _0x37c9a8;};'use strict';var _=require(_0xee3d('0x0'));var moment=require(_0xee3d('0x1'));var util=require(_0xee3d('0x2'));var Redis=require(_0xee3d('0x3'));var BPromise=require(_0xee3d('0x4'));var config=require(_0xee3d('0x5'));var logger=require('../../../config/logger')(_0xee3d('0x6'));var ami=require(_0xee3d('0x7'));config[_0xee3d('0x8')]=_[_0xee3d('0x9')](config[_0xee3d('0x8')],{'host':_0xee3d('0xa'),'port':0x18eb});var io=require(_0xee3d('0xb'))(new Redis(config[_0xee3d('0x8')]));function UserReport(_0x21e883){this[_0xee3d('0xc')]=_0x21e883[_0xee3d('0xc')];this[_0xee3d('0xd')]=_0x21e883[_0xee3d('0xd')];this[_0xee3d('0xe')]=_0x21e883['telephones'];ami['on'](_0xee3d('0xf'),this[_0xee3d('0x10')][_0xee3d('0x11')](this));ami['on'](_0xee3d('0x12'),this[_0xee3d('0x10')][_0xee3d('0x11')](this));ami['on'](_0xee3d('0x13'),this['syncDeviceState'][_0xee3d('0x11')](this));ami['on']('peerstatus',this[_0xee3d('0x14')][_0xee3d('0x11')](this));return this[_0xee3d('0x15')]();}function showSipRegistrations(){Promise[_0xee3d('0x16')]()[_0xee3d('0x17')](ami['actionSipShowRegistry']())['catch'](function(_0x1fc75e){logger[_0xee3d('0x18')]('[userReport][sipshowregistry]',util[_0xee3d('0x19')](_0x1fc75e,{'showHidden':![],'depth':null}));});}function listDeviceStates(){Promise['resolve']()[_0xee3d('0x17')](ami[_0xee3d('0x1a')]())[_0xee3d('0x1b')](function(_0x368b08){logger[_0xee3d('0x18')](_0xee3d('0x1c'),util[_0xee3d('0x19')](_0x368b08,{'showHidden':![],'depth':null}));});}function showPeersStatus(){Promise[_0xee3d('0x16')]()[_0xee3d('0x17')](ami[_0xee3d('0x1d')]())['catch'](function(_0x55b173){logger[_0xee3d('0x18')](_0xee3d('0x1e'),util[_0xee3d('0x19')](_0x55b173,{'showHidden':![],'depth':null}));});}UserReport[_0xee3d('0x1f')]['syncRealtimeShow']=function(){setInterval(function(){BPromise[_0xee3d('0x16')]()[_0xee3d('0x17')](showSipRegistrations())[_0xee3d('0x17')](listDeviceStates())[_0xee3d('0x17')](showPeersStatus());},0x32c8);};UserReport[_0xee3d('0x1f')][_0xee3d('0x20')]=function(_0x2bf522){return _0x2bf522!==null&&!_['isUndefined'](_0x2bf522);};UserReport[_0xee3d('0x1f')][_0xee3d('0x21')]=function(_0x2ce185,_0x16e0d9,_0x47c3b1){io['to'](_0x2ce185)[_0xee3d('0x21')](_0x16e0d9,_0x47c3b1);};UserReport[_0xee3d('0x1f')][_0xee3d('0x10')]=function(_0x24d57e){try{if(this[_0xee3d('0x20')](_0x24d57e)){logger[_0xee3d('0x22')](_0xee3d('0x23'),_0x24d57e['username'],_0x24d57e[_0xee3d('0x24')]);logger[_0xee3d('0x25')](_0xee3d('0x26'),util[_0xee3d('0x19')](_0x24d57e,{'showHidden':![],'depth':null}));var _0x37f257=_[_0xee3d('0x27')](this[_0xee3d('0xc')],{'defaultuser':_0x24d57e[_0xee3d('0x28')]});if(_0x37f257){_0x24d57e['stateRegistry']=_0x24d57e[_0xee3d('0x24')];_[_0xee3d('0x29')](_0x37f257,_[_0xee3d('0x2a')](_0x24d57e,[_0xee3d('0x2b'),_0xee3d('0x2c'),_0xee3d('0x28'),_0xee3d('0x24')]));logger[_0xee3d('0x25')]('[userReport][registry]\x20sending\x20trunk:save\x20event:',util[_0xee3d('0x19')](_0x37f257,{'showHidden':![],'depth':null}));this['emit'](util['format'](_0xee3d('0x2d'),_0x37f257[_0xee3d('0x2e')]),_0xee3d('0x2f'),_0x37f257);}}}catch(_0x4a0a01){logger[_0xee3d('0x18')](_0xee3d('0x26'),util[_0xee3d('0x19')](_0x4a0a01,{'showHidden':![],'depth':null}));}};UserReport[_0xee3d('0x1f')][_0xee3d('0x30')]=function(_0x3c6a72){try{if(this['isNotNull'](_0x3c6a72)){logger[_0xee3d('0x22')](_0xee3d('0x31'),_0x3c6a72[_0xee3d('0x32')],_0x3c6a72[_0xee3d('0x24')]);logger[_0xee3d('0x25')](_0xee3d('0x33'),util[_0xee3d('0x19')](_0x3c6a72,{'showHidden':![],'depth':null}));if(this[_0xee3d('0xd')][_0x3c6a72[_0xee3d('0x32')]]){if(!this[_0xee3d('0xd')][_0x3c6a72[_0xee3d('0x32')]][_0xee3d('0x34')]||_0x3c6a72[_0xee3d('0x24')][_0xee3d('0x35')]()=='inuse'){this[_0xee3d('0xd')][_0x3c6a72[_0xee3d('0x32')]][_0xee3d('0x34')]=![];if(this['agents'][_0x3c6a72[_0xee3d('0x32')]][_0xee3d('0x24')]!==_0x3c6a72[_0xee3d('0x24')][_0xee3d('0x35')]()){this['agents'][_0x3c6a72['device']]['stateTime']=_[_0xee3d('0x36')](moment()[_0xee3d('0x37')]('x'));}this[_0xee3d('0xd')][_0x3c6a72[_0xee3d('0x32')]][_0xee3d('0x24')]=_0x3c6a72[_0xee3d('0x24')]['toLowerCase']();this[_0xee3d('0xd')][_0x3c6a72[_0xee3d('0x32')]][_0xee3d('0x38')](_0x3c6a72);}}else if(this[_0xee3d('0xe')][_0x3c6a72[_0xee3d('0x32')]]){if(this[_0xee3d('0xe')][_0x3c6a72[_0xee3d('0x32')]][_0xee3d('0x24')]!==_0x3c6a72['state']['toLowerCase']()){this[_0xee3d('0xe')][_0x3c6a72[_0xee3d('0x32')]][_0xee3d('0x39')]=_[_0xee3d('0x36')](moment()[_0xee3d('0x37')]('x'));}this['telephones'][_0x3c6a72[_0xee3d('0x32')]][_0xee3d('0x24')]=_0x3c6a72['state'][_0xee3d('0x35')]();logger[_0xee3d('0x25')](_0xee3d('0x3a'),util['inspect'](this['telephones'][_0x3c6a72[_0xee3d('0x32')]],{'showHidden':![],'depth':null}));this['emit'](util['format'](_0xee3d('0x3b'),this[_0xee3d('0xe')][_0x3c6a72['device']][_0xee3d('0x2e')]),_0xee3d('0x3c'),this[_0xee3d('0xe')][_0x3c6a72[_0xee3d('0x32')]]);}else if(this['trunks'][_0x3c6a72['device']]){if(this['trunks'][_0x3c6a72['device']]['state']!==_0x3c6a72[_0xee3d('0x24')][_0xee3d('0x35')]()){this[_0xee3d('0xc')][_0x3c6a72[_0xee3d('0x32')]][_0xee3d('0x39')]=_[_0xee3d('0x36')](moment()[_0xee3d('0x37')]('x'));}this['trunks'][_0x3c6a72[_0xee3d('0x32')]][_0xee3d('0x24')]=_0x3c6a72['state'][_0xee3d('0x35')]();logger[_0xee3d('0x25')](_0xee3d('0x3d'),util[_0xee3d('0x19')](this['trunks'][_0x3c6a72[_0xee3d('0x32')]],{'showHidden':![],'depth':null}));this[_0xee3d('0x21')](util[_0xee3d('0x37')]('trunk:%s',this[_0xee3d('0xc')][_0x3c6a72['device']]['name']),_0xee3d('0x2f'),this['trunks'][_0x3c6a72[_0xee3d('0x32')]]);}else if(_[_0xee3d('0x3e')](_0x3c6a72['device'],'Local')){var _0x5aa9e6=_0x3c6a72[_0xee3d('0x32')];var _0x1d2e6d=_0x5aa9e6[_0xee3d('0x3f')](_0x5aa9e6[_0xee3d('0x40')]('/')+0x1,_0x5aa9e6['indexOf']('@'));var _0x2f4a94=_['find'](this[_0xee3d('0xd')],function(_0x473d2b){return _0x473d2b[_0xee3d('0x41')]==_0x1d2e6d||_0x473d2b[_0xee3d('0x42')]==_0x1d2e6d||_0x473d2b['accountcode']==_0x1d2e6d;});if(_0x2f4a94){if(_0x2f4a94[_0xee3d('0x24')]!==_0x3c6a72[_0xee3d('0x24')][_0xee3d('0x35')]()){_0x2f4a94['stateTime']=_[_0xee3d('0x36')](moment()[_0xee3d('0x37')]('x'));}_0x2f4a94[_0xee3d('0x24')]=_0x3c6a72[_0xee3d('0x24')]['toLowerCase']();_0x2f4a94[_0xee3d('0x34')]=!![];_0x2f4a94['updateStatusRealtime'](_0x3c6a72);}}}}catch(_0x5aed17){logger[_0xee3d('0x18')](_0xee3d('0x33'),util[_0xee3d('0x19')](_0x5aed17,{'showHidden':![],'depth':null}));}};UserReport['prototype'][_0xee3d('0x14')]=function(_0x18bce9){try{if(this[_0xee3d('0x20')](_0x18bce9)&&this[_0xee3d('0x20')](_0x18bce9[_0xee3d('0x43')])){logger[_0xee3d('0x22')](_0xee3d('0x44'),_0x18bce9['peer'],_0x18bce9[_0xee3d('0x45')],_0x18bce9['peerstatus']);logger['debug']('[userReport][peerstatus]',util[_0xee3d('0x19')](_0x18bce9,{'showHidden':![],'depth':null}));if(this[_0xee3d('0xd')][_0x18bce9[_0xee3d('0x46')]]){if(!this['agents'][_0x18bce9[_0xee3d('0x46')]]['local']||_0x18bce9[_0xee3d('0x43')][_0xee3d('0x35')]()==_0xee3d('0x47')){this[_0xee3d('0xd')][_0x18bce9[_0xee3d('0x46')]][_0xee3d('0x34')]=![];this[_0xee3d('0xd')][_0x18bce9[_0xee3d('0x46')]][_0xee3d('0x48')]=_0x18bce9[_0xee3d('0x43')][_0xee3d('0x35')]();this[_0xee3d('0xd')][_0x18bce9['peer']][_0xee3d('0x45')]=_0x18bce9[_0xee3d('0x45')];this[_0xee3d('0xd')][_0x18bce9[_0xee3d('0x46')]][_0xee3d('0x38')](_0x18bce9);}}else if(this[_0xee3d('0xe')][_0x18bce9[_0xee3d('0x46')]]){this[_0xee3d('0xe')][_0x18bce9[_0xee3d('0x46')]]['status']=_0x18bce9[_0xee3d('0x43')]['toLowerCase']();this['telephones'][_0x18bce9['peer']]['address']=_0x18bce9[_0xee3d('0x45')];logger[_0xee3d('0x25')](_0xee3d('0x49'),util['inspect'](this['telephones'][_0x18bce9[_0xee3d('0x46')]],{'showHidden':![],'depth':null}));this[_0xee3d('0x21')](util['format'](_0xee3d('0x3b'),this[_0xee3d('0xe')][_0x18bce9[_0xee3d('0x46')]]['name']),_0xee3d('0x3c'),this[_0xee3d('0xe')][_0x18bce9[_0xee3d('0x46')]]);}else if(this[_0xee3d('0xc')][_0x18bce9[_0xee3d('0x46')]]){this['trunks'][_0x18bce9[_0xee3d('0x46')]][_0xee3d('0x48')]=_0x18bce9[_0xee3d('0x43')]['toLowerCase']();this[_0xee3d('0xc')][_0x18bce9[_0xee3d('0x46')]][_0xee3d('0x45')]=_0x18bce9[_0xee3d('0x45')];logger[_0xee3d('0x25')](_0xee3d('0x4a'),util['inspect'](this[_0xee3d('0xc')][_0x18bce9['peer']],{'showHidden':![],'depth':null}));this[_0xee3d('0x21')](util[_0xee3d('0x37')](_0xee3d('0x2d'),this[_0xee3d('0xc')][_0x18bce9[_0xee3d('0x46')]][_0xee3d('0x2e')]),_0xee3d('0x2f'),this[_0xee3d('0xc')][_0x18bce9['peer']]);}}}catch(_0x18684a){logger[_0xee3d('0x18')]('[userReport][peerstatus]',util[_0xee3d('0x19')](_0x18684a,{'showHidden':![],'depth':null}));}};module['exports']=UserReport;