Built motion from commit 775e2a94.|2.6.3
[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 _0xc8e8=['bind','registry','devicestatechange','syncDeviceState','syncPeerStatus','syncRealtimeShow','resolve','then','actionSipShowRegistry','catch','error','[userReport][sipshowregistry]','inspect','actionDeviceStateList','[userReport][devicestatelist]','actionSipPeerStatus','[userReport][sippeerstatus]','prototype','isNotNull','emit','info','[userReport][registry]\x20registry:%s\x20state:%s','username','state','debug','[userReport][registry]','find','stateRegistry','merge','omit','event','actionid','[userReport][registry]\x20sending\x20trunk:save\x20event:','format','trunk:%s','name','trunk:save','[userReport][devicestatechange]\x20device:%s\x20state:%s','device','[userReport][devicestatechange]','toLowerCase','inuse','local','updateStatusRealtime','stateTime','telephone:%s','telephone:save','[userReport][devicestatechange]\x20sending\x20trunk:save\x20event:','Local','substring','indexOf','mobile','phone','accountcode','toNumber','peerstatus','address','peer','registered','status','[userReport][peerstatus]','moment','util','ioredis','bluebird','../../../config/environment','../../../config/logger','ami','../ami','redis','defaults','localhost','socket.io-emitter','trunks','agents','telephones','registryentry','syncRegistry'];(function(_0x1ed2c6,_0x2db6b8){var _0x588bdc=function(_0x2687d7){while(--_0x2687d7){_0x1ed2c6['push'](_0x1ed2c6['shift']());}};_0x588bdc(++_0x2db6b8);}(_0xc8e8,0x1c3));var _0x8c8e=function(_0x5c5c52,_0x36d085){_0x5c5c52=_0x5c5c52-0x0;var _0x4229ff=_0xc8e8[_0x5c5c52];return _0x4229ff;};'use strict';var _=require('lodash');var moment=require(_0x8c8e('0x0'));var util=require(_0x8c8e('0x1'));var Redis=require(_0x8c8e('0x2'));var BPromise=require(_0x8c8e('0x3'));var config=require(_0x8c8e('0x4'));var logger=require(_0x8c8e('0x5'))(_0x8c8e('0x6'));var ami=require(_0x8c8e('0x7'));config[_0x8c8e('0x8')]=_[_0x8c8e('0x9')](config[_0x8c8e('0x8')],{'host':_0x8c8e('0xa'),'port':0x18eb});var io=require(_0x8c8e('0xb'))(new Redis(config['redis']));function UserReport(_0x1740f2){this[_0x8c8e('0xc')]=_0x1740f2[_0x8c8e('0xc')];this['agents']=_0x1740f2[_0x8c8e('0xd')];this[_0x8c8e('0xe')]=_0x1740f2[_0x8c8e('0xe')];ami['on'](_0x8c8e('0xf'),this[_0x8c8e('0x10')][_0x8c8e('0x11')](this));ami['on'](_0x8c8e('0x12'),this[_0x8c8e('0x10')]['bind'](this));ami['on'](_0x8c8e('0x13'),this[_0x8c8e('0x14')][_0x8c8e('0x11')](this));ami['on']('peerstatus',this[_0x8c8e('0x15')]['bind'](this));return this[_0x8c8e('0x16')]();}function showSipRegistrations(){Promise[_0x8c8e('0x17')]()[_0x8c8e('0x18')](ami[_0x8c8e('0x19')]())[_0x8c8e('0x1a')](function(_0x32458a){logger[_0x8c8e('0x1b')](_0x8c8e('0x1c'),util[_0x8c8e('0x1d')](_0x32458a,{'showHidden':![],'depth':null}));});}function listDeviceStates(){Promise[_0x8c8e('0x17')]()['then'](ami[_0x8c8e('0x1e')]())[_0x8c8e('0x1a')](function(_0x5396bc){logger[_0x8c8e('0x1b')](_0x8c8e('0x1f'),util[_0x8c8e('0x1d')](_0x5396bc,{'showHidden':![],'depth':null}));});}function showPeersStatus(){Promise['resolve']()[_0x8c8e('0x18')](ami[_0x8c8e('0x20')]())['catch'](function(_0x24f5ce){logger[_0x8c8e('0x1b')](_0x8c8e('0x21'),util[_0x8c8e('0x1d')](_0x24f5ce,{'showHidden':![],'depth':null}));});}UserReport[_0x8c8e('0x22')]['syncRealtimeShow']=function(){setInterval(function(){BPromise[_0x8c8e('0x17')]()[_0x8c8e('0x18')](showSipRegistrations())[_0x8c8e('0x18')](listDeviceStates())['then'](showPeersStatus());},0x32c8);};UserReport['prototype'][_0x8c8e('0x23')]=function(_0x2fad4d){return _0x2fad4d!==null&&!_['isUndefined'](_0x2fad4d);};UserReport['prototype'][_0x8c8e('0x24')]=function(_0x4b62cf,_0x5a5aef,_0x5d1107){io['to'](_0x4b62cf)['emit'](_0x5a5aef,_0x5d1107);};UserReport[_0x8c8e('0x22')]['syncRegistry']=function(_0x4d2708){try{if(this['isNotNull'](_0x4d2708)){logger[_0x8c8e('0x25')](_0x8c8e('0x26'),_0x4d2708[_0x8c8e('0x27')],_0x4d2708[_0x8c8e('0x28')]);logger[_0x8c8e('0x29')](_0x8c8e('0x2a'),util[_0x8c8e('0x1d')](_0x4d2708,{'showHidden':![],'depth':null}));var _0x5964d4=_[_0x8c8e('0x2b')](this[_0x8c8e('0xc')],{'defaultuser':_0x4d2708[_0x8c8e('0x27')]});if(_0x5964d4){_0x4d2708[_0x8c8e('0x2c')]=_0x4d2708[_0x8c8e('0x28')];_[_0x8c8e('0x2d')](_0x5964d4,_[_0x8c8e('0x2e')](_0x4d2708,[_0x8c8e('0x2f'),_0x8c8e('0x30'),_0x8c8e('0x27'),_0x8c8e('0x28')]));logger[_0x8c8e('0x29')](_0x8c8e('0x31'),util['inspect'](_0x5964d4,{'showHidden':![],'depth':null}));this[_0x8c8e('0x24')](util[_0x8c8e('0x32')](_0x8c8e('0x33'),_0x5964d4[_0x8c8e('0x34')]),_0x8c8e('0x35'),_0x5964d4);}}}catch(_0x3f1315){logger['error']('[userReport][registry]',util[_0x8c8e('0x1d')](_0x3f1315,{'showHidden':![],'depth':null}));}};UserReport['prototype'][_0x8c8e('0x14')]=function(_0x2ad912){try{if(this[_0x8c8e('0x23')](_0x2ad912)){logger[_0x8c8e('0x25')](_0x8c8e('0x36'),_0x2ad912[_0x8c8e('0x37')],_0x2ad912[_0x8c8e('0x28')]);logger[_0x8c8e('0x29')](_0x8c8e('0x38'),util[_0x8c8e('0x1d')](_0x2ad912,{'showHidden':![],'depth':null}));if(this[_0x8c8e('0xd')][_0x2ad912[_0x8c8e('0x37')]]){if(!this[_0x8c8e('0xd')][_0x2ad912[_0x8c8e('0x37')]]['local']||_0x2ad912[_0x8c8e('0x28')][_0x8c8e('0x39')]()==_0x8c8e('0x3a')){this[_0x8c8e('0xd')][_0x2ad912['device']][_0x8c8e('0x3b')]=![];if(this['agents'][_0x2ad912[_0x8c8e('0x37')]][_0x8c8e('0x28')]!==_0x2ad912[_0x8c8e('0x28')][_0x8c8e('0x39')]()){this[_0x8c8e('0xd')][_0x2ad912[_0x8c8e('0x37')]]['stateTime']=_['toNumber'](moment()[_0x8c8e('0x32')]('x'));}this[_0x8c8e('0xd')][_0x2ad912['device']][_0x8c8e('0x28')]=_0x2ad912['state']['toLowerCase']();this[_0x8c8e('0xd')][_0x2ad912[_0x8c8e('0x37')]][_0x8c8e('0x3c')](_0x2ad912);}}else if(this[_0x8c8e('0xe')][_0x2ad912['device']]){if(this['telephones'][_0x2ad912['device']][_0x8c8e('0x28')]!==_0x2ad912[_0x8c8e('0x28')][_0x8c8e('0x39')]()){this['telephones'][_0x2ad912[_0x8c8e('0x37')]][_0x8c8e('0x3d')]=_['toNumber'](moment()[_0x8c8e('0x32')]('x'));}this[_0x8c8e('0xe')][_0x2ad912[_0x8c8e('0x37')]][_0x8c8e('0x28')]=_0x2ad912[_0x8c8e('0x28')][_0x8c8e('0x39')]();logger['debug']('[userReport][devicestatechange]\x20sending\x20telephone:save\x20event:',util[_0x8c8e('0x1d')](this[_0x8c8e('0xe')][_0x2ad912[_0x8c8e('0x37')]],{'showHidden':![],'depth':null}));this[_0x8c8e('0x24')](util[_0x8c8e('0x32')](_0x8c8e('0x3e'),this[_0x8c8e('0xe')][_0x2ad912[_0x8c8e('0x37')]][_0x8c8e('0x34')]),_0x8c8e('0x3f'),this[_0x8c8e('0xe')][_0x2ad912[_0x8c8e('0x37')]]);}else if(this[_0x8c8e('0xc')][_0x2ad912[_0x8c8e('0x37')]]){if(this[_0x8c8e('0xc')][_0x2ad912['device']][_0x8c8e('0x28')]!==_0x2ad912[_0x8c8e('0x28')][_0x8c8e('0x39')]()){this[_0x8c8e('0xc')][_0x2ad912[_0x8c8e('0x37')]]['stateTime']=_['toNumber'](moment()[_0x8c8e('0x32')]('x'));}this[_0x8c8e('0xc')][_0x2ad912['device']]['state']=_0x2ad912[_0x8c8e('0x28')][_0x8c8e('0x39')]();logger[_0x8c8e('0x29')](_0x8c8e('0x40'),util['inspect'](this['trunks'][_0x2ad912[_0x8c8e('0x37')]],{'showHidden':![],'depth':null}));this[_0x8c8e('0x24')](util['format'](_0x8c8e('0x33'),this[_0x8c8e('0xc')][_0x2ad912[_0x8c8e('0x37')]][_0x8c8e('0x34')]),_0x8c8e('0x35'),this['trunks'][_0x2ad912[_0x8c8e('0x37')]]);}else if(_['startsWith'](_0x2ad912[_0x8c8e('0x37')],_0x8c8e('0x41'))){var _0x12dab6=_0x2ad912['device'];var _0x12d6d2=_0x12dab6[_0x8c8e('0x42')](_0x12dab6[_0x8c8e('0x43')]('/')+0x1,_0x12dab6['indexOf']('@'));var _0x303225=_['find'](this[_0x8c8e('0xd')],function(_0x105c63){return _0x105c63[_0x8c8e('0x44')]==_0x12d6d2||_0x105c63[_0x8c8e('0x45')]==_0x12d6d2||_0x105c63[_0x8c8e('0x46')]==_0x12d6d2;});if(_0x303225){if(_0x303225['state']!==_0x2ad912[_0x8c8e('0x28')][_0x8c8e('0x39')]()){_0x303225['stateTime']=_[_0x8c8e('0x47')](moment()[_0x8c8e('0x32')]('x'));}_0x303225[_0x8c8e('0x28')]=_0x2ad912[_0x8c8e('0x28')][_0x8c8e('0x39')]();_0x303225[_0x8c8e('0x3b')]=!![];_0x303225[_0x8c8e('0x3c')](_0x2ad912);}}}}catch(_0x58eea5){logger[_0x8c8e('0x1b')](_0x8c8e('0x38'),util[_0x8c8e('0x1d')](_0x58eea5,{'showHidden':![],'depth':null}));}};UserReport[_0x8c8e('0x22')][_0x8c8e('0x15')]=function(_0x482175){try{if(this['isNotNull'](_0x482175)&&this[_0x8c8e('0x23')](_0x482175[_0x8c8e('0x48')])){logger[_0x8c8e('0x25')]('[userReport][peerstatus]\x20peer:%s\x20address:%s\x20status:%s',_0x482175['peer'],_0x482175[_0x8c8e('0x49')],_0x482175[_0x8c8e('0x48')]);logger[_0x8c8e('0x29')]('[userReport][peerstatus]',util[_0x8c8e('0x1d')](_0x482175,{'showHidden':![],'depth':null}));if(this['agents'][_0x482175['peer']]){if(!this['agents'][_0x482175[_0x8c8e('0x4a')]][_0x8c8e('0x3b')]||_0x482175[_0x8c8e('0x48')][_0x8c8e('0x39')]()==_0x8c8e('0x4b')){this[_0x8c8e('0xd')][_0x482175[_0x8c8e('0x4a')]][_0x8c8e('0x3b')]=![];this[_0x8c8e('0xd')][_0x482175['peer']][_0x8c8e('0x4c')]=_0x482175['peerstatus'][_0x8c8e('0x39')]();this[_0x8c8e('0xd')][_0x482175[_0x8c8e('0x4a')]][_0x8c8e('0x49')]=_0x482175[_0x8c8e('0x49')];this[_0x8c8e('0xd')][_0x482175[_0x8c8e('0x4a')]][_0x8c8e('0x3c')](_0x482175);}}else if(this[_0x8c8e('0xe')][_0x482175[_0x8c8e('0x4a')]]){this[_0x8c8e('0xe')][_0x482175['peer']][_0x8c8e('0x4c')]=_0x482175[_0x8c8e('0x48')]['toLowerCase']();this[_0x8c8e('0xe')][_0x482175[_0x8c8e('0x4a')]][_0x8c8e('0x49')]=_0x482175[_0x8c8e('0x49')];logger['debug']('[userReport][peerstatus]\x20sending\x20telephone:save\x20event:',util[_0x8c8e('0x1d')](this[_0x8c8e('0xe')][_0x482175[_0x8c8e('0x4a')]],{'showHidden':![],'depth':null}));this[_0x8c8e('0x24')](util[_0x8c8e('0x32')](_0x8c8e('0x3e'),this['telephones'][_0x482175[_0x8c8e('0x4a')]][_0x8c8e('0x34')]),_0x8c8e('0x3f'),this[_0x8c8e('0xe')][_0x482175[_0x8c8e('0x4a')]]);}else if(this['trunks'][_0x482175[_0x8c8e('0x4a')]]){this[_0x8c8e('0xc')][_0x482175[_0x8c8e('0x4a')]][_0x8c8e('0x4c')]=_0x482175[_0x8c8e('0x48')][_0x8c8e('0x39')]();this['trunks'][_0x482175['peer']][_0x8c8e('0x49')]=_0x482175[_0x8c8e('0x49')];logger[_0x8c8e('0x29')]('[userReport][peerstatus]\x20sending\x20trunk:save\x20event:',util[_0x8c8e('0x1d')](this['trunks'][_0x482175[_0x8c8e('0x4a')]],{'showHidden':![],'depth':null}));this['emit'](util[_0x8c8e('0x32')](_0x8c8e('0x33'),this['trunks'][_0x482175[_0x8c8e('0x4a')]]['name']),'trunk:save',this[_0x8c8e('0xc')][_0x482175['peer']]);}}}catch(_0x218df2){logger[_0x8c8e('0x1b')](_0x8c8e('0x4d'),util[_0x8c8e('0x1d')](_0x218df2,{'showHidden':![],'depth':null}));}};module['exports']=UserReport;