653f9249b0a3fc9566dba4339a275c3b9f272ea5
[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 _0x1e7c=['name','[userReport][registry]','device','toLowerCase','local','stateTime','toNumber','format','updateStatusRealtime','[userReport][devicestatechange]\x20sending\x20telephone:save\x20event:','telephone:%s','telephone:save','trunk:%s','Local','indexOf','mobile','accountcode','[userReport][devicestatechange]','syncPeerStatus','[userReport][peerstatus]\x20peer:%s\x20address:%s\x20status:%s','peer','address','status','[userReport][peerstatus]\x20sending\x20telephone:save\x20event:','trunk:save','[userReport][peerstatus]','exports','lodash','moment','util','../../../config/logger','ami','../ami','redis','defaults','localhost','trunks','agents','telephones','syncRegistry','registry','devicestatechange','syncDeviceState','bind','peerstatus','syncRealtimeShow','resolve','then','catch','error','inspect','actionDeviceStateList','[userReport][devicestatelist]','actionSipPeerStatus','isNotNull','isUndefined','prototype','emit','info','[userReport][registry]\x20registry:%s\x20state:%s','username','state','find','stateRegistry','merge','event','debug','[userReport][registry]\x20sending\x20trunk:save\x20event:'];(function(_0x445bfc,_0x598cf2){var _0x15ccad=function(_0x22460a){while(--_0x22460a){_0x445bfc['push'](_0x445bfc['shift']());}};_0x15ccad(++_0x598cf2);}(_0x1e7c,0x12b));var _0xc1e7=function(_0x1dd2c9,_0x736237){_0x1dd2c9=_0x1dd2c9-0x0;var _0x5a9002=_0x1e7c[_0x1dd2c9];return _0x5a9002;};'use strict';var _=require(_0xc1e7('0x0'));var moment=require(_0xc1e7('0x1'));var util=require(_0xc1e7('0x2'));var Redis=require('ioredis');var BPromise=require('bluebird');var config=require('../../../config/environment');var logger=require(_0xc1e7('0x3'))(_0xc1e7('0x4'));var ami=require(_0xc1e7('0x5'));config[_0xc1e7('0x6')]=_[_0xc1e7('0x7')](config[_0xc1e7('0x6')],{'host':_0xc1e7('0x8'),'port':0x18eb});var io=require('socket.io-emitter')(new Redis(config['redis']));function UserReport(_0x3ad828){this[_0xc1e7('0x9')]=_0x3ad828[_0xc1e7('0x9')];this[_0xc1e7('0xa')]=_0x3ad828[_0xc1e7('0xa')];this[_0xc1e7('0xb')]=_0x3ad828['telephones'];ami['on']('registryentry',this[_0xc1e7('0xc')]['bind'](this));ami['on'](_0xc1e7('0xd'),this[_0xc1e7('0xc')]['bind'](this));ami['on'](_0xc1e7('0xe'),this[_0xc1e7('0xf')][_0xc1e7('0x10')](this));ami['on'](_0xc1e7('0x11'),this['syncPeerStatus'][_0xc1e7('0x10')](this));return this[_0xc1e7('0x12')]();}function showSipRegistrations(){Promise[_0xc1e7('0x13')]()[_0xc1e7('0x14')](ami['actionSipShowRegistry']())[_0xc1e7('0x15')](function(_0x2087e7){logger[_0xc1e7('0x16')]('[userReport][sipshowregistry]',util[_0xc1e7('0x17')](_0x2087e7,{'showHidden':![],'depth':null}));});}function listDeviceStates(){Promise[_0xc1e7('0x13')]()[_0xc1e7('0x14')](ami[_0xc1e7('0x18')]())[_0xc1e7('0x15')](function(_0x5707f3){logger[_0xc1e7('0x16')](_0xc1e7('0x19'),util[_0xc1e7('0x17')](_0x5707f3,{'showHidden':![],'depth':null}));});}function showPeersStatus(){Promise[_0xc1e7('0x13')]()[_0xc1e7('0x14')](ami[_0xc1e7('0x1a')]())[_0xc1e7('0x15')](function(_0x28d6fb){logger[_0xc1e7('0x16')]('[userReport][sippeerstatus]',util[_0xc1e7('0x17')](_0x28d6fb,{'showHidden':![],'depth':null}));});}UserReport['prototype'][_0xc1e7('0x12')]=function(){setInterval(function(){BPromise[_0xc1e7('0x13')]()[_0xc1e7('0x14')](showSipRegistrations())[_0xc1e7('0x14')](listDeviceStates())[_0xc1e7('0x14')](showPeersStatus());},0x32c8);};UserReport['prototype'][_0xc1e7('0x1b')]=function(_0x1efa25){return _0x1efa25!==null&&!_[_0xc1e7('0x1c')](_0x1efa25);};UserReport[_0xc1e7('0x1d')][_0xc1e7('0x1e')]=function(_0x58d9e8,_0x3360c1,_0x391b3b){io['to'](_0x58d9e8)[_0xc1e7('0x1e')](_0x3360c1,_0x391b3b);};UserReport['prototype'][_0xc1e7('0xc')]=function(_0xfd5933){try{if(this['isNotNull'](_0xfd5933)){logger[_0xc1e7('0x1f')](_0xc1e7('0x20'),_0xfd5933[_0xc1e7('0x21')],_0xfd5933[_0xc1e7('0x22')]);logger['debug']('[userReport][registry]',util[_0xc1e7('0x17')](_0xfd5933,{'showHidden':![],'depth':null}));var _0x49cef3=_[_0xc1e7('0x23')](this[_0xc1e7('0x9')],{'defaultuser':_0xfd5933['username']});if(_0x49cef3){_0xfd5933[_0xc1e7('0x24')]=_0xfd5933['state'];_[_0xc1e7('0x25')](_0x49cef3,_['omit'](_0xfd5933,[_0xc1e7('0x26'),'actionid',_0xc1e7('0x21'),_0xc1e7('0x22')]));logger[_0xc1e7('0x27')](_0xc1e7('0x28'),util['inspect'](_0x49cef3,{'showHidden':![],'depth':null}));this['emit'](util['format']('trunk:%s',_0x49cef3[_0xc1e7('0x29')]),'trunk:save',_0x49cef3);}}}catch(_0x3ea6a5){logger['error'](_0xc1e7('0x2a'),util[_0xc1e7('0x17')](_0x3ea6a5,{'showHidden':![],'depth':null}));}};UserReport['prototype'][_0xc1e7('0xf')]=function(_0x14fcd9){try{if(this[_0xc1e7('0x1b')](_0x14fcd9)){logger[_0xc1e7('0x1f')]('[userReport][devicestatechange]\x20device:%s\x20state:%s',_0x14fcd9[_0xc1e7('0x2b')],_0x14fcd9['state']);logger[_0xc1e7('0x27')]('[userReport][devicestatechange]',util['inspect'](_0x14fcd9,{'showHidden':![],'depth':null}));if(this[_0xc1e7('0xa')][_0x14fcd9[_0xc1e7('0x2b')]]){if(!this[_0xc1e7('0xa')][_0x14fcd9[_0xc1e7('0x2b')]]['local']||_0x14fcd9['state'][_0xc1e7('0x2c')]()=='inuse'){this[_0xc1e7('0xa')][_0x14fcd9[_0xc1e7('0x2b')]][_0xc1e7('0x2d')]=![];if(this['agents'][_0x14fcd9[_0xc1e7('0x2b')]][_0xc1e7('0x22')]!==_0x14fcd9[_0xc1e7('0x22')]['toLowerCase']()){this[_0xc1e7('0xa')][_0x14fcd9[_0xc1e7('0x2b')]][_0xc1e7('0x2e')]=_[_0xc1e7('0x2f')](moment()[_0xc1e7('0x30')]('x'));}this[_0xc1e7('0xa')][_0x14fcd9[_0xc1e7('0x2b')]]['state']=_0x14fcd9[_0xc1e7('0x22')][_0xc1e7('0x2c')]();this[_0xc1e7('0xa')][_0x14fcd9[_0xc1e7('0x2b')]][_0xc1e7('0x31')](_0x14fcd9);}}else if(this[_0xc1e7('0xb')][_0x14fcd9[_0xc1e7('0x2b')]]){if(this[_0xc1e7('0xb')][_0x14fcd9[_0xc1e7('0x2b')]][_0xc1e7('0x22')]!==_0x14fcd9['state'][_0xc1e7('0x2c')]()){this[_0xc1e7('0xb')][_0x14fcd9['device']]['stateTime']=_[_0xc1e7('0x2f')](moment()[_0xc1e7('0x30')]('x'));}this[_0xc1e7('0xb')][_0x14fcd9[_0xc1e7('0x2b')]]['state']=_0x14fcd9['state']['toLowerCase']();logger['debug'](_0xc1e7('0x32'),util[_0xc1e7('0x17')](this[_0xc1e7('0xb')][_0x14fcd9[_0xc1e7('0x2b')]],{'showHidden':![],'depth':null}));this[_0xc1e7('0x1e')](util[_0xc1e7('0x30')](_0xc1e7('0x33'),this['telephones'][_0x14fcd9[_0xc1e7('0x2b')]][_0xc1e7('0x29')]),_0xc1e7('0x34'),this[_0xc1e7('0xb')][_0x14fcd9[_0xc1e7('0x2b')]]);}else if(this[_0xc1e7('0x9')][_0x14fcd9[_0xc1e7('0x2b')]]){if(this[_0xc1e7('0x9')][_0x14fcd9[_0xc1e7('0x2b')]]['state']!==_0x14fcd9[_0xc1e7('0x22')][_0xc1e7('0x2c')]()){this[_0xc1e7('0x9')][_0x14fcd9[_0xc1e7('0x2b')]][_0xc1e7('0x2e')]=_[_0xc1e7('0x2f')](moment()[_0xc1e7('0x30')]('x'));}this[_0xc1e7('0x9')][_0x14fcd9['device']]['state']=_0x14fcd9[_0xc1e7('0x22')][_0xc1e7('0x2c')]();logger[_0xc1e7('0x27')]('[userReport][devicestatechange]\x20sending\x20trunk:save\x20event:',util[_0xc1e7('0x17')](this['trunks'][_0x14fcd9['device']],{'showHidden':![],'depth':null}));this[_0xc1e7('0x1e')](util[_0xc1e7('0x30')](_0xc1e7('0x35'),this[_0xc1e7('0x9')][_0x14fcd9[_0xc1e7('0x2b')]]['name']),'trunk:save',this[_0xc1e7('0x9')][_0x14fcd9['device']]);}else if(_['startsWith'](_0x14fcd9[_0xc1e7('0x2b')],_0xc1e7('0x36'))){var _0x1d6979=_0x14fcd9[_0xc1e7('0x2b')];var _0x5e57ca=_0x1d6979['substring'](_0x1d6979['indexOf']('/')+0x1,_0x1d6979[_0xc1e7('0x37')]('@'));var _0xf9e030=_[_0xc1e7('0x23')](this[_0xc1e7('0xa')],function(_0x9f7a1d){return _0x9f7a1d[_0xc1e7('0x38')]==_0x5e57ca||_0x9f7a1d['phone']==_0x5e57ca||_0x9f7a1d[_0xc1e7('0x39')]==_0x5e57ca;});if(_0xf9e030){if(_0xf9e030[_0xc1e7('0x22')]!==_0x14fcd9[_0xc1e7('0x22')][_0xc1e7('0x2c')]()){_0xf9e030[_0xc1e7('0x2e')]=_[_0xc1e7('0x2f')](moment()[_0xc1e7('0x30')]('x'));}_0xf9e030[_0xc1e7('0x22')]=_0x14fcd9[_0xc1e7('0x22')]['toLowerCase']();_0xf9e030[_0xc1e7('0x2d')]=!![];_0xf9e030[_0xc1e7('0x31')](_0x14fcd9);}}}}catch(_0x240c3c){logger[_0xc1e7('0x16')](_0xc1e7('0x3a'),util[_0xc1e7('0x17')](_0x240c3c,{'showHidden':![],'depth':null}));}};UserReport[_0xc1e7('0x1d')][_0xc1e7('0x3b')]=function(_0x25f2ce){try{if(this[_0xc1e7('0x1b')](_0x25f2ce)&&this['isNotNull'](_0x25f2ce[_0xc1e7('0x11')])){logger[_0xc1e7('0x1f')](_0xc1e7('0x3c'),_0x25f2ce[_0xc1e7('0x3d')],_0x25f2ce[_0xc1e7('0x3e')],_0x25f2ce[_0xc1e7('0x11')]);logger[_0xc1e7('0x27')]('[userReport][peerstatus]',util[_0xc1e7('0x17')](_0x25f2ce,{'showHidden':![],'depth':null}));if(this['agents'][_0x25f2ce[_0xc1e7('0x3d')]]){if(!this[_0xc1e7('0xa')][_0x25f2ce[_0xc1e7('0x3d')]][_0xc1e7('0x2d')]||_0x25f2ce['peerstatus'][_0xc1e7('0x2c')]()=='registered'){this[_0xc1e7('0xa')][_0x25f2ce[_0xc1e7('0x3d')]][_0xc1e7('0x2d')]=![];this[_0xc1e7('0xa')][_0x25f2ce[_0xc1e7('0x3d')]][_0xc1e7('0x3f')]=_0x25f2ce[_0xc1e7('0x11')][_0xc1e7('0x2c')]();this[_0xc1e7('0xa')][_0x25f2ce[_0xc1e7('0x3d')]]['address']=_0x25f2ce[_0xc1e7('0x3e')];this[_0xc1e7('0xa')][_0x25f2ce[_0xc1e7('0x3d')]]['updateStatusRealtime'](_0x25f2ce);}}else if(this[_0xc1e7('0xb')][_0x25f2ce[_0xc1e7('0x3d')]]){this[_0xc1e7('0xb')][_0x25f2ce[_0xc1e7('0x3d')]][_0xc1e7('0x3f')]=_0x25f2ce[_0xc1e7('0x11')][_0xc1e7('0x2c')]();this['telephones'][_0x25f2ce[_0xc1e7('0x3d')]][_0xc1e7('0x3e')]=_0x25f2ce[_0xc1e7('0x3e')];logger['debug'](_0xc1e7('0x40'),util[_0xc1e7('0x17')](this[_0xc1e7('0xb')][_0x25f2ce[_0xc1e7('0x3d')]],{'showHidden':![],'depth':null}));this['emit'](util[_0xc1e7('0x30')]('telephone:%s',this[_0xc1e7('0xb')][_0x25f2ce[_0xc1e7('0x3d')]]['name']),_0xc1e7('0x34'),this[_0xc1e7('0xb')][_0x25f2ce[_0xc1e7('0x3d')]]);}else if(this[_0xc1e7('0x9')][_0x25f2ce[_0xc1e7('0x3d')]]){this['trunks'][_0x25f2ce['peer']][_0xc1e7('0x3f')]=_0x25f2ce[_0xc1e7('0x11')][_0xc1e7('0x2c')]();this[_0xc1e7('0x9')][_0x25f2ce[_0xc1e7('0x3d')]][_0xc1e7('0x3e')]=_0x25f2ce[_0xc1e7('0x3e')];logger[_0xc1e7('0x27')]('[userReport][peerstatus]\x20sending\x20trunk:save\x20event:',util[_0xc1e7('0x17')](this[_0xc1e7('0x9')][_0x25f2ce[_0xc1e7('0x3d')]],{'showHidden':![],'depth':null}));this[_0xc1e7('0x1e')](util[_0xc1e7('0x30')](_0xc1e7('0x35'),this[_0xc1e7('0x9')][_0x25f2ce[_0xc1e7('0x3d')]][_0xc1e7('0x29')]),_0xc1e7('0x41'),this[_0xc1e7('0x9')][_0x25f2ce[_0xc1e7('0x3d')]]);}}}catch(_0x27f9e8){logger['error'](_0xc1e7('0x42'),util[_0xc1e7('0x17')](_0x27f9e8,{'showHidden':![],'depth':null}));}};module[_0xc1e7('0x43')]=UserReport;