Built motion from commit (unavailable).|2.5.26
[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 _0x0e26=['[userReport][registry]\x20sending\x20trunk:save\x20event:','name','trunk:save','info','[userReport][devicestatechange]\x20device:%s\x20state:%s','device','local','toLowerCase','inuse','stateTime','format','toNumber','[userReport][devicestatechange]\x20sending\x20telephone:save\x20event:','telephone:%s','telephone:save','[userReport][devicestatechange]\x20sending\x20trunk:save\x20event:','trunk:%s','Local','substring','indexOf','phone','accountcode','[userReport][devicestatechange]','[userReport][peerstatus]\x20peer:%s\x20address:%s\x20status:%s','peer','address','[userReport][peerstatus]','status','updateStatusRealtime','[userReport][peerstatus]\x20sending\x20trunk:save\x20event:','exports','moment','util','bluebird','../../../config/environment','../../../config/logger','ami','../ami','redis','defaults','localhost','socket.io-emitter','trunks','agents','telephones','registryentry','syncRegistry','bind','devicestatechange','syncDeviceState','peerstatus','syncPeerStatus','actionSipShowRegistry','error','[userReport][sipshowregistry]','resolve','then','actionDeviceStateList','[userReport][devicestatelist]','inspect','actionSipPeerStatus','catch','[userReport][sippeerstatus]','prototype','isNotNull','isUndefined','emit','username','state','[userReport][registry]','find','merge','omit','event','actionid','debug'];(function(_0xfae23b,_0x2be4ba){var _0x200640=function(_0x4ae258){while(--_0x4ae258){_0xfae23b['push'](_0xfae23b['shift']());}};_0x200640(++_0x2be4ba);}(_0x0e26,0x19b));var _0x60e2=function(_0x37a15e,_0x59bd6a){_0x37a15e=_0x37a15e-0x0;var _0x376dda=_0x0e26[_0x37a15e];return _0x376dda;};'use strict';var _=require('lodash');var moment=require(_0x60e2('0x0'));var util=require(_0x60e2('0x1'));var Redis=require('ioredis');var BPromise=require(_0x60e2('0x2'));var config=require(_0x60e2('0x3'));var logger=require(_0x60e2('0x4'))(_0x60e2('0x5'));var ami=require(_0x60e2('0x6'));config[_0x60e2('0x7')]=_[_0x60e2('0x8')](config['redis'],{'host':_0x60e2('0x9'),'port':0x18eb});var io=require(_0x60e2('0xa'))(new Redis(config[_0x60e2('0x7')]));function UserReport(_0x36bf92){this[_0x60e2('0xb')]=_0x36bf92[_0x60e2('0xb')];this[_0x60e2('0xc')]=_0x36bf92[_0x60e2('0xc')];this[_0x60e2('0xd')]=_0x36bf92[_0x60e2('0xd')];ami['on'](_0x60e2('0xe'),this[_0x60e2('0xf')][_0x60e2('0x10')](this));ami['on']('registry',this[_0x60e2('0xf')][_0x60e2('0x10')](this));ami['on'](_0x60e2('0x11'),this[_0x60e2('0x12')][_0x60e2('0x10')](this));ami['on'](_0x60e2('0x13'),this[_0x60e2('0x14')][_0x60e2('0x10')](this));return this['syncRealtimeShow']();}function showSipRegistrations(){Promise['resolve']()['then'](ami[_0x60e2('0x15')]())['catch'](function(_0x2ec39a){logger[_0x60e2('0x16')](_0x60e2('0x17'),util['inspect'](_0x2ec39a,{'showHidden':![],'depth':null}));});}function listDeviceStates(){Promise[_0x60e2('0x18')]()[_0x60e2('0x19')](ami[_0x60e2('0x1a')]())['catch'](function(_0x51d2e4){logger[_0x60e2('0x16')](_0x60e2('0x1b'),util[_0x60e2('0x1c')](_0x51d2e4,{'showHidden':![],'depth':null}));});}function showPeersStatus(){Promise['resolve']()[_0x60e2('0x19')](ami[_0x60e2('0x1d')]())[_0x60e2('0x1e')](function(_0x2dcfee){logger['error'](_0x60e2('0x1f'),util['inspect'](_0x2dcfee,{'showHidden':![],'depth':null}));});}UserReport[_0x60e2('0x20')]['syncRealtimeShow']=function(){setInterval(function(){BPromise[_0x60e2('0x18')]()[_0x60e2('0x19')](showSipRegistrations())[_0x60e2('0x19')](listDeviceStates())[_0x60e2('0x19')](showPeersStatus());},0x32c8);};UserReport[_0x60e2('0x20')][_0x60e2('0x21')]=function(_0x1f8d6b){return _0x1f8d6b!==null&&!_[_0x60e2('0x22')](_0x1f8d6b);};UserReport[_0x60e2('0x20')]['emit']=function(_0x51bf12,_0x14b7f9,_0x5c9d92){io['to'](_0x51bf12)[_0x60e2('0x23')](_0x14b7f9,_0x5c9d92);};UserReport[_0x60e2('0x20')][_0x60e2('0xf')]=function(_0x458c03){try{if(this[_0x60e2('0x21')](_0x458c03)){logger['info']('[userReport][registry]\x20registry:%s\x20state:%s',_0x458c03[_0x60e2('0x24')],_0x458c03[_0x60e2('0x25')]);logger['debug'](_0x60e2('0x26'),util[_0x60e2('0x1c')](_0x458c03,{'showHidden':![],'depth':null}));var _0x43bc9=_[_0x60e2('0x27')](this[_0x60e2('0xb')],{'registry':_0x458c03[_0x60e2('0x24')]});if(_0x43bc9){_0x458c03['stateRegistry']=_0x458c03[_0x60e2('0x25')];_[_0x60e2('0x28')](_0x43bc9,_[_0x60e2('0x29')](_0x458c03,[_0x60e2('0x2a'),_0x60e2('0x2b'),_0x60e2('0x24'),_0x60e2('0x25')]));logger[_0x60e2('0x2c')](_0x60e2('0x2d'),util[_0x60e2('0x1c')](_0x43bc9,{'showHidden':![],'depth':null}));this[_0x60e2('0x23')](util['format']('trunk:%s',_0x43bc9[_0x60e2('0x2e')]),_0x60e2('0x2f'),_0x43bc9);}}}catch(_0x355292){logger[_0x60e2('0x16')]('[userReport][registry]',util[_0x60e2('0x1c')](_0x355292,{'showHidden':![],'depth':null}));}};UserReport['prototype'][_0x60e2('0x12')]=function(_0x34aa69){try{if(this[_0x60e2('0x21')](_0x34aa69)){logger[_0x60e2('0x30')](_0x60e2('0x31'),_0x34aa69[_0x60e2('0x32')],_0x34aa69['state']);logger[_0x60e2('0x2c')]('[userReport][devicestatechange]',util[_0x60e2('0x1c')](_0x34aa69,{'showHidden':![],'depth':null}));if(this['agents'][_0x34aa69[_0x60e2('0x32')]]){if(!this['agents'][_0x34aa69[_0x60e2('0x32')]][_0x60e2('0x33')]||_0x34aa69['state'][_0x60e2('0x34')]()==_0x60e2('0x35')){this['agents'][_0x34aa69['device']][_0x60e2('0x33')]=![];if(this[_0x60e2('0xc')][_0x34aa69[_0x60e2('0x32')]]['state']!==_0x34aa69[_0x60e2('0x25')][_0x60e2('0x34')]()){this[_0x60e2('0xc')][_0x34aa69[_0x60e2('0x32')]][_0x60e2('0x36')]=_['toNumber'](moment()[_0x60e2('0x37')]('x'));}this[_0x60e2('0xc')][_0x34aa69[_0x60e2('0x32')]][_0x60e2('0x25')]=_0x34aa69[_0x60e2('0x25')]['toLowerCase']();this[_0x60e2('0xc')][_0x34aa69[_0x60e2('0x32')]]['updateStatusRealtime'](_0x34aa69);}}else if(this[_0x60e2('0xd')][_0x34aa69[_0x60e2('0x32')]]){if(this['telephones'][_0x34aa69[_0x60e2('0x32')]][_0x60e2('0x25')]!==_0x34aa69[_0x60e2('0x25')][_0x60e2('0x34')]()){this[_0x60e2('0xd')][_0x34aa69[_0x60e2('0x32')]]['stateTime']=_[_0x60e2('0x38')](moment()[_0x60e2('0x37')]('x'));}this[_0x60e2('0xd')][_0x34aa69[_0x60e2('0x32')]][_0x60e2('0x25')]=_0x34aa69[_0x60e2('0x25')][_0x60e2('0x34')]();logger[_0x60e2('0x2c')](_0x60e2('0x39'),util[_0x60e2('0x1c')](this['telephones'][_0x34aa69[_0x60e2('0x32')]],{'showHidden':![],'depth':null}));this[_0x60e2('0x23')](util['format'](_0x60e2('0x3a'),this['telephones'][_0x34aa69[_0x60e2('0x32')]][_0x60e2('0x2e')]),_0x60e2('0x3b'),this[_0x60e2('0xd')][_0x34aa69[_0x60e2('0x32')]]);}else if(this[_0x60e2('0xb')][_0x34aa69[_0x60e2('0x32')]]){if(this[_0x60e2('0xb')][_0x34aa69[_0x60e2('0x32')]][_0x60e2('0x25')]!==_0x34aa69['state'][_0x60e2('0x34')]()){this[_0x60e2('0xb')][_0x34aa69['device']][_0x60e2('0x36')]=_[_0x60e2('0x38')](moment()[_0x60e2('0x37')]('x'));}this[_0x60e2('0xb')][_0x34aa69['device']][_0x60e2('0x25')]=_0x34aa69[_0x60e2('0x25')][_0x60e2('0x34')]();logger[_0x60e2('0x2c')](_0x60e2('0x3c'),util[_0x60e2('0x1c')](this[_0x60e2('0xb')][_0x34aa69[_0x60e2('0x32')]],{'showHidden':![],'depth':null}));this[_0x60e2('0x23')](util['format'](_0x60e2('0x3d'),this[_0x60e2('0xb')][_0x34aa69[_0x60e2('0x32')]][_0x60e2('0x2e')]),_0x60e2('0x2f'),this['trunks'][_0x34aa69[_0x60e2('0x32')]]);}else if(_['startsWith'](_0x34aa69[_0x60e2('0x32')],_0x60e2('0x3e'))){var _0x4d8d42=_0x34aa69['device'];var _0x2a32a3=_0x4d8d42[_0x60e2('0x3f')](_0x4d8d42[_0x60e2('0x40')]('/')+0x1,_0x4d8d42[_0x60e2('0x40')]('@'));var _0x4e6c96=_[_0x60e2('0x27')](this[_0x60e2('0xc')],function(_0x4d10e6){return _0x4d10e6['mobile']==_0x2a32a3||_0x4d10e6[_0x60e2('0x41')]==_0x2a32a3||_0x4d10e6[_0x60e2('0x42')]==_0x2a32a3;});if(_0x4e6c96){if(_0x4e6c96['state']!==_0x34aa69[_0x60e2('0x25')][_0x60e2('0x34')]()){_0x4e6c96['stateTime']=_[_0x60e2('0x38')](moment()[_0x60e2('0x37')]('x'));}_0x4e6c96[_0x60e2('0x25')]=_0x34aa69['state'][_0x60e2('0x34')]();_0x4e6c96[_0x60e2('0x33')]=!![];_0x4e6c96['updateStatusRealtime'](_0x34aa69);}}}}catch(_0x340d29){logger[_0x60e2('0x16')](_0x60e2('0x43'),util[_0x60e2('0x1c')](_0x340d29,{'showHidden':![],'depth':null}));}};UserReport[_0x60e2('0x20')][_0x60e2('0x14')]=function(_0x45f7c1){try{if(this[_0x60e2('0x21')](_0x45f7c1)&&this[_0x60e2('0x21')](_0x45f7c1[_0x60e2('0x13')])){logger['info'](_0x60e2('0x44'),_0x45f7c1[_0x60e2('0x45')],_0x45f7c1[_0x60e2('0x46')],_0x45f7c1[_0x60e2('0x13')]);logger[_0x60e2('0x2c')](_0x60e2('0x47'),util[_0x60e2('0x1c')](_0x45f7c1,{'showHidden':![],'depth':null}));if(this[_0x60e2('0xc')][_0x45f7c1['peer']]){if(!this['agents'][_0x45f7c1[_0x60e2('0x45')]][_0x60e2('0x33')]||_0x45f7c1[_0x60e2('0x13')][_0x60e2('0x34')]()=='registered'){this[_0x60e2('0xc')][_0x45f7c1[_0x60e2('0x45')]]['local']=![];this[_0x60e2('0xc')][_0x45f7c1[_0x60e2('0x45')]][_0x60e2('0x48')]=_0x45f7c1[_0x60e2('0x13')][_0x60e2('0x34')]();this[_0x60e2('0xc')][_0x45f7c1[_0x60e2('0x45')]][_0x60e2('0x46')]=_0x45f7c1['address'];this['agents'][_0x45f7c1[_0x60e2('0x45')]][_0x60e2('0x49')](_0x45f7c1);}}else if(this[_0x60e2('0xd')][_0x45f7c1[_0x60e2('0x45')]]){this[_0x60e2('0xd')][_0x45f7c1[_0x60e2('0x45')]][_0x60e2('0x48')]=_0x45f7c1[_0x60e2('0x13')][_0x60e2('0x34')]();this['telephones'][_0x45f7c1['peer']][_0x60e2('0x46')]=_0x45f7c1[_0x60e2('0x46')];logger[_0x60e2('0x2c')]('[userReport][peerstatus]\x20sending\x20telephone:save\x20event:',util[_0x60e2('0x1c')](this[_0x60e2('0xd')][_0x45f7c1[_0x60e2('0x45')]],{'showHidden':![],'depth':null}));this[_0x60e2('0x23')](util['format']('telephone:%s',this[_0x60e2('0xd')][_0x45f7c1[_0x60e2('0x45')]][_0x60e2('0x2e')]),_0x60e2('0x3b'),this[_0x60e2('0xd')][_0x45f7c1[_0x60e2('0x45')]]);}else if(this[_0x60e2('0xb')][_0x45f7c1[_0x60e2('0x45')]]){this[_0x60e2('0xb')][_0x45f7c1[_0x60e2('0x45')]]['status']=_0x45f7c1['peerstatus']['toLowerCase']();this[_0x60e2('0xb')][_0x45f7c1[_0x60e2('0x45')]]['address']=_0x45f7c1['address'];logger[_0x60e2('0x2c')](_0x60e2('0x4a'),util[_0x60e2('0x1c')](this[_0x60e2('0xb')][_0x45f7c1[_0x60e2('0x45')]],{'showHidden':![],'depth':null}));this[_0x60e2('0x23')](util[_0x60e2('0x37')](_0x60e2('0x3d'),this[_0x60e2('0xb')][_0x45f7c1[_0x60e2('0x45')]][_0x60e2('0x2e')]),_0x60e2('0x2f'),this['trunks'][_0x45f7c1[_0x60e2('0x45')]]);}}}catch(_0x56ccbd){logger['error'](_0x60e2('0x47'),util['inspect'](_0x56ccbd,{'showHidden':![],'depth':null}));}};module[_0x60e2('0x4b')]=UserReport;