d0f3e278ea8cad54e74f1c1a31b0018f02976913
[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 _0xd3e3=['moment','util','ioredis','../../../config/environment','../../../config/logger','../ami','redis','localhost','socket.io-emitter','trunks','agents','telephones','registryentry','syncRegistry','bind','devicestatechange','syncDeviceState','peerstatus','syncRealtimeShow','then','actionSipShowRegistry','catch','error','[userReport][sipshowregistry]','inspect','resolve','actionSipPeerStatus','prototype','isNotNull','emit','[userReport][registry]\x20registry:%s\x20state:%s','username','state','debug','[userReport][registry]','find','stateRegistry','merge','omit','event','actionid','[userReport][registry]\x20sending\x20trunk:save\x20event:','trunk:%s','name','[userReport][devicestatechange]\x20device:%s\x20state:%s','device','[userReport][devicestatechange]','toLowerCase','updateStatusRealtime','format','[userReport][devicestatechange]\x20sending\x20telephone:save\x20event:','telephone:%s','telephone:save','toNumber','[userReport][devicestatechange]\x20sending\x20trunk:save\x20event:','trunk:save','startsWith','Local','substring','indexOf','mobile','accountcode','stateTime','local','syncPeerStatus','info','[userReport][peerstatus]\x20peer:%s\x20address:%s\x20status:%s','address','peer','registered','status','[userReport][peerstatus]\x20sending\x20telephone:save\x20event:','exports','lodash'];(function(_0x460bd8,_0x423eb6){var _0x1ca4dd=function(_0x13bc9f){while(--_0x13bc9f){_0x460bd8['push'](_0x460bd8['shift']());}};_0x1ca4dd(++_0x423eb6);}(_0xd3e3,0xdd));var _0x3d3e=function(_0xb9e551,_0x4a1a1e){_0xb9e551=_0xb9e551-0x0;var _0x30c40a=_0xd3e3[_0xb9e551];return _0x30c40a;};'use strict';var _=require(_0x3d3e('0x0'));var moment=require(_0x3d3e('0x1'));var util=require(_0x3d3e('0x2'));var Redis=require(_0x3d3e('0x3'));var BPromise=require('bluebird');var config=require(_0x3d3e('0x4'));var logger=require(_0x3d3e('0x5'))('ami');var ami=require(_0x3d3e('0x6'));config[_0x3d3e('0x7')]=_['defaults'](config[_0x3d3e('0x7')],{'host':_0x3d3e('0x8'),'port':0x18eb});var io=require(_0x3d3e('0x9'))(new Redis(config[_0x3d3e('0x7')]));function UserReport(_0xbf673e){this['trunks']=_0xbf673e[_0x3d3e('0xa')];this[_0x3d3e('0xb')]=_0xbf673e[_0x3d3e('0xb')];this['telephones']=_0xbf673e[_0x3d3e('0xc')];ami['on'](_0x3d3e('0xd'),this[_0x3d3e('0xe')][_0x3d3e('0xf')](this));ami['on']('registry',this[_0x3d3e('0xe')]['bind'](this));ami['on'](_0x3d3e('0x10'),this[_0x3d3e('0x11')][_0x3d3e('0xf')](this));ami['on'](_0x3d3e('0x12'),this['syncPeerStatus'][_0x3d3e('0xf')](this));return this[_0x3d3e('0x13')]();}function showSipRegistrations(){Promise['resolve']()[_0x3d3e('0x14')](ami[_0x3d3e('0x15')]())[_0x3d3e('0x16')](function(_0xa72f73){logger[_0x3d3e('0x17')](_0x3d3e('0x18'),util[_0x3d3e('0x19')](_0xa72f73,{'showHidden':![],'depth':null}));});}function listDeviceStates(){Promise[_0x3d3e('0x1a')]()[_0x3d3e('0x14')](ami['actionDeviceStateList']())[_0x3d3e('0x16')](function(_0x2e664b){logger[_0x3d3e('0x17')]('[userReport][devicestatelist]',util['inspect'](_0x2e664b,{'showHidden':![],'depth':null}));});}function showPeersStatus(){Promise[_0x3d3e('0x1a')]()['then'](ami[_0x3d3e('0x1b')]())[_0x3d3e('0x16')](function(_0x317242){logger[_0x3d3e('0x17')]('[userReport][sippeerstatus]',util['inspect'](_0x317242,{'showHidden':![],'depth':null}));});}UserReport[_0x3d3e('0x1c')][_0x3d3e('0x13')]=function(){setInterval(function(){BPromise['resolve']()[_0x3d3e('0x14')](showSipRegistrations())[_0x3d3e('0x14')](listDeviceStates())[_0x3d3e('0x14')](showPeersStatus());},0x32c8);};UserReport[_0x3d3e('0x1c')][_0x3d3e('0x1d')]=function(_0x532987){return _0x532987!==null&&!_['isUndefined'](_0x532987);};UserReport[_0x3d3e('0x1c')][_0x3d3e('0x1e')]=function(_0x10314e,_0x326c3d,_0x434949){io['to'](_0x10314e)[_0x3d3e('0x1e')](_0x326c3d,_0x434949);};UserReport[_0x3d3e('0x1c')][_0x3d3e('0xe')]=function(_0x4f5377){try{if(this['isNotNull'](_0x4f5377)){logger['info'](_0x3d3e('0x1f'),_0x4f5377[_0x3d3e('0x20')],_0x4f5377[_0x3d3e('0x21')]);logger[_0x3d3e('0x22')](_0x3d3e('0x23'),util[_0x3d3e('0x19')](_0x4f5377,{'showHidden':![],'depth':null}));var _0x42bd39=_[_0x3d3e('0x24')](this['trunks'],{'registry':_0x4f5377[_0x3d3e('0x20')]});if(_0x42bd39){_0x4f5377[_0x3d3e('0x25')]=_0x4f5377[_0x3d3e('0x21')];_[_0x3d3e('0x26')](_0x42bd39,_[_0x3d3e('0x27')](_0x4f5377,[_0x3d3e('0x28'),_0x3d3e('0x29'),'username',_0x3d3e('0x21')]));logger[_0x3d3e('0x22')](_0x3d3e('0x2a'),util[_0x3d3e('0x19')](_0x42bd39,{'showHidden':![],'depth':null}));this[_0x3d3e('0x1e')](util['format'](_0x3d3e('0x2b'),_0x42bd39[_0x3d3e('0x2c')]),'trunk:save',_0x42bd39);}}}catch(_0xafdb65){logger[_0x3d3e('0x17')](_0x3d3e('0x23'),util[_0x3d3e('0x19')](_0xafdb65,{'showHidden':![],'depth':null}));}};UserReport[_0x3d3e('0x1c')]['syncDeviceState']=function(_0x1a49b3){try{if(this['isNotNull'](_0x1a49b3)){logger['info'](_0x3d3e('0x2d'),_0x1a49b3[_0x3d3e('0x2e')],_0x1a49b3[_0x3d3e('0x21')]);logger[_0x3d3e('0x22')](_0x3d3e('0x2f'),util[_0x3d3e('0x19')](_0x1a49b3,{'showHidden':![],'depth':null}));if(this['agents'][_0x1a49b3[_0x3d3e('0x2e')]]){if(!this[_0x3d3e('0xb')][_0x1a49b3[_0x3d3e('0x2e')]]['local']||_0x1a49b3[_0x3d3e('0x21')][_0x3d3e('0x30')]()=='inuse'){this[_0x3d3e('0xb')][_0x1a49b3['device']]['local']=![];if(this['agents'][_0x1a49b3[_0x3d3e('0x2e')]][_0x3d3e('0x21')]!==_0x1a49b3['state']['toLowerCase']()){this[_0x3d3e('0xb')][_0x1a49b3[_0x3d3e('0x2e')]]['stateTime']=_['toNumber'](moment()['format']('x'));}this[_0x3d3e('0xb')][_0x1a49b3['device']][_0x3d3e('0x21')]=_0x1a49b3[_0x3d3e('0x21')][_0x3d3e('0x30')]();this[_0x3d3e('0xb')][_0x1a49b3['device']][_0x3d3e('0x31')](_0x1a49b3);}}else if(this[_0x3d3e('0xc')][_0x1a49b3[_0x3d3e('0x2e')]]){if(this[_0x3d3e('0xc')][_0x1a49b3[_0x3d3e('0x2e')]]['state']!==_0x1a49b3[_0x3d3e('0x21')][_0x3d3e('0x30')]()){this[_0x3d3e('0xc')][_0x1a49b3[_0x3d3e('0x2e')]]['stateTime']=_['toNumber'](moment()[_0x3d3e('0x32')]('x'));}this[_0x3d3e('0xc')][_0x1a49b3['device']][_0x3d3e('0x21')]=_0x1a49b3['state'][_0x3d3e('0x30')]();logger[_0x3d3e('0x22')](_0x3d3e('0x33'),util[_0x3d3e('0x19')](this['telephones'][_0x1a49b3[_0x3d3e('0x2e')]],{'showHidden':![],'depth':null}));this[_0x3d3e('0x1e')](util[_0x3d3e('0x32')](_0x3d3e('0x34'),this['telephones'][_0x1a49b3[_0x3d3e('0x2e')]][_0x3d3e('0x2c')]),_0x3d3e('0x35'),this[_0x3d3e('0xc')][_0x1a49b3[_0x3d3e('0x2e')]]);}else if(this[_0x3d3e('0xa')][_0x1a49b3[_0x3d3e('0x2e')]]){if(this['trunks'][_0x1a49b3[_0x3d3e('0x2e')]]['state']!==_0x1a49b3[_0x3d3e('0x21')][_0x3d3e('0x30')]()){this[_0x3d3e('0xa')][_0x1a49b3[_0x3d3e('0x2e')]]['stateTime']=_[_0x3d3e('0x36')](moment()['format']('x'));}this[_0x3d3e('0xa')][_0x1a49b3[_0x3d3e('0x2e')]]['state']=_0x1a49b3['state'][_0x3d3e('0x30')]();logger[_0x3d3e('0x22')](_0x3d3e('0x37'),util['inspect'](this[_0x3d3e('0xa')][_0x1a49b3['device']],{'showHidden':![],'depth':null}));this[_0x3d3e('0x1e')](util[_0x3d3e('0x32')]('trunk:%s',this['trunks'][_0x1a49b3['device']][_0x3d3e('0x2c')]),_0x3d3e('0x38'),this[_0x3d3e('0xa')][_0x1a49b3[_0x3d3e('0x2e')]]);}else if(_[_0x3d3e('0x39')](_0x1a49b3['device'],_0x3d3e('0x3a'))){var _0x1778b0=_0x1a49b3[_0x3d3e('0x2e')];var _0x188dd8=_0x1778b0[_0x3d3e('0x3b')](_0x1778b0[_0x3d3e('0x3c')]('/')+0x1,_0x1778b0[_0x3d3e('0x3c')]('@'));var _0xe599e=_['find'](this[_0x3d3e('0xb')],function(_0x25d58e){return _0x25d58e[_0x3d3e('0x3d')]==_0x188dd8||_0x25d58e['phone']==_0x188dd8||_0x25d58e[_0x3d3e('0x3e')]==_0x188dd8;});if(_0xe599e){if(_0xe599e['state']!==_0x1a49b3[_0x3d3e('0x21')]['toLowerCase']()){_0xe599e[_0x3d3e('0x3f')]=_[_0x3d3e('0x36')](moment()['format']('x'));}_0xe599e[_0x3d3e('0x21')]=_0x1a49b3[_0x3d3e('0x21')][_0x3d3e('0x30')]();_0xe599e[_0x3d3e('0x40')]=!![];_0xe599e[_0x3d3e('0x31')](_0x1a49b3);}}}}catch(_0x263013){logger[_0x3d3e('0x17')]('[userReport][devicestatechange]',util[_0x3d3e('0x19')](_0x263013,{'showHidden':![],'depth':null}));}};UserReport[_0x3d3e('0x1c')][_0x3d3e('0x41')]=function(_0x55f61d){try{if(this['isNotNull'](_0x55f61d)&&this['isNotNull'](_0x55f61d[_0x3d3e('0x12')])){logger[_0x3d3e('0x42')](_0x3d3e('0x43'),_0x55f61d['peer'],_0x55f61d[_0x3d3e('0x44')],_0x55f61d['peerstatus']);logger[_0x3d3e('0x22')]('[userReport][peerstatus]',util[_0x3d3e('0x19')](_0x55f61d,{'showHidden':![],'depth':null}));if(this[_0x3d3e('0xb')][_0x55f61d[_0x3d3e('0x45')]]){if(!this[_0x3d3e('0xb')][_0x55f61d[_0x3d3e('0x45')]]['local']||_0x55f61d[_0x3d3e('0x12')][_0x3d3e('0x30')]()==_0x3d3e('0x46')){this[_0x3d3e('0xb')][_0x55f61d[_0x3d3e('0x45')]][_0x3d3e('0x40')]=![];this[_0x3d3e('0xb')][_0x55f61d[_0x3d3e('0x45')]]['status']=_0x55f61d[_0x3d3e('0x12')][_0x3d3e('0x30')]();this[_0x3d3e('0xb')][_0x55f61d[_0x3d3e('0x45')]][_0x3d3e('0x44')]=_0x55f61d['address'];this['agents'][_0x55f61d[_0x3d3e('0x45')]][_0x3d3e('0x31')](_0x55f61d);}}else if(this[_0x3d3e('0xc')][_0x55f61d[_0x3d3e('0x45')]]){this[_0x3d3e('0xc')][_0x55f61d[_0x3d3e('0x45')]][_0x3d3e('0x47')]=_0x55f61d[_0x3d3e('0x12')][_0x3d3e('0x30')]();this[_0x3d3e('0xc')][_0x55f61d[_0x3d3e('0x45')]][_0x3d3e('0x44')]=_0x55f61d['address'];logger[_0x3d3e('0x22')](_0x3d3e('0x48'),util['inspect'](this[_0x3d3e('0xc')][_0x55f61d[_0x3d3e('0x45')]],{'showHidden':![],'depth':null}));this['emit'](util[_0x3d3e('0x32')](_0x3d3e('0x34'),this[_0x3d3e('0xc')][_0x55f61d[_0x3d3e('0x45')]][_0x3d3e('0x2c')]),'telephone:save',this[_0x3d3e('0xc')][_0x55f61d['peer']]);}else if(this[_0x3d3e('0xa')][_0x55f61d[_0x3d3e('0x45')]]){this['trunks'][_0x55f61d[_0x3d3e('0x45')]][_0x3d3e('0x47')]=_0x55f61d[_0x3d3e('0x12')][_0x3d3e('0x30')]();this[_0x3d3e('0xa')][_0x55f61d[_0x3d3e('0x45')]][_0x3d3e('0x44')]=_0x55f61d['address'];logger[_0x3d3e('0x22')]('[userReport][peerstatus]\x20sending\x20trunk:save\x20event:',util['inspect'](this[_0x3d3e('0xa')][_0x55f61d[_0x3d3e('0x45')]],{'showHidden':![],'depth':null}));this[_0x3d3e('0x1e')](util[_0x3d3e('0x32')]('trunk:%s',this[_0x3d3e('0xa')][_0x55f61d[_0x3d3e('0x45')]]['name']),_0x3d3e('0x38'),this[_0x3d3e('0xa')][_0x55f61d['peer']]);}}}catch(_0x287ecc){logger[_0x3d3e('0x17')]('[userReport][peerstatus]',util['inspect'](_0x287ecc,{'showHidden':![],'depth':null}));}};module[_0x3d3e('0x49')]=UserReport;