Built motion from commit d5e4af8c.|2.6.23
[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 _0x8d98=['stateTime','format','updateStatusRealtime','toNumber','[userReport][devicestatechange]\x20sending\x20telephone:save\x20event:','telephone:%s','telephone:save','trunk:%s','startsWith','Local','substring','indexOf','mobile','phone','accountcode','[userReport][devicestatechange]','syncPeerStatus','[userReport][peerstatus]\x20peer:%s\x20address:%s\x20status:%s','peer','address','registered','status','[userReport][peerstatus]\x20sending\x20trunk:save\x20event:','[userReport][peerstatus]','exports','moment','util','ioredis','../../../config/environment','../../../config/logger','ami','../ami','defaults','localhost','socket.io-emitter','trunks','agents','telephones','registryentry','syncRegistry','registry','bind','devicestatechange','syncDeviceState','peerstatus','syncRealtimeShow','resolve','then','actionSipShowRegistry','catch','error','[userReport][sipshowregistry]','inspect','actionDeviceStateList','[userReport][devicestatelist]','[userReport][sippeerstatus]','prototype','isNotNull','isUndefined','emit','info','username','state','debug','find','merge','omit','event','name','trunk:save','[userReport][registry]','device','local','inuse','toLowerCase'];(function(_0x5acb94,_0x389dbc){var _0x11800a=function(_0xd36856){while(--_0xd36856){_0x5acb94['push'](_0x5acb94['shift']());}};_0x11800a(++_0x389dbc);}(_0x8d98,0xfa));var _0x88d9=function(_0x27ed14,_0x3d8a65){_0x27ed14=_0x27ed14-0x0;var _0x14c1b6=_0x8d98[_0x27ed14];return _0x14c1b6;};'use strict';var _=require('lodash');var moment=require(_0x88d9('0x0'));var util=require(_0x88d9('0x1'));var Redis=require(_0x88d9('0x2'));var BPromise=require('bluebird');var config=require(_0x88d9('0x3'));var logger=require(_0x88d9('0x4'))(_0x88d9('0x5'));var ami=require(_0x88d9('0x6'));config['redis']=_[_0x88d9('0x7')](config['redis'],{'host':_0x88d9('0x8'),'port':0x18eb});var io=require(_0x88d9('0x9'))(new Redis(config['redis']));function UserReport(_0x295c4c){this[_0x88d9('0xa')]=_0x295c4c['trunks'];this[_0x88d9('0xb')]=_0x295c4c[_0x88d9('0xb')];this[_0x88d9('0xc')]=_0x295c4c[_0x88d9('0xc')];ami['on'](_0x88d9('0xd'),this[_0x88d9('0xe')]['bind'](this));ami['on'](_0x88d9('0xf'),this['syncRegistry'][_0x88d9('0x10')](this));ami['on'](_0x88d9('0x11'),this[_0x88d9('0x12')][_0x88d9('0x10')](this));ami['on'](_0x88d9('0x13'),this['syncPeerStatus'][_0x88d9('0x10')](this));return this[_0x88d9('0x14')]();}function showSipRegistrations(){Promise[_0x88d9('0x15')]()[_0x88d9('0x16')](ami[_0x88d9('0x17')]())[_0x88d9('0x18')](function(_0x2c54e4){logger[_0x88d9('0x19')](_0x88d9('0x1a'),util[_0x88d9('0x1b')](_0x2c54e4,{'showHidden':![],'depth':null}));});}function listDeviceStates(){Promise[_0x88d9('0x15')]()[_0x88d9('0x16')](ami[_0x88d9('0x1c')]())[_0x88d9('0x18')](function(_0x3008f6){logger['error'](_0x88d9('0x1d'),util[_0x88d9('0x1b')](_0x3008f6,{'showHidden':![],'depth':null}));});}function showPeersStatus(){Promise['resolve']()[_0x88d9('0x16')](ami['actionSipPeerStatus']())[_0x88d9('0x18')](function(_0x2806ca){logger[_0x88d9('0x19')](_0x88d9('0x1e'),util['inspect'](_0x2806ca,{'showHidden':![],'depth':null}));});}UserReport[_0x88d9('0x1f')][_0x88d9('0x14')]=function(){setInterval(function(){BPromise[_0x88d9('0x15')]()[_0x88d9('0x16')](showSipRegistrations())[_0x88d9('0x16')](listDeviceStates())[_0x88d9('0x16')](showPeersStatus());},0x32c8);};UserReport[_0x88d9('0x1f')][_0x88d9('0x20')]=function(_0x5a10a8){return _0x5a10a8!==null&&!_[_0x88d9('0x21')](_0x5a10a8);};UserReport[_0x88d9('0x1f')][_0x88d9('0x22')]=function(_0x219dd5,_0x4e1600,_0x204fa7){io['to'](_0x219dd5)[_0x88d9('0x22')](_0x4e1600,_0x204fa7);};UserReport[_0x88d9('0x1f')][_0x88d9('0xe')]=function(_0x4cda13){try{if(this[_0x88d9('0x20')](_0x4cda13)){logger[_0x88d9('0x23')]('[userReport][registry]\x20registry:%s\x20state:%s',_0x4cda13[_0x88d9('0x24')],_0x4cda13[_0x88d9('0x25')]);logger[_0x88d9('0x26')]('[userReport][registry]',util[_0x88d9('0x1b')](_0x4cda13,{'showHidden':![],'depth':null}));var _0x1629e8=_[_0x88d9('0x27')](this['trunks'],{'defaultuser':_0x4cda13[_0x88d9('0x24')]});if(_0x1629e8){_0x4cda13['stateRegistry']=_0x4cda13[_0x88d9('0x25')];_[_0x88d9('0x28')](_0x1629e8,_[_0x88d9('0x29')](_0x4cda13,[_0x88d9('0x2a'),'actionid','username',_0x88d9('0x25')]));logger[_0x88d9('0x26')]('[userReport][registry]\x20sending\x20trunk:save\x20event:',util[_0x88d9('0x1b')](_0x1629e8,{'showHidden':![],'depth':null}));this[_0x88d9('0x22')](util['format']('trunk:%s',_0x1629e8[_0x88d9('0x2b')]),_0x88d9('0x2c'),_0x1629e8);}}}catch(_0x512eea){logger[_0x88d9('0x19')](_0x88d9('0x2d'),util[_0x88d9('0x1b')](_0x512eea,{'showHidden':![],'depth':null}));}};UserReport['prototype'][_0x88d9('0x12')]=function(_0x23010c){try{if(this[_0x88d9('0x20')](_0x23010c)){logger[_0x88d9('0x23')]('[userReport][devicestatechange]\x20device:%s\x20state:%s',_0x23010c[_0x88d9('0x2e')],_0x23010c[_0x88d9('0x25')]);logger[_0x88d9('0x26')]('[userReport][devicestatechange]',util['inspect'](_0x23010c,{'showHidden':![],'depth':null}));if(this[_0x88d9('0xb')][_0x23010c[_0x88d9('0x2e')]]){if(!this[_0x88d9('0xb')][_0x23010c[_0x88d9('0x2e')]][_0x88d9('0x2f')]||_0x23010c['state']['toLowerCase']()==_0x88d9('0x30')){this[_0x88d9('0xb')][_0x23010c['device']][_0x88d9('0x2f')]=![];if(this[_0x88d9('0xb')][_0x23010c[_0x88d9('0x2e')]][_0x88d9('0x25')]!==_0x23010c['state'][_0x88d9('0x31')]()){this[_0x88d9('0xb')][_0x23010c[_0x88d9('0x2e')]][_0x88d9('0x32')]=_['toNumber'](moment()[_0x88d9('0x33')]('x'));}this[_0x88d9('0xb')][_0x23010c['device']]['state']=_0x23010c[_0x88d9('0x25')]['toLowerCase']();this[_0x88d9('0xb')][_0x23010c[_0x88d9('0x2e')]][_0x88d9('0x34')](_0x23010c);}}else if(this[_0x88d9('0xc')][_0x23010c[_0x88d9('0x2e')]]){if(this[_0x88d9('0xc')][_0x23010c[_0x88d9('0x2e')]]['state']!==_0x23010c[_0x88d9('0x25')][_0x88d9('0x31')]()){this[_0x88d9('0xc')][_0x23010c['device']][_0x88d9('0x32')]=_[_0x88d9('0x35')](moment()[_0x88d9('0x33')]('x'));}this[_0x88d9('0xc')][_0x23010c[_0x88d9('0x2e')]]['state']=_0x23010c[_0x88d9('0x25')][_0x88d9('0x31')]();logger[_0x88d9('0x26')](_0x88d9('0x36'),util['inspect'](this[_0x88d9('0xc')][_0x23010c['device']],{'showHidden':![],'depth':null}));this[_0x88d9('0x22')](util[_0x88d9('0x33')](_0x88d9('0x37'),this['telephones'][_0x23010c[_0x88d9('0x2e')]]['name']),_0x88d9('0x38'),this[_0x88d9('0xc')][_0x23010c[_0x88d9('0x2e')]]);}else if(this[_0x88d9('0xa')][_0x23010c[_0x88d9('0x2e')]]){if(this[_0x88d9('0xa')][_0x23010c[_0x88d9('0x2e')]][_0x88d9('0x25')]!==_0x23010c['state'][_0x88d9('0x31')]()){this[_0x88d9('0xa')][_0x23010c[_0x88d9('0x2e')]][_0x88d9('0x32')]=_[_0x88d9('0x35')](moment()[_0x88d9('0x33')]('x'));}this[_0x88d9('0xa')][_0x23010c['device']][_0x88d9('0x25')]=_0x23010c[_0x88d9('0x25')][_0x88d9('0x31')]();logger[_0x88d9('0x26')]('[userReport][devicestatechange]\x20sending\x20trunk:save\x20event:',util[_0x88d9('0x1b')](this[_0x88d9('0xa')][_0x23010c[_0x88d9('0x2e')]],{'showHidden':![],'depth':null}));this[_0x88d9('0x22')](util[_0x88d9('0x33')](_0x88d9('0x39'),this[_0x88d9('0xa')][_0x23010c[_0x88d9('0x2e')]][_0x88d9('0x2b')]),_0x88d9('0x2c'),this[_0x88d9('0xa')][_0x23010c[_0x88d9('0x2e')]]);}else if(_[_0x88d9('0x3a')](_0x23010c['device'],_0x88d9('0x3b'))){var _0x4ee065=_0x23010c[_0x88d9('0x2e')];var _0x46ab50=_0x4ee065[_0x88d9('0x3c')](_0x4ee065['indexOf']('/')+0x1,_0x4ee065[_0x88d9('0x3d')]('@'));var _0x4eb4f5=_[_0x88d9('0x27')](this['agents'],function(_0x50c2e9){return _0x50c2e9[_0x88d9('0x3e')]==_0x46ab50||_0x50c2e9[_0x88d9('0x3f')]==_0x46ab50||_0x50c2e9[_0x88d9('0x40')]==_0x46ab50;});if(_0x4eb4f5){if(_0x4eb4f5[_0x88d9('0x25')]!==_0x23010c[_0x88d9('0x25')][_0x88d9('0x31')]()){_0x4eb4f5[_0x88d9('0x32')]=_['toNumber'](moment()[_0x88d9('0x33')]('x'));}_0x4eb4f5[_0x88d9('0x25')]=_0x23010c['state'][_0x88d9('0x31')]();_0x4eb4f5[_0x88d9('0x2f')]=!![];_0x4eb4f5[_0x88d9('0x34')](_0x23010c);}}}}catch(_0x3643bd){logger[_0x88d9('0x19')](_0x88d9('0x41'),util[_0x88d9('0x1b')](_0x3643bd,{'showHidden':![],'depth':null}));}};UserReport[_0x88d9('0x1f')][_0x88d9('0x42')]=function(_0x188950){try{if(this[_0x88d9('0x20')](_0x188950)&&this[_0x88d9('0x20')](_0x188950[_0x88d9('0x13')])){logger[_0x88d9('0x23')](_0x88d9('0x43'),_0x188950[_0x88d9('0x44')],_0x188950[_0x88d9('0x45')],_0x188950[_0x88d9('0x13')]);logger[_0x88d9('0x26')]('[userReport][peerstatus]',util[_0x88d9('0x1b')](_0x188950,{'showHidden':![],'depth':null}));if(this[_0x88d9('0xb')][_0x188950[_0x88d9('0x44')]]){if(!this['agents'][_0x188950[_0x88d9('0x44')]][_0x88d9('0x2f')]||_0x188950[_0x88d9('0x13')][_0x88d9('0x31')]()==_0x88d9('0x46')){this[_0x88d9('0xb')][_0x188950[_0x88d9('0x44')]][_0x88d9('0x2f')]=![];this['agents'][_0x188950['peer']][_0x88d9('0x47')]=_0x188950[_0x88d9('0x13')]['toLowerCase']();this[_0x88d9('0xb')][_0x188950[_0x88d9('0x44')]]['address']=_0x188950[_0x88d9('0x45')];this[_0x88d9('0xb')][_0x188950[_0x88d9('0x44')]]['updateStatusRealtime'](_0x188950);}}else if(this['telephones'][_0x188950['peer']]){this['telephones'][_0x188950[_0x88d9('0x44')]][_0x88d9('0x47')]=_0x188950['peerstatus'][_0x88d9('0x31')]();this[_0x88d9('0xc')][_0x188950[_0x88d9('0x44')]]['address']=_0x188950[_0x88d9('0x45')];logger['debug']('[userReport][peerstatus]\x20sending\x20telephone:save\x20event:',util['inspect'](this[_0x88d9('0xc')][_0x188950[_0x88d9('0x44')]],{'showHidden':![],'depth':null}));this[_0x88d9('0x22')](util[_0x88d9('0x33')](_0x88d9('0x37'),this['telephones'][_0x188950[_0x88d9('0x44')]]['name']),_0x88d9('0x38'),this[_0x88d9('0xc')][_0x188950[_0x88d9('0x44')]]);}else if(this['trunks'][_0x188950[_0x88d9('0x44')]]){this[_0x88d9('0xa')][_0x188950['peer']][_0x88d9('0x47')]=_0x188950['peerstatus'][_0x88d9('0x31')]();this['trunks'][_0x188950['peer']][_0x88d9('0x45')]=_0x188950[_0x88d9('0x45')];logger[_0x88d9('0x26')](_0x88d9('0x48'),util[_0x88d9('0x1b')](this[_0x88d9('0xa')][_0x188950['peer']],{'showHidden':![],'depth':null}));this[_0x88d9('0x22')](util['format'](_0x88d9('0x39'),this['trunks'][_0x188950[_0x88d9('0x44')]][_0x88d9('0x2b')]),_0x88d9('0x2c'),this[_0x88d9('0xa')][_0x188950[_0x88d9('0x44')]]);}}}catch(_0x4df360){logger[_0x88d9('0x19')](_0x88d9('0x49'),util[_0x88d9('0x1b')](_0x4df360,{'showHidden':![],'depth':null}));}};module[_0x88d9('0x4a')]=UserReport;