bcbee9509688a7d1c3619dc43dd8a36b3167af67
[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 _0xfc20=['accountcode','[userReport][peerstatus]\x20peer:%s\x20address:%s\x20status:%s','peer','address','status','[userReport][peerstatus]\x20sending\x20telephone:save\x20event:','[userReport][peerstatus]\x20sending\x20trunk:save\x20event:','[userReport][peerstatus]','exports','lodash','ioredis','../../../config/environment','../../../config/logger','ami','../ami','defaults','redis','socket.io-emitter','trunks','agents','registryentry','syncRegistry','bind','registry','devicestatechange','peerstatus','syncPeerStatus','resolve','then','catch','error','inspect','[userReport][devicestatelist]','[userReport][sippeerstatus]','prototype','syncRealtimeShow','isUndefined','emit','isNotNull','info','[userReport][registry]\x20registry:%s\x20state:%s','username','state','debug','[userReport][registry]','find','stateRegistry','omit','event','[userReport][registry]\x20sending\x20trunk:save\x20event:','format','name','trunk:save','syncDeviceState','[userReport][devicestatechange]\x20device:%s\x20state:%s','device','[userReport][devicestatechange]','local','toLowerCase','inuse','updateStatusRealtime','telephones','stateTime','toNumber','[userReport][devicestatechange]\x20sending\x20telephone:save\x20event:','telephone:%s','telephone:save','trunk:%s','startsWith','substring','indexOf','mobile','phone'];(function(_0x4e0b8c,_0x443f31){var _0x633ecc=function(_0x1f1f36){while(--_0x1f1f36){_0x4e0b8c['push'](_0x4e0b8c['shift']());}};_0x633ecc(++_0x443f31);}(_0xfc20,0x12d));var _0x0fc2=function(_0xdbd5ac,_0x568e65){_0xdbd5ac=_0xdbd5ac-0x0;var _0x4cd244=_0xfc20[_0xdbd5ac];return _0x4cd244;};'use strict';var _=require(_0x0fc2('0x0'));var moment=require('moment');var util=require('util');var Redis=require(_0x0fc2('0x1'));var BPromise=require('bluebird');var config=require(_0x0fc2('0x2'));var logger=require(_0x0fc2('0x3'))(_0x0fc2('0x4'));var ami=require(_0x0fc2('0x5'));config['redis']=_[_0x0fc2('0x6')](config[_0x0fc2('0x7')],{'host':'localhost','port':0x18eb});var io=require(_0x0fc2('0x8'))(new Redis(config[_0x0fc2('0x7')]));function UserReport(_0x1a4ea5){this[_0x0fc2('0x9')]=_0x1a4ea5['trunks'];this[_0x0fc2('0xa')]=_0x1a4ea5[_0x0fc2('0xa')];this['telephones']=_0x1a4ea5['telephones'];ami['on'](_0x0fc2('0xb'),this[_0x0fc2('0xc')][_0x0fc2('0xd')](this));ami['on'](_0x0fc2('0xe'),this[_0x0fc2('0xc')]['bind'](this));ami['on'](_0x0fc2('0xf'),this['syncDeviceState']['bind'](this));ami['on'](_0x0fc2('0x10'),this[_0x0fc2('0x11')][_0x0fc2('0xd')](this));return this['syncRealtimeShow']();}function showSipRegistrations(){Promise[_0x0fc2('0x12')]()[_0x0fc2('0x13')](ami['actionSipShowRegistry']())[_0x0fc2('0x14')](function(_0x26f1e7){logger[_0x0fc2('0x15')]('[userReport][sipshowregistry]',util[_0x0fc2('0x16')](_0x26f1e7,{'showHidden':![],'depth':null}));});}function listDeviceStates(){Promise[_0x0fc2('0x12')]()[_0x0fc2('0x13')](ami['actionDeviceStateList']())['catch'](function(_0x4f05fa){logger[_0x0fc2('0x15')](_0x0fc2('0x17'),util[_0x0fc2('0x16')](_0x4f05fa,{'showHidden':![],'depth':null}));});}function showPeersStatus(){Promise[_0x0fc2('0x12')]()[_0x0fc2('0x13')](ami['actionSipPeerStatus']())[_0x0fc2('0x14')](function(_0x41b18c){logger[_0x0fc2('0x15')](_0x0fc2('0x18'),util[_0x0fc2('0x16')](_0x41b18c,{'showHidden':![],'depth':null}));});}UserReport[_0x0fc2('0x19')][_0x0fc2('0x1a')]=function(){setInterval(function(){BPromise[_0x0fc2('0x12')]()[_0x0fc2('0x13')](showSipRegistrations())[_0x0fc2('0x13')](listDeviceStates())['then'](showPeersStatus());},0x32c8);};UserReport[_0x0fc2('0x19')]['isNotNull']=function(_0x5bdf12){return _0x5bdf12!==null&&!_[_0x0fc2('0x1b')](_0x5bdf12);};UserReport['prototype'][_0x0fc2('0x1c')]=function(_0x14c2bb,_0x35a094,_0x1b7129){io['to'](_0x14c2bb)[_0x0fc2('0x1c')](_0x35a094,_0x1b7129);};UserReport[_0x0fc2('0x19')]['syncRegistry']=function(_0xc22d27){try{if(this[_0x0fc2('0x1d')](_0xc22d27)){logger[_0x0fc2('0x1e')](_0x0fc2('0x1f'),_0xc22d27[_0x0fc2('0x20')],_0xc22d27[_0x0fc2('0x21')]);logger[_0x0fc2('0x22')](_0x0fc2('0x23'),util[_0x0fc2('0x16')](_0xc22d27,{'showHidden':![],'depth':null}));var _0x2e7138=_[_0x0fc2('0x24')](this[_0x0fc2('0x9')],{'registry':_0xc22d27[_0x0fc2('0x20')]});if(_0x2e7138){_0xc22d27[_0x0fc2('0x25')]=_0xc22d27[_0x0fc2('0x21')];_['merge'](_0x2e7138,_[_0x0fc2('0x26')](_0xc22d27,[_0x0fc2('0x27'),'actionid',_0x0fc2('0x20'),_0x0fc2('0x21')]));logger[_0x0fc2('0x22')](_0x0fc2('0x28'),util['inspect'](_0x2e7138,{'showHidden':![],'depth':null}));this[_0x0fc2('0x1c')](util[_0x0fc2('0x29')]('trunk:%s',_0x2e7138[_0x0fc2('0x2a')]),_0x0fc2('0x2b'),_0x2e7138);}}}catch(_0xea8f6f){logger[_0x0fc2('0x15')](_0x0fc2('0x23'),util[_0x0fc2('0x16')](_0xea8f6f,{'showHidden':![],'depth':null}));}};UserReport[_0x0fc2('0x19')][_0x0fc2('0x2c')]=function(_0x5740d5){try{if(this['isNotNull'](_0x5740d5)){logger['info'](_0x0fc2('0x2d'),_0x5740d5[_0x0fc2('0x2e')],_0x5740d5[_0x0fc2('0x21')]);logger['debug'](_0x0fc2('0x2f'),util[_0x0fc2('0x16')](_0x5740d5,{'showHidden':![],'depth':null}));if(this[_0x0fc2('0xa')][_0x5740d5[_0x0fc2('0x2e')]]){if(!this[_0x0fc2('0xa')][_0x5740d5[_0x0fc2('0x2e')]][_0x0fc2('0x30')]||_0x5740d5['state'][_0x0fc2('0x31')]()==_0x0fc2('0x32')){this[_0x0fc2('0xa')][_0x5740d5['device']]['local']=![];if(this[_0x0fc2('0xa')][_0x5740d5[_0x0fc2('0x2e')]][_0x0fc2('0x21')]!==_0x5740d5[_0x0fc2('0x21')][_0x0fc2('0x31')]()){this[_0x0fc2('0xa')][_0x5740d5['device']]['stateTime']=_['toNumber'](moment()[_0x0fc2('0x29')]('x'));}this['agents'][_0x5740d5[_0x0fc2('0x2e')]][_0x0fc2('0x21')]=_0x5740d5['state'][_0x0fc2('0x31')]();this[_0x0fc2('0xa')][_0x5740d5[_0x0fc2('0x2e')]][_0x0fc2('0x33')](_0x5740d5);}}else if(this[_0x0fc2('0x34')][_0x5740d5[_0x0fc2('0x2e')]]){if(this[_0x0fc2('0x34')][_0x5740d5['device']][_0x0fc2('0x21')]!==_0x5740d5[_0x0fc2('0x21')][_0x0fc2('0x31')]()){this['telephones'][_0x5740d5[_0x0fc2('0x2e')]][_0x0fc2('0x35')]=_[_0x0fc2('0x36')](moment()[_0x0fc2('0x29')]('x'));}this['telephones'][_0x5740d5[_0x0fc2('0x2e')]][_0x0fc2('0x21')]=_0x5740d5['state']['toLowerCase']();logger[_0x0fc2('0x22')](_0x0fc2('0x37'),util[_0x0fc2('0x16')](this[_0x0fc2('0x34')][_0x5740d5[_0x0fc2('0x2e')]],{'showHidden':![],'depth':null}));this['emit'](util['format'](_0x0fc2('0x38'),this[_0x0fc2('0x34')][_0x5740d5['device']]['name']),_0x0fc2('0x39'),this[_0x0fc2('0x34')][_0x5740d5[_0x0fc2('0x2e')]]);}else if(this[_0x0fc2('0x9')][_0x5740d5['device']]){if(this[_0x0fc2('0x9')][_0x5740d5[_0x0fc2('0x2e')]]['state']!==_0x5740d5['state']['toLowerCase']()){this[_0x0fc2('0x9')][_0x5740d5[_0x0fc2('0x2e')]][_0x0fc2('0x35')]=_[_0x0fc2('0x36')](moment()[_0x0fc2('0x29')]('x'));}this[_0x0fc2('0x9')][_0x5740d5[_0x0fc2('0x2e')]]['state']=_0x5740d5[_0x0fc2('0x21')][_0x0fc2('0x31')]();logger['debug']('[userReport][devicestatechange]\x20sending\x20trunk:save\x20event:',util['inspect'](this['trunks'][_0x5740d5[_0x0fc2('0x2e')]],{'showHidden':![],'depth':null}));this[_0x0fc2('0x1c')](util[_0x0fc2('0x29')](_0x0fc2('0x3a'),this[_0x0fc2('0x9')][_0x5740d5['device']]['name']),_0x0fc2('0x2b'),this[_0x0fc2('0x9')][_0x5740d5['device']]);}else if(_[_0x0fc2('0x3b')](_0x5740d5['device'],'Local')){var _0x38a758=_0x5740d5[_0x0fc2('0x2e')];var _0xe1b1d7=_0x38a758[_0x0fc2('0x3c')](_0x38a758[_0x0fc2('0x3d')]('/')+0x1,_0x38a758[_0x0fc2('0x3d')]('@'));var _0x5cc5b6=_['find'](this['agents'],function(_0x35f7f7){return _0x35f7f7[_0x0fc2('0x3e')]==_0xe1b1d7||_0x35f7f7[_0x0fc2('0x3f')]==_0xe1b1d7||_0x35f7f7[_0x0fc2('0x40')]==_0xe1b1d7;});if(_0x5cc5b6){if(_0x5cc5b6[_0x0fc2('0x21')]!==_0x5740d5[_0x0fc2('0x21')][_0x0fc2('0x31')]()){_0x5cc5b6[_0x0fc2('0x35')]=_[_0x0fc2('0x36')](moment()[_0x0fc2('0x29')]('x'));}_0x5cc5b6['state']=_0x5740d5[_0x0fc2('0x21')][_0x0fc2('0x31')]();_0x5cc5b6[_0x0fc2('0x30')]=!![];_0x5cc5b6[_0x0fc2('0x33')](_0x5740d5);}}}}catch(_0x182983){logger[_0x0fc2('0x15')](_0x0fc2('0x2f'),util[_0x0fc2('0x16')](_0x182983,{'showHidden':![],'depth':null}));}};UserReport[_0x0fc2('0x19')][_0x0fc2('0x11')]=function(_0x3fa218){try{if(this[_0x0fc2('0x1d')](_0x3fa218)&&this['isNotNull'](_0x3fa218['peerstatus'])){logger[_0x0fc2('0x1e')](_0x0fc2('0x41'),_0x3fa218[_0x0fc2('0x42')],_0x3fa218[_0x0fc2('0x43')],_0x3fa218[_0x0fc2('0x10')]);logger['debug']('[userReport][peerstatus]',util[_0x0fc2('0x16')](_0x3fa218,{'showHidden':![],'depth':null}));if(this['agents'][_0x3fa218[_0x0fc2('0x42')]]){if(!this[_0x0fc2('0xa')][_0x3fa218[_0x0fc2('0x42')]][_0x0fc2('0x30')]||_0x3fa218[_0x0fc2('0x10')][_0x0fc2('0x31')]()=='registered'){this[_0x0fc2('0xa')][_0x3fa218['peer']]['local']=![];this[_0x0fc2('0xa')][_0x3fa218['peer']][_0x0fc2('0x44')]=_0x3fa218[_0x0fc2('0x10')][_0x0fc2('0x31')]();this['agents'][_0x3fa218[_0x0fc2('0x42')]][_0x0fc2('0x43')]=_0x3fa218[_0x0fc2('0x43')];this['agents'][_0x3fa218[_0x0fc2('0x42')]]['updateStatusRealtime'](_0x3fa218);}}else if(this['telephones'][_0x3fa218[_0x0fc2('0x42')]]){this[_0x0fc2('0x34')][_0x3fa218[_0x0fc2('0x42')]]['status']=_0x3fa218['peerstatus'][_0x0fc2('0x31')]();this['telephones'][_0x3fa218['peer']][_0x0fc2('0x43')]=_0x3fa218[_0x0fc2('0x43')];logger[_0x0fc2('0x22')](_0x0fc2('0x45'),util[_0x0fc2('0x16')](this[_0x0fc2('0x34')][_0x3fa218[_0x0fc2('0x42')]],{'showHidden':![],'depth':null}));this[_0x0fc2('0x1c')](util[_0x0fc2('0x29')]('telephone:%s',this[_0x0fc2('0x34')][_0x3fa218[_0x0fc2('0x42')]][_0x0fc2('0x2a')]),_0x0fc2('0x39'),this[_0x0fc2('0x34')][_0x3fa218[_0x0fc2('0x42')]]);}else if(this[_0x0fc2('0x9')][_0x3fa218[_0x0fc2('0x42')]]){this['trunks'][_0x3fa218[_0x0fc2('0x42')]]['status']=_0x3fa218[_0x0fc2('0x10')][_0x0fc2('0x31')]();this[_0x0fc2('0x9')][_0x3fa218[_0x0fc2('0x42')]][_0x0fc2('0x43')]=_0x3fa218[_0x0fc2('0x43')];logger[_0x0fc2('0x22')](_0x0fc2('0x46'),util['inspect'](this[_0x0fc2('0x9')][_0x3fa218[_0x0fc2('0x42')]],{'showHidden':![],'depth':null}));this[_0x0fc2('0x1c')](util[_0x0fc2('0x29')](_0x0fc2('0x3a'),this[_0x0fc2('0x9')][_0x3fa218['peer']][_0x0fc2('0x2a')]),_0x0fc2('0x2b'),this[_0x0fc2('0x9')][_0x3fa218[_0x0fc2('0x42')]]);}}}catch(_0x394735){logger[_0x0fc2('0x15')](_0x0fc2('0x47'),util[_0x0fc2('0x16')](_0x394735,{'showHidden':![],'depth':null}));}};module[_0x0fc2('0x48')]=UserReport;