Built motion from commit 351e7f9c.|2.6.31
[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 _0x5882=['isUndefined','emit','info','[userReport][registry]\x20registry:%s\x20state:%s','username','debug','[userReport][registry]','stateRegistry','omit','event','actionid','[userReport][registry]\x20sending\x20trunk:save\x20event:','trunk:%s','name','trunk:save','[userReport][devicestatechange]\x20device:%s\x20state:%s','device','[userReport][devicestatechange]','inuse','local','state','toLowerCase','stateTime','updateStatusRealtime','toNumber','format','[userReport][devicestatechange]\x20sending\x20telephone:save\x20event:','telephone:save','[userReport][devicestatechange]\x20sending\x20trunk:save\x20event:','startsWith','Local','substring','indexOf','find','mobile','phone','accountcode','[userReport][peerstatus]\x20peer:%s\x20address:%s\x20status:%s','peer','address','registered','[userReport][peerstatus]\x20sending\x20telephone:save\x20event:','telephone:%s','status','[userReport][peerstatus]\x20sending\x20trunk:save\x20event:','exports','moment','util','bluebird','../../../config/environment','../../../config/logger','../ami','defaults','localhost','socket.io-emitter','redis','trunks','agents','telephones','registryentry','syncRegistry','bind','registry','syncDeviceState','peerstatus','syncPeerStatus','syncRealtimeShow','resolve','then','actionSipShowRegistry','error','[userReport][sipshowregistry]','inspect','actionDeviceStateList','[userReport][devicestatelist]','catch','[userReport][sippeerstatus]','prototype','isNotNull'];(function(_0x37dfbf,_0x11923e){var _0x350dad=function(_0x537c1e){while(--_0x537c1e){_0x37dfbf['push'](_0x37dfbf['shift']());}};_0x350dad(++_0x11923e);}(_0x5882,0x11b));var _0x2588=function(_0x47d8bb,_0x115081){_0x47d8bb=_0x47d8bb-0x0;var _0x2d905d=_0x5882[_0x47d8bb];return _0x2d905d;};'use strict';var _=require('lodash');var moment=require(_0x2588('0x0'));var util=require(_0x2588('0x1'));var Redis=require('ioredis');var BPromise=require(_0x2588('0x2'));var config=require(_0x2588('0x3'));var logger=require(_0x2588('0x4'))('ami');var ami=require(_0x2588('0x5'));config['redis']=_[_0x2588('0x6')](config['redis'],{'host':_0x2588('0x7'),'port':0x18eb});var io=require(_0x2588('0x8'))(new Redis(config[_0x2588('0x9')]));function UserReport(_0x28c0d7){this[_0x2588('0xa')]=_0x28c0d7[_0x2588('0xa')];this[_0x2588('0xb')]=_0x28c0d7[_0x2588('0xb')];this['telephones']=_0x28c0d7[_0x2588('0xc')];ami['on'](_0x2588('0xd'),this[_0x2588('0xe')][_0x2588('0xf')](this));ami['on'](_0x2588('0x10'),this['syncRegistry'][_0x2588('0xf')](this));ami['on']('devicestatechange',this[_0x2588('0x11')][_0x2588('0xf')](this));ami['on'](_0x2588('0x12'),this[_0x2588('0x13')][_0x2588('0xf')](this));return this[_0x2588('0x14')]();}function showSipRegistrations(){Promise[_0x2588('0x15')]()[_0x2588('0x16')](ami[_0x2588('0x17')]())['catch'](function(_0x33ed65){logger[_0x2588('0x18')](_0x2588('0x19'),util[_0x2588('0x1a')](_0x33ed65,{'showHidden':![],'depth':null}));});}function listDeviceStates(){Promise[_0x2588('0x15')]()[_0x2588('0x16')](ami[_0x2588('0x1b')]())['catch'](function(_0x50fdda){logger[_0x2588('0x18')](_0x2588('0x1c'),util['inspect'](_0x50fdda,{'showHidden':![],'depth':null}));});}function showPeersStatus(){Promise['resolve']()[_0x2588('0x16')](ami['actionSipPeerStatus']())[_0x2588('0x1d')](function(_0x5f4291){logger[_0x2588('0x18')](_0x2588('0x1e'),util[_0x2588('0x1a')](_0x5f4291,{'showHidden':![],'depth':null}));});}UserReport[_0x2588('0x1f')][_0x2588('0x14')]=function(){setInterval(function(){BPromise['resolve']()[_0x2588('0x16')](showSipRegistrations())[_0x2588('0x16')](listDeviceStates())[_0x2588('0x16')](showPeersStatus());},0x32c8);};UserReport[_0x2588('0x1f')][_0x2588('0x20')]=function(_0x3fd472){return _0x3fd472!==null&&!_[_0x2588('0x21')](_0x3fd472);};UserReport[_0x2588('0x1f')][_0x2588('0x22')]=function(_0x4890a0,_0x69150e,_0x4eb7e5){io['to'](_0x4890a0)[_0x2588('0x22')](_0x69150e,_0x4eb7e5);};UserReport['prototype'][_0x2588('0xe')]=function(_0x2af308){try{if(this[_0x2588('0x20')](_0x2af308)){logger[_0x2588('0x23')](_0x2588('0x24'),_0x2af308[_0x2588('0x25')],_0x2af308['state']);logger[_0x2588('0x26')](_0x2588('0x27'),util[_0x2588('0x1a')](_0x2af308,{'showHidden':![],'depth':null}));var _0x4ce0b2=_['find'](this['trunks'],{'defaultuser':_0x2af308[_0x2588('0x25')]});if(_0x4ce0b2){_0x2af308[_0x2588('0x28')]=_0x2af308['state'];_['merge'](_0x4ce0b2,_[_0x2588('0x29')](_0x2af308,[_0x2588('0x2a'),_0x2588('0x2b'),_0x2588('0x25'),'state']));logger['debug'](_0x2588('0x2c'),util[_0x2588('0x1a')](_0x4ce0b2,{'showHidden':![],'depth':null}));this[_0x2588('0x22')](util['format'](_0x2588('0x2d'),_0x4ce0b2[_0x2588('0x2e')]),_0x2588('0x2f'),_0x4ce0b2);}}}catch(_0xd62231){logger[_0x2588('0x18')](_0x2588('0x27'),util['inspect'](_0xd62231,{'showHidden':![],'depth':null}));}};UserReport[_0x2588('0x1f')]['syncDeviceState']=function(_0x2897a5){try{if(this['isNotNull'](_0x2897a5)){logger[_0x2588('0x23')](_0x2588('0x30'),_0x2897a5[_0x2588('0x31')],_0x2897a5['state']);logger[_0x2588('0x26')](_0x2588('0x32'),util[_0x2588('0x1a')](_0x2897a5,{'showHidden':![],'depth':null}));if(this['agents'][_0x2897a5['device']]){if(!this[_0x2588('0xb')][_0x2897a5[_0x2588('0x31')]]['local']||_0x2897a5['state']['toLowerCase']()==_0x2588('0x33')){this[_0x2588('0xb')][_0x2897a5['device']][_0x2588('0x34')]=![];if(this[_0x2588('0xb')][_0x2897a5[_0x2588('0x31')]]['state']!==_0x2897a5[_0x2588('0x35')][_0x2588('0x36')]()){this['agents'][_0x2897a5['device']][_0x2588('0x37')]=_['toNumber'](moment()['format']('x'));}this['agents'][_0x2897a5[_0x2588('0x31')]][_0x2588('0x35')]=_0x2897a5['state'][_0x2588('0x36')]();this[_0x2588('0xb')][_0x2897a5[_0x2588('0x31')]][_0x2588('0x38')](_0x2897a5);}}else if(this[_0x2588('0xc')][_0x2897a5[_0x2588('0x31')]]){if(this['telephones'][_0x2897a5['device']][_0x2588('0x35')]!==_0x2897a5[_0x2588('0x35')][_0x2588('0x36')]()){this[_0x2588('0xc')][_0x2897a5[_0x2588('0x31')]][_0x2588('0x37')]=_[_0x2588('0x39')](moment()[_0x2588('0x3a')]('x'));}this['telephones'][_0x2897a5[_0x2588('0x31')]][_0x2588('0x35')]=_0x2897a5[_0x2588('0x35')][_0x2588('0x36')]();logger[_0x2588('0x26')](_0x2588('0x3b'),util[_0x2588('0x1a')](this['telephones'][_0x2897a5[_0x2588('0x31')]],{'showHidden':![],'depth':null}));this[_0x2588('0x22')](util[_0x2588('0x3a')]('telephone:%s',this[_0x2588('0xc')][_0x2897a5[_0x2588('0x31')]][_0x2588('0x2e')]),_0x2588('0x3c'),this[_0x2588('0xc')][_0x2897a5[_0x2588('0x31')]]);}else if(this[_0x2588('0xa')][_0x2897a5[_0x2588('0x31')]]){if(this['trunks'][_0x2897a5['device']][_0x2588('0x35')]!==_0x2897a5[_0x2588('0x35')][_0x2588('0x36')]()){this[_0x2588('0xa')][_0x2897a5[_0x2588('0x31')]][_0x2588('0x37')]=_[_0x2588('0x39')](moment()['format']('x'));}this[_0x2588('0xa')][_0x2897a5[_0x2588('0x31')]]['state']=_0x2897a5[_0x2588('0x35')][_0x2588('0x36')]();logger[_0x2588('0x26')](_0x2588('0x3d'),util['inspect'](this[_0x2588('0xa')][_0x2897a5[_0x2588('0x31')]],{'showHidden':![],'depth':null}));this['emit'](util[_0x2588('0x3a')](_0x2588('0x2d'),this[_0x2588('0xa')][_0x2897a5[_0x2588('0x31')]]['name']),_0x2588('0x2f'),this['trunks'][_0x2897a5['device']]);}else if(_[_0x2588('0x3e')](_0x2897a5[_0x2588('0x31')],_0x2588('0x3f'))){var _0x26baef=_0x2897a5['device'];var _0xc35014=_0x26baef[_0x2588('0x40')](_0x26baef[_0x2588('0x41')]('/')+0x1,_0x26baef[_0x2588('0x41')]('@'));var _0x1873a7=_[_0x2588('0x42')](this['agents'],function(_0x78e36a){return _0x78e36a[_0x2588('0x43')]==_0xc35014||_0x78e36a[_0x2588('0x44')]==_0xc35014||_0x78e36a[_0x2588('0x45')]==_0xc35014;});if(_0x1873a7){if(_0x1873a7[_0x2588('0x35')]!==_0x2897a5['state']['toLowerCase']()){_0x1873a7[_0x2588('0x37')]=_[_0x2588('0x39')](moment()[_0x2588('0x3a')]('x'));}_0x1873a7[_0x2588('0x35')]=_0x2897a5[_0x2588('0x35')][_0x2588('0x36')]();_0x1873a7[_0x2588('0x34')]=!![];_0x1873a7[_0x2588('0x38')](_0x2897a5);}}}}catch(_0x18788e){logger[_0x2588('0x18')]('[userReport][devicestatechange]',util[_0x2588('0x1a')](_0x18788e,{'showHidden':![],'depth':null}));}};UserReport[_0x2588('0x1f')]['syncPeerStatus']=function(_0x26c7af){try{if(this[_0x2588('0x20')](_0x26c7af)&&this[_0x2588('0x20')](_0x26c7af['peerstatus'])){logger[_0x2588('0x23')](_0x2588('0x46'),_0x26c7af[_0x2588('0x47')],_0x26c7af[_0x2588('0x48')],_0x26c7af['peerstatus']);logger[_0x2588('0x26')]('[userReport][peerstatus]',util['inspect'](_0x26c7af,{'showHidden':![],'depth':null}));if(this['agents'][_0x26c7af[_0x2588('0x47')]]){if(!this[_0x2588('0xb')][_0x26c7af[_0x2588('0x47')]][_0x2588('0x34')]||_0x26c7af[_0x2588('0x12')][_0x2588('0x36')]()==_0x2588('0x49')){this[_0x2588('0xb')][_0x26c7af['peer']][_0x2588('0x34')]=![];this['agents'][_0x26c7af[_0x2588('0x47')]]['status']=_0x26c7af[_0x2588('0x12')][_0x2588('0x36')]();this[_0x2588('0xb')][_0x26c7af[_0x2588('0x47')]][_0x2588('0x48')]=_0x26c7af[_0x2588('0x48')];this[_0x2588('0xb')][_0x26c7af[_0x2588('0x47')]][_0x2588('0x38')](_0x26c7af);}}else if(this['telephones'][_0x26c7af['peer']]){this['telephones'][_0x26c7af[_0x2588('0x47')]]['status']=_0x26c7af['peerstatus']['toLowerCase']();this[_0x2588('0xc')][_0x26c7af[_0x2588('0x47')]]['address']=_0x26c7af[_0x2588('0x48')];logger[_0x2588('0x26')](_0x2588('0x4a'),util['inspect'](this[_0x2588('0xc')][_0x26c7af[_0x2588('0x47')]],{'showHidden':![],'depth':null}));this[_0x2588('0x22')](util[_0x2588('0x3a')](_0x2588('0x4b'),this[_0x2588('0xc')][_0x26c7af['peer']][_0x2588('0x2e')]),_0x2588('0x3c'),this[_0x2588('0xc')][_0x26c7af['peer']]);}else if(this[_0x2588('0xa')][_0x26c7af[_0x2588('0x47')]]){this[_0x2588('0xa')][_0x26c7af[_0x2588('0x47')]][_0x2588('0x4c')]=_0x26c7af[_0x2588('0x12')]['toLowerCase']();this[_0x2588('0xa')][_0x26c7af['peer']][_0x2588('0x48')]=_0x26c7af[_0x2588('0x48')];logger['debug'](_0x2588('0x4d'),util[_0x2588('0x1a')](this[_0x2588('0xa')][_0x26c7af[_0x2588('0x47')]],{'showHidden':![],'depth':null}));this[_0x2588('0x22')](util[_0x2588('0x3a')]('trunk:%s',this[_0x2588('0xa')][_0x26c7af['peer']][_0x2588('0x2e')]),'trunk:save',this[_0x2588('0xa')][_0x26c7af[_0x2588('0x47')]]);}}}catch(_0x7baefd){logger[_0x2588('0x18')]('[userReport][peerstatus]',util[_0x2588('0x1a')](_0x7baefd,{'showHidden':![],'depth':null}));}};module[_0x2588('0x4e')]=UserReport;