Built motion from commit f7863d46.|2.5.41
[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 _0x3384=['toNumber','telephone:%s','telephone:save','[userReport][devicestatechange]\x20sending\x20trunk:save\x20event:','substring','indexOf','phone','accountcode','updateStatusRealtime','[userReport][peerstatus]\x20peer:%s\x20address:%s\x20status:%s','address','[userReport][peerstatus]','peer','status','[userReport][peerstatus]\x20sending\x20telephone:save\x20event:','[userReport][peerstatus]\x20sending\x20trunk:save\x20event:','exports','lodash','moment','util','bluebird','../../../config/environment','../../../config/logger','ami','redis','defaults','localhost','trunks','agents','telephones','registryentry','syncRegistry','registry','bind','devicestatechange','syncDeviceState','peerstatus','syncPeerStatus','actionSipShowRegistry','catch','error','[userReport][sipshowregistry]','inspect','resolve','then','actionDeviceStateList','[userReport][devicestatelist]','actionSipPeerStatus','prototype','syncRealtimeShow','isNotNull','isUndefined','emit','state','debug','[userReport][registry]','find','username','merge','omit','event','actionid','[userReport][registry]\x20sending\x20trunk:save\x20event:','format','trunk:%s','name','trunk:save','info','[userReport][devicestatechange]\x20device:%s\x20state:%s','device','[userReport][devicestatechange]','local','toLowerCase','inuse','stateTime'];(function(_0x500419,_0x549162){var _0x241c1a=function(_0x3bea1a){while(--_0x3bea1a){_0x500419['push'](_0x500419['shift']());}};_0x241c1a(++_0x549162);}(_0x3384,0x1d3));var _0x4338=function(_0x3cc5dd,_0x49ee5f){_0x3cc5dd=_0x3cc5dd-0x0;var _0x58e818=_0x3384[_0x3cc5dd];return _0x58e818;};'use strict';var _=require(_0x4338('0x0'));var moment=require(_0x4338('0x1'));var util=require(_0x4338('0x2'));var Redis=require('ioredis');var BPromise=require(_0x4338('0x3'));var config=require(_0x4338('0x4'));var logger=require(_0x4338('0x5'))(_0x4338('0x6'));var ami=require('../ami');config[_0x4338('0x7')]=_[_0x4338('0x8')](config[_0x4338('0x7')],{'host':_0x4338('0x9'),'port':0x18eb});var io=require('socket.io-emitter')(new Redis(config[_0x4338('0x7')]));function UserReport(_0x32c310){this[_0x4338('0xa')]=_0x32c310[_0x4338('0xa')];this[_0x4338('0xb')]=_0x32c310[_0x4338('0xb')];this[_0x4338('0xc')]=_0x32c310['telephones'];ami['on'](_0x4338('0xd'),this[_0x4338('0xe')]['bind'](this));ami['on'](_0x4338('0xf'),this[_0x4338('0xe')][_0x4338('0x10')](this));ami['on'](_0x4338('0x11'),this[_0x4338('0x12')][_0x4338('0x10')](this));ami['on'](_0x4338('0x13'),this[_0x4338('0x14')][_0x4338('0x10')](this));return this['syncRealtimeShow']();}function showSipRegistrations(){Promise['resolve']()['then'](ami[_0x4338('0x15')]())[_0x4338('0x16')](function(_0x3b9bfe){logger[_0x4338('0x17')](_0x4338('0x18'),util[_0x4338('0x19')](_0x3b9bfe,{'showHidden':![],'depth':null}));});}function listDeviceStates(){Promise[_0x4338('0x1a')]()[_0x4338('0x1b')](ami[_0x4338('0x1c')]())[_0x4338('0x16')](function(_0x4087b0){logger[_0x4338('0x17')](_0x4338('0x1d'),util[_0x4338('0x19')](_0x4087b0,{'showHidden':![],'depth':null}));});}function showPeersStatus(){Promise['resolve']()[_0x4338('0x1b')](ami[_0x4338('0x1e')]())['catch'](function(_0x4f6837){logger[_0x4338('0x17')]('[userReport][sippeerstatus]',util[_0x4338('0x19')](_0x4f6837,{'showHidden':![],'depth':null}));});}UserReport[_0x4338('0x1f')][_0x4338('0x20')]=function(){setInterval(function(){BPromise[_0x4338('0x1a')]()[_0x4338('0x1b')](showSipRegistrations())['then'](listDeviceStates())[_0x4338('0x1b')](showPeersStatus());},0x32c8);};UserReport['prototype'][_0x4338('0x21')]=function(_0x3ce13f){return _0x3ce13f!==null&&!_[_0x4338('0x22')](_0x3ce13f);};UserReport[_0x4338('0x1f')]['emit']=function(_0x7e5f4f,_0x149553,_0x1d34fb){io['to'](_0x7e5f4f)[_0x4338('0x23')](_0x149553,_0x1d34fb);};UserReport['prototype'][_0x4338('0xe')]=function(_0x4b5e14){try{if(this[_0x4338('0x21')](_0x4b5e14)){logger['info']('[userReport][registry]\x20registry:%s\x20state:%s',_0x4b5e14['username'],_0x4b5e14[_0x4338('0x24')]);logger[_0x4338('0x25')](_0x4338('0x26'),util[_0x4338('0x19')](_0x4b5e14,{'showHidden':![],'depth':null}));var _0x5271d6=_[_0x4338('0x27')](this[_0x4338('0xa')],{'defaultuser':_0x4b5e14[_0x4338('0x28')]});if(_0x5271d6){_0x4b5e14['stateRegistry']=_0x4b5e14[_0x4338('0x24')];_[_0x4338('0x29')](_0x5271d6,_[_0x4338('0x2a')](_0x4b5e14,[_0x4338('0x2b'),_0x4338('0x2c'),_0x4338('0x28'),_0x4338('0x24')]));logger[_0x4338('0x25')](_0x4338('0x2d'),util[_0x4338('0x19')](_0x5271d6,{'showHidden':![],'depth':null}));this['emit'](util[_0x4338('0x2e')](_0x4338('0x2f'),_0x5271d6[_0x4338('0x30')]),_0x4338('0x31'),_0x5271d6);}}}catch(_0x18e2f1){logger[_0x4338('0x17')](_0x4338('0x26'),util[_0x4338('0x19')](_0x18e2f1,{'showHidden':![],'depth':null}));}};UserReport[_0x4338('0x1f')][_0x4338('0x12')]=function(_0x99e483){try{if(this[_0x4338('0x21')](_0x99e483)){logger[_0x4338('0x32')](_0x4338('0x33'),_0x99e483[_0x4338('0x34')],_0x99e483['state']);logger['debug'](_0x4338('0x35'),util['inspect'](_0x99e483,{'showHidden':![],'depth':null}));if(this[_0x4338('0xb')][_0x99e483[_0x4338('0x34')]]){if(!this[_0x4338('0xb')][_0x99e483[_0x4338('0x34')]][_0x4338('0x36')]||_0x99e483[_0x4338('0x24')][_0x4338('0x37')]()==_0x4338('0x38')){this['agents'][_0x99e483[_0x4338('0x34')]][_0x4338('0x36')]=![];if(this[_0x4338('0xb')][_0x99e483['device']][_0x4338('0x24')]!==_0x99e483[_0x4338('0x24')][_0x4338('0x37')]()){this[_0x4338('0xb')][_0x99e483[_0x4338('0x34')]][_0x4338('0x39')]=_[_0x4338('0x3a')](moment()[_0x4338('0x2e')]('x'));}this[_0x4338('0xb')][_0x99e483[_0x4338('0x34')]]['state']=_0x99e483[_0x4338('0x24')][_0x4338('0x37')]();this['agents'][_0x99e483[_0x4338('0x34')]]['updateStatusRealtime'](_0x99e483);}}else if(this[_0x4338('0xc')][_0x99e483[_0x4338('0x34')]]){if(this[_0x4338('0xc')][_0x99e483[_0x4338('0x34')]]['state']!==_0x99e483[_0x4338('0x24')][_0x4338('0x37')]()){this[_0x4338('0xc')][_0x99e483[_0x4338('0x34')]][_0x4338('0x39')]=_[_0x4338('0x3a')](moment()[_0x4338('0x2e')]('x'));}this['telephones'][_0x99e483[_0x4338('0x34')]]['state']=_0x99e483[_0x4338('0x24')][_0x4338('0x37')]();logger[_0x4338('0x25')]('[userReport][devicestatechange]\x20sending\x20telephone:save\x20event:',util[_0x4338('0x19')](this[_0x4338('0xc')][_0x99e483[_0x4338('0x34')]],{'showHidden':![],'depth':null}));this[_0x4338('0x23')](util[_0x4338('0x2e')](_0x4338('0x3b'),this[_0x4338('0xc')][_0x99e483[_0x4338('0x34')]]['name']),_0x4338('0x3c'),this['telephones'][_0x99e483[_0x4338('0x34')]]);}else if(this['trunks'][_0x99e483[_0x4338('0x34')]]){if(this[_0x4338('0xa')][_0x99e483[_0x4338('0x34')]][_0x4338('0x24')]!==_0x99e483[_0x4338('0x24')][_0x4338('0x37')]()){this[_0x4338('0xa')][_0x99e483[_0x4338('0x34')]]['stateTime']=_[_0x4338('0x3a')](moment()[_0x4338('0x2e')]('x'));}this[_0x4338('0xa')][_0x99e483[_0x4338('0x34')]][_0x4338('0x24')]=_0x99e483[_0x4338('0x24')][_0x4338('0x37')]();logger[_0x4338('0x25')](_0x4338('0x3d'),util['inspect'](this[_0x4338('0xa')][_0x99e483[_0x4338('0x34')]],{'showHidden':![],'depth':null}));this[_0x4338('0x23')](util['format']('trunk:%s',this[_0x4338('0xa')][_0x99e483['device']][_0x4338('0x30')]),_0x4338('0x31'),this[_0x4338('0xa')][_0x99e483['device']]);}else if(_['startsWith'](_0x99e483[_0x4338('0x34')],'Local')){var _0x5b2814=_0x99e483[_0x4338('0x34')];var _0x214d63=_0x5b2814[_0x4338('0x3e')](_0x5b2814[_0x4338('0x3f')]('/')+0x1,_0x5b2814[_0x4338('0x3f')]('@'));var _0xb08f8a=_[_0x4338('0x27')](this[_0x4338('0xb')],function(_0x5a79c3){return _0x5a79c3['mobile']==_0x214d63||_0x5a79c3[_0x4338('0x40')]==_0x214d63||_0x5a79c3[_0x4338('0x41')]==_0x214d63;});if(_0xb08f8a){if(_0xb08f8a[_0x4338('0x24')]!==_0x99e483[_0x4338('0x24')][_0x4338('0x37')]()){_0xb08f8a[_0x4338('0x39')]=_[_0x4338('0x3a')](moment()[_0x4338('0x2e')]('x'));}_0xb08f8a[_0x4338('0x24')]=_0x99e483[_0x4338('0x24')][_0x4338('0x37')]();_0xb08f8a[_0x4338('0x36')]=!![];_0xb08f8a[_0x4338('0x42')](_0x99e483);}}}}catch(_0x36bcb4){logger['error']('[userReport][devicestatechange]',util[_0x4338('0x19')](_0x36bcb4,{'showHidden':![],'depth':null}));}};UserReport[_0x4338('0x1f')][_0x4338('0x14')]=function(_0x13a0a9){try{if(this[_0x4338('0x21')](_0x13a0a9)&&this[_0x4338('0x21')](_0x13a0a9[_0x4338('0x13')])){logger[_0x4338('0x32')](_0x4338('0x43'),_0x13a0a9['peer'],_0x13a0a9[_0x4338('0x44')],_0x13a0a9['peerstatus']);logger[_0x4338('0x25')](_0x4338('0x45'),util['inspect'](_0x13a0a9,{'showHidden':![],'depth':null}));if(this[_0x4338('0xb')][_0x13a0a9[_0x4338('0x46')]]){if(!this[_0x4338('0xb')][_0x13a0a9[_0x4338('0x46')]]['local']||_0x13a0a9[_0x4338('0x13')]['toLowerCase']()=='registered'){this[_0x4338('0xb')][_0x13a0a9[_0x4338('0x46')]][_0x4338('0x36')]=![];this['agents'][_0x13a0a9[_0x4338('0x46')]][_0x4338('0x47')]=_0x13a0a9[_0x4338('0x13')][_0x4338('0x37')]();this['agents'][_0x13a0a9[_0x4338('0x46')]][_0x4338('0x44')]=_0x13a0a9[_0x4338('0x44')];this['agents'][_0x13a0a9[_0x4338('0x46')]][_0x4338('0x42')](_0x13a0a9);}}else if(this[_0x4338('0xc')][_0x13a0a9[_0x4338('0x46')]]){this[_0x4338('0xc')][_0x13a0a9[_0x4338('0x46')]][_0x4338('0x47')]=_0x13a0a9[_0x4338('0x13')]['toLowerCase']();this[_0x4338('0xc')][_0x13a0a9[_0x4338('0x46')]]['address']=_0x13a0a9[_0x4338('0x44')];logger[_0x4338('0x25')](_0x4338('0x48'),util['inspect'](this['telephones'][_0x13a0a9[_0x4338('0x46')]],{'showHidden':![],'depth':null}));this['emit'](util['format']('telephone:%s',this[_0x4338('0xc')][_0x13a0a9['peer']]['name']),_0x4338('0x3c'),this['telephones'][_0x13a0a9[_0x4338('0x46')]]);}else if(this['trunks'][_0x13a0a9[_0x4338('0x46')]]){this[_0x4338('0xa')][_0x13a0a9[_0x4338('0x46')]][_0x4338('0x47')]=_0x13a0a9[_0x4338('0x13')]['toLowerCase']();this[_0x4338('0xa')][_0x13a0a9[_0x4338('0x46')]][_0x4338('0x44')]=_0x13a0a9['address'];logger[_0x4338('0x25')](_0x4338('0x49'),util[_0x4338('0x19')](this[_0x4338('0xa')][_0x13a0a9[_0x4338('0x46')]],{'showHidden':![],'depth':null}));this[_0x4338('0x23')](util[_0x4338('0x2e')]('trunk:%s',this[_0x4338('0xa')][_0x13a0a9[_0x4338('0x46')]]['name']),_0x4338('0x31'),this[_0x4338('0xa')][_0x13a0a9['peer']]);}}}catch(_0x268755){logger[_0x4338('0x17')](_0x4338('0x45'),util[_0x4338('0x19')](_0x268755,{'showHidden':![],'depth':null}));}};module[_0x4338('0x4a')]=UserReport;