Built motion from commit 00bf23f6.|2.6.16
[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 _0x8c50=['state','debug','find','username','stateRegistry','merge','omit','actionid','[userReport][registry]\x20sending\x20trunk:save\x20event:','name','syncDeviceState','[userReport][devicestatechange]\x20device:%s\x20state:%s','[userReport][devicestatechange]','local','device','toNumber','toLowerCase','format','[userReport][devicestatechange]\x20sending\x20telephone:save\x20event:','telephone:%s','stateTime','[userReport][devicestatechange]\x20sending\x20trunk:save\x20event:','trunk:%s','trunk:save','startsWith','Local','substring','indexOf','mobile','phone','accountcode','updateStatusRealtime','[userReport][peerstatus]\x20peer:%s\x20address:%s\x20status:%s','peer','[userReport][peerstatus]','registered','status','address','telephone:save','[userReport][peerstatus]\x20sending\x20trunk:save\x20event:','exports','lodash','moment','ioredis','bluebird','../../../config/environment','../../../config/logger','ami','../ami','redis','defaults','socket.io-emitter','trunks','agents','telephones','registryentry','syncRegistry','bind','registry','peerstatus','syncPeerStatus','syncRealtimeShow','then','actionSipShowRegistry','error','[userReport][sipshowregistry]','inspect','resolve','actionDeviceStateList','catch','[userReport][devicestatelist]','[userReport][sippeerstatus]','prototype','isNotNull','isUndefined','emit','info','[userReport][registry]\x20registry:%s\x20state:%s'];(function(_0x161e12,_0x33035f){var _0x45fc17=function(_0x31c1fc){while(--_0x31c1fc){_0x161e12['push'](_0x161e12['shift']());}};_0x45fc17(++_0x33035f);}(_0x8c50,0x113));var _0x08c5=function(_0x4dee77,_0x426fa7){_0x4dee77=_0x4dee77-0x0;var _0x1bce43=_0x8c50[_0x4dee77];return _0x1bce43;};'use strict';var _=require(_0x08c5('0x0'));var moment=require(_0x08c5('0x1'));var util=require('util');var Redis=require(_0x08c5('0x2'));var BPromise=require(_0x08c5('0x3'));var config=require(_0x08c5('0x4'));var logger=require(_0x08c5('0x5'))(_0x08c5('0x6'));var ami=require(_0x08c5('0x7'));config[_0x08c5('0x8')]=_[_0x08c5('0x9')](config[_0x08c5('0x8')],{'host':'localhost','port':0x18eb});var io=require(_0x08c5('0xa'))(new Redis(config[_0x08c5('0x8')]));function UserReport(_0x9f9959){this[_0x08c5('0xb')]=_0x9f9959[_0x08c5('0xb')];this[_0x08c5('0xc')]=_0x9f9959['agents'];this[_0x08c5('0xd')]=_0x9f9959[_0x08c5('0xd')];ami['on'](_0x08c5('0xe'),this[_0x08c5('0xf')][_0x08c5('0x10')](this));ami['on'](_0x08c5('0x11'),this[_0x08c5('0xf')][_0x08c5('0x10')](this));ami['on']('devicestatechange',this['syncDeviceState'][_0x08c5('0x10')](this));ami['on'](_0x08c5('0x12'),this[_0x08c5('0x13')][_0x08c5('0x10')](this));return this[_0x08c5('0x14')]();}function showSipRegistrations(){Promise['resolve']()[_0x08c5('0x15')](ami[_0x08c5('0x16')]())['catch'](function(_0x40c94f){logger[_0x08c5('0x17')](_0x08c5('0x18'),util[_0x08c5('0x19')](_0x40c94f,{'showHidden':![],'depth':null}));});}function listDeviceStates(){Promise[_0x08c5('0x1a')]()['then'](ami[_0x08c5('0x1b')]())[_0x08c5('0x1c')](function(_0x1d5963){logger[_0x08c5('0x17')](_0x08c5('0x1d'),util['inspect'](_0x1d5963,{'showHidden':![],'depth':null}));});}function showPeersStatus(){Promise[_0x08c5('0x1a')]()['then'](ami['actionSipPeerStatus']())['catch'](function(_0x59347e){logger[_0x08c5('0x17')](_0x08c5('0x1e'),util[_0x08c5('0x19')](_0x59347e,{'showHidden':![],'depth':null}));});}UserReport['prototype']['syncRealtimeShow']=function(){setInterval(function(){BPromise[_0x08c5('0x1a')]()['then'](showSipRegistrations())['then'](listDeviceStates())[_0x08c5('0x15')](showPeersStatus());},0x32c8);};UserReport[_0x08c5('0x1f')][_0x08c5('0x20')]=function(_0x217c04){return _0x217c04!==null&&!_[_0x08c5('0x21')](_0x217c04);};UserReport[_0x08c5('0x1f')][_0x08c5('0x22')]=function(_0x248219,_0x4e8192,_0x4fc31b){io['to'](_0x248219)[_0x08c5('0x22')](_0x4e8192,_0x4fc31b);};UserReport[_0x08c5('0x1f')]['syncRegistry']=function(_0x3d8c1a){try{if(this['isNotNull'](_0x3d8c1a)){logger[_0x08c5('0x23')](_0x08c5('0x24'),_0x3d8c1a['username'],_0x3d8c1a[_0x08c5('0x25')]);logger[_0x08c5('0x26')]('[userReport][registry]',util[_0x08c5('0x19')](_0x3d8c1a,{'showHidden':![],'depth':null}));var _0x4d82a6=_[_0x08c5('0x27')](this[_0x08c5('0xb')],{'defaultuser':_0x3d8c1a[_0x08c5('0x28')]});if(_0x4d82a6){_0x3d8c1a[_0x08c5('0x29')]=_0x3d8c1a[_0x08c5('0x25')];_[_0x08c5('0x2a')](_0x4d82a6,_[_0x08c5('0x2b')](_0x3d8c1a,['event',_0x08c5('0x2c'),_0x08c5('0x28'),_0x08c5('0x25')]));logger['debug'](_0x08c5('0x2d'),util['inspect'](_0x4d82a6,{'showHidden':![],'depth':null}));this['emit'](util['format']('trunk:%s',_0x4d82a6[_0x08c5('0x2e')]),'trunk:save',_0x4d82a6);}}}catch(_0x37a150){logger[_0x08c5('0x17')]('[userReport][registry]',util['inspect'](_0x37a150,{'showHidden':![],'depth':null}));}};UserReport[_0x08c5('0x1f')][_0x08c5('0x2f')]=function(_0x30eb23){try{if(this[_0x08c5('0x20')](_0x30eb23)){logger['info'](_0x08c5('0x30'),_0x30eb23['device'],_0x30eb23['state']);logger[_0x08c5('0x26')](_0x08c5('0x31'),util[_0x08c5('0x19')](_0x30eb23,{'showHidden':![],'depth':null}));if(this['agents'][_0x30eb23['device']]){if(!this[_0x08c5('0xc')][_0x30eb23['device']][_0x08c5('0x32')]||_0x30eb23[_0x08c5('0x25')]['toLowerCase']()=='inuse'){this[_0x08c5('0xc')][_0x30eb23[_0x08c5('0x33')]][_0x08c5('0x32')]=![];if(this[_0x08c5('0xc')][_0x30eb23[_0x08c5('0x33')]][_0x08c5('0x25')]!==_0x30eb23[_0x08c5('0x25')]['toLowerCase']()){this[_0x08c5('0xc')][_0x30eb23['device']]['stateTime']=_[_0x08c5('0x34')](moment()['format']('x'));}this['agents'][_0x30eb23[_0x08c5('0x33')]][_0x08c5('0x25')]=_0x30eb23[_0x08c5('0x25')][_0x08c5('0x35')]();this['agents'][_0x30eb23['device']]['updateStatusRealtime'](_0x30eb23);}}else if(this[_0x08c5('0xd')][_0x30eb23[_0x08c5('0x33')]]){if(this['telephones'][_0x30eb23[_0x08c5('0x33')]][_0x08c5('0x25')]!==_0x30eb23[_0x08c5('0x25')][_0x08c5('0x35')]()){this[_0x08c5('0xd')][_0x30eb23[_0x08c5('0x33')]]['stateTime']=_['toNumber'](moment()[_0x08c5('0x36')]('x'));}this[_0x08c5('0xd')][_0x30eb23['device']]['state']=_0x30eb23[_0x08c5('0x25')][_0x08c5('0x35')]();logger[_0x08c5('0x26')](_0x08c5('0x37'),util[_0x08c5('0x19')](this[_0x08c5('0xd')][_0x30eb23[_0x08c5('0x33')]],{'showHidden':![],'depth':null}));this['emit'](util[_0x08c5('0x36')](_0x08c5('0x38'),this['telephones'][_0x30eb23['device']][_0x08c5('0x2e')]),'telephone:save',this[_0x08c5('0xd')][_0x30eb23[_0x08c5('0x33')]]);}else if(this['trunks'][_0x30eb23[_0x08c5('0x33')]]){if(this[_0x08c5('0xb')][_0x30eb23['device']][_0x08c5('0x25')]!==_0x30eb23[_0x08c5('0x25')][_0x08c5('0x35')]()){this[_0x08c5('0xb')][_0x30eb23['device']][_0x08c5('0x39')]=_[_0x08c5('0x34')](moment()[_0x08c5('0x36')]('x'));}this[_0x08c5('0xb')][_0x30eb23[_0x08c5('0x33')]]['state']=_0x30eb23['state'][_0x08c5('0x35')]();logger[_0x08c5('0x26')](_0x08c5('0x3a'),util['inspect'](this[_0x08c5('0xb')][_0x30eb23[_0x08c5('0x33')]],{'showHidden':![],'depth':null}));this['emit'](util[_0x08c5('0x36')](_0x08c5('0x3b'),this[_0x08c5('0xb')][_0x30eb23['device']][_0x08c5('0x2e')]),_0x08c5('0x3c'),this[_0x08c5('0xb')][_0x30eb23['device']]);}else if(_[_0x08c5('0x3d')](_0x30eb23[_0x08c5('0x33')],_0x08c5('0x3e'))){var _0x54b21d=_0x30eb23[_0x08c5('0x33')];var _0x512d3d=_0x54b21d[_0x08c5('0x3f')](_0x54b21d[_0x08c5('0x40')]('/')+0x1,_0x54b21d[_0x08c5('0x40')]('@'));var _0x47ac1d=_[_0x08c5('0x27')](this['agents'],function(_0x43b541){return _0x43b541[_0x08c5('0x41')]==_0x512d3d||_0x43b541[_0x08c5('0x42')]==_0x512d3d||_0x43b541[_0x08c5('0x43')]==_0x512d3d;});if(_0x47ac1d){if(_0x47ac1d['state']!==_0x30eb23[_0x08c5('0x25')][_0x08c5('0x35')]()){_0x47ac1d[_0x08c5('0x39')]=_[_0x08c5('0x34')](moment()[_0x08c5('0x36')]('x'));}_0x47ac1d[_0x08c5('0x25')]=_0x30eb23[_0x08c5('0x25')][_0x08c5('0x35')]();_0x47ac1d['local']=!![];_0x47ac1d[_0x08c5('0x44')](_0x30eb23);}}}}catch(_0x135de4){logger[_0x08c5('0x17')](_0x08c5('0x31'),util[_0x08c5('0x19')](_0x135de4,{'showHidden':![],'depth':null}));}};UserReport['prototype']['syncPeerStatus']=function(_0x15321b){try{if(this[_0x08c5('0x20')](_0x15321b)&&this[_0x08c5('0x20')](_0x15321b['peerstatus'])){logger[_0x08c5('0x23')](_0x08c5('0x45'),_0x15321b[_0x08c5('0x46')],_0x15321b['address'],_0x15321b[_0x08c5('0x12')]);logger[_0x08c5('0x26')](_0x08c5('0x47'),util['inspect'](_0x15321b,{'showHidden':![],'depth':null}));if(this[_0x08c5('0xc')][_0x15321b[_0x08c5('0x46')]]){if(!this['agents'][_0x15321b['peer']][_0x08c5('0x32')]||_0x15321b['peerstatus'][_0x08c5('0x35')]()==_0x08c5('0x48')){this[_0x08c5('0xc')][_0x15321b[_0x08c5('0x46')]][_0x08c5('0x32')]=![];this[_0x08c5('0xc')][_0x15321b['peer']][_0x08c5('0x49')]=_0x15321b[_0x08c5('0x12')][_0x08c5('0x35')]();this[_0x08c5('0xc')][_0x15321b[_0x08c5('0x46')]]['address']=_0x15321b[_0x08c5('0x4a')];this[_0x08c5('0xc')][_0x15321b['peer']]['updateStatusRealtime'](_0x15321b);}}else if(this['telephones'][_0x15321b[_0x08c5('0x46')]]){this[_0x08c5('0xd')][_0x15321b['peer']][_0x08c5('0x49')]=_0x15321b[_0x08c5('0x12')][_0x08c5('0x35')]();this['telephones'][_0x15321b[_0x08c5('0x46')]][_0x08c5('0x4a')]=_0x15321b[_0x08c5('0x4a')];logger['debug']('[userReport][peerstatus]\x20sending\x20telephone:save\x20event:',util[_0x08c5('0x19')](this['telephones'][_0x15321b[_0x08c5('0x46')]],{'showHidden':![],'depth':null}));this[_0x08c5('0x22')](util[_0x08c5('0x36')](_0x08c5('0x38'),this[_0x08c5('0xd')][_0x15321b['peer']]['name']),_0x08c5('0x4b'),this[_0x08c5('0xd')][_0x15321b[_0x08c5('0x46')]]);}else if(this['trunks'][_0x15321b[_0x08c5('0x46')]]){this[_0x08c5('0xb')][_0x15321b[_0x08c5('0x46')]][_0x08c5('0x49')]=_0x15321b[_0x08c5('0x12')][_0x08c5('0x35')]();this[_0x08c5('0xb')][_0x15321b[_0x08c5('0x46')]][_0x08c5('0x4a')]=_0x15321b[_0x08c5('0x4a')];logger[_0x08c5('0x26')](_0x08c5('0x4c'),util[_0x08c5('0x19')](this[_0x08c5('0xb')][_0x15321b['peer']],{'showHidden':![],'depth':null}));this[_0x08c5('0x22')](util['format']('trunk:%s',this[_0x08c5('0xb')][_0x15321b['peer']][_0x08c5('0x2e')]),'trunk:save',this[_0x08c5('0xb')][_0x15321b['peer']]);}}}catch(_0x4b34fd){logger[_0x08c5('0x17')](_0x08c5('0x47'),util[_0x08c5('0x19')](_0x4b34fd,{'showHidden':![],'depth':null}));}};module[_0x08c5('0x4d')]=UserReport;