Built motion from commit d5e4af8c.|2.6.23
[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 _0x4a74=['bind','peerstatus','syncPeerStatus','syncRealtimeShow','then','actionSipShowRegistry','catch','error','inspect','resolve','actionDeviceStateList','[userReport][devicestatelist]','[userReport][sippeerstatus]','prototype','emit','isNotNull','info','[userReport][registry]\x20registry:%s\x20state:%s','state','debug','[userReport][registry]','find','username','omit','event','actionid','format','name','trunk:save','syncDeviceState','[userReport][devicestatechange]','device','local','toLowerCase','inuse','toNumber','stateTime','[userReport][devicestatechange]\x20sending\x20telephone:save\x20event:','telephone:%s','telephone:save','[userReport][devicestatechange]\x20sending\x20trunk:save\x20event:','startsWith','Local','indexOf','mobile','accountcode','[userReport][peerstatus]\x20peer:%s\x20address:%s\x20status:%s','peer','address','[userReport][peerstatus]','registered','status','updateStatusRealtime','[userReport][peerstatus]\x20sending\x20trunk:save\x20event:','trunk:%s','exports','lodash','util','ioredis','bluebird','../../../config/environment','../ami','redis','defaults','localhost','socket.io-emitter','trunks','agents','telephones','registryentry','syncRegistry','devicestatechange'];(function(_0x3522c8,_0x1e7c82){var _0x22f498=function(_0x5bf143){while(--_0x5bf143){_0x3522c8['push'](_0x3522c8['shift']());}};_0x22f498(++_0x1e7c82);}(_0x4a74,0x158));var _0x44a7=function(_0x2d94d5,_0x3c95fb){_0x2d94d5=_0x2d94d5-0x0;var _0x21a9cf=_0x4a74[_0x2d94d5];return _0x21a9cf;};'use strict';var _=require(_0x44a7('0x0'));var moment=require('moment');var util=require(_0x44a7('0x1'));var Redis=require(_0x44a7('0x2'));var BPromise=require(_0x44a7('0x3'));var config=require(_0x44a7('0x4'));var logger=require('../../../config/logger')('ami');var ami=require(_0x44a7('0x5'));config[_0x44a7('0x6')]=_[_0x44a7('0x7')](config[_0x44a7('0x6')],{'host':_0x44a7('0x8'),'port':0x18eb});var io=require(_0x44a7('0x9'))(new Redis(config['redis']));function UserReport(_0x36f2fe){this['trunks']=_0x36f2fe[_0x44a7('0xa')];this[_0x44a7('0xb')]=_0x36f2fe[_0x44a7('0xb')];this[_0x44a7('0xc')]=_0x36f2fe[_0x44a7('0xc')];ami['on'](_0x44a7('0xd'),this[_0x44a7('0xe')]['bind'](this));ami['on']('registry',this[_0x44a7('0xe')]['bind'](this));ami['on'](_0x44a7('0xf'),this['syncDeviceState'][_0x44a7('0x10')](this));ami['on'](_0x44a7('0x11'),this[_0x44a7('0x12')]['bind'](this));return this[_0x44a7('0x13')]();}function showSipRegistrations(){Promise['resolve']()[_0x44a7('0x14')](ami[_0x44a7('0x15')]())[_0x44a7('0x16')](function(_0x5e0f2d){logger[_0x44a7('0x17')]('[userReport][sipshowregistry]',util[_0x44a7('0x18')](_0x5e0f2d,{'showHidden':![],'depth':null}));});}function listDeviceStates(){Promise[_0x44a7('0x19')]()[_0x44a7('0x14')](ami[_0x44a7('0x1a')]())[_0x44a7('0x16')](function(_0x24da49){logger[_0x44a7('0x17')](_0x44a7('0x1b'),util[_0x44a7('0x18')](_0x24da49,{'showHidden':![],'depth':null}));});}function showPeersStatus(){Promise[_0x44a7('0x19')]()['then'](ami['actionSipPeerStatus']())[_0x44a7('0x16')](function(_0x47d081){logger[_0x44a7('0x17')](_0x44a7('0x1c'),util[_0x44a7('0x18')](_0x47d081,{'showHidden':![],'depth':null}));});}UserReport['prototype'][_0x44a7('0x13')]=function(){setInterval(function(){BPromise[_0x44a7('0x19')]()[_0x44a7('0x14')](showSipRegistrations())['then'](listDeviceStates())[_0x44a7('0x14')](showPeersStatus());},0x32c8);};UserReport[_0x44a7('0x1d')]['isNotNull']=function(_0x577833){return _0x577833!==null&&!_['isUndefined'](_0x577833);};UserReport['prototype']['emit']=function(_0x5836b2,_0x66ae91,_0x5e6a8d){io['to'](_0x5836b2)[_0x44a7('0x1e')](_0x66ae91,_0x5e6a8d);};UserReport['prototype']['syncRegistry']=function(_0x3141ac){try{if(this[_0x44a7('0x1f')](_0x3141ac)){logger[_0x44a7('0x20')](_0x44a7('0x21'),_0x3141ac['username'],_0x3141ac[_0x44a7('0x22')]);logger[_0x44a7('0x23')](_0x44a7('0x24'),util[_0x44a7('0x18')](_0x3141ac,{'showHidden':![],'depth':null}));var _0xc682e3=_[_0x44a7('0x25')](this['trunks'],{'defaultuser':_0x3141ac[_0x44a7('0x26')]});if(_0xc682e3){_0x3141ac['stateRegistry']=_0x3141ac[_0x44a7('0x22')];_['merge'](_0xc682e3,_[_0x44a7('0x27')](_0x3141ac,[_0x44a7('0x28'),_0x44a7('0x29'),_0x44a7('0x26'),_0x44a7('0x22')]));logger[_0x44a7('0x23')]('[userReport][registry]\x20sending\x20trunk:save\x20event:',util[_0x44a7('0x18')](_0xc682e3,{'showHidden':![],'depth':null}));this['emit'](util[_0x44a7('0x2a')]('trunk:%s',_0xc682e3[_0x44a7('0x2b')]),_0x44a7('0x2c'),_0xc682e3);}}}catch(_0x262c5c){logger['error'](_0x44a7('0x24'),util[_0x44a7('0x18')](_0x262c5c,{'showHidden':![],'depth':null}));}};UserReport['prototype'][_0x44a7('0x2d')]=function(_0x57db36){try{if(this[_0x44a7('0x1f')](_0x57db36)){logger['info']('[userReport][devicestatechange]\x20device:%s\x20state:%s',_0x57db36['device'],_0x57db36[_0x44a7('0x22')]);logger['debug'](_0x44a7('0x2e'),util[_0x44a7('0x18')](_0x57db36,{'showHidden':![],'depth':null}));if(this[_0x44a7('0xb')][_0x57db36['device']]){if(!this['agents'][_0x57db36[_0x44a7('0x2f')]][_0x44a7('0x30')]||_0x57db36[_0x44a7('0x22')][_0x44a7('0x31')]()==_0x44a7('0x32')){this['agents'][_0x57db36[_0x44a7('0x2f')]]['local']=![];if(this[_0x44a7('0xb')][_0x57db36['device']][_0x44a7('0x22')]!==_0x57db36[_0x44a7('0x22')][_0x44a7('0x31')]()){this[_0x44a7('0xb')][_0x57db36[_0x44a7('0x2f')]]['stateTime']=_[_0x44a7('0x33')](moment()['format']('x'));}this[_0x44a7('0xb')][_0x57db36[_0x44a7('0x2f')]][_0x44a7('0x22')]=_0x57db36['state'][_0x44a7('0x31')]();this['agents'][_0x57db36[_0x44a7('0x2f')]]['updateStatusRealtime'](_0x57db36);}}else if(this[_0x44a7('0xc')][_0x57db36[_0x44a7('0x2f')]]){if(this['telephones'][_0x57db36[_0x44a7('0x2f')]]['state']!==_0x57db36[_0x44a7('0x22')][_0x44a7('0x31')]()){this[_0x44a7('0xc')][_0x57db36[_0x44a7('0x2f')]][_0x44a7('0x34')]=_[_0x44a7('0x33')](moment()[_0x44a7('0x2a')]('x'));}this['telephones'][_0x57db36[_0x44a7('0x2f')]][_0x44a7('0x22')]=_0x57db36[_0x44a7('0x22')][_0x44a7('0x31')]();logger[_0x44a7('0x23')](_0x44a7('0x35'),util[_0x44a7('0x18')](this[_0x44a7('0xc')][_0x57db36[_0x44a7('0x2f')]],{'showHidden':![],'depth':null}));this[_0x44a7('0x1e')](util[_0x44a7('0x2a')](_0x44a7('0x36'),this[_0x44a7('0xc')][_0x57db36[_0x44a7('0x2f')]]['name']),_0x44a7('0x37'),this['telephones'][_0x57db36[_0x44a7('0x2f')]]);}else if(this[_0x44a7('0xa')][_0x57db36['device']]){if(this[_0x44a7('0xa')][_0x57db36[_0x44a7('0x2f')]][_0x44a7('0x22')]!==_0x57db36[_0x44a7('0x22')]['toLowerCase']()){this[_0x44a7('0xa')][_0x57db36[_0x44a7('0x2f')]]['stateTime']=_['toNumber'](moment()[_0x44a7('0x2a')]('x'));}this[_0x44a7('0xa')][_0x57db36[_0x44a7('0x2f')]][_0x44a7('0x22')]=_0x57db36[_0x44a7('0x22')][_0x44a7('0x31')]();logger[_0x44a7('0x23')](_0x44a7('0x38'),util[_0x44a7('0x18')](this[_0x44a7('0xa')][_0x57db36[_0x44a7('0x2f')]],{'showHidden':![],'depth':null}));this[_0x44a7('0x1e')](util[_0x44a7('0x2a')]('trunk:%s',this[_0x44a7('0xa')][_0x57db36[_0x44a7('0x2f')]][_0x44a7('0x2b')]),_0x44a7('0x2c'),this[_0x44a7('0xa')][_0x57db36[_0x44a7('0x2f')]]);}else if(_[_0x44a7('0x39')](_0x57db36[_0x44a7('0x2f')],_0x44a7('0x3a'))){var _0x10145c=_0x57db36['device'];var _0x3786a3=_0x10145c['substring'](_0x10145c[_0x44a7('0x3b')]('/')+0x1,_0x10145c[_0x44a7('0x3b')]('@'));var _0x225ad6=_[_0x44a7('0x25')](this[_0x44a7('0xb')],function(_0x3a929e){return _0x3a929e[_0x44a7('0x3c')]==_0x3786a3||_0x3a929e['phone']==_0x3786a3||_0x3a929e[_0x44a7('0x3d')]==_0x3786a3;});if(_0x225ad6){if(_0x225ad6[_0x44a7('0x22')]!==_0x57db36['state']['toLowerCase']()){_0x225ad6[_0x44a7('0x34')]=_['toNumber'](moment()[_0x44a7('0x2a')]('x'));}_0x225ad6[_0x44a7('0x22')]=_0x57db36[_0x44a7('0x22')]['toLowerCase']();_0x225ad6['local']=!![];_0x225ad6['updateStatusRealtime'](_0x57db36);}}}}catch(_0x140266){logger[_0x44a7('0x17')](_0x44a7('0x2e'),util[_0x44a7('0x18')](_0x140266,{'showHidden':![],'depth':null}));}};UserReport[_0x44a7('0x1d')][_0x44a7('0x12')]=function(_0x325348){try{if(this['isNotNull'](_0x325348)&&this[_0x44a7('0x1f')](_0x325348[_0x44a7('0x11')])){logger[_0x44a7('0x20')](_0x44a7('0x3e'),_0x325348[_0x44a7('0x3f')],_0x325348[_0x44a7('0x40')],_0x325348[_0x44a7('0x11')]);logger['debug'](_0x44a7('0x41'),util[_0x44a7('0x18')](_0x325348,{'showHidden':![],'depth':null}));if(this['agents'][_0x325348[_0x44a7('0x3f')]]){if(!this[_0x44a7('0xb')][_0x325348[_0x44a7('0x3f')]][_0x44a7('0x30')]||_0x325348[_0x44a7('0x11')][_0x44a7('0x31')]()==_0x44a7('0x42')){this[_0x44a7('0xb')][_0x325348[_0x44a7('0x3f')]][_0x44a7('0x30')]=![];this['agents'][_0x325348[_0x44a7('0x3f')]][_0x44a7('0x43')]=_0x325348[_0x44a7('0x11')]['toLowerCase']();this[_0x44a7('0xb')][_0x325348['peer']][_0x44a7('0x40')]=_0x325348['address'];this[_0x44a7('0xb')][_0x325348[_0x44a7('0x3f')]][_0x44a7('0x44')](_0x325348);}}else if(this[_0x44a7('0xc')][_0x325348[_0x44a7('0x3f')]]){this[_0x44a7('0xc')][_0x325348[_0x44a7('0x3f')]][_0x44a7('0x43')]=_0x325348[_0x44a7('0x11')][_0x44a7('0x31')]();this['telephones'][_0x325348[_0x44a7('0x3f')]][_0x44a7('0x40')]=_0x325348['address'];logger[_0x44a7('0x23')]('[userReport][peerstatus]\x20sending\x20telephone:save\x20event:',util[_0x44a7('0x18')](this[_0x44a7('0xc')][_0x325348[_0x44a7('0x3f')]],{'showHidden':![],'depth':null}));this['emit'](util[_0x44a7('0x2a')]('telephone:%s',this['telephones'][_0x325348['peer']]['name']),_0x44a7('0x37'),this[_0x44a7('0xc')][_0x325348['peer']]);}else if(this[_0x44a7('0xa')][_0x325348[_0x44a7('0x3f')]]){this[_0x44a7('0xa')][_0x325348['peer']][_0x44a7('0x43')]=_0x325348['peerstatus']['toLowerCase']();this[_0x44a7('0xa')][_0x325348[_0x44a7('0x3f')]][_0x44a7('0x40')]=_0x325348['address'];logger[_0x44a7('0x23')](_0x44a7('0x45'),util[_0x44a7('0x18')](this['trunks'][_0x325348[_0x44a7('0x3f')]],{'showHidden':![],'depth':null}));this[_0x44a7('0x1e')](util['format'](_0x44a7('0x46'),this[_0x44a7('0xa')][_0x325348['peer']][_0x44a7('0x2b')]),'trunk:save',this[_0x44a7('0xa')][_0x325348[_0x44a7('0x3f')]]);}}}catch(_0x59ccf1){logger['error'](_0x44a7('0x41'),util[_0x44a7('0x18')](_0x59ccf1,{'showHidden':![],'depth':null}));}};module[_0x44a7('0x47')]=UserReport;