Built motion from commit bab6f49e.|2.6.17
[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 _0x619a=['toLowerCase','inuse','toNumber','updateStatusRealtime','stateTime','[userReport][devicestatechange]\x20sending\x20telephone:save\x20event:','telephone:save','[userReport][devicestatechange]\x20sending\x20trunk:save\x20event:','startsWith','Local','substring','indexOf','mobile','phone','accountcode','peerstatus','[userReport][peerstatus]\x20peer:%s\x20address:%s\x20status:%s','peer','address','[userReport][peerstatus]','registered','status','exports','lodash','ioredis','bluebird','../../../config/environment','../../../config/logger','../ami','defaults','redis','localhost','socket.io-emitter','trunks','agents','telephones','syncRegistry','bind','registry','devicestatechange','syncDeviceState','syncRealtimeShow','then','actionSipShowRegistry','[userReport][sipshowregistry]','inspect','resolve','catch','error','[userReport][devicestatelist]','actionSipPeerStatus','[userReport][sippeerstatus]','prototype','isNotNull','isUndefined','emit','info','[userReport][registry]\x20registry:%s\x20state:%s','state','[userReport][registry]','find','stateRegistry','merge','omit','actionid','username','debug','[userReport][registry]\x20sending\x20trunk:save\x20event:','format','trunk:%s','name','trunk:save','device','local'];(function(_0x21aec3,_0x5c97e9){var _0x288bbc=function(_0x2283fe){while(--_0x2283fe){_0x21aec3['push'](_0x21aec3['shift']());}};_0x288bbc(++_0x5c97e9);}(_0x619a,0x189));var _0xa619=function(_0x20e859,_0x50c388){_0x20e859=_0x20e859-0x0;var _0x424531=_0x619a[_0x20e859];return _0x424531;};'use strict';var _=require(_0xa619('0x0'));var moment=require('moment');var util=require('util');var Redis=require(_0xa619('0x1'));var BPromise=require(_0xa619('0x2'));var config=require(_0xa619('0x3'));var logger=require(_0xa619('0x4'))('ami');var ami=require(_0xa619('0x5'));config['redis']=_[_0xa619('0x6')](config[_0xa619('0x7')],{'host':_0xa619('0x8'),'port':0x18eb});var io=require(_0xa619('0x9'))(new Redis(config['redis']));function UserReport(_0x483f9b){this[_0xa619('0xa')]=_0x483f9b[_0xa619('0xa')];this[_0xa619('0xb')]=_0x483f9b[_0xa619('0xb')];this[_0xa619('0xc')]=_0x483f9b[_0xa619('0xc')];ami['on']('registryentry',this[_0xa619('0xd')][_0xa619('0xe')](this));ami['on'](_0xa619('0xf'),this['syncRegistry'][_0xa619('0xe')](this));ami['on'](_0xa619('0x10'),this[_0xa619('0x11')]['bind'](this));ami['on']('peerstatus',this['syncPeerStatus'][_0xa619('0xe')](this));return this[_0xa619('0x12')]();}function showSipRegistrations(){Promise['resolve']()[_0xa619('0x13')](ami[_0xa619('0x14')]())['catch'](function(_0x36044e){logger['error'](_0xa619('0x15'),util[_0xa619('0x16')](_0x36044e,{'showHidden':![],'depth':null}));});}function listDeviceStates(){Promise[_0xa619('0x17')]()['then'](ami['actionDeviceStateList']())[_0xa619('0x18')](function(_0x5d09c0){logger[_0xa619('0x19')](_0xa619('0x1a'),util[_0xa619('0x16')](_0x5d09c0,{'showHidden':![],'depth':null}));});}function showPeersStatus(){Promise['resolve']()[_0xa619('0x13')](ami[_0xa619('0x1b')]())[_0xa619('0x18')](function(_0x137ed6){logger[_0xa619('0x19')](_0xa619('0x1c'),util[_0xa619('0x16')](_0x137ed6,{'showHidden':![],'depth':null}));});}UserReport[_0xa619('0x1d')][_0xa619('0x12')]=function(){setInterval(function(){BPromise[_0xa619('0x17')]()[_0xa619('0x13')](showSipRegistrations())[_0xa619('0x13')](listDeviceStates())[_0xa619('0x13')](showPeersStatus());},0x32c8);};UserReport['prototype'][_0xa619('0x1e')]=function(_0x585f3d){return _0x585f3d!==null&&!_[_0xa619('0x1f')](_0x585f3d);};UserReport[_0xa619('0x1d')][_0xa619('0x20')]=function(_0x46885d,_0x2a1e1b,_0x5b6a3d){io['to'](_0x46885d)[_0xa619('0x20')](_0x2a1e1b,_0x5b6a3d);};UserReport[_0xa619('0x1d')]['syncRegistry']=function(_0x3e182f){try{if(this['isNotNull'](_0x3e182f)){logger[_0xa619('0x21')](_0xa619('0x22'),_0x3e182f['username'],_0x3e182f[_0xa619('0x23')]);logger['debug'](_0xa619('0x24'),util['inspect'](_0x3e182f,{'showHidden':![],'depth':null}));var _0x1805d7=_[_0xa619('0x25')](this[_0xa619('0xa')],{'defaultuser':_0x3e182f['username']});if(_0x1805d7){_0x3e182f[_0xa619('0x26')]=_0x3e182f[_0xa619('0x23')];_[_0xa619('0x27')](_0x1805d7,_[_0xa619('0x28')](_0x3e182f,['event',_0xa619('0x29'),_0xa619('0x2a'),_0xa619('0x23')]));logger[_0xa619('0x2b')](_0xa619('0x2c'),util['inspect'](_0x1805d7,{'showHidden':![],'depth':null}));this[_0xa619('0x20')](util[_0xa619('0x2d')](_0xa619('0x2e'),_0x1805d7[_0xa619('0x2f')]),_0xa619('0x30'),_0x1805d7);}}}catch(_0x4dbd7f){logger[_0xa619('0x19')](_0xa619('0x24'),util['inspect'](_0x4dbd7f,{'showHidden':![],'depth':null}));}};UserReport[_0xa619('0x1d')][_0xa619('0x11')]=function(_0x4bffbb){try{if(this['isNotNull'](_0x4bffbb)){logger['info']('[userReport][devicestatechange]\x20device:%s\x20state:%s',_0x4bffbb['device'],_0x4bffbb[_0xa619('0x23')]);logger[_0xa619('0x2b')]('[userReport][devicestatechange]',util[_0xa619('0x16')](_0x4bffbb,{'showHidden':![],'depth':null}));if(this[_0xa619('0xb')][_0x4bffbb['device']]){if(!this[_0xa619('0xb')][_0x4bffbb[_0xa619('0x31')]][_0xa619('0x32')]||_0x4bffbb[_0xa619('0x23')][_0xa619('0x33')]()==_0xa619('0x34')){this[_0xa619('0xb')][_0x4bffbb[_0xa619('0x31')]][_0xa619('0x32')]=![];if(this['agents'][_0x4bffbb[_0xa619('0x31')]]['state']!==_0x4bffbb['state'][_0xa619('0x33')]()){this['agents'][_0x4bffbb[_0xa619('0x31')]]['stateTime']=_[_0xa619('0x35')](moment()[_0xa619('0x2d')]('x'));}this['agents'][_0x4bffbb['device']]['state']=_0x4bffbb[_0xa619('0x23')][_0xa619('0x33')]();this[_0xa619('0xb')][_0x4bffbb['device']][_0xa619('0x36')](_0x4bffbb);}}else if(this['telephones'][_0x4bffbb['device']]){if(this['telephones'][_0x4bffbb[_0xa619('0x31')]]['state']!==_0x4bffbb['state']['toLowerCase']()){this[_0xa619('0xc')][_0x4bffbb[_0xa619('0x31')]][_0xa619('0x37')]=_[_0xa619('0x35')](moment()[_0xa619('0x2d')]('x'));}this[_0xa619('0xc')][_0x4bffbb[_0xa619('0x31')]][_0xa619('0x23')]=_0x4bffbb['state']['toLowerCase']();logger[_0xa619('0x2b')](_0xa619('0x38'),util['inspect'](this['telephones'][_0x4bffbb[_0xa619('0x31')]],{'showHidden':![],'depth':null}));this['emit'](util[_0xa619('0x2d')]('telephone:%s',this[_0xa619('0xc')][_0x4bffbb[_0xa619('0x31')]][_0xa619('0x2f')]),_0xa619('0x39'),this['telephones'][_0x4bffbb['device']]);}else if(this[_0xa619('0xa')][_0x4bffbb[_0xa619('0x31')]]){if(this['trunks'][_0x4bffbb[_0xa619('0x31')]][_0xa619('0x23')]!==_0x4bffbb[_0xa619('0x23')][_0xa619('0x33')]()){this[_0xa619('0xa')][_0x4bffbb['device']][_0xa619('0x37')]=_['toNumber'](moment()[_0xa619('0x2d')]('x'));}this[_0xa619('0xa')][_0x4bffbb['device']][_0xa619('0x23')]=_0x4bffbb[_0xa619('0x23')][_0xa619('0x33')]();logger[_0xa619('0x2b')](_0xa619('0x3a'),util[_0xa619('0x16')](this['trunks'][_0x4bffbb[_0xa619('0x31')]],{'showHidden':![],'depth':null}));this[_0xa619('0x20')](util[_0xa619('0x2d')](_0xa619('0x2e'),this[_0xa619('0xa')][_0x4bffbb[_0xa619('0x31')]]['name']),_0xa619('0x30'),this[_0xa619('0xa')][_0x4bffbb[_0xa619('0x31')]]);}else if(_[_0xa619('0x3b')](_0x4bffbb[_0xa619('0x31')],_0xa619('0x3c'))){var _0x23b4cd=_0x4bffbb['device'];var _0x483317=_0x23b4cd[_0xa619('0x3d')](_0x23b4cd['indexOf']('/')+0x1,_0x23b4cd[_0xa619('0x3e')]('@'));var _0x55824c=_[_0xa619('0x25')](this[_0xa619('0xb')],function(_0x3a4945){return _0x3a4945[_0xa619('0x3f')]==_0x483317||_0x3a4945[_0xa619('0x40')]==_0x483317||_0x3a4945[_0xa619('0x41')]==_0x483317;});if(_0x55824c){if(_0x55824c[_0xa619('0x23')]!==_0x4bffbb['state'][_0xa619('0x33')]()){_0x55824c['stateTime']=_[_0xa619('0x35')](moment()['format']('x'));}_0x55824c[_0xa619('0x23')]=_0x4bffbb[_0xa619('0x23')]['toLowerCase']();_0x55824c['local']=!![];_0x55824c[_0xa619('0x36')](_0x4bffbb);}}}}catch(_0x470b2a){logger[_0xa619('0x19')]('[userReport][devicestatechange]',util['inspect'](_0x470b2a,{'showHidden':![],'depth':null}));}};UserReport['prototype']['syncPeerStatus']=function(_0x4a9033){try{if(this[_0xa619('0x1e')](_0x4a9033)&&this[_0xa619('0x1e')](_0x4a9033[_0xa619('0x42')])){logger[_0xa619('0x21')](_0xa619('0x43'),_0x4a9033[_0xa619('0x44')],_0x4a9033[_0xa619('0x45')],_0x4a9033[_0xa619('0x42')]);logger[_0xa619('0x2b')](_0xa619('0x46'),util[_0xa619('0x16')](_0x4a9033,{'showHidden':![],'depth':null}));if(this[_0xa619('0xb')][_0x4a9033[_0xa619('0x44')]]){if(!this[_0xa619('0xb')][_0x4a9033[_0xa619('0x44')]]['local']||_0x4a9033[_0xa619('0x42')][_0xa619('0x33')]()==_0xa619('0x47')){this[_0xa619('0xb')][_0x4a9033[_0xa619('0x44')]][_0xa619('0x32')]=![];this[_0xa619('0xb')][_0x4a9033[_0xa619('0x44')]][_0xa619('0x48')]=_0x4a9033['peerstatus']['toLowerCase']();this[_0xa619('0xb')][_0x4a9033[_0xa619('0x44')]][_0xa619('0x45')]=_0x4a9033[_0xa619('0x45')];this[_0xa619('0xb')][_0x4a9033[_0xa619('0x44')]][_0xa619('0x36')](_0x4a9033);}}else if(this['telephones'][_0x4a9033[_0xa619('0x44')]]){this[_0xa619('0xc')][_0x4a9033['peer']]['status']=_0x4a9033[_0xa619('0x42')]['toLowerCase']();this[_0xa619('0xc')][_0x4a9033['peer']][_0xa619('0x45')]=_0x4a9033[_0xa619('0x45')];logger[_0xa619('0x2b')]('[userReport][peerstatus]\x20sending\x20telephone:save\x20event:',util[_0xa619('0x16')](this[_0xa619('0xc')][_0x4a9033[_0xa619('0x44')]],{'showHidden':![],'depth':null}));this[_0xa619('0x20')](util[_0xa619('0x2d')]('telephone:%s',this[_0xa619('0xc')][_0x4a9033[_0xa619('0x44')]][_0xa619('0x2f')]),_0xa619('0x39'),this[_0xa619('0xc')][_0x4a9033[_0xa619('0x44')]]);}else if(this[_0xa619('0xa')][_0x4a9033[_0xa619('0x44')]]){this[_0xa619('0xa')][_0x4a9033['peer']][_0xa619('0x48')]=_0x4a9033[_0xa619('0x42')][_0xa619('0x33')]();this[_0xa619('0xa')][_0x4a9033[_0xa619('0x44')]][_0xa619('0x45')]=_0x4a9033['address'];logger[_0xa619('0x2b')]('[userReport][peerstatus]\x20sending\x20trunk:save\x20event:',util[_0xa619('0x16')](this[_0xa619('0xa')][_0x4a9033[_0xa619('0x44')]],{'showHidden':![],'depth':null}));this[_0xa619('0x20')](util['format']('trunk:%s',this[_0xa619('0xa')][_0x4a9033[_0xa619('0x44')]][_0xa619('0x2f')]),'trunk:save',this[_0xa619('0xa')][_0x4a9033[_0xa619('0x44')]]);}}}catch(_0x57419a){logger[_0xa619('0x19')](_0xa619('0x46'),util[_0xa619('0x16')](_0x57419a,{'showHidden':![],'depth':null}));}};module[_0xa619('0x49')]=UserReport;