Built motion from commit 14588770.|2.5.38
[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 _0xea72=['[userReport][peerstatus]\x20sending\x20trunk:save\x20event:','moment','ioredis','bluebird','../../../config/logger','../ami','redis','defaults','localhost','trunks','agents','telephones','registryentry','syncRegistry','bind','registry','syncDeviceState','syncRealtimeShow','resolve','catch','error','then','actionDeviceStateList','[userReport][devicestatelist]','inspect','actionSipPeerStatus','[userReport][sippeerstatus]','prototype','isUndefined','emit','isNotNull','info','[userReport][registry]\x20registry:%s\x20state:%s','username','state','[userReport][registry]','find','stateRegistry','merge','omit','actionid','debug','[userReport][registry]\x20sending\x20trunk:save\x20event:','format','trunk:%s','name','trunk:save','[userReport][devicestatechange]\x20device:%s\x20state:%s','device','[userReport][devicestatechange]','local','inuse','toLowerCase','stateTime','toNumber','updateStatusRealtime','[userReport][devicestatechange]\x20sending\x20telephone:save\x20event:','telephone:%s','telephone:save','[userReport][devicestatechange]\x20sending\x20trunk:save\x20event:','startsWith','substring','indexOf','phone','peerstatus','address','[userReport][peerstatus]','peer','registered','status'];(function(_0x30d8c2,_0xcc9f60){var _0x4896b4=function(_0x59907c){while(--_0x59907c){_0x30d8c2['push'](_0x30d8c2['shift']());}};_0x4896b4(++_0xcc9f60);}(_0xea72,0x1a5));var _0x2ea7=function(_0x2c0cb2,_0x5a7eef){_0x2c0cb2=_0x2c0cb2-0x0;var _0x344150=_0xea72[_0x2c0cb2];return _0x344150;};'use strict';var _=require('lodash');var moment=require(_0x2ea7('0x0'));var util=require('util');var Redis=require(_0x2ea7('0x1'));var BPromise=require(_0x2ea7('0x2'));var config=require('../../../config/environment');var logger=require(_0x2ea7('0x3'))('ami');var ami=require(_0x2ea7('0x4'));config[_0x2ea7('0x5')]=_[_0x2ea7('0x6')](config['redis'],{'host':_0x2ea7('0x7'),'port':0x18eb});var io=require('socket.io-emitter')(new Redis(config[_0x2ea7('0x5')]));function UserReport(_0x432453){this['trunks']=_0x432453[_0x2ea7('0x8')];this['agents']=_0x432453[_0x2ea7('0x9')];this['telephones']=_0x432453[_0x2ea7('0xa')];ami['on'](_0x2ea7('0xb'),this[_0x2ea7('0xc')][_0x2ea7('0xd')](this));ami['on'](_0x2ea7('0xe'),this[_0x2ea7('0xc')][_0x2ea7('0xd')](this));ami['on']('devicestatechange',this[_0x2ea7('0xf')]['bind'](this));ami['on']('peerstatus',this['syncPeerStatus']['bind'](this));return this[_0x2ea7('0x10')]();}function showSipRegistrations(){Promise[_0x2ea7('0x11')]()['then'](ami['actionSipShowRegistry']())[_0x2ea7('0x12')](function(_0xec29a7){logger[_0x2ea7('0x13')]('[userReport][sipshowregistry]',util['inspect'](_0xec29a7,{'showHidden':![],'depth':null}));});}function listDeviceStates(){Promise[_0x2ea7('0x11')]()[_0x2ea7('0x14')](ami[_0x2ea7('0x15')]())['catch'](function(_0x4f5aa5){logger[_0x2ea7('0x13')](_0x2ea7('0x16'),util[_0x2ea7('0x17')](_0x4f5aa5,{'showHidden':![],'depth':null}));});}function showPeersStatus(){Promise[_0x2ea7('0x11')]()[_0x2ea7('0x14')](ami[_0x2ea7('0x18')]())[_0x2ea7('0x12')](function(_0x563490){logger[_0x2ea7('0x13')](_0x2ea7('0x19'),util[_0x2ea7('0x17')](_0x563490,{'showHidden':![],'depth':null}));});}UserReport[_0x2ea7('0x1a')][_0x2ea7('0x10')]=function(){setInterval(function(){BPromise[_0x2ea7('0x11')]()[_0x2ea7('0x14')](showSipRegistrations())[_0x2ea7('0x14')](listDeviceStates())[_0x2ea7('0x14')](showPeersStatus());},0x32c8);};UserReport[_0x2ea7('0x1a')]['isNotNull']=function(_0x37ab0){return _0x37ab0!==null&&!_[_0x2ea7('0x1b')](_0x37ab0);};UserReport['prototype'][_0x2ea7('0x1c')]=function(_0x50cbc1,_0x3b13ab,_0x24edca){io['to'](_0x50cbc1)[_0x2ea7('0x1c')](_0x3b13ab,_0x24edca);};UserReport[_0x2ea7('0x1a')]['syncRegistry']=function(_0x495e24){try{if(this[_0x2ea7('0x1d')](_0x495e24)){logger[_0x2ea7('0x1e')](_0x2ea7('0x1f'),_0x495e24[_0x2ea7('0x20')],_0x495e24[_0x2ea7('0x21')]);logger['debug'](_0x2ea7('0x22'),util[_0x2ea7('0x17')](_0x495e24,{'showHidden':![],'depth':null}));var _0x37a6d9=_[_0x2ea7('0x23')](this[_0x2ea7('0x8')],{'defaultuser':_0x495e24['username']});if(_0x37a6d9){_0x495e24[_0x2ea7('0x24')]=_0x495e24[_0x2ea7('0x21')];_[_0x2ea7('0x25')](_0x37a6d9,_[_0x2ea7('0x26')](_0x495e24,['event',_0x2ea7('0x27'),_0x2ea7('0x20'),_0x2ea7('0x21')]));logger[_0x2ea7('0x28')](_0x2ea7('0x29'),util[_0x2ea7('0x17')](_0x37a6d9,{'showHidden':![],'depth':null}));this['emit'](util[_0x2ea7('0x2a')](_0x2ea7('0x2b'),_0x37a6d9[_0x2ea7('0x2c')]),_0x2ea7('0x2d'),_0x37a6d9);}}}catch(_0x15878b){logger[_0x2ea7('0x13')]('[userReport][registry]',util[_0x2ea7('0x17')](_0x15878b,{'showHidden':![],'depth':null}));}};UserReport['prototype']['syncDeviceState']=function(_0x21977c){try{if(this[_0x2ea7('0x1d')](_0x21977c)){logger[_0x2ea7('0x1e')](_0x2ea7('0x2e'),_0x21977c[_0x2ea7('0x2f')],_0x21977c[_0x2ea7('0x21')]);logger['debug'](_0x2ea7('0x30'),util[_0x2ea7('0x17')](_0x21977c,{'showHidden':![],'depth':null}));if(this['agents'][_0x21977c[_0x2ea7('0x2f')]]){if(!this[_0x2ea7('0x9')][_0x21977c['device']][_0x2ea7('0x31')]||_0x21977c[_0x2ea7('0x21')]['toLowerCase']()==_0x2ea7('0x32')){this[_0x2ea7('0x9')][_0x21977c['device']]['local']=![];if(this[_0x2ea7('0x9')][_0x21977c[_0x2ea7('0x2f')]][_0x2ea7('0x21')]!==_0x21977c[_0x2ea7('0x21')][_0x2ea7('0x33')]()){this[_0x2ea7('0x9')][_0x21977c[_0x2ea7('0x2f')]][_0x2ea7('0x34')]=_[_0x2ea7('0x35')](moment()[_0x2ea7('0x2a')]('x'));}this[_0x2ea7('0x9')][_0x21977c[_0x2ea7('0x2f')]][_0x2ea7('0x21')]=_0x21977c['state'][_0x2ea7('0x33')]();this[_0x2ea7('0x9')][_0x21977c[_0x2ea7('0x2f')]][_0x2ea7('0x36')](_0x21977c);}}else if(this[_0x2ea7('0xa')][_0x21977c[_0x2ea7('0x2f')]]){if(this['telephones'][_0x21977c[_0x2ea7('0x2f')]][_0x2ea7('0x21')]!==_0x21977c[_0x2ea7('0x21')][_0x2ea7('0x33')]()){this['telephones'][_0x21977c[_0x2ea7('0x2f')]][_0x2ea7('0x34')]=_['toNumber'](moment()[_0x2ea7('0x2a')]('x'));}this[_0x2ea7('0xa')][_0x21977c[_0x2ea7('0x2f')]][_0x2ea7('0x21')]=_0x21977c[_0x2ea7('0x21')][_0x2ea7('0x33')]();logger[_0x2ea7('0x28')](_0x2ea7('0x37'),util[_0x2ea7('0x17')](this[_0x2ea7('0xa')][_0x21977c['device']],{'showHidden':![],'depth':null}));this[_0x2ea7('0x1c')](util['format'](_0x2ea7('0x38'),this['telephones'][_0x21977c[_0x2ea7('0x2f')]][_0x2ea7('0x2c')]),_0x2ea7('0x39'),this[_0x2ea7('0xa')][_0x21977c['device']]);}else if(this[_0x2ea7('0x8')][_0x21977c[_0x2ea7('0x2f')]]){if(this[_0x2ea7('0x8')][_0x21977c[_0x2ea7('0x2f')]][_0x2ea7('0x21')]!==_0x21977c[_0x2ea7('0x21')][_0x2ea7('0x33')]()){this[_0x2ea7('0x8')][_0x21977c[_0x2ea7('0x2f')]][_0x2ea7('0x34')]=_[_0x2ea7('0x35')](moment()[_0x2ea7('0x2a')]('x'));}this['trunks'][_0x21977c[_0x2ea7('0x2f')]][_0x2ea7('0x21')]=_0x21977c[_0x2ea7('0x21')][_0x2ea7('0x33')]();logger[_0x2ea7('0x28')](_0x2ea7('0x3a'),util['inspect'](this['trunks'][_0x21977c['device']],{'showHidden':![],'depth':null}));this[_0x2ea7('0x1c')](util[_0x2ea7('0x2a')](_0x2ea7('0x2b'),this[_0x2ea7('0x8')][_0x21977c['device']][_0x2ea7('0x2c')]),_0x2ea7('0x2d'),this[_0x2ea7('0x8')][_0x21977c[_0x2ea7('0x2f')]]);}else if(_[_0x2ea7('0x3b')](_0x21977c[_0x2ea7('0x2f')],'Local')){var _0x1b7aaa=_0x21977c['device'];var _0x3b0096=_0x1b7aaa[_0x2ea7('0x3c')](_0x1b7aaa[_0x2ea7('0x3d')]('/')+0x1,_0x1b7aaa[_0x2ea7('0x3d')]('@'));var _0x50e413=_[_0x2ea7('0x23')](this[_0x2ea7('0x9')],function(_0x4bea90){return _0x4bea90['mobile']==_0x3b0096||_0x4bea90[_0x2ea7('0x3e')]==_0x3b0096||_0x4bea90['accountcode']==_0x3b0096;});if(_0x50e413){if(_0x50e413[_0x2ea7('0x21')]!==_0x21977c[_0x2ea7('0x21')][_0x2ea7('0x33')]()){_0x50e413['stateTime']=_[_0x2ea7('0x35')](moment()[_0x2ea7('0x2a')]('x'));}_0x50e413[_0x2ea7('0x21')]=_0x21977c[_0x2ea7('0x21')][_0x2ea7('0x33')]();_0x50e413[_0x2ea7('0x31')]=!![];_0x50e413[_0x2ea7('0x36')](_0x21977c);}}}}catch(_0x57844d){logger[_0x2ea7('0x13')]('[userReport][devicestatechange]',util[_0x2ea7('0x17')](_0x57844d,{'showHidden':![],'depth':null}));}};UserReport[_0x2ea7('0x1a')]['syncPeerStatus']=function(_0x8acd7d){try{if(this[_0x2ea7('0x1d')](_0x8acd7d)&&this[_0x2ea7('0x1d')](_0x8acd7d[_0x2ea7('0x3f')])){logger[_0x2ea7('0x1e')]('[userReport][peerstatus]\x20peer:%s\x20address:%s\x20status:%s',_0x8acd7d['peer'],_0x8acd7d[_0x2ea7('0x40')],_0x8acd7d[_0x2ea7('0x3f')]);logger[_0x2ea7('0x28')](_0x2ea7('0x41'),util[_0x2ea7('0x17')](_0x8acd7d,{'showHidden':![],'depth':null}));if(this[_0x2ea7('0x9')][_0x8acd7d[_0x2ea7('0x42')]]){if(!this['agents'][_0x8acd7d['peer']][_0x2ea7('0x31')]||_0x8acd7d[_0x2ea7('0x3f')][_0x2ea7('0x33')]()==_0x2ea7('0x43')){this[_0x2ea7('0x9')][_0x8acd7d[_0x2ea7('0x42')]][_0x2ea7('0x31')]=![];this[_0x2ea7('0x9')][_0x8acd7d[_0x2ea7('0x42')]]['status']=_0x8acd7d[_0x2ea7('0x3f')]['toLowerCase']();this[_0x2ea7('0x9')][_0x8acd7d[_0x2ea7('0x42')]]['address']=_0x8acd7d['address'];this[_0x2ea7('0x9')][_0x8acd7d[_0x2ea7('0x42')]][_0x2ea7('0x36')](_0x8acd7d);}}else if(this[_0x2ea7('0xa')][_0x8acd7d[_0x2ea7('0x42')]]){this[_0x2ea7('0xa')][_0x8acd7d[_0x2ea7('0x42')]][_0x2ea7('0x44')]=_0x8acd7d[_0x2ea7('0x3f')]['toLowerCase']();this[_0x2ea7('0xa')][_0x8acd7d[_0x2ea7('0x42')]][_0x2ea7('0x40')]=_0x8acd7d[_0x2ea7('0x40')];logger[_0x2ea7('0x28')]('[userReport][peerstatus]\x20sending\x20telephone:save\x20event:',util[_0x2ea7('0x17')](this[_0x2ea7('0xa')][_0x8acd7d[_0x2ea7('0x42')]],{'showHidden':![],'depth':null}));this[_0x2ea7('0x1c')](util['format']('telephone:%s',this[_0x2ea7('0xa')][_0x8acd7d[_0x2ea7('0x42')]][_0x2ea7('0x2c')]),'telephone:save',this[_0x2ea7('0xa')][_0x8acd7d['peer']]);}else if(this[_0x2ea7('0x8')][_0x8acd7d[_0x2ea7('0x42')]]){this[_0x2ea7('0x8')][_0x8acd7d['peer']][_0x2ea7('0x44')]=_0x8acd7d[_0x2ea7('0x3f')][_0x2ea7('0x33')]();this[_0x2ea7('0x8')][_0x8acd7d['peer']]['address']=_0x8acd7d['address'];logger['debug'](_0x2ea7('0x45'),util[_0x2ea7('0x17')](this[_0x2ea7('0x8')][_0x8acd7d[_0x2ea7('0x42')]],{'showHidden':![],'depth':null}));this['emit'](util[_0x2ea7('0x2a')](_0x2ea7('0x2b'),this['trunks'][_0x8acd7d['peer']][_0x2ea7('0x2c')]),_0x2ea7('0x2d'),this['trunks'][_0x8acd7d[_0x2ea7('0x42')]]);}}}catch(_0x42bf3c){logger[_0x2ea7('0x13')](_0x2ea7('0x41'),util[_0x2ea7('0x17')](_0x42bf3c,{'showHidden':![],'depth':null}));}};module['exports']=UserReport;