Built motion from commit a61a4a20.|2.5.46
[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 _0xcc4e=['[userReport][devicestatechange]\x20sending\x20trunk:save\x20event:','trunk:save','startsWith','substring','indexOf','mobile','local','[userReport][devicestatechange]','[userReport][peerstatus]\x20peer:%s\x20address:%s\x20status:%s','peer','address','[userReport][peerstatus]','registered','status','[userReport][peerstatus]\x20sending\x20trunk:save\x20event:','exports','util','ioredis','bluebird','../../../config/logger','../ami','redis','defaults','socket.io-emitter','trunks','agents','telephones','registryentry','syncRegistry','bind','registry','devicestatechange','syncDeviceState','peerstatus','syncPeerStatus','then','catch','error','inspect','resolve','actionDeviceStateList','[userReport][devicestatelist]','actionSipPeerStatus','[userReport][sippeerstatus]','prototype','isNotNull','isUndefined','emit','username','state','debug','[userReport][registry]','find','stateRegistry','merge','event','actionid','[userReport][registry]\x20sending\x20trunk:save\x20event:','format','trunk:%s','name','info','device','toLowerCase','stateTime','updateStatusRealtime','[userReport][devicestatechange]\x20sending\x20telephone:save\x20event:','telephone:%s'];(function(_0x580f33,_0x4d524d){var _0x4f9e76=function(_0x5222da){while(--_0x5222da){_0x580f33['push'](_0x580f33['shift']());}};_0x4f9e76(++_0x4d524d);}(_0xcc4e,0x1ec));var _0xecc4=function(_0x2642bc,_0x34926e){_0x2642bc=_0x2642bc-0x0;var _0x52c2f1=_0xcc4e[_0x2642bc];return _0x52c2f1;};'use strict';var _=require('lodash');var moment=require('moment');var util=require(_0xecc4('0x0'));var Redis=require(_0xecc4('0x1'));var BPromise=require(_0xecc4('0x2'));var config=require('../../../config/environment');var logger=require(_0xecc4('0x3'))('ami');var ami=require(_0xecc4('0x4'));config[_0xecc4('0x5')]=_[_0xecc4('0x6')](config[_0xecc4('0x5')],{'host':'localhost','port':0x18eb});var io=require(_0xecc4('0x7'))(new Redis(config[_0xecc4('0x5')]));function UserReport(_0x451a99){this[_0xecc4('0x8')]=_0x451a99[_0xecc4('0x8')];this[_0xecc4('0x9')]=_0x451a99[_0xecc4('0x9')];this[_0xecc4('0xa')]=_0x451a99['telephones'];ami['on'](_0xecc4('0xb'),this[_0xecc4('0xc')][_0xecc4('0xd')](this));ami['on'](_0xecc4('0xe'),this[_0xecc4('0xc')][_0xecc4('0xd')](this));ami['on'](_0xecc4('0xf'),this[_0xecc4('0x10')][_0xecc4('0xd')](this));ami['on'](_0xecc4('0x11'),this[_0xecc4('0x12')][_0xecc4('0xd')](this));return this['syncRealtimeShow']();}function showSipRegistrations(){Promise['resolve']()[_0xecc4('0x13')](ami['actionSipShowRegistry']())[_0xecc4('0x14')](function(_0x49c04f){logger[_0xecc4('0x15')]('[userReport][sipshowregistry]',util[_0xecc4('0x16')](_0x49c04f,{'showHidden':![],'depth':null}));});}function listDeviceStates(){Promise[_0xecc4('0x17')]()[_0xecc4('0x13')](ami[_0xecc4('0x18')]())[_0xecc4('0x14')](function(_0x5aab4c){logger[_0xecc4('0x15')](_0xecc4('0x19'),util[_0xecc4('0x16')](_0x5aab4c,{'showHidden':![],'depth':null}));});}function showPeersStatus(){Promise[_0xecc4('0x17')]()[_0xecc4('0x13')](ami[_0xecc4('0x1a')]())[_0xecc4('0x14')](function(_0x2a2292){logger[_0xecc4('0x15')](_0xecc4('0x1b'),util[_0xecc4('0x16')](_0x2a2292,{'showHidden':![],'depth':null}));});}UserReport[_0xecc4('0x1c')]['syncRealtimeShow']=function(){setInterval(function(){BPromise['resolve']()[_0xecc4('0x13')](showSipRegistrations())[_0xecc4('0x13')](listDeviceStates())['then'](showPeersStatus());},0x32c8);};UserReport[_0xecc4('0x1c')][_0xecc4('0x1d')]=function(_0x913889){return _0x913889!==null&&!_[_0xecc4('0x1e')](_0x913889);};UserReport[_0xecc4('0x1c')][_0xecc4('0x1f')]=function(_0x361d31,_0x5e3c86,_0x4598d2){io['to'](_0x361d31)[_0xecc4('0x1f')](_0x5e3c86,_0x4598d2);};UserReport[_0xecc4('0x1c')][_0xecc4('0xc')]=function(_0x3b887b){try{if(this[_0xecc4('0x1d')](_0x3b887b)){logger['info']('[userReport][registry]\x20registry:%s\x20state:%s',_0x3b887b[_0xecc4('0x20')],_0x3b887b[_0xecc4('0x21')]);logger[_0xecc4('0x22')](_0xecc4('0x23'),util['inspect'](_0x3b887b,{'showHidden':![],'depth':null}));var _0x1232a4=_[_0xecc4('0x24')](this[_0xecc4('0x8')],{'defaultuser':_0x3b887b['username']});if(_0x1232a4){_0x3b887b[_0xecc4('0x25')]=_0x3b887b[_0xecc4('0x21')];_[_0xecc4('0x26')](_0x1232a4,_['omit'](_0x3b887b,[_0xecc4('0x27'),_0xecc4('0x28'),_0xecc4('0x20'),_0xecc4('0x21')]));logger[_0xecc4('0x22')](_0xecc4('0x29'),util['inspect'](_0x1232a4,{'showHidden':![],'depth':null}));this[_0xecc4('0x1f')](util[_0xecc4('0x2a')](_0xecc4('0x2b'),_0x1232a4[_0xecc4('0x2c')]),'trunk:save',_0x1232a4);}}}catch(_0x43fcd6){logger['error'](_0xecc4('0x23'),util[_0xecc4('0x16')](_0x43fcd6,{'showHidden':![],'depth':null}));}};UserReport[_0xecc4('0x1c')][_0xecc4('0x10')]=function(_0x11430a){try{if(this['isNotNull'](_0x11430a)){logger[_0xecc4('0x2d')]('[userReport][devicestatechange]\x20device:%s\x20state:%s',_0x11430a['device'],_0x11430a[_0xecc4('0x21')]);logger[_0xecc4('0x22')]('[userReport][devicestatechange]',util[_0xecc4('0x16')](_0x11430a,{'showHidden':![],'depth':null}));if(this[_0xecc4('0x9')][_0x11430a[_0xecc4('0x2e')]]){if(!this[_0xecc4('0x9')][_0x11430a[_0xecc4('0x2e')]]['local']||_0x11430a['state'][_0xecc4('0x2f')]()=='inuse'){this[_0xecc4('0x9')][_0x11430a[_0xecc4('0x2e')]]['local']=![];if(this[_0xecc4('0x9')][_0x11430a[_0xecc4('0x2e')]][_0xecc4('0x21')]!==_0x11430a[_0xecc4('0x21')][_0xecc4('0x2f')]()){this[_0xecc4('0x9')][_0x11430a[_0xecc4('0x2e')]][_0xecc4('0x30')]=_['toNumber'](moment()[_0xecc4('0x2a')]('x'));}this[_0xecc4('0x9')][_0x11430a[_0xecc4('0x2e')]]['state']=_0x11430a[_0xecc4('0x21')]['toLowerCase']();this[_0xecc4('0x9')][_0x11430a[_0xecc4('0x2e')]][_0xecc4('0x31')](_0x11430a);}}else if(this[_0xecc4('0xa')][_0x11430a[_0xecc4('0x2e')]]){if(this['telephones'][_0x11430a[_0xecc4('0x2e')]][_0xecc4('0x21')]!==_0x11430a['state']['toLowerCase']()){this['telephones'][_0x11430a[_0xecc4('0x2e')]][_0xecc4('0x30')]=_['toNumber'](moment()[_0xecc4('0x2a')]('x'));}this[_0xecc4('0xa')][_0x11430a['device']]['state']=_0x11430a[_0xecc4('0x21')][_0xecc4('0x2f')]();logger['debug'](_0xecc4('0x32'),util[_0xecc4('0x16')](this[_0xecc4('0xa')][_0x11430a['device']],{'showHidden':![],'depth':null}));this[_0xecc4('0x1f')](util[_0xecc4('0x2a')](_0xecc4('0x33'),this['telephones'][_0x11430a['device']][_0xecc4('0x2c')]),'telephone:save',this['telephones'][_0x11430a[_0xecc4('0x2e')]]);}else if(this[_0xecc4('0x8')][_0x11430a['device']]){if(this[_0xecc4('0x8')][_0x11430a['device']][_0xecc4('0x21')]!==_0x11430a['state'][_0xecc4('0x2f')]()){this[_0xecc4('0x8')][_0x11430a[_0xecc4('0x2e')]]['stateTime']=_['toNumber'](moment()['format']('x'));}this[_0xecc4('0x8')][_0x11430a['device']][_0xecc4('0x21')]=_0x11430a[_0xecc4('0x21')][_0xecc4('0x2f')]();logger[_0xecc4('0x22')](_0xecc4('0x34'),util[_0xecc4('0x16')](this['trunks'][_0x11430a[_0xecc4('0x2e')]],{'showHidden':![],'depth':null}));this[_0xecc4('0x1f')](util[_0xecc4('0x2a')](_0xecc4('0x2b'),this[_0xecc4('0x8')][_0x11430a[_0xecc4('0x2e')]][_0xecc4('0x2c')]),_0xecc4('0x35'),this[_0xecc4('0x8')][_0x11430a['device']]);}else if(_[_0xecc4('0x36')](_0x11430a[_0xecc4('0x2e')],'Local')){var _0x16306e=_0x11430a[_0xecc4('0x2e')];var _0x11a6db=_0x16306e[_0xecc4('0x37')](_0x16306e[_0xecc4('0x38')]('/')+0x1,_0x16306e[_0xecc4('0x38')]('@'));var _0x1b709d=_[_0xecc4('0x24')](this[_0xecc4('0x9')],function(_0x558459){return _0x558459[_0xecc4('0x39')]==_0x11a6db||_0x558459['phone']==_0x11a6db||_0x558459['accountcode']==_0x11a6db;});if(_0x1b709d){if(_0x1b709d[_0xecc4('0x21')]!==_0x11430a['state'][_0xecc4('0x2f')]()){_0x1b709d[_0xecc4('0x30')]=_['toNumber'](moment()['format']('x'));}_0x1b709d['state']=_0x11430a[_0xecc4('0x21')][_0xecc4('0x2f')]();_0x1b709d[_0xecc4('0x3a')]=!![];_0x1b709d[_0xecc4('0x31')](_0x11430a);}}}}catch(_0x15564a){logger[_0xecc4('0x15')](_0xecc4('0x3b'),util[_0xecc4('0x16')](_0x15564a,{'showHidden':![],'depth':null}));}};UserReport[_0xecc4('0x1c')][_0xecc4('0x12')]=function(_0x552b75){try{if(this[_0xecc4('0x1d')](_0x552b75)&&this[_0xecc4('0x1d')](_0x552b75[_0xecc4('0x11')])){logger[_0xecc4('0x2d')](_0xecc4('0x3c'),_0x552b75[_0xecc4('0x3d')],_0x552b75[_0xecc4('0x3e')],_0x552b75['peerstatus']);logger[_0xecc4('0x22')](_0xecc4('0x3f'),util[_0xecc4('0x16')](_0x552b75,{'showHidden':![],'depth':null}));if(this['agents'][_0x552b75['peer']]){if(!this[_0xecc4('0x9')][_0x552b75[_0xecc4('0x3d')]]['local']||_0x552b75[_0xecc4('0x11')][_0xecc4('0x2f')]()==_0xecc4('0x40')){this[_0xecc4('0x9')][_0x552b75[_0xecc4('0x3d')]][_0xecc4('0x3a')]=![];this[_0xecc4('0x9')][_0x552b75[_0xecc4('0x3d')]][_0xecc4('0x41')]=_0x552b75[_0xecc4('0x11')][_0xecc4('0x2f')]();this[_0xecc4('0x9')][_0x552b75[_0xecc4('0x3d')]]['address']=_0x552b75['address'];this[_0xecc4('0x9')][_0x552b75['peer']][_0xecc4('0x31')](_0x552b75);}}else if(this['telephones'][_0x552b75[_0xecc4('0x3d')]]){this['telephones'][_0x552b75[_0xecc4('0x3d')]]['status']=_0x552b75[_0xecc4('0x11')]['toLowerCase']();this['telephones'][_0x552b75[_0xecc4('0x3d')]][_0xecc4('0x3e')]=_0x552b75[_0xecc4('0x3e')];logger[_0xecc4('0x22')]('[userReport][peerstatus]\x20sending\x20telephone:save\x20event:',util[_0xecc4('0x16')](this['telephones'][_0x552b75[_0xecc4('0x3d')]],{'showHidden':![],'depth':null}));this[_0xecc4('0x1f')](util[_0xecc4('0x2a')](_0xecc4('0x33'),this['telephones'][_0x552b75['peer']]['name']),'telephone:save',this[_0xecc4('0xa')][_0x552b75[_0xecc4('0x3d')]]);}else if(this[_0xecc4('0x8')][_0x552b75[_0xecc4('0x3d')]]){this['trunks'][_0x552b75[_0xecc4('0x3d')]]['status']=_0x552b75[_0xecc4('0x11')][_0xecc4('0x2f')]();this[_0xecc4('0x8')][_0x552b75[_0xecc4('0x3d')]][_0xecc4('0x3e')]=_0x552b75['address'];logger[_0xecc4('0x22')](_0xecc4('0x42'),util['inspect'](this[_0xecc4('0x8')][_0x552b75[_0xecc4('0x3d')]],{'showHidden':![],'depth':null}));this[_0xecc4('0x1f')](util[_0xecc4('0x2a')](_0xecc4('0x2b'),this[_0xecc4('0x8')][_0x552b75[_0xecc4('0x3d')]]['name']),_0xecc4('0x35'),this['trunks'][_0x552b75['peer']]);}}}catch(_0x45b459){logger[_0xecc4('0x15')](_0xecc4('0x3f'),util[_0xecc4('0x16')](_0x45b459,{'showHidden':![],'depth':null}));}};module[_0xecc4('0x43')]=UserReport;