Built motion from commit c738b9ac.|2.6.25
[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 _0xaa9b=['[userReport][peerstatus]','peerstatus','registered','status','[userReport][peerstatus]\x20sending\x20telephone:save\x20event:','[userReport][peerstatus]\x20sending\x20trunk:save\x20event:','lodash','moment','bluebird','../../../config/logger','../ami','redis','defaults','localhost','socket.io-emitter','trunks','agents','telephones','registryentry','syncRegistry','bind','registry','devicestatechange','syncPeerStatus','syncRealtimeShow','resolve','then','actionSipShowRegistry','catch','error','inspect','prototype','isNotNull','emit','info','username','debug','[userReport][registry]','find','state','omit','event','actionid','[userReport][registry]\x20sending\x20trunk:save\x20event:','trunk:save','syncDeviceState','[userReport][devicestatechange]\x20device:%s\x20state:%s','device','[userReport][devicestatechange]','local','toLowerCase','inuse','stateTime','toNumber','format','updateStatusRealtime','[userReport][devicestatechange]\x20sending\x20telephone:save\x20event:','telephone:%s','telephone:save','[userReport][devicestatechange]\x20sending\x20trunk:save\x20event:','trunk:%s','name','startsWith','Local','substring','indexOf','mobile','phone','accountcode','[userReport][peerstatus]\x20peer:%s\x20address:%s\x20status:%s','peer','address'];(function(_0x24cb21,_0x5b9b1f){var _0x495b15=function(_0x6655b8){while(--_0x6655b8){_0x24cb21['push'](_0x24cb21['shift']());}};_0x495b15(++_0x5b9b1f);}(_0xaa9b,0x16e));var _0xbaa9=function(_0x2a9909,_0xf1e056){_0x2a9909=_0x2a9909-0x0;var _0x4e2e47=_0xaa9b[_0x2a9909];return _0x4e2e47;};'use strict';var _=require(_0xbaa9('0x0'));var moment=require(_0xbaa9('0x1'));var util=require('util');var Redis=require('ioredis');var BPromise=require(_0xbaa9('0x2'));var config=require('../../../config/environment');var logger=require(_0xbaa9('0x3'))('ami');var ami=require(_0xbaa9('0x4'));config[_0xbaa9('0x5')]=_[_0xbaa9('0x6')](config[_0xbaa9('0x5')],{'host':_0xbaa9('0x7'),'port':0x18eb});var io=require(_0xbaa9('0x8'))(new Redis(config[_0xbaa9('0x5')]));function UserReport(_0x18ef21){this[_0xbaa9('0x9')]=_0x18ef21['trunks'];this[_0xbaa9('0xa')]=_0x18ef21[_0xbaa9('0xa')];this[_0xbaa9('0xb')]=_0x18ef21[_0xbaa9('0xb')];ami['on'](_0xbaa9('0xc'),this[_0xbaa9('0xd')][_0xbaa9('0xe')](this));ami['on'](_0xbaa9('0xf'),this[_0xbaa9('0xd')][_0xbaa9('0xe')](this));ami['on'](_0xbaa9('0x10'),this['syncDeviceState'][_0xbaa9('0xe')](this));ami['on']('peerstatus',this[_0xbaa9('0x11')]['bind'](this));return this[_0xbaa9('0x12')]();}function showSipRegistrations(){Promise[_0xbaa9('0x13')]()[_0xbaa9('0x14')](ami[_0xbaa9('0x15')]())[_0xbaa9('0x16')](function(_0x4ce74c){logger[_0xbaa9('0x17')]('[userReport][sipshowregistry]',util[_0xbaa9('0x18')](_0x4ce74c,{'showHidden':![],'depth':null}));});}function listDeviceStates(){Promise[_0xbaa9('0x13')]()[_0xbaa9('0x14')](ami['actionDeviceStateList']())[_0xbaa9('0x16')](function(_0x50eba6){logger['error']('[userReport][devicestatelist]',util['inspect'](_0x50eba6,{'showHidden':![],'depth':null}));});}function showPeersStatus(){Promise[_0xbaa9('0x13')]()[_0xbaa9('0x14')](ami['actionSipPeerStatus']())[_0xbaa9('0x16')](function(_0x5543f3){logger[_0xbaa9('0x17')]('[userReport][sippeerstatus]',util[_0xbaa9('0x18')](_0x5543f3,{'showHidden':![],'depth':null}));});}UserReport[_0xbaa9('0x19')]['syncRealtimeShow']=function(){setInterval(function(){BPromise['resolve']()[_0xbaa9('0x14')](showSipRegistrations())[_0xbaa9('0x14')](listDeviceStates())['then'](showPeersStatus());},0x32c8);};UserReport[_0xbaa9('0x19')][_0xbaa9('0x1a')]=function(_0x4fa450){return _0x4fa450!==null&&!_['isUndefined'](_0x4fa450);};UserReport[_0xbaa9('0x19')][_0xbaa9('0x1b')]=function(_0x3d0899,_0x5e95b3,_0x4470d2){io['to'](_0x3d0899)[_0xbaa9('0x1b')](_0x5e95b3,_0x4470d2);};UserReport[_0xbaa9('0x19')][_0xbaa9('0xd')]=function(_0x3edeab){try{if(this[_0xbaa9('0x1a')](_0x3edeab)){logger[_0xbaa9('0x1c')]('[userReport][registry]\x20registry:%s\x20state:%s',_0x3edeab[_0xbaa9('0x1d')],_0x3edeab['state']);logger[_0xbaa9('0x1e')](_0xbaa9('0x1f'),util[_0xbaa9('0x18')](_0x3edeab,{'showHidden':![],'depth':null}));var _0x29b5f9=_[_0xbaa9('0x20')](this[_0xbaa9('0x9')],{'defaultuser':_0x3edeab['username']});if(_0x29b5f9){_0x3edeab['stateRegistry']=_0x3edeab[_0xbaa9('0x21')];_['merge'](_0x29b5f9,_[_0xbaa9('0x22')](_0x3edeab,[_0xbaa9('0x23'),_0xbaa9('0x24'),_0xbaa9('0x1d'),_0xbaa9('0x21')]));logger['debug'](_0xbaa9('0x25'),util[_0xbaa9('0x18')](_0x29b5f9,{'showHidden':![],'depth':null}));this[_0xbaa9('0x1b')](util['format']('trunk:%s',_0x29b5f9['name']),_0xbaa9('0x26'),_0x29b5f9);}}}catch(_0x262789){logger['error'](_0xbaa9('0x1f'),util[_0xbaa9('0x18')](_0x262789,{'showHidden':![],'depth':null}));}};UserReport[_0xbaa9('0x19')][_0xbaa9('0x27')]=function(_0x347932){try{if(this[_0xbaa9('0x1a')](_0x347932)){logger[_0xbaa9('0x1c')](_0xbaa9('0x28'),_0x347932[_0xbaa9('0x29')],_0x347932[_0xbaa9('0x21')]);logger['debug'](_0xbaa9('0x2a'),util[_0xbaa9('0x18')](_0x347932,{'showHidden':![],'depth':null}));if(this[_0xbaa9('0xa')][_0x347932[_0xbaa9('0x29')]]){if(!this[_0xbaa9('0xa')][_0x347932[_0xbaa9('0x29')]][_0xbaa9('0x2b')]||_0x347932[_0xbaa9('0x21')][_0xbaa9('0x2c')]()==_0xbaa9('0x2d')){this[_0xbaa9('0xa')][_0x347932[_0xbaa9('0x29')]][_0xbaa9('0x2b')]=![];if(this[_0xbaa9('0xa')][_0x347932[_0xbaa9('0x29')]][_0xbaa9('0x21')]!==_0x347932[_0xbaa9('0x21')][_0xbaa9('0x2c')]()){this[_0xbaa9('0xa')][_0x347932[_0xbaa9('0x29')]][_0xbaa9('0x2e')]=_[_0xbaa9('0x2f')](moment()[_0xbaa9('0x30')]('x'));}this[_0xbaa9('0xa')][_0x347932[_0xbaa9('0x29')]][_0xbaa9('0x21')]=_0x347932['state'][_0xbaa9('0x2c')]();this['agents'][_0x347932[_0xbaa9('0x29')]][_0xbaa9('0x31')](_0x347932);}}else if(this[_0xbaa9('0xb')][_0x347932['device']]){if(this[_0xbaa9('0xb')][_0x347932[_0xbaa9('0x29')]]['state']!==_0x347932['state'][_0xbaa9('0x2c')]()){this[_0xbaa9('0xb')][_0x347932[_0xbaa9('0x29')]]['stateTime']=_[_0xbaa9('0x2f')](moment()[_0xbaa9('0x30')]('x'));}this['telephones'][_0x347932[_0xbaa9('0x29')]][_0xbaa9('0x21')]=_0x347932[_0xbaa9('0x21')][_0xbaa9('0x2c')]();logger[_0xbaa9('0x1e')](_0xbaa9('0x32'),util['inspect'](this['telephones'][_0x347932[_0xbaa9('0x29')]],{'showHidden':![],'depth':null}));this['emit'](util[_0xbaa9('0x30')](_0xbaa9('0x33'),this[_0xbaa9('0xb')][_0x347932[_0xbaa9('0x29')]]['name']),_0xbaa9('0x34'),this[_0xbaa9('0xb')][_0x347932[_0xbaa9('0x29')]]);}else if(this['trunks'][_0x347932[_0xbaa9('0x29')]]){if(this[_0xbaa9('0x9')][_0x347932[_0xbaa9('0x29')]]['state']!==_0x347932[_0xbaa9('0x21')][_0xbaa9('0x2c')]()){this['trunks'][_0x347932[_0xbaa9('0x29')]][_0xbaa9('0x2e')]=_['toNumber'](moment()['format']('x'));}this[_0xbaa9('0x9')][_0x347932[_0xbaa9('0x29')]][_0xbaa9('0x21')]=_0x347932[_0xbaa9('0x21')]['toLowerCase']();logger['debug'](_0xbaa9('0x35'),util[_0xbaa9('0x18')](this[_0xbaa9('0x9')][_0x347932[_0xbaa9('0x29')]],{'showHidden':![],'depth':null}));this['emit'](util[_0xbaa9('0x30')](_0xbaa9('0x36'),this[_0xbaa9('0x9')][_0x347932[_0xbaa9('0x29')]][_0xbaa9('0x37')]),'trunk:save',this[_0xbaa9('0x9')][_0x347932[_0xbaa9('0x29')]]);}else if(_[_0xbaa9('0x38')](_0x347932[_0xbaa9('0x29')],_0xbaa9('0x39'))){var _0x5daabc=_0x347932[_0xbaa9('0x29')];var _0x10be35=_0x5daabc[_0xbaa9('0x3a')](_0x5daabc[_0xbaa9('0x3b')]('/')+0x1,_0x5daabc[_0xbaa9('0x3b')]('@'));var _0x18f063=_[_0xbaa9('0x20')](this[_0xbaa9('0xa')],function(_0x45638e){return _0x45638e[_0xbaa9('0x3c')]==_0x10be35||_0x45638e[_0xbaa9('0x3d')]==_0x10be35||_0x45638e[_0xbaa9('0x3e')]==_0x10be35;});if(_0x18f063){if(_0x18f063[_0xbaa9('0x21')]!==_0x347932['state']['toLowerCase']()){_0x18f063['stateTime']=_[_0xbaa9('0x2f')](moment()[_0xbaa9('0x30')]('x'));}_0x18f063[_0xbaa9('0x21')]=_0x347932[_0xbaa9('0x21')][_0xbaa9('0x2c')]();_0x18f063[_0xbaa9('0x2b')]=!![];_0x18f063[_0xbaa9('0x31')](_0x347932);}}}}catch(_0x144e7c){logger['error'](_0xbaa9('0x2a'),util[_0xbaa9('0x18')](_0x144e7c,{'showHidden':![],'depth':null}));}};UserReport[_0xbaa9('0x19')][_0xbaa9('0x11')]=function(_0x5087ca){try{if(this[_0xbaa9('0x1a')](_0x5087ca)&&this['isNotNull'](_0x5087ca['peerstatus'])){logger[_0xbaa9('0x1c')](_0xbaa9('0x3f'),_0x5087ca[_0xbaa9('0x40')],_0x5087ca[_0xbaa9('0x41')],_0x5087ca['peerstatus']);logger[_0xbaa9('0x1e')](_0xbaa9('0x42'),util[_0xbaa9('0x18')](_0x5087ca,{'showHidden':![],'depth':null}));if(this['agents'][_0x5087ca[_0xbaa9('0x40')]]){if(!this['agents'][_0x5087ca[_0xbaa9('0x40')]]['local']||_0x5087ca[_0xbaa9('0x43')]['toLowerCase']()==_0xbaa9('0x44')){this['agents'][_0x5087ca[_0xbaa9('0x40')]][_0xbaa9('0x2b')]=![];this[_0xbaa9('0xa')][_0x5087ca[_0xbaa9('0x40')]][_0xbaa9('0x45')]=_0x5087ca[_0xbaa9('0x43')][_0xbaa9('0x2c')]();this[_0xbaa9('0xa')][_0x5087ca[_0xbaa9('0x40')]][_0xbaa9('0x41')]=_0x5087ca[_0xbaa9('0x41')];this[_0xbaa9('0xa')][_0x5087ca['peer']]['updateStatusRealtime'](_0x5087ca);}}else if(this['telephones'][_0x5087ca[_0xbaa9('0x40')]]){this['telephones'][_0x5087ca[_0xbaa9('0x40')]][_0xbaa9('0x45')]=_0x5087ca[_0xbaa9('0x43')][_0xbaa9('0x2c')]();this[_0xbaa9('0xb')][_0x5087ca['peer']][_0xbaa9('0x41')]=_0x5087ca[_0xbaa9('0x41')];logger['debug'](_0xbaa9('0x46'),util[_0xbaa9('0x18')](this[_0xbaa9('0xb')][_0x5087ca[_0xbaa9('0x40')]],{'showHidden':![],'depth':null}));this[_0xbaa9('0x1b')](util[_0xbaa9('0x30')](_0xbaa9('0x33'),this['telephones'][_0x5087ca[_0xbaa9('0x40')]][_0xbaa9('0x37')]),_0xbaa9('0x34'),this['telephones'][_0x5087ca['peer']]);}else if(this['trunks'][_0x5087ca['peer']]){this[_0xbaa9('0x9')][_0x5087ca['peer']][_0xbaa9('0x45')]=_0x5087ca[_0xbaa9('0x43')]['toLowerCase']();this[_0xbaa9('0x9')][_0x5087ca[_0xbaa9('0x40')]][_0xbaa9('0x41')]=_0x5087ca[_0xbaa9('0x41')];logger[_0xbaa9('0x1e')](_0xbaa9('0x47'),util['inspect'](this[_0xbaa9('0x9')][_0x5087ca[_0xbaa9('0x40')]],{'showHidden':![],'depth':null}));this[_0xbaa9('0x1b')](util[_0xbaa9('0x30')](_0xbaa9('0x36'),this[_0xbaa9('0x9')][_0x5087ca[_0xbaa9('0x40')]][_0xbaa9('0x37')]),'trunk:save',this[_0xbaa9('0x9')][_0x5087ca['peer']]);}}}catch(_0x20c9cc){logger[_0xbaa9('0x17')](_0xbaa9('0x42'),util[_0xbaa9('0x18')](_0x20c9cc,{'showHidden':![],'depth':null}));}};module['exports']=UserReport;