bbdf26a26f468cce1aa7d199d86098b9bb2e6a73
[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 _0xde34=['state','debug','find','stateRegistry','omit','event','actionid','trunk:%s','name','trunk:save','[userReport][registry]','device','[userReport][devicestatechange]','local','inuse','toLowerCase','stateTime','format','updateStatusRealtime','toNumber','[userReport][devicestatechange]\x20sending\x20telephone:save\x20event:','telephone:%s','telephone:save','[userReport][devicestatechange]\x20sending\x20trunk:save\x20event:','startsWith','substring','indexOf','mobile','phone','syncPeerStatus','[userReport][peerstatus]\x20peer:%s\x20address:%s\x20status:%s','peer','address','[userReport][peerstatus]','registered','status','[userReport][peerstatus]\x20sending\x20telephone:save\x20event:','[userReport][peerstatus]\x20sending\x20trunk:save\x20event:','exports','moment','util','ioredis','bluebird','../../../config/environment','redis','defaults','localhost','socket.io-emitter','trunks','agents','telephones','registryentry','syncRegistry','bind','registry','devicestatechange','syncDeviceState','peerstatus','syncRealtimeShow','resolve','actionSipShowRegistry','catch','error','[userReport][sipshowregistry]','inspect','then','[userReport][sippeerstatus]','prototype','isNotNull','isUndefined','emit','info','[userReport][registry]\x20registry:%s\x20state:%s','username'];(function(_0x5c9307,_0x5b97e4){var _0x373e29=function(_0xefebbd){while(--_0xefebbd){_0x5c9307['push'](_0x5c9307['shift']());}};_0x373e29(++_0x5b97e4);}(_0xde34,0x1e3));var _0x4de3=function(_0xdae362,_0x1757e9){_0xdae362=_0xdae362-0x0;var _0x1ffb95=_0xde34[_0xdae362];return _0x1ffb95;};'use strict';var _=require('lodash');var moment=require(_0x4de3('0x0'));var util=require(_0x4de3('0x1'));var Redis=require(_0x4de3('0x2'));var BPromise=require(_0x4de3('0x3'));var config=require(_0x4de3('0x4'));var logger=require('../../../config/logger')('ami');var ami=require('../ami');config[_0x4de3('0x5')]=_[_0x4de3('0x6')](config[_0x4de3('0x5')],{'host':_0x4de3('0x7'),'port':0x18eb});var io=require(_0x4de3('0x8'))(new Redis(config['redis']));function UserReport(_0x1c2e65){this[_0x4de3('0x9')]=_0x1c2e65[_0x4de3('0x9')];this['agents']=_0x1c2e65[_0x4de3('0xa')];this[_0x4de3('0xb')]=_0x1c2e65[_0x4de3('0xb')];ami['on'](_0x4de3('0xc'),this[_0x4de3('0xd')][_0x4de3('0xe')](this));ami['on'](_0x4de3('0xf'),this[_0x4de3('0xd')][_0x4de3('0xe')](this));ami['on'](_0x4de3('0x10'),this[_0x4de3('0x11')][_0x4de3('0xe')](this));ami['on'](_0x4de3('0x12'),this['syncPeerStatus'][_0x4de3('0xe')](this));return this[_0x4de3('0x13')]();}function showSipRegistrations(){Promise[_0x4de3('0x14')]()['then'](ami[_0x4de3('0x15')]())[_0x4de3('0x16')](function(_0x28a24b){logger[_0x4de3('0x17')](_0x4de3('0x18'),util[_0x4de3('0x19')](_0x28a24b,{'showHidden':![],'depth':null}));});}function listDeviceStates(){Promise[_0x4de3('0x14')]()[_0x4de3('0x1a')](ami['actionDeviceStateList']())['catch'](function(_0x3993a5){logger['error']('[userReport][devicestatelist]',util[_0x4de3('0x19')](_0x3993a5,{'showHidden':![],'depth':null}));});}function showPeersStatus(){Promise['resolve']()[_0x4de3('0x1a')](ami['actionSipPeerStatus']())[_0x4de3('0x16')](function(_0x54d690){logger['error'](_0x4de3('0x1b'),util[_0x4de3('0x19')](_0x54d690,{'showHidden':![],'depth':null}));});}UserReport[_0x4de3('0x1c')][_0x4de3('0x13')]=function(){setInterval(function(){BPromise[_0x4de3('0x14')]()[_0x4de3('0x1a')](showSipRegistrations())[_0x4de3('0x1a')](listDeviceStates())[_0x4de3('0x1a')](showPeersStatus());},0x32c8);};UserReport[_0x4de3('0x1c')][_0x4de3('0x1d')]=function(_0x568c90){return _0x568c90!==null&&!_[_0x4de3('0x1e')](_0x568c90);};UserReport[_0x4de3('0x1c')][_0x4de3('0x1f')]=function(_0x2d86a8,_0x1b763f,_0xe05b68){io['to'](_0x2d86a8)[_0x4de3('0x1f')](_0x1b763f,_0xe05b68);};UserReport['prototype'][_0x4de3('0xd')]=function(_0x170a8f){try{if(this[_0x4de3('0x1d')](_0x170a8f)){logger[_0x4de3('0x20')](_0x4de3('0x21'),_0x170a8f[_0x4de3('0x22')],_0x170a8f[_0x4de3('0x23')]);logger[_0x4de3('0x24')]('[userReport][registry]',util[_0x4de3('0x19')](_0x170a8f,{'showHidden':![],'depth':null}));var _0x4f0c6e=_[_0x4de3('0x25')](this['trunks'],{'defaultuser':_0x170a8f['username']});if(_0x4f0c6e){_0x170a8f[_0x4de3('0x26')]=_0x170a8f[_0x4de3('0x23')];_['merge'](_0x4f0c6e,_[_0x4de3('0x27')](_0x170a8f,[_0x4de3('0x28'),_0x4de3('0x29'),_0x4de3('0x22'),_0x4de3('0x23')]));logger[_0x4de3('0x24')]('[userReport][registry]\x20sending\x20trunk:save\x20event:',util['inspect'](_0x4f0c6e,{'showHidden':![],'depth':null}));this[_0x4de3('0x1f')](util['format'](_0x4de3('0x2a'),_0x4f0c6e[_0x4de3('0x2b')]),_0x4de3('0x2c'),_0x4f0c6e);}}}catch(_0x4b864e){logger[_0x4de3('0x17')](_0x4de3('0x2d'),util['inspect'](_0x4b864e,{'showHidden':![],'depth':null}));}};UserReport[_0x4de3('0x1c')][_0x4de3('0x11')]=function(_0x53aa0d){try{if(this[_0x4de3('0x1d')](_0x53aa0d)){logger[_0x4de3('0x20')]('[userReport][devicestatechange]\x20device:%s\x20state:%s',_0x53aa0d[_0x4de3('0x2e')],_0x53aa0d[_0x4de3('0x23')]);logger[_0x4de3('0x24')](_0x4de3('0x2f'),util[_0x4de3('0x19')](_0x53aa0d,{'showHidden':![],'depth':null}));if(this[_0x4de3('0xa')][_0x53aa0d[_0x4de3('0x2e')]]){if(!this[_0x4de3('0xa')][_0x53aa0d[_0x4de3('0x2e')]][_0x4de3('0x30')]||_0x53aa0d[_0x4de3('0x23')]['toLowerCase']()==_0x4de3('0x31')){this[_0x4de3('0xa')][_0x53aa0d[_0x4de3('0x2e')]][_0x4de3('0x30')]=![];if(this[_0x4de3('0xa')][_0x53aa0d['device']][_0x4de3('0x23')]!==_0x53aa0d[_0x4de3('0x23')][_0x4de3('0x32')]()){this[_0x4de3('0xa')][_0x53aa0d[_0x4de3('0x2e')]][_0x4de3('0x33')]=_['toNumber'](moment()[_0x4de3('0x34')]('x'));}this['agents'][_0x53aa0d[_0x4de3('0x2e')]][_0x4de3('0x23')]=_0x53aa0d[_0x4de3('0x23')][_0x4de3('0x32')]();this[_0x4de3('0xa')][_0x53aa0d[_0x4de3('0x2e')]][_0x4de3('0x35')](_0x53aa0d);}}else if(this['telephones'][_0x53aa0d[_0x4de3('0x2e')]]){if(this[_0x4de3('0xb')][_0x53aa0d[_0x4de3('0x2e')]]['state']!==_0x53aa0d[_0x4de3('0x23')][_0x4de3('0x32')]()){this[_0x4de3('0xb')][_0x53aa0d[_0x4de3('0x2e')]][_0x4de3('0x33')]=_[_0x4de3('0x36')](moment()[_0x4de3('0x34')]('x'));}this[_0x4de3('0xb')][_0x53aa0d[_0x4de3('0x2e')]]['state']=_0x53aa0d[_0x4de3('0x23')][_0x4de3('0x32')]();logger['debug'](_0x4de3('0x37'),util[_0x4de3('0x19')](this['telephones'][_0x53aa0d[_0x4de3('0x2e')]],{'showHidden':![],'depth':null}));this[_0x4de3('0x1f')](util[_0x4de3('0x34')](_0x4de3('0x38'),this[_0x4de3('0xb')][_0x53aa0d['device']][_0x4de3('0x2b')]),_0x4de3('0x39'),this['telephones'][_0x53aa0d['device']]);}else if(this[_0x4de3('0x9')][_0x53aa0d[_0x4de3('0x2e')]]){if(this[_0x4de3('0x9')][_0x53aa0d['device']][_0x4de3('0x23')]!==_0x53aa0d[_0x4de3('0x23')][_0x4de3('0x32')]()){this[_0x4de3('0x9')][_0x53aa0d[_0x4de3('0x2e')]][_0x4de3('0x33')]=_['toNumber'](moment()[_0x4de3('0x34')]('x'));}this[_0x4de3('0x9')][_0x53aa0d['device']][_0x4de3('0x23')]=_0x53aa0d['state'][_0x4de3('0x32')]();logger[_0x4de3('0x24')](_0x4de3('0x3a'),util[_0x4de3('0x19')](this[_0x4de3('0x9')][_0x53aa0d[_0x4de3('0x2e')]],{'showHidden':![],'depth':null}));this[_0x4de3('0x1f')](util[_0x4de3('0x34')]('trunk:%s',this[_0x4de3('0x9')][_0x53aa0d[_0x4de3('0x2e')]][_0x4de3('0x2b')]),_0x4de3('0x2c'),this[_0x4de3('0x9')][_0x53aa0d[_0x4de3('0x2e')]]);}else if(_[_0x4de3('0x3b')](_0x53aa0d[_0x4de3('0x2e')],'Local')){var _0x18e482=_0x53aa0d[_0x4de3('0x2e')];var _0x1d6654=_0x18e482[_0x4de3('0x3c')](_0x18e482['indexOf']('/')+0x1,_0x18e482[_0x4de3('0x3d')]('@'));var _0x173f71=_[_0x4de3('0x25')](this[_0x4de3('0xa')],function(_0x58fbf0){return _0x58fbf0[_0x4de3('0x3e')]==_0x1d6654||_0x58fbf0[_0x4de3('0x3f')]==_0x1d6654||_0x58fbf0['accountcode']==_0x1d6654;});if(_0x173f71){if(_0x173f71['state']!==_0x53aa0d[_0x4de3('0x23')][_0x4de3('0x32')]()){_0x173f71['stateTime']=_[_0x4de3('0x36')](moment()[_0x4de3('0x34')]('x'));}_0x173f71[_0x4de3('0x23')]=_0x53aa0d[_0x4de3('0x23')][_0x4de3('0x32')]();_0x173f71[_0x4de3('0x30')]=!![];_0x173f71['updateStatusRealtime'](_0x53aa0d);}}}}catch(_0x571374){logger[_0x4de3('0x17')](_0x4de3('0x2f'),util['inspect'](_0x571374,{'showHidden':![],'depth':null}));}};UserReport[_0x4de3('0x1c')][_0x4de3('0x40')]=function(_0x18af5c){try{if(this[_0x4de3('0x1d')](_0x18af5c)&&this[_0x4de3('0x1d')](_0x18af5c[_0x4de3('0x12')])){logger['info'](_0x4de3('0x41'),_0x18af5c[_0x4de3('0x42')],_0x18af5c[_0x4de3('0x43')],_0x18af5c[_0x4de3('0x12')]);logger[_0x4de3('0x24')](_0x4de3('0x44'),util[_0x4de3('0x19')](_0x18af5c,{'showHidden':![],'depth':null}));if(this['agents'][_0x18af5c['peer']]){if(!this['agents'][_0x18af5c[_0x4de3('0x42')]][_0x4de3('0x30')]||_0x18af5c[_0x4de3('0x12')][_0x4de3('0x32')]()==_0x4de3('0x45')){this['agents'][_0x18af5c['peer']][_0x4de3('0x30')]=![];this['agents'][_0x18af5c[_0x4de3('0x42')]][_0x4de3('0x46')]=_0x18af5c['peerstatus'][_0x4de3('0x32')]();this[_0x4de3('0xa')][_0x18af5c['peer']][_0x4de3('0x43')]=_0x18af5c[_0x4de3('0x43')];this[_0x4de3('0xa')][_0x18af5c[_0x4de3('0x42')]][_0x4de3('0x35')](_0x18af5c);}}else if(this[_0x4de3('0xb')][_0x18af5c['peer']]){this[_0x4de3('0xb')][_0x18af5c[_0x4de3('0x42')]]['status']=_0x18af5c[_0x4de3('0x12')]['toLowerCase']();this[_0x4de3('0xb')][_0x18af5c[_0x4de3('0x42')]][_0x4de3('0x43')]=_0x18af5c['address'];logger['debug'](_0x4de3('0x47'),util[_0x4de3('0x19')](this['telephones'][_0x18af5c[_0x4de3('0x42')]],{'showHidden':![],'depth':null}));this[_0x4de3('0x1f')](util[_0x4de3('0x34')]('telephone:%s',this[_0x4de3('0xb')][_0x18af5c['peer']][_0x4de3('0x2b')]),_0x4de3('0x39'),this['telephones'][_0x18af5c['peer']]);}else if(this['trunks'][_0x18af5c[_0x4de3('0x42')]]){this[_0x4de3('0x9')][_0x18af5c[_0x4de3('0x42')]][_0x4de3('0x46')]=_0x18af5c[_0x4de3('0x12')][_0x4de3('0x32')]();this[_0x4de3('0x9')][_0x18af5c[_0x4de3('0x42')]][_0x4de3('0x43')]=_0x18af5c['address'];logger[_0x4de3('0x24')](_0x4de3('0x48'),util[_0x4de3('0x19')](this[_0x4de3('0x9')][_0x18af5c[_0x4de3('0x42')]],{'showHidden':![],'depth':null}));this[_0x4de3('0x1f')](util[_0x4de3('0x34')](_0x4de3('0x2a'),this[_0x4de3('0x9')][_0x18af5c['peer']]['name']),'trunk:save',this[_0x4de3('0x9')][_0x18af5c[_0x4de3('0x42')]]);}}}catch(_0xc40163){logger['error']('[userReport][peerstatus]',util[_0x4de3('0x19')](_0xc40163,{'showHidden':![],'depth':null}));}};module[_0x4de3('0x49')]=UserReport;