Built motion from commit b5996064.|2.6.21
[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 _0x9622=['indexOf','phone','accountcode','[userReport][devicestatechange]','syncPeerStatus','[userReport][peerstatus]\x20peer:%s\x20address:%s\x20status:%s','peer','address','peerstatus','[userReport][peerstatus]','[userReport][peerstatus]\x20sending\x20telephone:save\x20event:','telephone:save','status','[userReport][peerstatus]\x20sending\x20trunk:save\x20event:','exports','lodash','moment','ioredis','bluebird','../../../config/environment','../../../config/logger','ami','redis','defaults','localhost','socket.io-emitter','trunks','agents','telephones','registryentry','bind','registry','syncRegistry','devicestatechange','syncDeviceState','syncRealtimeShow','resolve','then','actionSipShowRegistry','catch','error','[userReport][sipshowregistry]','inspect','actionDeviceStateList','[userReport][devicestatelist]','actionSipPeerStatus','prototype','emit','isNotNull','[userReport][registry]\x20registry:%s\x20state:%s','username','state','debug','[userReport][registry]','find','stateRegistry','merge','omit','event','actionid','format','trunk:%s','name','trunk:save','info','[userReport][devicestatechange]\x20device:%s\x20state:%s','device','local','toLowerCase','inuse','stateTime','updateStatusRealtime','toNumber','[userReport][devicestatechange]\x20sending\x20telephone:save\x20event:','telephone:%s','[userReport][devicestatechange]\x20sending\x20trunk:save\x20event:','startsWith','Local','substring'];(function(_0x20d044,_0x28c12c){var _0xe3926b=function(_0x51acad){while(--_0x51acad){_0x20d044['push'](_0x20d044['shift']());}};_0xe3926b(++_0x28c12c);}(_0x9622,0xad));var _0x2962=function(_0x9ba307,_0x570631){_0x9ba307=_0x9ba307-0x0;var _0x335d04=_0x9622[_0x9ba307];return _0x335d04;};'use strict';var _=require(_0x2962('0x0'));var moment=require(_0x2962('0x1'));var util=require('util');var Redis=require(_0x2962('0x2'));var BPromise=require(_0x2962('0x3'));var config=require(_0x2962('0x4'));var logger=require(_0x2962('0x5'))(_0x2962('0x6'));var ami=require('../ami');config[_0x2962('0x7')]=_[_0x2962('0x8')](config[_0x2962('0x7')],{'host':_0x2962('0x9'),'port':0x18eb});var io=require(_0x2962('0xa'))(new Redis(config[_0x2962('0x7')]));function UserReport(_0x27f459){this[_0x2962('0xb')]=_0x27f459['trunks'];this['agents']=_0x27f459[_0x2962('0xc')];this[_0x2962('0xd')]=_0x27f459['telephones'];ami['on'](_0x2962('0xe'),this['syncRegistry'][_0x2962('0xf')](this));ami['on'](_0x2962('0x10'),this[_0x2962('0x11')][_0x2962('0xf')](this));ami['on'](_0x2962('0x12'),this[_0x2962('0x13')][_0x2962('0xf')](this));ami['on']('peerstatus',this['syncPeerStatus'][_0x2962('0xf')](this));return this[_0x2962('0x14')]();}function showSipRegistrations(){Promise[_0x2962('0x15')]()[_0x2962('0x16')](ami[_0x2962('0x17')]())[_0x2962('0x18')](function(_0x323572){logger[_0x2962('0x19')](_0x2962('0x1a'),util[_0x2962('0x1b')](_0x323572,{'showHidden':![],'depth':null}));});}function listDeviceStates(){Promise['resolve']()[_0x2962('0x16')](ami[_0x2962('0x1c')]())[_0x2962('0x18')](function(_0x41bb9e){logger[_0x2962('0x19')](_0x2962('0x1d'),util[_0x2962('0x1b')](_0x41bb9e,{'showHidden':![],'depth':null}));});}function showPeersStatus(){Promise[_0x2962('0x15')]()[_0x2962('0x16')](ami[_0x2962('0x1e')]())[_0x2962('0x18')](function(_0x4d0cf4){logger['error']('[userReport][sippeerstatus]',util[_0x2962('0x1b')](_0x4d0cf4,{'showHidden':![],'depth':null}));});}UserReport[_0x2962('0x1f')][_0x2962('0x14')]=function(){setInterval(function(){BPromise[_0x2962('0x15')]()[_0x2962('0x16')](showSipRegistrations())[_0x2962('0x16')](listDeviceStates())[_0x2962('0x16')](showPeersStatus());},0x32c8);};UserReport[_0x2962('0x1f')]['isNotNull']=function(_0x2cd7ac){return _0x2cd7ac!==null&&!_['isUndefined'](_0x2cd7ac);};UserReport['prototype']['emit']=function(_0xb1e6f5,_0x4bcc6b,_0x1d2ad1){io['to'](_0xb1e6f5)[_0x2962('0x20')](_0x4bcc6b,_0x1d2ad1);};UserReport[_0x2962('0x1f')]['syncRegistry']=function(_0x1a10d8){try{if(this[_0x2962('0x21')](_0x1a10d8)){logger['info'](_0x2962('0x22'),_0x1a10d8[_0x2962('0x23')],_0x1a10d8[_0x2962('0x24')]);logger[_0x2962('0x25')](_0x2962('0x26'),util[_0x2962('0x1b')](_0x1a10d8,{'showHidden':![],'depth':null}));var _0x4e142c=_[_0x2962('0x27')](this[_0x2962('0xb')],{'defaultuser':_0x1a10d8[_0x2962('0x23')]});if(_0x4e142c){_0x1a10d8[_0x2962('0x28')]=_0x1a10d8['state'];_[_0x2962('0x29')](_0x4e142c,_[_0x2962('0x2a')](_0x1a10d8,[_0x2962('0x2b'),_0x2962('0x2c'),_0x2962('0x23'),'state']));logger[_0x2962('0x25')]('[userReport][registry]\x20sending\x20trunk:save\x20event:',util[_0x2962('0x1b')](_0x4e142c,{'showHidden':![],'depth':null}));this['emit'](util[_0x2962('0x2d')](_0x2962('0x2e'),_0x4e142c[_0x2962('0x2f')]),_0x2962('0x30'),_0x4e142c);}}}catch(_0x2388e9){logger['error'](_0x2962('0x26'),util[_0x2962('0x1b')](_0x2388e9,{'showHidden':![],'depth':null}));}};UserReport['prototype']['syncDeviceState']=function(_0x25457d){try{if(this['isNotNull'](_0x25457d)){logger[_0x2962('0x31')](_0x2962('0x32'),_0x25457d[_0x2962('0x33')],_0x25457d[_0x2962('0x24')]);logger[_0x2962('0x25')]('[userReport][devicestatechange]',util['inspect'](_0x25457d,{'showHidden':![],'depth':null}));if(this[_0x2962('0xc')][_0x25457d[_0x2962('0x33')]]){if(!this[_0x2962('0xc')][_0x25457d['device']][_0x2962('0x34')]||_0x25457d['state'][_0x2962('0x35')]()==_0x2962('0x36')){this['agents'][_0x25457d['device']][_0x2962('0x34')]=![];if(this['agents'][_0x25457d['device']]['state']!==_0x25457d[_0x2962('0x24')][_0x2962('0x35')]()){this['agents'][_0x25457d['device']][_0x2962('0x37')]=_['toNumber'](moment()['format']('x'));}this[_0x2962('0xc')][_0x25457d[_0x2962('0x33')]]['state']=_0x25457d['state'][_0x2962('0x35')]();this[_0x2962('0xc')][_0x25457d[_0x2962('0x33')]][_0x2962('0x38')](_0x25457d);}}else if(this['telephones'][_0x25457d[_0x2962('0x33')]]){if(this[_0x2962('0xd')][_0x25457d['device']]['state']!==_0x25457d['state'][_0x2962('0x35')]()){this[_0x2962('0xd')][_0x25457d[_0x2962('0x33')]][_0x2962('0x37')]=_[_0x2962('0x39')](moment()[_0x2962('0x2d')]('x'));}this[_0x2962('0xd')][_0x25457d['device']][_0x2962('0x24')]=_0x25457d['state'][_0x2962('0x35')]();logger[_0x2962('0x25')](_0x2962('0x3a'),util[_0x2962('0x1b')](this[_0x2962('0xd')][_0x25457d[_0x2962('0x33')]],{'showHidden':![],'depth':null}));this[_0x2962('0x20')](util['format'](_0x2962('0x3b'),this[_0x2962('0xd')][_0x25457d[_0x2962('0x33')]]['name']),'telephone:save',this['telephones'][_0x25457d[_0x2962('0x33')]]);}else if(this[_0x2962('0xb')][_0x25457d[_0x2962('0x33')]]){if(this['trunks'][_0x25457d[_0x2962('0x33')]][_0x2962('0x24')]!==_0x25457d[_0x2962('0x24')]['toLowerCase']()){this['trunks'][_0x25457d[_0x2962('0x33')]]['stateTime']=_[_0x2962('0x39')](moment()[_0x2962('0x2d')]('x'));}this[_0x2962('0xb')][_0x25457d[_0x2962('0x33')]][_0x2962('0x24')]=_0x25457d['state'][_0x2962('0x35')]();logger['debug'](_0x2962('0x3c'),util['inspect'](this[_0x2962('0xb')][_0x25457d[_0x2962('0x33')]],{'showHidden':![],'depth':null}));this[_0x2962('0x20')](util[_0x2962('0x2d')](_0x2962('0x2e'),this[_0x2962('0xb')][_0x25457d[_0x2962('0x33')]]['name']),'trunk:save',this[_0x2962('0xb')][_0x25457d[_0x2962('0x33')]]);}else if(_[_0x2962('0x3d')](_0x25457d[_0x2962('0x33')],_0x2962('0x3e'))){var _0x50c822=_0x25457d['device'];var _0x212b67=_0x50c822[_0x2962('0x3f')](_0x50c822['indexOf']('/')+0x1,_0x50c822[_0x2962('0x40')]('@'));var _0x386daa=_[_0x2962('0x27')](this[_0x2962('0xc')],function(_0x3f9639){return _0x3f9639['mobile']==_0x212b67||_0x3f9639[_0x2962('0x41')]==_0x212b67||_0x3f9639[_0x2962('0x42')]==_0x212b67;});if(_0x386daa){if(_0x386daa['state']!==_0x25457d[_0x2962('0x24')][_0x2962('0x35')]()){_0x386daa[_0x2962('0x37')]=_[_0x2962('0x39')](moment()[_0x2962('0x2d')]('x'));}_0x386daa['state']=_0x25457d[_0x2962('0x24')][_0x2962('0x35')]();_0x386daa[_0x2962('0x34')]=!![];_0x386daa[_0x2962('0x38')](_0x25457d);}}}}catch(_0x48755c){logger['error'](_0x2962('0x43'),util[_0x2962('0x1b')](_0x48755c,{'showHidden':![],'depth':null}));}};UserReport[_0x2962('0x1f')][_0x2962('0x44')]=function(_0x43436b){try{if(this[_0x2962('0x21')](_0x43436b)&&this['isNotNull'](_0x43436b['peerstatus'])){logger[_0x2962('0x31')](_0x2962('0x45'),_0x43436b[_0x2962('0x46')],_0x43436b[_0x2962('0x47')],_0x43436b[_0x2962('0x48')]);logger[_0x2962('0x25')](_0x2962('0x49'),util[_0x2962('0x1b')](_0x43436b,{'showHidden':![],'depth':null}));if(this['agents'][_0x43436b[_0x2962('0x46')]]){if(!this[_0x2962('0xc')][_0x43436b[_0x2962('0x46')]][_0x2962('0x34')]||_0x43436b[_0x2962('0x48')][_0x2962('0x35')]()=='registered'){this[_0x2962('0xc')][_0x43436b[_0x2962('0x46')]][_0x2962('0x34')]=![];this[_0x2962('0xc')][_0x43436b['peer']]['status']=_0x43436b[_0x2962('0x48')][_0x2962('0x35')]();this['agents'][_0x43436b[_0x2962('0x46')]][_0x2962('0x47')]=_0x43436b[_0x2962('0x47')];this['agents'][_0x43436b[_0x2962('0x46')]][_0x2962('0x38')](_0x43436b);}}else if(this[_0x2962('0xd')][_0x43436b['peer']]){this['telephones'][_0x43436b[_0x2962('0x46')]]['status']=_0x43436b['peerstatus']['toLowerCase']();this[_0x2962('0xd')][_0x43436b[_0x2962('0x46')]]['address']=_0x43436b['address'];logger[_0x2962('0x25')](_0x2962('0x4a'),util[_0x2962('0x1b')](this[_0x2962('0xd')][_0x43436b[_0x2962('0x46')]],{'showHidden':![],'depth':null}));this[_0x2962('0x20')](util[_0x2962('0x2d')](_0x2962('0x3b'),this[_0x2962('0xd')][_0x43436b['peer']][_0x2962('0x2f')]),_0x2962('0x4b'),this[_0x2962('0xd')][_0x43436b[_0x2962('0x46')]]);}else if(this['trunks'][_0x43436b['peer']]){this[_0x2962('0xb')][_0x43436b[_0x2962('0x46')]][_0x2962('0x4c')]=_0x43436b['peerstatus'][_0x2962('0x35')]();this[_0x2962('0xb')][_0x43436b[_0x2962('0x46')]]['address']=_0x43436b[_0x2962('0x47')];logger[_0x2962('0x25')](_0x2962('0x4d'),util['inspect'](this[_0x2962('0xb')][_0x43436b['peer']],{'showHidden':![],'depth':null}));this[_0x2962('0x20')](util[_0x2962('0x2d')]('trunk:%s',this['trunks'][_0x43436b[_0x2962('0x46')]]['name']),_0x2962('0x30'),this['trunks'][_0x43436b[_0x2962('0x46')]]);}}}catch(_0x4cac18){logger[_0x2962('0x19')](_0x2962('0x49'),util[_0x2962('0x1b')](_0x4cac18,{'showHidden':![],'depth':null}));}};module[_0x2962('0x4e')]=UserReport;