1c81a0a414d31e6e77691cbbd9aa8c5db49d0c7e
[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 _0x96d6=['[userReport][peerstatus]\x20sending\x20trunk:save\x20event:','exports','lodash','util','../../../config/environment','ami','../ami','redis','defaults','localhost','socket.io-emitter','trunks','agents','telephones','registryentry','registry','bind','syncDeviceState','peerstatus','syncPeerStatus','syncRealtimeShow','resolve','then','actionSipShowRegistry','error','[userReport][sipshowregistry]','actionDeviceStateList','catch','inspect','prototype','isNotNull','isUndefined','emit','username','state','debug','[userReport][registry]','find','stateRegistry','merge','omit','event','actionid','[userReport][registry]\x20sending\x20trunk:save\x20event:','format','trunk:save','info','device','[userReport][devicestatechange]','local','toLowerCase','toNumber','updateStatusRealtime','stateTime','[userReport][devicestatechange]\x20sending\x20telephone:save\x20event:','telephone:%s','name','telephone:save','[userReport][devicestatechange]\x20sending\x20trunk:save\x20event:','trunk:%s','startsWith','Local','substring','indexOf','phone','[userReport][peerstatus]\x20peer:%s\x20address:%s\x20status:%s','address','[userReport][peerstatus]','peer','registered','status','[userReport][peerstatus]\x20sending\x20telephone:save\x20event:'];(function(_0x4d5ee5,_0x17d94f){var _0x2dfbb5=function(_0x351c46){while(--_0x351c46){_0x4d5ee5['push'](_0x4d5ee5['shift']());}};_0x2dfbb5(++_0x17d94f);}(_0x96d6,0x1b2));var _0x696d=function(_0x502c7d,_0x2f1285){_0x502c7d=_0x502c7d-0x0;var _0x30b7ed=_0x96d6[_0x502c7d];return _0x30b7ed;};'use strict';var _=require(_0x696d('0x0'));var moment=require('moment');var util=require(_0x696d('0x1'));var Redis=require('ioredis');var BPromise=require('bluebird');var config=require(_0x696d('0x2'));var logger=require('../../../config/logger')(_0x696d('0x3'));var ami=require(_0x696d('0x4'));config[_0x696d('0x5')]=_[_0x696d('0x6')](config[_0x696d('0x5')],{'host':_0x696d('0x7'),'port':0x18eb});var io=require(_0x696d('0x8'))(new Redis(config[_0x696d('0x5')]));function UserReport(_0x39c88f){this[_0x696d('0x9')]=_0x39c88f[_0x696d('0x9')];this[_0x696d('0xa')]=_0x39c88f[_0x696d('0xa')];this[_0x696d('0xb')]=_0x39c88f[_0x696d('0xb')];ami['on'](_0x696d('0xc'),this['syncRegistry']['bind'](this));ami['on'](_0x696d('0xd'),this['syncRegistry'][_0x696d('0xe')](this));ami['on']('devicestatechange',this[_0x696d('0xf')][_0x696d('0xe')](this));ami['on'](_0x696d('0x10'),this[_0x696d('0x11')][_0x696d('0xe')](this));return this[_0x696d('0x12')]();}function showSipRegistrations(){Promise[_0x696d('0x13')]()[_0x696d('0x14')](ami[_0x696d('0x15')]())['catch'](function(_0x1bc6d1){logger[_0x696d('0x16')](_0x696d('0x17'),util['inspect'](_0x1bc6d1,{'showHidden':![],'depth':null}));});}function listDeviceStates(){Promise[_0x696d('0x13')]()['then'](ami[_0x696d('0x18')]())[_0x696d('0x19')](function(_0x1c9e2b){logger['error']('[userReport][devicestatelist]',util[_0x696d('0x1a')](_0x1c9e2b,{'showHidden':![],'depth':null}));});}function showPeersStatus(){Promise[_0x696d('0x13')]()[_0x696d('0x14')](ami['actionSipPeerStatus']())[_0x696d('0x19')](function(_0x540cf4){logger[_0x696d('0x16')]('[userReport][sippeerstatus]',util[_0x696d('0x1a')](_0x540cf4,{'showHidden':![],'depth':null}));});}UserReport['prototype'][_0x696d('0x12')]=function(){setInterval(function(){BPromise['resolve']()[_0x696d('0x14')](showSipRegistrations())[_0x696d('0x14')](listDeviceStates())[_0x696d('0x14')](showPeersStatus());},0x32c8);};UserReport[_0x696d('0x1b')][_0x696d('0x1c')]=function(_0x35d096){return _0x35d096!==null&&!_[_0x696d('0x1d')](_0x35d096);};UserReport[_0x696d('0x1b')][_0x696d('0x1e')]=function(_0x255a19,_0x48f40c,_0x3800de){io['to'](_0x255a19)[_0x696d('0x1e')](_0x48f40c,_0x3800de);};UserReport['prototype']['syncRegistry']=function(_0x5d1d51){try{if(this['isNotNull'](_0x5d1d51)){logger['info']('[userReport][registry]\x20registry:%s\x20state:%s',_0x5d1d51[_0x696d('0x1f')],_0x5d1d51[_0x696d('0x20')]);logger[_0x696d('0x21')](_0x696d('0x22'),util['inspect'](_0x5d1d51,{'showHidden':![],'depth':null}));var _0x30d2cd=_[_0x696d('0x23')](this[_0x696d('0x9')],{'defaultuser':_0x5d1d51[_0x696d('0x1f')]});if(_0x30d2cd){_0x5d1d51[_0x696d('0x24')]=_0x5d1d51[_0x696d('0x20')];_[_0x696d('0x25')](_0x30d2cd,_[_0x696d('0x26')](_0x5d1d51,[_0x696d('0x27'),_0x696d('0x28'),_0x696d('0x1f'),_0x696d('0x20')]));logger[_0x696d('0x21')](_0x696d('0x29'),util[_0x696d('0x1a')](_0x30d2cd,{'showHidden':![],'depth':null}));this['emit'](util[_0x696d('0x2a')]('trunk:%s',_0x30d2cd['name']),_0x696d('0x2b'),_0x30d2cd);}}}catch(_0x24df1f){logger['error'](_0x696d('0x22'),util[_0x696d('0x1a')](_0x24df1f,{'showHidden':![],'depth':null}));}};UserReport[_0x696d('0x1b')][_0x696d('0xf')]=function(_0x370f46){try{if(this['isNotNull'](_0x370f46)){logger[_0x696d('0x2c')]('[userReport][devicestatechange]\x20device:%s\x20state:%s',_0x370f46[_0x696d('0x2d')],_0x370f46[_0x696d('0x20')]);logger[_0x696d('0x21')](_0x696d('0x2e'),util[_0x696d('0x1a')](_0x370f46,{'showHidden':![],'depth':null}));if(this[_0x696d('0xa')][_0x370f46[_0x696d('0x2d')]]){if(!this[_0x696d('0xa')][_0x370f46[_0x696d('0x2d')]][_0x696d('0x2f')]||_0x370f46[_0x696d('0x20')][_0x696d('0x30')]()=='inuse'){this[_0x696d('0xa')][_0x370f46[_0x696d('0x2d')]][_0x696d('0x2f')]=![];if(this[_0x696d('0xa')][_0x370f46['device']]['state']!==_0x370f46['state'][_0x696d('0x30')]()){this[_0x696d('0xa')][_0x370f46['device']]['stateTime']=_[_0x696d('0x31')](moment()[_0x696d('0x2a')]('x'));}this[_0x696d('0xa')][_0x370f46[_0x696d('0x2d')]][_0x696d('0x20')]=_0x370f46['state'][_0x696d('0x30')]();this[_0x696d('0xa')][_0x370f46[_0x696d('0x2d')]][_0x696d('0x32')](_0x370f46);}}else if(this['telephones'][_0x370f46['device']]){if(this['telephones'][_0x370f46[_0x696d('0x2d')]][_0x696d('0x20')]!==_0x370f46[_0x696d('0x20')][_0x696d('0x30')]()){this['telephones'][_0x370f46['device']][_0x696d('0x33')]=_[_0x696d('0x31')](moment()[_0x696d('0x2a')]('x'));}this[_0x696d('0xb')][_0x370f46[_0x696d('0x2d')]][_0x696d('0x20')]=_0x370f46[_0x696d('0x20')]['toLowerCase']();logger['debug'](_0x696d('0x34'),util[_0x696d('0x1a')](this['telephones'][_0x370f46[_0x696d('0x2d')]],{'showHidden':![],'depth':null}));this['emit'](util[_0x696d('0x2a')](_0x696d('0x35'),this[_0x696d('0xb')][_0x370f46[_0x696d('0x2d')]][_0x696d('0x36')]),_0x696d('0x37'),this[_0x696d('0xb')][_0x370f46[_0x696d('0x2d')]]);}else if(this['trunks'][_0x370f46['device']]){if(this[_0x696d('0x9')][_0x370f46['device']]['state']!==_0x370f46[_0x696d('0x20')][_0x696d('0x30')]()){this[_0x696d('0x9')][_0x370f46[_0x696d('0x2d')]][_0x696d('0x33')]=_[_0x696d('0x31')](moment()[_0x696d('0x2a')]('x'));}this[_0x696d('0x9')][_0x370f46['device']]['state']=_0x370f46['state'][_0x696d('0x30')]();logger['debug'](_0x696d('0x38'),util['inspect'](this[_0x696d('0x9')][_0x370f46[_0x696d('0x2d')]],{'showHidden':![],'depth':null}));this[_0x696d('0x1e')](util[_0x696d('0x2a')](_0x696d('0x39'),this[_0x696d('0x9')][_0x370f46[_0x696d('0x2d')]]['name']),'trunk:save',this[_0x696d('0x9')][_0x370f46[_0x696d('0x2d')]]);}else if(_[_0x696d('0x3a')](_0x370f46[_0x696d('0x2d')],_0x696d('0x3b'))){var _0x28f107=_0x370f46['device'];var _0xc2218c=_0x28f107[_0x696d('0x3c')](_0x28f107[_0x696d('0x3d')]('/')+0x1,_0x28f107[_0x696d('0x3d')]('@'));var _0x3d5056=_[_0x696d('0x23')](this[_0x696d('0xa')],function(_0x2aa18d){return _0x2aa18d['mobile']==_0xc2218c||_0x2aa18d[_0x696d('0x3e')]==_0xc2218c||_0x2aa18d['accountcode']==_0xc2218c;});if(_0x3d5056){if(_0x3d5056[_0x696d('0x20')]!==_0x370f46[_0x696d('0x20')]['toLowerCase']()){_0x3d5056[_0x696d('0x33')]=_[_0x696d('0x31')](moment()[_0x696d('0x2a')]('x'));}_0x3d5056[_0x696d('0x20')]=_0x370f46[_0x696d('0x20')][_0x696d('0x30')]();_0x3d5056[_0x696d('0x2f')]=!![];_0x3d5056[_0x696d('0x32')](_0x370f46);}}}}catch(_0x17abf6){logger['error'](_0x696d('0x2e'),util[_0x696d('0x1a')](_0x17abf6,{'showHidden':![],'depth':null}));}};UserReport[_0x696d('0x1b')]['syncPeerStatus']=function(_0x29f803){try{if(this[_0x696d('0x1c')](_0x29f803)&&this[_0x696d('0x1c')](_0x29f803[_0x696d('0x10')])){logger[_0x696d('0x2c')](_0x696d('0x3f'),_0x29f803['peer'],_0x29f803[_0x696d('0x40')],_0x29f803[_0x696d('0x10')]);logger[_0x696d('0x21')](_0x696d('0x41'),util[_0x696d('0x1a')](_0x29f803,{'showHidden':![],'depth':null}));if(this['agents'][_0x29f803[_0x696d('0x42')]]){if(!this['agents'][_0x29f803[_0x696d('0x42')]][_0x696d('0x2f')]||_0x29f803[_0x696d('0x10')][_0x696d('0x30')]()==_0x696d('0x43')){this['agents'][_0x29f803[_0x696d('0x42')]][_0x696d('0x2f')]=![];this['agents'][_0x29f803[_0x696d('0x42')]][_0x696d('0x44')]=_0x29f803['peerstatus'][_0x696d('0x30')]();this['agents'][_0x29f803[_0x696d('0x42')]][_0x696d('0x40')]=_0x29f803[_0x696d('0x40')];this[_0x696d('0xa')][_0x29f803[_0x696d('0x42')]][_0x696d('0x32')](_0x29f803);}}else if(this[_0x696d('0xb')][_0x29f803['peer']]){this['telephones'][_0x29f803[_0x696d('0x42')]][_0x696d('0x44')]=_0x29f803[_0x696d('0x10')][_0x696d('0x30')]();this[_0x696d('0xb')][_0x29f803[_0x696d('0x42')]][_0x696d('0x40')]=_0x29f803[_0x696d('0x40')];logger['debug'](_0x696d('0x45'),util['inspect'](this[_0x696d('0xb')][_0x29f803[_0x696d('0x42')]],{'showHidden':![],'depth':null}));this['emit'](util[_0x696d('0x2a')](_0x696d('0x35'),this[_0x696d('0xb')][_0x29f803['peer']][_0x696d('0x36')]),_0x696d('0x37'),this[_0x696d('0xb')][_0x29f803[_0x696d('0x42')]]);}else if(this[_0x696d('0x9')][_0x29f803[_0x696d('0x42')]]){this[_0x696d('0x9')][_0x29f803['peer']][_0x696d('0x44')]=_0x29f803[_0x696d('0x10')]['toLowerCase']();this[_0x696d('0x9')][_0x29f803[_0x696d('0x42')]]['address']=_0x29f803[_0x696d('0x40')];logger['debug'](_0x696d('0x46'),util[_0x696d('0x1a')](this['trunks'][_0x29f803[_0x696d('0x42')]],{'showHidden':![],'depth':null}));this[_0x696d('0x1e')](util[_0x696d('0x2a')](_0x696d('0x39'),this[_0x696d('0x9')][_0x29f803[_0x696d('0x42')]]['name']),_0x696d('0x2b'),this['trunks'][_0x29f803[_0x696d('0x42')]]);}}}catch(_0x133c5c){logger['error'](_0x696d('0x41'),util['inspect'](_0x133c5c,{'showHidden':![],'depth':null}));}};module[_0x696d('0x47')]=UserReport;