Built motion from commit 9d7072cc.|2.5.39
[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 _0xf2ec=['[userReport][registry]\x20registry:%s\x20state:%s','username','state','debug','find','merge','omit','event','actionid','format','name','device','local','inuse','toNumber','toLowerCase','stateTime','[userReport][devicestatechange]\x20sending\x20telephone:save\x20event:','telephone:%s','telephone:save','[userReport][devicestatechange]\x20sending\x20trunk:save\x20event:','trunk:%s','trunk:save','startsWith','Local','substring','mobile','accountcode','[userReport][devicestatechange]','peer','[userReport][peerstatus]','status','address','updateStatusRealtime','[userReport][peerstatus]\x20sending\x20trunk:save\x20event:','exports','lodash','moment','util','ioredis','bluebird','../../../config/environment','ami','../ami','defaults','redis','localhost','trunks','agents','telephones','registryentry','syncRegistry','bind','registry','devicestatechange','syncDeviceState','peerstatus','syncPeerStatus','syncRealtimeShow','resolve','then','actionSipShowRegistry','catch','error','[userReport][sipshowregistry]','inspect','actionSipPeerStatus','[userReport][sippeerstatus]','prototype','isNotNull','isUndefined','emit','info'];(function(_0x3a0c4f,_0x5dd1a3){var _0x247049=function(_0x144695){while(--_0x144695){_0x3a0c4f['push'](_0x3a0c4f['shift']());}};_0x247049(++_0x5dd1a3);}(_0xf2ec,0xb6));var _0xcf2e=function(_0x1f4917,_0x5394ea){_0x1f4917=_0x1f4917-0x0;var _0x18fa5b=_0xf2ec[_0x1f4917];return _0x18fa5b;};'use strict';var _=require(_0xcf2e('0x0'));var moment=require(_0xcf2e('0x1'));var util=require(_0xcf2e('0x2'));var Redis=require(_0xcf2e('0x3'));var BPromise=require(_0xcf2e('0x4'));var config=require(_0xcf2e('0x5'));var logger=require('../../../config/logger')(_0xcf2e('0x6'));var ami=require(_0xcf2e('0x7'));config['redis']=_[_0xcf2e('0x8')](config[_0xcf2e('0x9')],{'host':_0xcf2e('0xa'),'port':0x18eb});var io=require('socket.io-emitter')(new Redis(config['redis']));function UserReport(_0x45b343){this[_0xcf2e('0xb')]=_0x45b343[_0xcf2e('0xb')];this[_0xcf2e('0xc')]=_0x45b343[_0xcf2e('0xc')];this[_0xcf2e('0xd')]=_0x45b343[_0xcf2e('0xd')];ami['on'](_0xcf2e('0xe'),this[_0xcf2e('0xf')][_0xcf2e('0x10')](this));ami['on'](_0xcf2e('0x11'),this[_0xcf2e('0xf')]['bind'](this));ami['on'](_0xcf2e('0x12'),this[_0xcf2e('0x13')][_0xcf2e('0x10')](this));ami['on'](_0xcf2e('0x14'),this[_0xcf2e('0x15')][_0xcf2e('0x10')](this));return this[_0xcf2e('0x16')]();}function showSipRegistrations(){Promise[_0xcf2e('0x17')]()[_0xcf2e('0x18')](ami[_0xcf2e('0x19')]())[_0xcf2e('0x1a')](function(_0x236560){logger[_0xcf2e('0x1b')](_0xcf2e('0x1c'),util['inspect'](_0x236560,{'showHidden':![],'depth':null}));});}function listDeviceStates(){Promise[_0xcf2e('0x17')]()[_0xcf2e('0x18')](ami['actionDeviceStateList']())[_0xcf2e('0x1a')](function(_0x58f14b){logger[_0xcf2e('0x1b')]('[userReport][devicestatelist]',util[_0xcf2e('0x1d')](_0x58f14b,{'showHidden':![],'depth':null}));});}function showPeersStatus(){Promise[_0xcf2e('0x17')]()['then'](ami[_0xcf2e('0x1e')]())[_0xcf2e('0x1a')](function(_0x2a290d){logger[_0xcf2e('0x1b')](_0xcf2e('0x1f'),util['inspect'](_0x2a290d,{'showHidden':![],'depth':null}));});}UserReport['prototype']['syncRealtimeShow']=function(){setInterval(function(){BPromise[_0xcf2e('0x17')]()[_0xcf2e('0x18')](showSipRegistrations())[_0xcf2e('0x18')](listDeviceStates())[_0xcf2e('0x18')](showPeersStatus());},0x32c8);};UserReport[_0xcf2e('0x20')][_0xcf2e('0x21')]=function(_0xea065c){return _0xea065c!==null&&!_[_0xcf2e('0x22')](_0xea065c);};UserReport['prototype'][_0xcf2e('0x23')]=function(_0x1c690e,_0x4febb1,_0x2514cd){io['to'](_0x1c690e)['emit'](_0x4febb1,_0x2514cd);};UserReport['prototype'][_0xcf2e('0xf')]=function(_0x13236d){try{if(this['isNotNull'](_0x13236d)){logger[_0xcf2e('0x24')](_0xcf2e('0x25'),_0x13236d[_0xcf2e('0x26')],_0x13236d[_0xcf2e('0x27')]);logger[_0xcf2e('0x28')]('[userReport][registry]',util['inspect'](_0x13236d,{'showHidden':![],'depth':null}));var _0x11d569=_[_0xcf2e('0x29')](this[_0xcf2e('0xb')],{'defaultuser':_0x13236d[_0xcf2e('0x26')]});if(_0x11d569){_0x13236d['stateRegistry']=_0x13236d[_0xcf2e('0x27')];_[_0xcf2e('0x2a')](_0x11d569,_[_0xcf2e('0x2b')](_0x13236d,[_0xcf2e('0x2c'),_0xcf2e('0x2d'),_0xcf2e('0x26'),_0xcf2e('0x27')]));logger['debug']('[userReport][registry]\x20sending\x20trunk:save\x20event:',util['inspect'](_0x11d569,{'showHidden':![],'depth':null}));this[_0xcf2e('0x23')](util[_0xcf2e('0x2e')]('trunk:%s',_0x11d569[_0xcf2e('0x2f')]),'trunk:save',_0x11d569);}}}catch(_0x3d6e1d){logger['error']('[userReport][registry]',util[_0xcf2e('0x1d')](_0x3d6e1d,{'showHidden':![],'depth':null}));}};UserReport['prototype'][_0xcf2e('0x13')]=function(_0x304456){try{if(this[_0xcf2e('0x21')](_0x304456)){logger['info']('[userReport][devicestatechange]\x20device:%s\x20state:%s',_0x304456[_0xcf2e('0x30')],_0x304456[_0xcf2e('0x27')]);logger['debug']('[userReport][devicestatechange]',util[_0xcf2e('0x1d')](_0x304456,{'showHidden':![],'depth':null}));if(this['agents'][_0x304456[_0xcf2e('0x30')]]){if(!this[_0xcf2e('0xc')][_0x304456[_0xcf2e('0x30')]][_0xcf2e('0x31')]||_0x304456[_0xcf2e('0x27')]['toLowerCase']()==_0xcf2e('0x32')){this['agents'][_0x304456[_0xcf2e('0x30')]]['local']=![];if(this[_0xcf2e('0xc')][_0x304456['device']][_0xcf2e('0x27')]!==_0x304456[_0xcf2e('0x27')]['toLowerCase']()){this['agents'][_0x304456['device']]['stateTime']=_[_0xcf2e('0x33')](moment()[_0xcf2e('0x2e')]('x'));}this[_0xcf2e('0xc')][_0x304456[_0xcf2e('0x30')]][_0xcf2e('0x27')]=_0x304456['state'][_0xcf2e('0x34')]();this['agents'][_0x304456[_0xcf2e('0x30')]]['updateStatusRealtime'](_0x304456);}}else if(this[_0xcf2e('0xd')][_0x304456[_0xcf2e('0x30')]]){if(this[_0xcf2e('0xd')][_0x304456['device']]['state']!==_0x304456[_0xcf2e('0x27')]['toLowerCase']()){this[_0xcf2e('0xd')][_0x304456['device']][_0xcf2e('0x35')]=_[_0xcf2e('0x33')](moment()[_0xcf2e('0x2e')]('x'));}this[_0xcf2e('0xd')][_0x304456[_0xcf2e('0x30')]]['state']=_0x304456['state'][_0xcf2e('0x34')]();logger[_0xcf2e('0x28')](_0xcf2e('0x36'),util[_0xcf2e('0x1d')](this['telephones'][_0x304456['device']],{'showHidden':![],'depth':null}));this['emit'](util['format'](_0xcf2e('0x37'),this[_0xcf2e('0xd')][_0x304456['device']][_0xcf2e('0x2f')]),_0xcf2e('0x38'),this[_0xcf2e('0xd')][_0x304456[_0xcf2e('0x30')]]);}else if(this[_0xcf2e('0xb')][_0x304456[_0xcf2e('0x30')]]){if(this['trunks'][_0x304456[_0xcf2e('0x30')]]['state']!==_0x304456['state']['toLowerCase']()){this[_0xcf2e('0xb')][_0x304456[_0xcf2e('0x30')]][_0xcf2e('0x35')]=_[_0xcf2e('0x33')](moment()[_0xcf2e('0x2e')]('x'));}this[_0xcf2e('0xb')][_0x304456[_0xcf2e('0x30')]][_0xcf2e('0x27')]=_0x304456[_0xcf2e('0x27')][_0xcf2e('0x34')]();logger['debug'](_0xcf2e('0x39'),util[_0xcf2e('0x1d')](this['trunks'][_0x304456[_0xcf2e('0x30')]],{'showHidden':![],'depth':null}));this['emit'](util[_0xcf2e('0x2e')](_0xcf2e('0x3a'),this[_0xcf2e('0xb')][_0x304456['device']][_0xcf2e('0x2f')]),_0xcf2e('0x3b'),this[_0xcf2e('0xb')][_0x304456[_0xcf2e('0x30')]]);}else if(_[_0xcf2e('0x3c')](_0x304456[_0xcf2e('0x30')],_0xcf2e('0x3d'))){var _0x582a3d=_0x304456[_0xcf2e('0x30')];var _0x20a06c=_0x582a3d[_0xcf2e('0x3e')](_0x582a3d['indexOf']('/')+0x1,_0x582a3d['indexOf']('@'));var _0xbeab57=_[_0xcf2e('0x29')](this[_0xcf2e('0xc')],function(_0x45a73d){return _0x45a73d[_0xcf2e('0x3f')]==_0x20a06c||_0x45a73d['phone']==_0x20a06c||_0x45a73d[_0xcf2e('0x40')]==_0x20a06c;});if(_0xbeab57){if(_0xbeab57[_0xcf2e('0x27')]!==_0x304456[_0xcf2e('0x27')][_0xcf2e('0x34')]()){_0xbeab57[_0xcf2e('0x35')]=_[_0xcf2e('0x33')](moment()['format']('x'));}_0xbeab57[_0xcf2e('0x27')]=_0x304456[_0xcf2e('0x27')][_0xcf2e('0x34')]();_0xbeab57[_0xcf2e('0x31')]=!![];_0xbeab57['updateStatusRealtime'](_0x304456);}}}}catch(_0x1b04d1){logger[_0xcf2e('0x1b')](_0xcf2e('0x41'),util[_0xcf2e('0x1d')](_0x1b04d1,{'showHidden':![],'depth':null}));}};UserReport[_0xcf2e('0x20')]['syncPeerStatus']=function(_0x3cfbb){try{if(this[_0xcf2e('0x21')](_0x3cfbb)&&this[_0xcf2e('0x21')](_0x3cfbb['peerstatus'])){logger[_0xcf2e('0x24')]('[userReport][peerstatus]\x20peer:%s\x20address:%s\x20status:%s',_0x3cfbb[_0xcf2e('0x42')],_0x3cfbb['address'],_0x3cfbb[_0xcf2e('0x14')]);logger[_0xcf2e('0x28')](_0xcf2e('0x43'),util[_0xcf2e('0x1d')](_0x3cfbb,{'showHidden':![],'depth':null}));if(this['agents'][_0x3cfbb[_0xcf2e('0x42')]]){if(!this['agents'][_0x3cfbb[_0xcf2e('0x42')]][_0xcf2e('0x31')]||_0x3cfbb[_0xcf2e('0x14')][_0xcf2e('0x34')]()=='registered'){this[_0xcf2e('0xc')][_0x3cfbb[_0xcf2e('0x42')]]['local']=![];this[_0xcf2e('0xc')][_0x3cfbb[_0xcf2e('0x42')]][_0xcf2e('0x44')]=_0x3cfbb[_0xcf2e('0x14')][_0xcf2e('0x34')]();this['agents'][_0x3cfbb[_0xcf2e('0x42')]][_0xcf2e('0x45')]=_0x3cfbb[_0xcf2e('0x45')];this[_0xcf2e('0xc')][_0x3cfbb[_0xcf2e('0x42')]][_0xcf2e('0x46')](_0x3cfbb);}}else if(this[_0xcf2e('0xd')][_0x3cfbb[_0xcf2e('0x42')]]){this[_0xcf2e('0xd')][_0x3cfbb[_0xcf2e('0x42')]][_0xcf2e('0x44')]=_0x3cfbb[_0xcf2e('0x14')][_0xcf2e('0x34')]();this[_0xcf2e('0xd')][_0x3cfbb[_0xcf2e('0x42')]][_0xcf2e('0x45')]=_0x3cfbb['address'];logger[_0xcf2e('0x28')]('[userReport][peerstatus]\x20sending\x20telephone:save\x20event:',util['inspect'](this[_0xcf2e('0xd')][_0x3cfbb['peer']],{'showHidden':![],'depth':null}));this[_0xcf2e('0x23')](util[_0xcf2e('0x2e')](_0xcf2e('0x37'),this[_0xcf2e('0xd')][_0x3cfbb[_0xcf2e('0x42')]][_0xcf2e('0x2f')]),_0xcf2e('0x38'),this[_0xcf2e('0xd')][_0x3cfbb[_0xcf2e('0x42')]]);}else if(this['trunks'][_0x3cfbb['peer']]){this[_0xcf2e('0xb')][_0x3cfbb[_0xcf2e('0x42')]][_0xcf2e('0x44')]=_0x3cfbb[_0xcf2e('0x14')][_0xcf2e('0x34')]();this[_0xcf2e('0xb')][_0x3cfbb[_0xcf2e('0x42')]][_0xcf2e('0x45')]=_0x3cfbb[_0xcf2e('0x45')];logger[_0xcf2e('0x28')](_0xcf2e('0x47'),util[_0xcf2e('0x1d')](this[_0xcf2e('0xb')][_0x3cfbb['peer']],{'showHidden':![],'depth':null}));this[_0xcf2e('0x23')](util['format'](_0xcf2e('0x3a'),this[_0xcf2e('0xb')][_0x3cfbb['peer']]['name']),'trunk:save',this[_0xcf2e('0xb')][_0x3cfbb['peer']]);}}}catch(_0x45440f){logger['error']('[userReport][peerstatus]',util[_0xcf2e('0x1d')](_0x45440f,{'showHidden':![],'depth':null}));}};module[_0xcf2e('0x48')]=UserReport;