f012d1008a72ab86b028017076ae9909ffeb9b06
[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 _0x76d5=['lodash','moment','util','bluebird','../../../config/environment','../../../config/logger','ami','../ami','redis','socket.io-emitter','trunks','agents','telephones','syncRegistry','bind','registry','devicestatechange','syncDeviceState','peerstatus','syncPeerStatus','syncRealtimeShow','resolve','actionSipShowRegistry','catch','error','[userReport][sipshowregistry]','inspect','then','actionDeviceStateList','actionSipPeerStatus','[userReport][sippeerstatus]','prototype','isUndefined','emit','isNotNull','info','[userReport][registry]\x20registry:%s\x20state:%s','username','state','debug','[userReport][registry]','stateRegistry','merge','event','[userReport][registry]\x20sending\x20trunk:save\x20event:','trunk:%s','name','[userReport][devicestatechange]\x20device:%s\x20state:%s','device','[userReport][devicestatechange]','toLowerCase','inuse','local','stateTime','toNumber','format','updateStatusRealtime','telephone:%s','[userReport][devicestatechange]\x20sending\x20trunk:save\x20event:','trunk:save','startsWith','indexOf','find','mobile','accountcode','[userReport][peerstatus]\x20peer:%s\x20address:%s\x20status:%s','peer','address','[userReport][peerstatus]','registered','status','[userReport][peerstatus]\x20sending\x20telephone:save\x20event:'];(function(_0x40a355,_0x31fb87){var _0x49d41b=function(_0x5783cc){while(--_0x5783cc){_0x40a355['push'](_0x40a355['shift']());}};_0x49d41b(++_0x31fb87);}(_0x76d5,0xd8));var _0x576d=function(_0x4ca003,_0x17f17c){_0x4ca003=_0x4ca003-0x0;var _0x4d844e=_0x76d5[_0x4ca003];return _0x4d844e;};'use strict';var _=require(_0x576d('0x0'));var moment=require(_0x576d('0x1'));var util=require(_0x576d('0x2'));var Redis=require('ioredis');var BPromise=require(_0x576d('0x3'));var config=require(_0x576d('0x4'));var logger=require(_0x576d('0x5'))(_0x576d('0x6'));var ami=require(_0x576d('0x7'));config[_0x576d('0x8')]=_['defaults'](config[_0x576d('0x8')],{'host':'localhost','port':0x18eb});var io=require(_0x576d('0x9'))(new Redis(config['redis']));function UserReport(_0x49501a){this[_0x576d('0xa')]=_0x49501a[_0x576d('0xa')];this[_0x576d('0xb')]=_0x49501a[_0x576d('0xb')];this[_0x576d('0xc')]=_0x49501a[_0x576d('0xc')];ami['on']('registryentry',this[_0x576d('0xd')][_0x576d('0xe')](this));ami['on'](_0x576d('0xf'),this[_0x576d('0xd')][_0x576d('0xe')](this));ami['on'](_0x576d('0x10'),this[_0x576d('0x11')]['bind'](this));ami['on'](_0x576d('0x12'),this[_0x576d('0x13')][_0x576d('0xe')](this));return this[_0x576d('0x14')]();}function showSipRegistrations(){Promise[_0x576d('0x15')]()['then'](ami[_0x576d('0x16')]())[_0x576d('0x17')](function(_0x4610e7){logger[_0x576d('0x18')](_0x576d('0x19'),util[_0x576d('0x1a')](_0x4610e7,{'showHidden':![],'depth':null}));});}function listDeviceStates(){Promise[_0x576d('0x15')]()[_0x576d('0x1b')](ami[_0x576d('0x1c')]())[_0x576d('0x17')](function(_0x4e9061){logger['error']('[userReport][devicestatelist]',util[_0x576d('0x1a')](_0x4e9061,{'showHidden':![],'depth':null}));});}function showPeersStatus(){Promise[_0x576d('0x15')]()['then'](ami[_0x576d('0x1d')]())[_0x576d('0x17')](function(_0x18e76f){logger[_0x576d('0x18')](_0x576d('0x1e'),util[_0x576d('0x1a')](_0x18e76f,{'showHidden':![],'depth':null}));});}UserReport[_0x576d('0x1f')][_0x576d('0x14')]=function(){setInterval(function(){BPromise[_0x576d('0x15')]()['then'](showSipRegistrations())['then'](listDeviceStates())['then'](showPeersStatus());},0x32c8);};UserReport['prototype']['isNotNull']=function(_0x303e49){return _0x303e49!==null&&!_[_0x576d('0x20')](_0x303e49);};UserReport[_0x576d('0x1f')][_0x576d('0x21')]=function(_0x584afd,_0x42f00b,_0x1883eb){io['to'](_0x584afd)[_0x576d('0x21')](_0x42f00b,_0x1883eb);};UserReport[_0x576d('0x1f')]['syncRegistry']=function(_0x4e5a4c){try{if(this[_0x576d('0x22')](_0x4e5a4c)){logger[_0x576d('0x23')](_0x576d('0x24'),_0x4e5a4c[_0x576d('0x25')],_0x4e5a4c[_0x576d('0x26')]);logger[_0x576d('0x27')](_0x576d('0x28'),util[_0x576d('0x1a')](_0x4e5a4c,{'showHidden':![],'depth':null}));var _0x1f6ea9=_['find'](this[_0x576d('0xa')],{'defaultuser':_0x4e5a4c[_0x576d('0x25')]});if(_0x1f6ea9){_0x4e5a4c[_0x576d('0x29')]=_0x4e5a4c[_0x576d('0x26')];_[_0x576d('0x2a')](_0x1f6ea9,_['omit'](_0x4e5a4c,[_0x576d('0x2b'),'actionid',_0x576d('0x25'),_0x576d('0x26')]));logger[_0x576d('0x27')](_0x576d('0x2c'),util[_0x576d('0x1a')](_0x1f6ea9,{'showHidden':![],'depth':null}));this['emit'](util['format'](_0x576d('0x2d'),_0x1f6ea9[_0x576d('0x2e')]),'trunk:save',_0x1f6ea9);}}}catch(_0x45eff9){logger['error'](_0x576d('0x28'),util[_0x576d('0x1a')](_0x45eff9,{'showHidden':![],'depth':null}));}};UserReport[_0x576d('0x1f')][_0x576d('0x11')]=function(_0x24e38e){try{if(this[_0x576d('0x22')](_0x24e38e)){logger[_0x576d('0x23')](_0x576d('0x2f'),_0x24e38e[_0x576d('0x30')],_0x24e38e[_0x576d('0x26')]);logger[_0x576d('0x27')](_0x576d('0x31'),util[_0x576d('0x1a')](_0x24e38e,{'showHidden':![],'depth':null}));if(this['agents'][_0x24e38e[_0x576d('0x30')]]){if(!this[_0x576d('0xb')][_0x24e38e['device']]['local']||_0x24e38e[_0x576d('0x26')][_0x576d('0x32')]()==_0x576d('0x33')){this[_0x576d('0xb')][_0x24e38e[_0x576d('0x30')]][_0x576d('0x34')]=![];if(this[_0x576d('0xb')][_0x24e38e[_0x576d('0x30')]]['state']!==_0x24e38e[_0x576d('0x26')][_0x576d('0x32')]()){this['agents'][_0x24e38e[_0x576d('0x30')]][_0x576d('0x35')]=_[_0x576d('0x36')](moment()[_0x576d('0x37')]('x'));}this['agents'][_0x24e38e[_0x576d('0x30')]][_0x576d('0x26')]=_0x24e38e['state']['toLowerCase']();this[_0x576d('0xb')][_0x24e38e[_0x576d('0x30')]][_0x576d('0x38')](_0x24e38e);}}else if(this[_0x576d('0xc')][_0x24e38e[_0x576d('0x30')]]){if(this[_0x576d('0xc')][_0x24e38e['device']][_0x576d('0x26')]!==_0x24e38e['state']['toLowerCase']()){this['telephones'][_0x24e38e[_0x576d('0x30')]]['stateTime']=_['toNumber'](moment()[_0x576d('0x37')]('x'));}this['telephones'][_0x24e38e[_0x576d('0x30')]]['state']=_0x24e38e['state'][_0x576d('0x32')]();logger['debug']('[userReport][devicestatechange]\x20sending\x20telephone:save\x20event:',util['inspect'](this['telephones'][_0x24e38e[_0x576d('0x30')]],{'showHidden':![],'depth':null}));this[_0x576d('0x21')](util[_0x576d('0x37')](_0x576d('0x39'),this[_0x576d('0xc')][_0x24e38e[_0x576d('0x30')]][_0x576d('0x2e')]),'telephone:save',this[_0x576d('0xc')][_0x24e38e[_0x576d('0x30')]]);}else if(this[_0x576d('0xa')][_0x24e38e[_0x576d('0x30')]]){if(this[_0x576d('0xa')][_0x24e38e['device']][_0x576d('0x26')]!==_0x24e38e[_0x576d('0x26')][_0x576d('0x32')]()){this[_0x576d('0xa')][_0x24e38e[_0x576d('0x30')]]['stateTime']=_[_0x576d('0x36')](moment()['format']('x'));}this[_0x576d('0xa')][_0x24e38e[_0x576d('0x30')]][_0x576d('0x26')]=_0x24e38e[_0x576d('0x26')][_0x576d('0x32')]();logger[_0x576d('0x27')](_0x576d('0x3a'),util['inspect'](this[_0x576d('0xa')][_0x24e38e[_0x576d('0x30')]],{'showHidden':![],'depth':null}));this[_0x576d('0x21')](util[_0x576d('0x37')](_0x576d('0x2d'),this[_0x576d('0xa')][_0x24e38e[_0x576d('0x30')]]['name']),_0x576d('0x3b'),this[_0x576d('0xa')][_0x24e38e[_0x576d('0x30')]]);}else if(_[_0x576d('0x3c')](_0x24e38e[_0x576d('0x30')],'Local')){var _0x259554=_0x24e38e['device'];var _0x31740b=_0x259554['substring'](_0x259554[_0x576d('0x3d')]('/')+0x1,_0x259554[_0x576d('0x3d')]('@'));var _0x44f8ad=_[_0x576d('0x3e')](this[_0x576d('0xb')],function(_0x3426a6){return _0x3426a6[_0x576d('0x3f')]==_0x31740b||_0x3426a6['phone']==_0x31740b||_0x3426a6[_0x576d('0x40')]==_0x31740b;});if(_0x44f8ad){if(_0x44f8ad[_0x576d('0x26')]!==_0x24e38e[_0x576d('0x26')]['toLowerCase']()){_0x44f8ad['stateTime']=_[_0x576d('0x36')](moment()['format']('x'));}_0x44f8ad[_0x576d('0x26')]=_0x24e38e[_0x576d('0x26')]['toLowerCase']();_0x44f8ad[_0x576d('0x34')]=!![];_0x44f8ad[_0x576d('0x38')](_0x24e38e);}}}}catch(_0x4179e3){logger['error'](_0x576d('0x31'),util[_0x576d('0x1a')](_0x4179e3,{'showHidden':![],'depth':null}));}};UserReport[_0x576d('0x1f')][_0x576d('0x13')]=function(_0x23e62b){try{if(this['isNotNull'](_0x23e62b)&&this[_0x576d('0x22')](_0x23e62b[_0x576d('0x12')])){logger['info'](_0x576d('0x41'),_0x23e62b[_0x576d('0x42')],_0x23e62b[_0x576d('0x43')],_0x23e62b[_0x576d('0x12')]);logger[_0x576d('0x27')](_0x576d('0x44'),util[_0x576d('0x1a')](_0x23e62b,{'showHidden':![],'depth':null}));if(this[_0x576d('0xb')][_0x23e62b[_0x576d('0x42')]]){if(!this[_0x576d('0xb')][_0x23e62b[_0x576d('0x42')]][_0x576d('0x34')]||_0x23e62b['peerstatus'][_0x576d('0x32')]()==_0x576d('0x45')){this['agents'][_0x23e62b[_0x576d('0x42')]]['local']=![];this[_0x576d('0xb')][_0x23e62b[_0x576d('0x42')]][_0x576d('0x46')]=_0x23e62b['peerstatus']['toLowerCase']();this['agents'][_0x23e62b['peer']][_0x576d('0x43')]=_0x23e62b[_0x576d('0x43')];this[_0x576d('0xb')][_0x23e62b[_0x576d('0x42')]]['updateStatusRealtime'](_0x23e62b);}}else if(this[_0x576d('0xc')][_0x23e62b[_0x576d('0x42')]]){this[_0x576d('0xc')][_0x23e62b[_0x576d('0x42')]]['status']=_0x23e62b[_0x576d('0x12')][_0x576d('0x32')]();this['telephones'][_0x23e62b['peer']][_0x576d('0x43')]=_0x23e62b[_0x576d('0x43')];logger[_0x576d('0x27')](_0x576d('0x47'),util['inspect'](this[_0x576d('0xc')][_0x23e62b['peer']],{'showHidden':![],'depth':null}));this[_0x576d('0x21')](util['format'](_0x576d('0x39'),this[_0x576d('0xc')][_0x23e62b[_0x576d('0x42')]][_0x576d('0x2e')]),'telephone:save',this[_0x576d('0xc')][_0x23e62b[_0x576d('0x42')]]);}else if(this['trunks'][_0x23e62b['peer']]){this[_0x576d('0xa')][_0x23e62b[_0x576d('0x42')]]['status']=_0x23e62b[_0x576d('0x12')][_0x576d('0x32')]();this[_0x576d('0xa')][_0x23e62b[_0x576d('0x42')]][_0x576d('0x43')]=_0x23e62b[_0x576d('0x43')];logger[_0x576d('0x27')]('[userReport][peerstatus]\x20sending\x20trunk:save\x20event:',util['inspect'](this[_0x576d('0xa')][_0x23e62b[_0x576d('0x42')]],{'showHidden':![],'depth':null}));this[_0x576d('0x21')](util['format'](_0x576d('0x2d'),this[_0x576d('0xa')][_0x23e62b[_0x576d('0x42')]]['name']),'trunk:save',this['trunks'][_0x23e62b[_0x576d('0x42')]]);}}}catch(_0x2afc8f){logger[_0x576d('0x18')]('[userReport][peerstatus]',util['inspect'](_0x2afc8f,{'showHidden':![],'depth':null}));}};module['exports']=UserReport;