Built motion from commit (unavailable).|2.5.14
[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 _0x4484=['device','[userReport][devicestatechange]','local','toLowerCase','inuse','stateTime','updateStatusRealtime','toNumber','[userReport][devicestatechange]\x20sending\x20telephone:save\x20event:','telephone:%s','telephone:save','trunk:%s','startsWith','indexOf','mobile','accountcode','[userReport][peerstatus]\x20peer:%s\x20address:%s\x20status:%s','peer','address','status','[userReport][peerstatus]\x20sending\x20telephone:save\x20event:','[userReport][peerstatus]\x20sending\x20trunk:save\x20event:','exports','bluebird','../../../config/environment','../../../config/logger','ami','../ami','redis','defaults','localhost','socket.io-emitter','trunks','agents','telephones','registryentry','syncRegistry','bind','registry','devicestatechange','peerstatus','syncPeerStatus','syncRealtimeShow','then','catch','error','[userReport][sipshowregistry]','inspect','actionDeviceStateList','resolve','actionSipPeerStatus','[userReport][sippeerstatus]','prototype','isNotNull','isUndefined','emit','info','[userReport][registry]\x20registry:%s\x20state:%s','username','debug','[userReport][registry]','find','stateRegistry','state','merge','omit','event','actionid','[userReport][registry]\x20sending\x20trunk:save\x20event:','format','name','trunk:save','syncDeviceState'];(function(_0x1c6d44,_0x1b7780){var _0x49d1a7=function(_0x1e6b18){while(--_0x1e6b18){_0x1c6d44['push'](_0x1c6d44['shift']());}};_0x49d1a7(++_0x1b7780);}(_0x4484,0xf2));var _0x4448=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x4484[_0x3dd15e];return _0x231fd0;};'use strict';var _=require('lodash');var moment=require('moment');var util=require('util');var Redis=require('ioredis');var BPromise=require(_0x4448('0x0'));var config=require(_0x4448('0x1'));var logger=require(_0x4448('0x2'))(_0x4448('0x3'));var ami=require(_0x4448('0x4'));config[_0x4448('0x5')]=_[_0x4448('0x6')](config[_0x4448('0x5')],{'host':_0x4448('0x7'),'port':0x18eb});var io=require(_0x4448('0x8'))(new Redis(config['redis']));function UserReport(_0x20374b){this['trunks']=_0x20374b[_0x4448('0x9')];this[_0x4448('0xa')]=_0x20374b[_0x4448('0xa')];this[_0x4448('0xb')]=_0x20374b[_0x4448('0xb')];ami['on'](_0x4448('0xc'),this[_0x4448('0xd')][_0x4448('0xe')](this));ami['on'](_0x4448('0xf'),this[_0x4448('0xd')][_0x4448('0xe')](this));ami['on'](_0x4448('0x10'),this['syncDeviceState']['bind'](this));ami['on'](_0x4448('0x11'),this[_0x4448('0x12')][_0x4448('0xe')](this));return this[_0x4448('0x13')]();}function showSipRegistrations(){Promise['resolve']()[_0x4448('0x14')](ami['actionSipShowRegistry']())[_0x4448('0x15')](function(_0x177034){logger[_0x4448('0x16')](_0x4448('0x17'),util[_0x4448('0x18')](_0x177034,{'showHidden':![],'depth':null}));});}function listDeviceStates(){Promise['resolve']()[_0x4448('0x14')](ami[_0x4448('0x19')]())['catch'](function(_0x110748){logger[_0x4448('0x16')]('[userReport][devicestatelist]',util[_0x4448('0x18')](_0x110748,{'showHidden':![],'depth':null}));});}function showPeersStatus(){Promise[_0x4448('0x1a')]()[_0x4448('0x14')](ami[_0x4448('0x1b')]())[_0x4448('0x15')](function(_0x398bbc){logger['error'](_0x4448('0x1c'),util[_0x4448('0x18')](_0x398bbc,{'showHidden':![],'depth':null}));});}UserReport[_0x4448('0x1d')][_0x4448('0x13')]=function(){setInterval(function(){BPromise[_0x4448('0x1a')]()['then'](showSipRegistrations())[_0x4448('0x14')](listDeviceStates())[_0x4448('0x14')](showPeersStatus());},0x32c8);};UserReport[_0x4448('0x1d')][_0x4448('0x1e')]=function(_0x45d3c3){return _0x45d3c3!==null&&!_[_0x4448('0x1f')](_0x45d3c3);};UserReport[_0x4448('0x1d')]['emit']=function(_0x30f5c0,_0x4f91ed,_0x422988){io['to'](_0x30f5c0)[_0x4448('0x20')](_0x4f91ed,_0x422988);};UserReport[_0x4448('0x1d')][_0x4448('0xd')]=function(_0x554719){try{if(this[_0x4448('0x1e')](_0x554719)){logger[_0x4448('0x21')](_0x4448('0x22'),_0x554719[_0x4448('0x23')],_0x554719['state']);logger[_0x4448('0x24')](_0x4448('0x25'),util[_0x4448('0x18')](_0x554719,{'showHidden':![],'depth':null}));var _0x466dbc=_[_0x4448('0x26')](this['trunks'],{'registry':_0x554719[_0x4448('0x23')]});if(_0x466dbc){_0x554719[_0x4448('0x27')]=_0x554719[_0x4448('0x28')];_[_0x4448('0x29')](_0x466dbc,_[_0x4448('0x2a')](_0x554719,[_0x4448('0x2b'),_0x4448('0x2c'),'username',_0x4448('0x28')]));logger[_0x4448('0x24')](_0x4448('0x2d'),util[_0x4448('0x18')](_0x466dbc,{'showHidden':![],'depth':null}));this['emit'](util[_0x4448('0x2e')]('trunk:%s',_0x466dbc[_0x4448('0x2f')]),_0x4448('0x30'),_0x466dbc);}}}catch(_0x1a293f){logger['error'](_0x4448('0x25'),util[_0x4448('0x18')](_0x1a293f,{'showHidden':![],'depth':null}));}};UserReport[_0x4448('0x1d')][_0x4448('0x31')]=function(_0x1f6eec){try{if(this['isNotNull'](_0x1f6eec)){logger['info']('[userReport][devicestatechange]\x20device:%s\x20state:%s',_0x1f6eec[_0x4448('0x32')],_0x1f6eec[_0x4448('0x28')]);logger[_0x4448('0x24')](_0x4448('0x33'),util[_0x4448('0x18')](_0x1f6eec,{'showHidden':![],'depth':null}));if(this[_0x4448('0xa')][_0x1f6eec[_0x4448('0x32')]]){if(!this['agents'][_0x1f6eec[_0x4448('0x32')]][_0x4448('0x34')]||_0x1f6eec[_0x4448('0x28')][_0x4448('0x35')]()==_0x4448('0x36')){this[_0x4448('0xa')][_0x1f6eec[_0x4448('0x32')]][_0x4448('0x34')]=![];if(this[_0x4448('0xa')][_0x1f6eec['device']]['state']!==_0x1f6eec[_0x4448('0x28')][_0x4448('0x35')]()){this[_0x4448('0xa')][_0x1f6eec[_0x4448('0x32')]][_0x4448('0x37')]=_['toNumber'](moment()[_0x4448('0x2e')]('x'));}this[_0x4448('0xa')][_0x1f6eec[_0x4448('0x32')]][_0x4448('0x28')]=_0x1f6eec[_0x4448('0x28')][_0x4448('0x35')]();this[_0x4448('0xa')][_0x1f6eec['device']][_0x4448('0x38')](_0x1f6eec);}}else if(this[_0x4448('0xb')][_0x1f6eec[_0x4448('0x32')]]){if(this[_0x4448('0xb')][_0x1f6eec[_0x4448('0x32')]][_0x4448('0x28')]!==_0x1f6eec[_0x4448('0x28')]['toLowerCase']()){this[_0x4448('0xb')][_0x1f6eec[_0x4448('0x32')]][_0x4448('0x37')]=_[_0x4448('0x39')](moment()[_0x4448('0x2e')]('x'));}this['telephones'][_0x1f6eec[_0x4448('0x32')]]['state']=_0x1f6eec[_0x4448('0x28')][_0x4448('0x35')]();logger[_0x4448('0x24')](_0x4448('0x3a'),util['inspect'](this[_0x4448('0xb')][_0x1f6eec['device']],{'showHidden':![],'depth':null}));this[_0x4448('0x20')](util[_0x4448('0x2e')](_0x4448('0x3b'),this[_0x4448('0xb')][_0x1f6eec[_0x4448('0x32')]]['name']),_0x4448('0x3c'),this[_0x4448('0xb')][_0x1f6eec[_0x4448('0x32')]]);}else if(this[_0x4448('0x9')][_0x1f6eec[_0x4448('0x32')]]){if(this['trunks'][_0x1f6eec[_0x4448('0x32')]]['state']!==_0x1f6eec[_0x4448('0x28')][_0x4448('0x35')]()){this[_0x4448('0x9')][_0x1f6eec[_0x4448('0x32')]][_0x4448('0x37')]=_['toNumber'](moment()[_0x4448('0x2e')]('x'));}this[_0x4448('0x9')][_0x1f6eec['device']][_0x4448('0x28')]=_0x1f6eec[_0x4448('0x28')][_0x4448('0x35')]();logger[_0x4448('0x24')]('[userReport][devicestatechange]\x20sending\x20trunk:save\x20event:',util[_0x4448('0x18')](this[_0x4448('0x9')][_0x1f6eec[_0x4448('0x32')]],{'showHidden':![],'depth':null}));this[_0x4448('0x20')](util[_0x4448('0x2e')](_0x4448('0x3d'),this[_0x4448('0x9')][_0x1f6eec[_0x4448('0x32')]][_0x4448('0x2f')]),_0x4448('0x30'),this[_0x4448('0x9')][_0x1f6eec['device']]);}else if(_[_0x4448('0x3e')](_0x1f6eec[_0x4448('0x32')],'Local')){var _0x4b660d=_0x1f6eec['device'];var _0x15bcd6=_0x4b660d['substring'](_0x4b660d[_0x4448('0x3f')]('/')+0x1,_0x4b660d[_0x4448('0x3f')]('@'));var _0x34107b=_['find'](this['agents'],function(_0x301eb4){return _0x301eb4[_0x4448('0x40')]==_0x15bcd6||_0x301eb4['phone']==_0x15bcd6||_0x301eb4[_0x4448('0x41')]==_0x15bcd6;});if(_0x34107b){if(_0x34107b['state']!==_0x1f6eec[_0x4448('0x28')]['toLowerCase']()){_0x34107b[_0x4448('0x37')]=_['toNumber'](moment()[_0x4448('0x2e')]('x'));}_0x34107b['state']=_0x1f6eec[_0x4448('0x28')]['toLowerCase']();_0x34107b[_0x4448('0x34')]=!![];_0x34107b[_0x4448('0x38')](_0x1f6eec);}}}}catch(_0x2c91a7){logger[_0x4448('0x16')]('[userReport][devicestatechange]',util[_0x4448('0x18')](_0x2c91a7,{'showHidden':![],'depth':null}));}};UserReport['prototype']['syncPeerStatus']=function(_0x4810b3){try{if(this[_0x4448('0x1e')](_0x4810b3)&&this['isNotNull'](_0x4810b3[_0x4448('0x11')])){logger['info'](_0x4448('0x42'),_0x4810b3[_0x4448('0x43')],_0x4810b3[_0x4448('0x44')],_0x4810b3[_0x4448('0x11')]);logger[_0x4448('0x24')]('[userReport][peerstatus]',util[_0x4448('0x18')](_0x4810b3,{'showHidden':![],'depth':null}));if(this[_0x4448('0xa')][_0x4810b3[_0x4448('0x43')]]){if(!this[_0x4448('0xa')][_0x4810b3[_0x4448('0x43')]]['local']||_0x4810b3[_0x4448('0x11')][_0x4448('0x35')]()=='registered'){this[_0x4448('0xa')][_0x4810b3[_0x4448('0x43')]][_0x4448('0x34')]=![];this[_0x4448('0xa')][_0x4810b3[_0x4448('0x43')]][_0x4448('0x45')]=_0x4810b3[_0x4448('0x11')][_0x4448('0x35')]();this[_0x4448('0xa')][_0x4810b3['peer']]['address']=_0x4810b3['address'];this[_0x4448('0xa')][_0x4810b3[_0x4448('0x43')]]['updateStatusRealtime'](_0x4810b3);}}else if(this['telephones'][_0x4810b3[_0x4448('0x43')]]){this['telephones'][_0x4810b3[_0x4448('0x43')]]['status']=_0x4810b3['peerstatus'][_0x4448('0x35')]();this['telephones'][_0x4810b3[_0x4448('0x43')]][_0x4448('0x44')]=_0x4810b3[_0x4448('0x44')];logger[_0x4448('0x24')](_0x4448('0x46'),util[_0x4448('0x18')](this[_0x4448('0xb')][_0x4810b3[_0x4448('0x43')]],{'showHidden':![],'depth':null}));this[_0x4448('0x20')](util[_0x4448('0x2e')]('telephone:%s',this[_0x4448('0xb')][_0x4810b3[_0x4448('0x43')]][_0x4448('0x2f')]),_0x4448('0x3c'),this[_0x4448('0xb')][_0x4810b3[_0x4448('0x43')]]);}else if(this['trunks'][_0x4810b3[_0x4448('0x43')]]){this[_0x4448('0x9')][_0x4810b3['peer']][_0x4448('0x45')]=_0x4810b3[_0x4448('0x11')][_0x4448('0x35')]();this[_0x4448('0x9')][_0x4810b3[_0x4448('0x43')]][_0x4448('0x44')]=_0x4810b3['address'];logger[_0x4448('0x24')](_0x4448('0x47'),util[_0x4448('0x18')](this[_0x4448('0x9')][_0x4810b3[_0x4448('0x43')]],{'showHidden':![],'depth':null}));this[_0x4448('0x20')](util['format'](_0x4448('0x3d'),this[_0x4448('0x9')][_0x4810b3['peer']][_0x4448('0x2f')]),_0x4448('0x30'),this[_0x4448('0x9')][_0x4810b3['peer']]);}}}catch(_0x14e3e3){logger[_0x4448('0x16')]('[userReport][peerstatus]',util['inspect'](_0x14e3e3,{'showHidden':![],'depth':null}));}};module[_0x4448('0x48')]=UserReport;