Built motion from commit (unavailable).|2.5.25
[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 _0xee2c=['telephone:save','trunk:%s','startsWith','Local','indexOf','find','mobile','phone','syncPeerStatus','[userReport][peerstatus]\x20peer:%s\x20address:%s\x20status:%s','address','[userReport][peerstatus]','peer','registered','status','telephone:%s','exports','lodash','util','ioredis','bluebird','../../../config/environment','../ami','redis','localhost','socket.io-emitter','agents','telephones','registryentry','syncRegistry','bind','registry','devicestatechange','syncDeviceState','peerstatus','actionSipShowRegistry','catch','error','inspect','resolve','then','actionDeviceStateList','[userReport][devicestatelist]','[userReport][sippeerstatus]','prototype','syncRealtimeShow','isNotNull','isUndefined','info','state','debug','[userReport][registry]','trunks','username','stateRegistry','merge','omit','event','actionid','emit','format','name','trunk:save','[userReport][devicestatechange]\x20device:%s\x20state:%s','[userReport][devicestatechange]','device','local','toLowerCase','inuse','toNumber','updateStatusRealtime','stateTime','[userReport][devicestatechange]\x20sending\x20telephone:save\x20event:'];(function(_0x81e39d,_0x4c3934){var _0x548fbb=function(_0x1adda5){while(--_0x1adda5){_0x81e39d['push'](_0x81e39d['shift']());}};_0x548fbb(++_0x4c3934);}(_0xee2c,0x1c7));var _0xcee2=function(_0x4a9fb1,_0x273043){_0x4a9fb1=_0x4a9fb1-0x0;var _0x348672=_0xee2c[_0x4a9fb1];return _0x348672;};'use strict';var _=require(_0xcee2('0x0'));var moment=require('moment');var util=require(_0xcee2('0x1'));var Redis=require(_0xcee2('0x2'));var BPromise=require(_0xcee2('0x3'));var config=require(_0xcee2('0x4'));var logger=require('../../../config/logger')('ami');var ami=require(_0xcee2('0x5'));config[_0xcee2('0x6')]=_['defaults'](config[_0xcee2('0x6')],{'host':_0xcee2('0x7'),'port':0x18eb});var io=require(_0xcee2('0x8'))(new Redis(config[_0xcee2('0x6')]));function UserReport(_0x24ce33){this['trunks']=_0x24ce33['trunks'];this[_0xcee2('0x9')]=_0x24ce33[_0xcee2('0x9')];this[_0xcee2('0xa')]=_0x24ce33[_0xcee2('0xa')];ami['on'](_0xcee2('0xb'),this[_0xcee2('0xc')][_0xcee2('0xd')](this));ami['on'](_0xcee2('0xe'),this['syncRegistry'][_0xcee2('0xd')](this));ami['on'](_0xcee2('0xf'),this[_0xcee2('0x10')][_0xcee2('0xd')](this));ami['on'](_0xcee2('0x11'),this['syncPeerStatus'][_0xcee2('0xd')](this));return this['syncRealtimeShow']();}function showSipRegistrations(){Promise['resolve']()['then'](ami[_0xcee2('0x12')]())[_0xcee2('0x13')](function(_0x2afc56){logger[_0xcee2('0x14')]('[userReport][sipshowregistry]',util[_0xcee2('0x15')](_0x2afc56,{'showHidden':![],'depth':null}));});}function listDeviceStates(){Promise[_0xcee2('0x16')]()[_0xcee2('0x17')](ami[_0xcee2('0x18')]())[_0xcee2('0x13')](function(_0x21a182){logger[_0xcee2('0x14')](_0xcee2('0x19'),util[_0xcee2('0x15')](_0x21a182,{'showHidden':![],'depth':null}));});}function showPeersStatus(){Promise['resolve']()[_0xcee2('0x17')](ami['actionSipPeerStatus']())[_0xcee2('0x13')](function(_0xeae302){logger[_0xcee2('0x14')](_0xcee2('0x1a'),util['inspect'](_0xeae302,{'showHidden':![],'depth':null}));});}UserReport[_0xcee2('0x1b')][_0xcee2('0x1c')]=function(){setInterval(function(){BPromise[_0xcee2('0x16')]()[_0xcee2('0x17')](showSipRegistrations())[_0xcee2('0x17')](listDeviceStates())[_0xcee2('0x17')](showPeersStatus());},0x32c8);};UserReport[_0xcee2('0x1b')][_0xcee2('0x1d')]=function(_0x34f480){return _0x34f480!==null&&!_[_0xcee2('0x1e')](_0x34f480);};UserReport[_0xcee2('0x1b')]['emit']=function(_0x3f4f92,_0x4864d7,_0x4fdb88){io['to'](_0x3f4f92)['emit'](_0x4864d7,_0x4fdb88);};UserReport[_0xcee2('0x1b')]['syncRegistry']=function(_0x31b2c8){try{if(this[_0xcee2('0x1d')](_0x31b2c8)){logger[_0xcee2('0x1f')]('[userReport][registry]\x20registry:%s\x20state:%s',_0x31b2c8['username'],_0x31b2c8[_0xcee2('0x20')]);logger[_0xcee2('0x21')](_0xcee2('0x22'),util['inspect'](_0x31b2c8,{'showHidden':![],'depth':null}));var _0x2f18ec=_['find'](this[_0xcee2('0x23')],{'registry':_0x31b2c8[_0xcee2('0x24')]});if(_0x2f18ec){_0x31b2c8[_0xcee2('0x25')]=_0x31b2c8[_0xcee2('0x20')];_[_0xcee2('0x26')](_0x2f18ec,_[_0xcee2('0x27')](_0x31b2c8,[_0xcee2('0x28'),_0xcee2('0x29'),_0xcee2('0x24'),_0xcee2('0x20')]));logger[_0xcee2('0x21')]('[userReport][registry]\x20sending\x20trunk:save\x20event:',util[_0xcee2('0x15')](_0x2f18ec,{'showHidden':![],'depth':null}));this[_0xcee2('0x2a')](util[_0xcee2('0x2b')]('trunk:%s',_0x2f18ec[_0xcee2('0x2c')]),_0xcee2('0x2d'),_0x2f18ec);}}}catch(_0x559816){logger[_0xcee2('0x14')](_0xcee2('0x22'),util['inspect'](_0x559816,{'showHidden':![],'depth':null}));}};UserReport['prototype'][_0xcee2('0x10')]=function(_0x501bd3){try{if(this['isNotNull'](_0x501bd3)){logger[_0xcee2('0x1f')](_0xcee2('0x2e'),_0x501bd3['device'],_0x501bd3[_0xcee2('0x20')]);logger[_0xcee2('0x21')](_0xcee2('0x2f'),util[_0xcee2('0x15')](_0x501bd3,{'showHidden':![],'depth':null}));if(this[_0xcee2('0x9')][_0x501bd3[_0xcee2('0x30')]]){if(!this[_0xcee2('0x9')][_0x501bd3[_0xcee2('0x30')]][_0xcee2('0x31')]||_0x501bd3[_0xcee2('0x20')][_0xcee2('0x32')]()==_0xcee2('0x33')){this['agents'][_0x501bd3[_0xcee2('0x30')]][_0xcee2('0x31')]=![];if(this['agents'][_0x501bd3[_0xcee2('0x30')]][_0xcee2('0x20')]!==_0x501bd3['state'][_0xcee2('0x32')]()){this[_0xcee2('0x9')][_0x501bd3[_0xcee2('0x30')]]['stateTime']=_[_0xcee2('0x34')](moment()[_0xcee2('0x2b')]('x'));}this[_0xcee2('0x9')][_0x501bd3[_0xcee2('0x30')]][_0xcee2('0x20')]=_0x501bd3[_0xcee2('0x20')]['toLowerCase']();this[_0xcee2('0x9')][_0x501bd3[_0xcee2('0x30')]][_0xcee2('0x35')](_0x501bd3);}}else if(this['telephones'][_0x501bd3[_0xcee2('0x30')]]){if(this['telephones'][_0x501bd3['device']][_0xcee2('0x20')]!==_0x501bd3[_0xcee2('0x20')][_0xcee2('0x32')]()){this[_0xcee2('0xa')][_0x501bd3[_0xcee2('0x30')]][_0xcee2('0x36')]=_['toNumber'](moment()['format']('x'));}this['telephones'][_0x501bd3[_0xcee2('0x30')]]['state']=_0x501bd3[_0xcee2('0x20')][_0xcee2('0x32')]();logger['debug'](_0xcee2('0x37'),util['inspect'](this['telephones'][_0x501bd3[_0xcee2('0x30')]],{'showHidden':![],'depth':null}));this[_0xcee2('0x2a')](util['format']('telephone:%s',this[_0xcee2('0xa')][_0x501bd3[_0xcee2('0x30')]][_0xcee2('0x2c')]),_0xcee2('0x38'),this[_0xcee2('0xa')][_0x501bd3[_0xcee2('0x30')]]);}else if(this[_0xcee2('0x23')][_0x501bd3[_0xcee2('0x30')]]){if(this[_0xcee2('0x23')][_0x501bd3['device']][_0xcee2('0x20')]!==_0x501bd3[_0xcee2('0x20')][_0xcee2('0x32')]()){this[_0xcee2('0x23')][_0x501bd3['device']][_0xcee2('0x36')]=_[_0xcee2('0x34')](moment()[_0xcee2('0x2b')]('x'));}this[_0xcee2('0x23')][_0x501bd3[_0xcee2('0x30')]][_0xcee2('0x20')]=_0x501bd3[_0xcee2('0x20')][_0xcee2('0x32')]();logger[_0xcee2('0x21')]('[userReport][devicestatechange]\x20sending\x20trunk:save\x20event:',util[_0xcee2('0x15')](this[_0xcee2('0x23')][_0x501bd3[_0xcee2('0x30')]],{'showHidden':![],'depth':null}));this['emit'](util[_0xcee2('0x2b')](_0xcee2('0x39'),this[_0xcee2('0x23')][_0x501bd3[_0xcee2('0x30')]][_0xcee2('0x2c')]),_0xcee2('0x2d'),this[_0xcee2('0x23')][_0x501bd3[_0xcee2('0x30')]]);}else if(_[_0xcee2('0x3a')](_0x501bd3[_0xcee2('0x30')],_0xcee2('0x3b'))){var _0x4720c0=_0x501bd3[_0xcee2('0x30')];var _0xa98bc1=_0x4720c0['substring'](_0x4720c0[_0xcee2('0x3c')]('/')+0x1,_0x4720c0['indexOf']('@'));var _0x52c037=_[_0xcee2('0x3d')](this[_0xcee2('0x9')],function(_0x1b0fd4){return _0x1b0fd4[_0xcee2('0x3e')]==_0xa98bc1||_0x1b0fd4[_0xcee2('0x3f')]==_0xa98bc1||_0x1b0fd4['accountcode']==_0xa98bc1;});if(_0x52c037){if(_0x52c037[_0xcee2('0x20')]!==_0x501bd3['state'][_0xcee2('0x32')]()){_0x52c037[_0xcee2('0x36')]=_[_0xcee2('0x34')](moment()[_0xcee2('0x2b')]('x'));}_0x52c037[_0xcee2('0x20')]=_0x501bd3[_0xcee2('0x20')][_0xcee2('0x32')]();_0x52c037['local']=!![];_0x52c037[_0xcee2('0x35')](_0x501bd3);}}}}catch(_0x19002c){logger[_0xcee2('0x14')](_0xcee2('0x2f'),util[_0xcee2('0x15')](_0x19002c,{'showHidden':![],'depth':null}));}};UserReport[_0xcee2('0x1b')][_0xcee2('0x40')]=function(_0x3a1f76){try{if(this[_0xcee2('0x1d')](_0x3a1f76)&&this['isNotNull'](_0x3a1f76['peerstatus'])){logger[_0xcee2('0x1f')](_0xcee2('0x41'),_0x3a1f76['peer'],_0x3a1f76[_0xcee2('0x42')],_0x3a1f76[_0xcee2('0x11')]);logger[_0xcee2('0x21')](_0xcee2('0x43'),util[_0xcee2('0x15')](_0x3a1f76,{'showHidden':![],'depth':null}));if(this[_0xcee2('0x9')][_0x3a1f76[_0xcee2('0x44')]]){if(!this['agents'][_0x3a1f76['peer']]['local']||_0x3a1f76[_0xcee2('0x11')][_0xcee2('0x32')]()==_0xcee2('0x45')){this['agents'][_0x3a1f76[_0xcee2('0x44')]][_0xcee2('0x31')]=![];this[_0xcee2('0x9')][_0x3a1f76['peer']][_0xcee2('0x46')]=_0x3a1f76[_0xcee2('0x11')][_0xcee2('0x32')]();this['agents'][_0x3a1f76[_0xcee2('0x44')]][_0xcee2('0x42')]=_0x3a1f76[_0xcee2('0x42')];this[_0xcee2('0x9')][_0x3a1f76['peer']]['updateStatusRealtime'](_0x3a1f76);}}else if(this['telephones'][_0x3a1f76[_0xcee2('0x44')]]){this[_0xcee2('0xa')][_0x3a1f76[_0xcee2('0x44')]][_0xcee2('0x46')]=_0x3a1f76[_0xcee2('0x11')][_0xcee2('0x32')]();this[_0xcee2('0xa')][_0x3a1f76[_0xcee2('0x44')]][_0xcee2('0x42')]=_0x3a1f76[_0xcee2('0x42')];logger[_0xcee2('0x21')]('[userReport][peerstatus]\x20sending\x20telephone:save\x20event:',util[_0xcee2('0x15')](this[_0xcee2('0xa')][_0x3a1f76[_0xcee2('0x44')]],{'showHidden':![],'depth':null}));this[_0xcee2('0x2a')](util[_0xcee2('0x2b')](_0xcee2('0x47'),this[_0xcee2('0xa')][_0x3a1f76[_0xcee2('0x44')]]['name']),_0xcee2('0x38'),this[_0xcee2('0xa')][_0x3a1f76[_0xcee2('0x44')]]);}else if(this[_0xcee2('0x23')][_0x3a1f76[_0xcee2('0x44')]]){this[_0xcee2('0x23')][_0x3a1f76[_0xcee2('0x44')]][_0xcee2('0x46')]=_0x3a1f76[_0xcee2('0x11')][_0xcee2('0x32')]();this['trunks'][_0x3a1f76['peer']][_0xcee2('0x42')]=_0x3a1f76[_0xcee2('0x42')];logger[_0xcee2('0x21')]('[userReport][peerstatus]\x20sending\x20trunk:save\x20event:',util['inspect'](this['trunks'][_0x3a1f76[_0xcee2('0x44')]],{'showHidden':![],'depth':null}));this['emit'](util['format'](_0xcee2('0x39'),this['trunks'][_0x3a1f76[_0xcee2('0x44')]][_0xcee2('0x2c')]),'trunk:save',this[_0xcee2('0x23')][_0x3a1f76[_0xcee2('0x44')]]);}}}catch(_0x5abf13){logger['error'](_0xcee2('0x43'),util[_0xcee2('0x15')](_0x5abf13,{'showHidden':![],'depth':null}));}};module[_0xcee2('0x48')]=UserReport;