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 _0x43be=['agents','telephones','syncRegistry','devicestatechange','syncDeviceState','bind','peerstatus','syncPeerStatus','resolve','then','catch','error','actionDeviceStateList','[userReport][devicestatelist]','inspect','actionSipPeerStatus','[userReport][sippeerstatus]','prototype','syncRealtimeShow','isUndefined','emit','info','[userReport][registry]\x20registry:%s\x20state:%s','username','debug','[userReport][registry]','find','stateRegistry','merge','omit','event','actionid','state','[userReport][registry]\x20sending\x20trunk:save\x20event:','format','name','trunk:save','[userReport][devicestatechange]\x20device:%s\x20state:%s','device','[userReport][devicestatechange]','local','toLowerCase','inuse','stateTime','toNumber','updateStatusRealtime','telephone:%s','telephone:save','[userReport][devicestatechange]\x20sending\x20trunk:save\x20event:','startsWith','Local','substring','indexOf','mobile','accountcode','isNotNull','peer','address','registered','status','[userReport][peerstatus]\x20sending\x20telephone:save\x20event:','[userReport][peerstatus]\x20sending\x20trunk:save\x20event:','trunk:%s','moment','util','bluebird','../../../config/environment','../../../config/logger','ami','../ami','redis','localhost','socket.io-emitter','trunks'];(function(_0x3fcfda,_0xa0bfeb){var _0x132ce0=function(_0x5d227b){while(--_0x5d227b){_0x3fcfda['push'](_0x3fcfda['shift']());}};_0x132ce0(++_0xa0bfeb);}(_0x43be,0xd3));var _0xe43b=function(_0x12a0a3,_0x2652d1){_0x12a0a3=_0x12a0a3-0x0;var _0x1c47c4=_0x43be[_0x12a0a3];return _0x1c47c4;};'use strict';var _=require('lodash');var moment=require(_0xe43b('0x0'));var util=require(_0xe43b('0x1'));var Redis=require('ioredis');var BPromise=require(_0xe43b('0x2'));var config=require(_0xe43b('0x3'));var logger=require(_0xe43b('0x4'))(_0xe43b('0x5'));var ami=require(_0xe43b('0x6'));config['redis']=_['defaults'](config[_0xe43b('0x7')],{'host':_0xe43b('0x8'),'port':0x18eb});var io=require(_0xe43b('0x9'))(new Redis(config[_0xe43b('0x7')]));function UserReport(_0x211afb){this[_0xe43b('0xa')]=_0x211afb['trunks'];this[_0xe43b('0xb')]=_0x211afb[_0xe43b('0xb')];this[_0xe43b('0xc')]=_0x211afb['telephones'];ami['on']('registryentry',this[_0xe43b('0xd')]['bind'](this));ami['on']('registry',this[_0xe43b('0xd')]['bind'](this));ami['on'](_0xe43b('0xe'),this[_0xe43b('0xf')][_0xe43b('0x10')](this));ami['on'](_0xe43b('0x11'),this[_0xe43b('0x12')][_0xe43b('0x10')](this));return this['syncRealtimeShow']();}function showSipRegistrations(){Promise[_0xe43b('0x13')]()[_0xe43b('0x14')](ami['actionSipShowRegistry']())[_0xe43b('0x15')](function(_0x19b509){logger[_0xe43b('0x16')]('[userReport][sipshowregistry]',util['inspect'](_0x19b509,{'showHidden':![],'depth':null}));});}function listDeviceStates(){Promise[_0xe43b('0x13')]()[_0xe43b('0x14')](ami[_0xe43b('0x17')]())[_0xe43b('0x15')](function(_0x2a65a3){logger['error'](_0xe43b('0x18'),util[_0xe43b('0x19')](_0x2a65a3,{'showHidden':![],'depth':null}));});}function showPeersStatus(){Promise['resolve']()[_0xe43b('0x14')](ami[_0xe43b('0x1a')]())[_0xe43b('0x15')](function(_0x121ffc){logger[_0xe43b('0x16')](_0xe43b('0x1b'),util[_0xe43b('0x19')](_0x121ffc,{'showHidden':![],'depth':null}));});}UserReport[_0xe43b('0x1c')][_0xe43b('0x1d')]=function(){setInterval(function(){BPromise['resolve']()[_0xe43b('0x14')](showSipRegistrations())[_0xe43b('0x14')](listDeviceStates())[_0xe43b('0x14')](showPeersStatus());},0x32c8);};UserReport['prototype']['isNotNull']=function(_0x46456c){return _0x46456c!==null&&!_[_0xe43b('0x1e')](_0x46456c);};UserReport[_0xe43b('0x1c')][_0xe43b('0x1f')]=function(_0x1e49d9,_0x292a29,_0x2a6f4d){io['to'](_0x1e49d9)[_0xe43b('0x1f')](_0x292a29,_0x2a6f4d);};UserReport[_0xe43b('0x1c')][_0xe43b('0xd')]=function(_0x1fa0be){try{if(this['isNotNull'](_0x1fa0be)){logger[_0xe43b('0x20')](_0xe43b('0x21'),_0x1fa0be[_0xe43b('0x22')],_0x1fa0be['state']);logger[_0xe43b('0x23')](_0xe43b('0x24'),util['inspect'](_0x1fa0be,{'showHidden':![],'depth':null}));var _0x15c4f4=_[_0xe43b('0x25')](this[_0xe43b('0xa')],{'defaultuser':_0x1fa0be['username']});if(_0x15c4f4){_0x1fa0be[_0xe43b('0x26')]=_0x1fa0be['state'];_[_0xe43b('0x27')](_0x15c4f4,_[_0xe43b('0x28')](_0x1fa0be,[_0xe43b('0x29'),_0xe43b('0x2a'),_0xe43b('0x22'),_0xe43b('0x2b')]));logger[_0xe43b('0x23')](_0xe43b('0x2c'),util['inspect'](_0x15c4f4,{'showHidden':![],'depth':null}));this[_0xe43b('0x1f')](util[_0xe43b('0x2d')]('trunk:%s',_0x15c4f4[_0xe43b('0x2e')]),_0xe43b('0x2f'),_0x15c4f4);}}}catch(_0x1bd35e){logger[_0xe43b('0x16')]('[userReport][registry]',util[_0xe43b('0x19')](_0x1bd35e,{'showHidden':![],'depth':null}));}};UserReport[_0xe43b('0x1c')][_0xe43b('0xf')]=function(_0x461c47){try{if(this['isNotNull'](_0x461c47)){logger[_0xe43b('0x20')](_0xe43b('0x30'),_0x461c47[_0xe43b('0x31')],_0x461c47[_0xe43b('0x2b')]);logger[_0xe43b('0x23')](_0xe43b('0x32'),util[_0xe43b('0x19')](_0x461c47,{'showHidden':![],'depth':null}));if(this[_0xe43b('0xb')][_0x461c47[_0xe43b('0x31')]]){if(!this[_0xe43b('0xb')][_0x461c47[_0xe43b('0x31')]][_0xe43b('0x33')]||_0x461c47[_0xe43b('0x2b')][_0xe43b('0x34')]()==_0xe43b('0x35')){this['agents'][_0x461c47['device']][_0xe43b('0x33')]=![];if(this['agents'][_0x461c47['device']][_0xe43b('0x2b')]!==_0x461c47[_0xe43b('0x2b')]['toLowerCase']()){this[_0xe43b('0xb')][_0x461c47['device']][_0xe43b('0x36')]=_[_0xe43b('0x37')](moment()[_0xe43b('0x2d')]('x'));}this[_0xe43b('0xb')][_0x461c47[_0xe43b('0x31')]][_0xe43b('0x2b')]=_0x461c47[_0xe43b('0x2b')][_0xe43b('0x34')]();this['agents'][_0x461c47[_0xe43b('0x31')]][_0xe43b('0x38')](_0x461c47);}}else if(this[_0xe43b('0xc')][_0x461c47[_0xe43b('0x31')]]){if(this['telephones'][_0x461c47['device']][_0xe43b('0x2b')]!==_0x461c47[_0xe43b('0x2b')]['toLowerCase']()){this[_0xe43b('0xc')][_0x461c47['device']]['stateTime']=_['toNumber'](moment()[_0xe43b('0x2d')]('x'));}this['telephones'][_0x461c47[_0xe43b('0x31')]]['state']=_0x461c47[_0xe43b('0x2b')][_0xe43b('0x34')]();logger[_0xe43b('0x23')]('[userReport][devicestatechange]\x20sending\x20telephone:save\x20event:',util['inspect'](this[_0xe43b('0xc')][_0x461c47[_0xe43b('0x31')]],{'showHidden':![],'depth':null}));this[_0xe43b('0x1f')](util['format'](_0xe43b('0x39'),this[_0xe43b('0xc')][_0x461c47[_0xe43b('0x31')]][_0xe43b('0x2e')]),_0xe43b('0x3a'),this[_0xe43b('0xc')][_0x461c47['device']]);}else if(this[_0xe43b('0xa')][_0x461c47[_0xe43b('0x31')]]){if(this['trunks'][_0x461c47[_0xe43b('0x31')]]['state']!==_0x461c47[_0xe43b('0x2b')][_0xe43b('0x34')]()){this['trunks'][_0x461c47[_0xe43b('0x31')]][_0xe43b('0x36')]=_[_0xe43b('0x37')](moment()['format']('x'));}this[_0xe43b('0xa')][_0x461c47[_0xe43b('0x31')]]['state']=_0x461c47[_0xe43b('0x2b')]['toLowerCase']();logger[_0xe43b('0x23')](_0xe43b('0x3b'),util[_0xe43b('0x19')](this[_0xe43b('0xa')][_0x461c47['device']],{'showHidden':![],'depth':null}));this['emit'](util[_0xe43b('0x2d')]('trunk:%s',this[_0xe43b('0xa')][_0x461c47[_0xe43b('0x31')]]['name']),'trunk:save',this[_0xe43b('0xa')][_0x461c47[_0xe43b('0x31')]]);}else if(_[_0xe43b('0x3c')](_0x461c47[_0xe43b('0x31')],_0xe43b('0x3d'))){var _0x10f8dc=_0x461c47[_0xe43b('0x31')];var _0x5ea784=_0x10f8dc[_0xe43b('0x3e')](_0x10f8dc[_0xe43b('0x3f')]('/')+0x1,_0x10f8dc[_0xe43b('0x3f')]('@'));var _0x1ad594=_[_0xe43b('0x25')](this[_0xe43b('0xb')],function(_0x41b56f){return _0x41b56f[_0xe43b('0x40')]==_0x5ea784||_0x41b56f['phone']==_0x5ea784||_0x41b56f[_0xe43b('0x41')]==_0x5ea784;});if(_0x1ad594){if(_0x1ad594[_0xe43b('0x2b')]!==_0x461c47[_0xe43b('0x2b')][_0xe43b('0x34')]()){_0x1ad594['stateTime']=_[_0xe43b('0x37')](moment()[_0xe43b('0x2d')]('x'));}_0x1ad594[_0xe43b('0x2b')]=_0x461c47[_0xe43b('0x2b')][_0xe43b('0x34')]();_0x1ad594[_0xe43b('0x33')]=!![];_0x1ad594[_0xe43b('0x38')](_0x461c47);}}}}catch(_0x444583){logger['error'](_0xe43b('0x32'),util[_0xe43b('0x19')](_0x444583,{'showHidden':![],'depth':null}));}};UserReport[_0xe43b('0x1c')][_0xe43b('0x12')]=function(_0xb586fd){try{if(this['isNotNull'](_0xb586fd)&&this[_0xe43b('0x42')](_0xb586fd[_0xe43b('0x11')])){logger[_0xe43b('0x20')]('[userReport][peerstatus]\x20peer:%s\x20address:%s\x20status:%s',_0xb586fd[_0xe43b('0x43')],_0xb586fd[_0xe43b('0x44')],_0xb586fd[_0xe43b('0x11')]);logger['debug']('[userReport][peerstatus]',util[_0xe43b('0x19')](_0xb586fd,{'showHidden':![],'depth':null}));if(this['agents'][_0xb586fd['peer']]){if(!this[_0xe43b('0xb')][_0xb586fd[_0xe43b('0x43')]][_0xe43b('0x33')]||_0xb586fd['peerstatus']['toLowerCase']()==_0xe43b('0x45')){this[_0xe43b('0xb')][_0xb586fd['peer']][_0xe43b('0x33')]=![];this[_0xe43b('0xb')][_0xb586fd['peer']]['status']=_0xb586fd[_0xe43b('0x11')]['toLowerCase']();this['agents'][_0xb586fd[_0xe43b('0x43')]]['address']=_0xb586fd[_0xe43b('0x44')];this[_0xe43b('0xb')][_0xb586fd[_0xe43b('0x43')]]['updateStatusRealtime'](_0xb586fd);}}else if(this[_0xe43b('0xc')][_0xb586fd['peer']]){this['telephones'][_0xb586fd[_0xe43b('0x43')]][_0xe43b('0x46')]=_0xb586fd[_0xe43b('0x11')][_0xe43b('0x34')]();this[_0xe43b('0xc')][_0xb586fd['peer']]['address']=_0xb586fd[_0xe43b('0x44')];logger[_0xe43b('0x23')](_0xe43b('0x47'),util[_0xe43b('0x19')](this[_0xe43b('0xc')][_0xb586fd[_0xe43b('0x43')]],{'showHidden':![],'depth':null}));this[_0xe43b('0x1f')](util['format'](_0xe43b('0x39'),this[_0xe43b('0xc')][_0xb586fd[_0xe43b('0x43')]]['name']),_0xe43b('0x3a'),this[_0xe43b('0xc')][_0xb586fd['peer']]);}else if(this['trunks'][_0xb586fd[_0xe43b('0x43')]]){this['trunks'][_0xb586fd['peer']]['status']=_0xb586fd[_0xe43b('0x11')][_0xe43b('0x34')]();this[_0xe43b('0xa')][_0xb586fd[_0xe43b('0x43')]][_0xe43b('0x44')]=_0xb586fd[_0xe43b('0x44')];logger[_0xe43b('0x23')](_0xe43b('0x48'),util['inspect'](this[_0xe43b('0xa')][_0xb586fd[_0xe43b('0x43')]],{'showHidden':![],'depth':null}));this[_0xe43b('0x1f')](util[_0xe43b('0x2d')](_0xe43b('0x49'),this[_0xe43b('0xa')][_0xb586fd['peer']][_0xe43b('0x2e')]),_0xe43b('0x2f'),this['trunks'][_0xb586fd['peer']]);}}}catch(_0x5f209f){logger[_0xe43b('0x16')]('[userReport][peerstatus]',util[_0xe43b('0x19')](_0x5f209f,{'showHidden':![],'depth':null}));}};module['exports']=UserReport;