Built motion from commit 3c2ce842.|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 _0xae67=['format','trunk:%s','name','trunk:save','[userReport][devicestatechange]\x20device:%s\x20state:%s','device','local','toLowerCase','stateTime','toNumber','updateStatusRealtime','telephone:%s','telephone:save','startsWith','Local','indexOf','mobile','phone','[userReport][devicestatechange]','[userReport][peerstatus]\x20peer:%s\x20address:%s\x20status:%s','peer','address','[userReport][peerstatus]','status','[userReport][peerstatus]\x20sending\x20telephone:save\x20event:','[userReport][peerstatus]\x20sending\x20trunk:save\x20event:','exports','lodash','moment','util','bluebird','../../../config/environment','../../../config/logger','ami','../ami','redis','localhost','socket.io-emitter','trunks','agents','telephones','registryentry','syncRegistry','bind','syncDeviceState','peerstatus','syncPeerStatus','syncRealtimeShow','resolve','then','actionSipShowRegistry','catch','[userReport][sipshowregistry]','inspect','actionDeviceStateList','error','[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:'];(function(_0x264c84,_0x598700){var _0x1fd84c=function(_0x271c3d){while(--_0x271c3d){_0x264c84['push'](_0x264c84['shift']());}};_0x1fd84c(++_0x598700);}(_0xae67,0x147));var _0x7ae6=function(_0x50b476,_0x168bcd){_0x50b476=_0x50b476-0x0;var _0x6d4f8f=_0xae67[_0x50b476];return _0x6d4f8f;};'use strict';var _=require(_0x7ae6('0x0'));var moment=require(_0x7ae6('0x1'));var util=require(_0x7ae6('0x2'));var Redis=require('ioredis');var BPromise=require(_0x7ae6('0x3'));var config=require(_0x7ae6('0x4'));var logger=require(_0x7ae6('0x5'))(_0x7ae6('0x6'));var ami=require(_0x7ae6('0x7'));config[_0x7ae6('0x8')]=_['defaults'](config[_0x7ae6('0x8')],{'host':_0x7ae6('0x9'),'port':0x18eb});var io=require(_0x7ae6('0xa'))(new Redis(config[_0x7ae6('0x8')]));function UserReport(_0x33849b){this['trunks']=_0x33849b[_0x7ae6('0xb')];this[_0x7ae6('0xc')]=_0x33849b['agents'];this[_0x7ae6('0xd')]=_0x33849b[_0x7ae6('0xd')];ami['on'](_0x7ae6('0xe'),this[_0x7ae6('0xf')][_0x7ae6('0x10')](this));ami['on']('registry',this[_0x7ae6('0xf')][_0x7ae6('0x10')](this));ami['on']('devicestatechange',this[_0x7ae6('0x11')][_0x7ae6('0x10')](this));ami['on'](_0x7ae6('0x12'),this[_0x7ae6('0x13')][_0x7ae6('0x10')](this));return this[_0x7ae6('0x14')]();}function showSipRegistrations(){Promise[_0x7ae6('0x15')]()[_0x7ae6('0x16')](ami[_0x7ae6('0x17')]())[_0x7ae6('0x18')](function(_0x1dee76){logger['error'](_0x7ae6('0x19'),util[_0x7ae6('0x1a')](_0x1dee76,{'showHidden':![],'depth':null}));});}function listDeviceStates(){Promise[_0x7ae6('0x15')]()[_0x7ae6('0x16')](ami[_0x7ae6('0x1b')]())[_0x7ae6('0x18')](function(_0x1b72fb){logger[_0x7ae6('0x1c')](_0x7ae6('0x1d'),util[_0x7ae6('0x1a')](_0x1b72fb,{'showHidden':![],'depth':null}));});}function showPeersStatus(){Promise['resolve']()['then'](ami[_0x7ae6('0x1e')]())[_0x7ae6('0x18')](function(_0x57e8c7){logger['error'](_0x7ae6('0x1f'),util[_0x7ae6('0x1a')](_0x57e8c7,{'showHidden':![],'depth':null}));});}UserReport[_0x7ae6('0x20')][_0x7ae6('0x14')]=function(){setInterval(function(){BPromise[_0x7ae6('0x15')]()[_0x7ae6('0x16')](showSipRegistrations())[_0x7ae6('0x16')](listDeviceStates())[_0x7ae6('0x16')](showPeersStatus());},0x32c8);};UserReport[_0x7ae6('0x20')][_0x7ae6('0x21')]=function(_0x6f835f){return _0x6f835f!==null&&!_['isUndefined'](_0x6f835f);};UserReport[_0x7ae6('0x20')][_0x7ae6('0x22')]=function(_0x2656b7,_0x4a123a,_0x176bf9){io['to'](_0x2656b7)['emit'](_0x4a123a,_0x176bf9);};UserReport[_0x7ae6('0x20')][_0x7ae6('0xf')]=function(_0x5f53e8){try{if(this[_0x7ae6('0x21')](_0x5f53e8)){logger[_0x7ae6('0x23')](_0x7ae6('0x24'),_0x5f53e8[_0x7ae6('0x25')],_0x5f53e8[_0x7ae6('0x26')]);logger[_0x7ae6('0x27')](_0x7ae6('0x28'),util[_0x7ae6('0x1a')](_0x5f53e8,{'showHidden':![],'depth':null}));var _0x3c6ed9=_[_0x7ae6('0x29')](this[_0x7ae6('0xb')],{'defaultuser':_0x5f53e8['username']});if(_0x3c6ed9){_0x5f53e8[_0x7ae6('0x2a')]=_0x5f53e8[_0x7ae6('0x26')];_[_0x7ae6('0x2b')](_0x3c6ed9,_[_0x7ae6('0x2c')](_0x5f53e8,[_0x7ae6('0x2d'),_0x7ae6('0x2e'),_0x7ae6('0x25'),'state']));logger[_0x7ae6('0x27')](_0x7ae6('0x2f'),util['inspect'](_0x3c6ed9,{'showHidden':![],'depth':null}));this[_0x7ae6('0x22')](util[_0x7ae6('0x30')](_0x7ae6('0x31'),_0x3c6ed9[_0x7ae6('0x32')]),_0x7ae6('0x33'),_0x3c6ed9);}}}catch(_0x35f9da){logger[_0x7ae6('0x1c')](_0x7ae6('0x28'),util['inspect'](_0x35f9da,{'showHidden':![],'depth':null}));}};UserReport[_0x7ae6('0x20')][_0x7ae6('0x11')]=function(_0x25af66){try{if(this[_0x7ae6('0x21')](_0x25af66)){logger[_0x7ae6('0x23')](_0x7ae6('0x34'),_0x25af66['device'],_0x25af66['state']);logger[_0x7ae6('0x27')]('[userReport][devicestatechange]',util[_0x7ae6('0x1a')](_0x25af66,{'showHidden':![],'depth':null}));if(this['agents'][_0x25af66[_0x7ae6('0x35')]]){if(!this[_0x7ae6('0xc')][_0x25af66['device']]['local']||_0x25af66[_0x7ae6('0x26')]['toLowerCase']()=='inuse'){this[_0x7ae6('0xc')][_0x25af66[_0x7ae6('0x35')]][_0x7ae6('0x36')]=![];if(this['agents'][_0x25af66[_0x7ae6('0x35')]][_0x7ae6('0x26')]!==_0x25af66[_0x7ae6('0x26')][_0x7ae6('0x37')]()){this[_0x7ae6('0xc')][_0x25af66[_0x7ae6('0x35')]][_0x7ae6('0x38')]=_[_0x7ae6('0x39')](moment()['format']('x'));}this[_0x7ae6('0xc')][_0x25af66['device']][_0x7ae6('0x26')]=_0x25af66[_0x7ae6('0x26')][_0x7ae6('0x37')]();this[_0x7ae6('0xc')][_0x25af66[_0x7ae6('0x35')]][_0x7ae6('0x3a')](_0x25af66);}}else if(this[_0x7ae6('0xd')][_0x25af66[_0x7ae6('0x35')]]){if(this[_0x7ae6('0xd')][_0x25af66[_0x7ae6('0x35')]][_0x7ae6('0x26')]!==_0x25af66['state'][_0x7ae6('0x37')]()){this[_0x7ae6('0xd')][_0x25af66['device']][_0x7ae6('0x38')]=_[_0x7ae6('0x39')](moment()[_0x7ae6('0x30')]('x'));}this[_0x7ae6('0xd')][_0x25af66['device']][_0x7ae6('0x26')]=_0x25af66[_0x7ae6('0x26')][_0x7ae6('0x37')]();logger[_0x7ae6('0x27')]('[userReport][devicestatechange]\x20sending\x20telephone:save\x20event:',util[_0x7ae6('0x1a')](this[_0x7ae6('0xd')][_0x25af66['device']],{'showHidden':![],'depth':null}));this[_0x7ae6('0x22')](util[_0x7ae6('0x30')](_0x7ae6('0x3b'),this[_0x7ae6('0xd')][_0x25af66['device']]['name']),_0x7ae6('0x3c'),this[_0x7ae6('0xd')][_0x25af66[_0x7ae6('0x35')]]);}else if(this[_0x7ae6('0xb')][_0x25af66['device']]){if(this['trunks'][_0x25af66[_0x7ae6('0x35')]][_0x7ae6('0x26')]!==_0x25af66[_0x7ae6('0x26')][_0x7ae6('0x37')]()){this[_0x7ae6('0xb')][_0x25af66[_0x7ae6('0x35')]][_0x7ae6('0x38')]=_['toNumber'](moment()[_0x7ae6('0x30')]('x'));}this[_0x7ae6('0xb')][_0x25af66['device']][_0x7ae6('0x26')]=_0x25af66[_0x7ae6('0x26')]['toLowerCase']();logger[_0x7ae6('0x27')]('[userReport][devicestatechange]\x20sending\x20trunk:save\x20event:',util[_0x7ae6('0x1a')](this[_0x7ae6('0xb')][_0x25af66['device']],{'showHidden':![],'depth':null}));this['emit'](util[_0x7ae6('0x30')](_0x7ae6('0x31'),this['trunks'][_0x25af66['device']]['name']),_0x7ae6('0x33'),this[_0x7ae6('0xb')][_0x25af66[_0x7ae6('0x35')]]);}else if(_[_0x7ae6('0x3d')](_0x25af66[_0x7ae6('0x35')],_0x7ae6('0x3e'))){var _0xc66841=_0x25af66[_0x7ae6('0x35')];var _0x12172c=_0xc66841['substring'](_0xc66841[_0x7ae6('0x3f')]('/')+0x1,_0xc66841[_0x7ae6('0x3f')]('@'));var _0x32988c=_[_0x7ae6('0x29')](this[_0x7ae6('0xc')],function(_0x87b716){return _0x87b716[_0x7ae6('0x40')]==_0x12172c||_0x87b716[_0x7ae6('0x41')]==_0x12172c||_0x87b716['accountcode']==_0x12172c;});if(_0x32988c){if(_0x32988c[_0x7ae6('0x26')]!==_0x25af66[_0x7ae6('0x26')]['toLowerCase']()){_0x32988c['stateTime']=_[_0x7ae6('0x39')](moment()[_0x7ae6('0x30')]('x'));}_0x32988c[_0x7ae6('0x26')]=_0x25af66['state'][_0x7ae6('0x37')]();_0x32988c[_0x7ae6('0x36')]=!![];_0x32988c[_0x7ae6('0x3a')](_0x25af66);}}}}catch(_0x290adf){logger[_0x7ae6('0x1c')](_0x7ae6('0x42'),util[_0x7ae6('0x1a')](_0x290adf,{'showHidden':![],'depth':null}));}};UserReport['prototype']['syncPeerStatus']=function(_0x235e73){try{if(this[_0x7ae6('0x21')](_0x235e73)&&this[_0x7ae6('0x21')](_0x235e73[_0x7ae6('0x12')])){logger[_0x7ae6('0x23')](_0x7ae6('0x43'),_0x235e73[_0x7ae6('0x44')],_0x235e73[_0x7ae6('0x45')],_0x235e73[_0x7ae6('0x12')]);logger[_0x7ae6('0x27')](_0x7ae6('0x46'),util[_0x7ae6('0x1a')](_0x235e73,{'showHidden':![],'depth':null}));if(this['agents'][_0x235e73[_0x7ae6('0x44')]]){if(!this['agents'][_0x235e73[_0x7ae6('0x44')]][_0x7ae6('0x36')]||_0x235e73[_0x7ae6('0x12')][_0x7ae6('0x37')]()=='registered'){this[_0x7ae6('0xc')][_0x235e73['peer']]['local']=![];this[_0x7ae6('0xc')][_0x235e73[_0x7ae6('0x44')]][_0x7ae6('0x47')]=_0x235e73[_0x7ae6('0x12')]['toLowerCase']();this[_0x7ae6('0xc')][_0x235e73[_0x7ae6('0x44')]][_0x7ae6('0x45')]=_0x235e73[_0x7ae6('0x45')];this[_0x7ae6('0xc')][_0x235e73['peer']][_0x7ae6('0x3a')](_0x235e73);}}else if(this['telephones'][_0x235e73[_0x7ae6('0x44')]]){this[_0x7ae6('0xd')][_0x235e73[_0x7ae6('0x44')]][_0x7ae6('0x47')]=_0x235e73[_0x7ae6('0x12')][_0x7ae6('0x37')]();this[_0x7ae6('0xd')][_0x235e73[_0x7ae6('0x44')]][_0x7ae6('0x45')]=_0x235e73[_0x7ae6('0x45')];logger['debug'](_0x7ae6('0x48'),util[_0x7ae6('0x1a')](this['telephones'][_0x235e73['peer']],{'showHidden':![],'depth':null}));this[_0x7ae6('0x22')](util[_0x7ae6('0x30')]('telephone:%s',this[_0x7ae6('0xd')][_0x235e73[_0x7ae6('0x44')]][_0x7ae6('0x32')]),_0x7ae6('0x3c'),this[_0x7ae6('0xd')][_0x235e73['peer']]);}else if(this[_0x7ae6('0xb')][_0x235e73[_0x7ae6('0x44')]]){this['trunks'][_0x235e73[_0x7ae6('0x44')]][_0x7ae6('0x47')]=_0x235e73[_0x7ae6('0x12')][_0x7ae6('0x37')]();this[_0x7ae6('0xb')][_0x235e73[_0x7ae6('0x44')]][_0x7ae6('0x45')]=_0x235e73[_0x7ae6('0x45')];logger[_0x7ae6('0x27')](_0x7ae6('0x49'),util['inspect'](this[_0x7ae6('0xb')][_0x235e73[_0x7ae6('0x44')]],{'showHidden':![],'depth':null}));this['emit'](util['format'](_0x7ae6('0x31'),this[_0x7ae6('0xb')][_0x235e73[_0x7ae6('0x44')]]['name']),_0x7ae6('0x33'),this['trunks'][_0x235e73[_0x7ae6('0x44')]]);}}}catch(_0xf61257){logger['error'](_0x7ae6('0x46'),util['inspect'](_0xf61257,{'showHidden':![],'depth':null}));}};module[_0x7ae6('0x4a')]=UserReport;