Built motion from commit 9e1ec266.|2.6.28
[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 _0xa73e=['ami','../ami','redis','localhost','socket.io-emitter','trunks','agents','telephones','syncRegistry','registry','bind','devicestatechange','syncDeviceState','peerstatus','syncPeerStatus','syncRealtimeShow','resolve','then','actionSipShowRegistry','catch','[userReport][sipshowregistry]','inspect','[userReport][devicestatelist]','actionSipPeerStatus','prototype','isNotNull','isUndefined','emit','[userReport][registry]\x20registry:%s\x20state:%s','state','debug','[userReport][registry]','find','stateRegistry','merge','omit','event','actionid','username','[userReport][registry]\x20sending\x20trunk:save\x20event:','trunk:%s','name','error','[userReport][devicestatechange]\x20device:%s\x20state:%s','device','toLowerCase','inuse','local','toNumber','format','updateStatusRealtime','stateTime','[userReport][devicestatechange]\x20sending\x20telephone:save\x20event:','[userReport][devicestatechange]\x20sending\x20trunk:save\x20event:','trunk:save','substring','indexOf','mobile','phone','accountcode','info','[userReport][peerstatus]\x20peer:%s\x20address:%s\x20status:%s','peer','address','[userReport][peerstatus]','registered','status','[userReport][peerstatus]\x20sending\x20telephone:save\x20event:','telephone:%s','telephone:save','exports','ioredis','bluebird','../../../config/environment','../../../config/logger'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0xa73e,0x1be));var _0xea73=function(_0x39d06b,_0x4cb1d4){_0x39d06b=_0x39d06b-0x0;var _0x37ac26=_0xa73e[_0x39d06b];return _0x37ac26;};'use strict';var _=require('lodash');var moment=require('moment');var util=require('util');var Redis=require(_0xea73('0x0'));var BPromise=require(_0xea73('0x1'));var config=require(_0xea73('0x2'));var logger=require(_0xea73('0x3'))(_0xea73('0x4'));var ami=require(_0xea73('0x5'));config[_0xea73('0x6')]=_['defaults'](config[_0xea73('0x6')],{'host':_0xea73('0x7'),'port':0x18eb});var io=require(_0xea73('0x8'))(new Redis(config[_0xea73('0x6')]));function UserReport(_0x2d50a3){this[_0xea73('0x9')]=_0x2d50a3[_0xea73('0x9')];this[_0xea73('0xa')]=_0x2d50a3[_0xea73('0xa')];this[_0xea73('0xb')]=_0x2d50a3[_0xea73('0xb')];ami['on']('registryentry',this[_0xea73('0xc')]['bind'](this));ami['on'](_0xea73('0xd'),this[_0xea73('0xc')][_0xea73('0xe')](this));ami['on'](_0xea73('0xf'),this[_0xea73('0x10')][_0xea73('0xe')](this));ami['on'](_0xea73('0x11'),this[_0xea73('0x12')][_0xea73('0xe')](this));return this[_0xea73('0x13')]();}function showSipRegistrations(){Promise[_0xea73('0x14')]()[_0xea73('0x15')](ami[_0xea73('0x16')]())[_0xea73('0x17')](function(_0x17bf78){logger['error'](_0xea73('0x18'),util[_0xea73('0x19')](_0x17bf78,{'showHidden':![],'depth':null}));});}function listDeviceStates(){Promise[_0xea73('0x14')]()['then'](ami['actionDeviceStateList']())[_0xea73('0x17')](function(_0x3752fc){logger['error'](_0xea73('0x1a'),util[_0xea73('0x19')](_0x3752fc,{'showHidden':![],'depth':null}));});}function showPeersStatus(){Promise[_0xea73('0x14')]()[_0xea73('0x15')](ami[_0xea73('0x1b')]())['catch'](function(_0x471613){logger['error']('[userReport][sippeerstatus]',util[_0xea73('0x19')](_0x471613,{'showHidden':![],'depth':null}));});}UserReport[_0xea73('0x1c')][_0xea73('0x13')]=function(){setInterval(function(){BPromise['resolve']()[_0xea73('0x15')](showSipRegistrations())[_0xea73('0x15')](listDeviceStates())[_0xea73('0x15')](showPeersStatus());},0x32c8);};UserReport[_0xea73('0x1c')][_0xea73('0x1d')]=function(_0x113d88){return _0x113d88!==null&&!_[_0xea73('0x1e')](_0x113d88);};UserReport['prototype'][_0xea73('0x1f')]=function(_0x236af8,_0x1860bf,_0x36edfe){io['to'](_0x236af8)[_0xea73('0x1f')](_0x1860bf,_0x36edfe);};UserReport[_0xea73('0x1c')]['syncRegistry']=function(_0x682770){try{if(this[_0xea73('0x1d')](_0x682770)){logger['info'](_0xea73('0x20'),_0x682770['username'],_0x682770[_0xea73('0x21')]);logger[_0xea73('0x22')](_0xea73('0x23'),util[_0xea73('0x19')](_0x682770,{'showHidden':![],'depth':null}));var _0x23bb4c=_[_0xea73('0x24')](this[_0xea73('0x9')],{'defaultuser':_0x682770['username']});if(_0x23bb4c){_0x682770[_0xea73('0x25')]=_0x682770['state'];_[_0xea73('0x26')](_0x23bb4c,_[_0xea73('0x27')](_0x682770,[_0xea73('0x28'),_0xea73('0x29'),_0xea73('0x2a'),_0xea73('0x21')]));logger[_0xea73('0x22')](_0xea73('0x2b'),util[_0xea73('0x19')](_0x23bb4c,{'showHidden':![],'depth':null}));this[_0xea73('0x1f')](util['format'](_0xea73('0x2c'),_0x23bb4c[_0xea73('0x2d')]),'trunk:save',_0x23bb4c);}}}catch(_0x5f3c29){logger[_0xea73('0x2e')]('[userReport][registry]',util[_0xea73('0x19')](_0x5f3c29,{'showHidden':![],'depth':null}));}};UserReport[_0xea73('0x1c')][_0xea73('0x10')]=function(_0x3f753b){try{if(this[_0xea73('0x1d')](_0x3f753b)){logger['info'](_0xea73('0x2f'),_0x3f753b[_0xea73('0x30')],_0x3f753b[_0xea73('0x21')]);logger[_0xea73('0x22')]('[userReport][devicestatechange]',util[_0xea73('0x19')](_0x3f753b,{'showHidden':![],'depth':null}));if(this[_0xea73('0xa')][_0x3f753b[_0xea73('0x30')]]){if(!this['agents'][_0x3f753b[_0xea73('0x30')]]['local']||_0x3f753b['state'][_0xea73('0x31')]()==_0xea73('0x32')){this[_0xea73('0xa')][_0x3f753b[_0xea73('0x30')]][_0xea73('0x33')]=![];if(this[_0xea73('0xa')][_0x3f753b[_0xea73('0x30')]]['state']!==_0x3f753b[_0xea73('0x21')][_0xea73('0x31')]()){this[_0xea73('0xa')][_0x3f753b[_0xea73('0x30')]]['stateTime']=_[_0xea73('0x34')](moment()[_0xea73('0x35')]('x'));}this[_0xea73('0xa')][_0x3f753b[_0xea73('0x30')]][_0xea73('0x21')]=_0x3f753b[_0xea73('0x21')][_0xea73('0x31')]();this['agents'][_0x3f753b[_0xea73('0x30')]][_0xea73('0x36')](_0x3f753b);}}else if(this[_0xea73('0xb')][_0x3f753b[_0xea73('0x30')]]){if(this['telephones'][_0x3f753b[_0xea73('0x30')]][_0xea73('0x21')]!==_0x3f753b['state'][_0xea73('0x31')]()){this[_0xea73('0xb')][_0x3f753b['device']][_0xea73('0x37')]=_[_0xea73('0x34')](moment()['format']('x'));}this[_0xea73('0xb')][_0x3f753b[_0xea73('0x30')]][_0xea73('0x21')]=_0x3f753b[_0xea73('0x21')][_0xea73('0x31')]();logger[_0xea73('0x22')](_0xea73('0x38'),util[_0xea73('0x19')](this[_0xea73('0xb')][_0x3f753b[_0xea73('0x30')]],{'showHidden':![],'depth':null}));this['emit'](util[_0xea73('0x35')]('telephone:%s',this[_0xea73('0xb')][_0x3f753b[_0xea73('0x30')]][_0xea73('0x2d')]),'telephone:save',this[_0xea73('0xb')][_0x3f753b['device']]);}else if(this[_0xea73('0x9')][_0x3f753b[_0xea73('0x30')]]){if(this[_0xea73('0x9')][_0x3f753b[_0xea73('0x30')]]['state']!==_0x3f753b['state'][_0xea73('0x31')]()){this[_0xea73('0x9')][_0x3f753b[_0xea73('0x30')]][_0xea73('0x37')]=_['toNumber'](moment()['format']('x'));}this['trunks'][_0x3f753b[_0xea73('0x30')]][_0xea73('0x21')]=_0x3f753b[_0xea73('0x21')]['toLowerCase']();logger['debug'](_0xea73('0x39'),util[_0xea73('0x19')](this[_0xea73('0x9')][_0x3f753b[_0xea73('0x30')]],{'showHidden':![],'depth':null}));this[_0xea73('0x1f')](util[_0xea73('0x35')](_0xea73('0x2c'),this[_0xea73('0x9')][_0x3f753b['device']]['name']),_0xea73('0x3a'),this[_0xea73('0x9')][_0x3f753b['device']]);}else if(_['startsWith'](_0x3f753b['device'],'Local')){var _0x195e39=_0x3f753b[_0xea73('0x30')];var _0x400a5c=_0x195e39[_0xea73('0x3b')](_0x195e39[_0xea73('0x3c')]('/')+0x1,_0x195e39[_0xea73('0x3c')]('@'));var _0x9e14a5=_['find'](this[_0xea73('0xa')],function(_0x49a178){return _0x49a178[_0xea73('0x3d')]==_0x400a5c||_0x49a178[_0xea73('0x3e')]==_0x400a5c||_0x49a178[_0xea73('0x3f')]==_0x400a5c;});if(_0x9e14a5){if(_0x9e14a5[_0xea73('0x21')]!==_0x3f753b[_0xea73('0x21')][_0xea73('0x31')]()){_0x9e14a5[_0xea73('0x37')]=_[_0xea73('0x34')](moment()[_0xea73('0x35')]('x'));}_0x9e14a5['state']=_0x3f753b[_0xea73('0x21')][_0xea73('0x31')]();_0x9e14a5[_0xea73('0x33')]=!![];_0x9e14a5[_0xea73('0x36')](_0x3f753b);}}}}catch(_0x41e6aa){logger[_0xea73('0x2e')]('[userReport][devicestatechange]',util[_0xea73('0x19')](_0x41e6aa,{'showHidden':![],'depth':null}));}};UserReport[_0xea73('0x1c')][_0xea73('0x12')]=function(_0x4f22f7){try{if(this[_0xea73('0x1d')](_0x4f22f7)&&this['isNotNull'](_0x4f22f7[_0xea73('0x11')])){logger[_0xea73('0x40')](_0xea73('0x41'),_0x4f22f7[_0xea73('0x42')],_0x4f22f7[_0xea73('0x43')],_0x4f22f7['peerstatus']);logger[_0xea73('0x22')](_0xea73('0x44'),util[_0xea73('0x19')](_0x4f22f7,{'showHidden':![],'depth':null}));if(this[_0xea73('0xa')][_0x4f22f7[_0xea73('0x42')]]){if(!this[_0xea73('0xa')][_0x4f22f7[_0xea73('0x42')]]['local']||_0x4f22f7[_0xea73('0x11')][_0xea73('0x31')]()==_0xea73('0x45')){this['agents'][_0x4f22f7[_0xea73('0x42')]][_0xea73('0x33')]=![];this[_0xea73('0xa')][_0x4f22f7[_0xea73('0x42')]]['status']=_0x4f22f7[_0xea73('0x11')][_0xea73('0x31')]();this['agents'][_0x4f22f7['peer']][_0xea73('0x43')]=_0x4f22f7[_0xea73('0x43')];this['agents'][_0x4f22f7['peer']][_0xea73('0x36')](_0x4f22f7);}}else if(this['telephones'][_0x4f22f7[_0xea73('0x42')]]){this[_0xea73('0xb')][_0x4f22f7[_0xea73('0x42')]][_0xea73('0x46')]=_0x4f22f7[_0xea73('0x11')][_0xea73('0x31')]();this['telephones'][_0x4f22f7[_0xea73('0x42')]]['address']=_0x4f22f7[_0xea73('0x43')];logger[_0xea73('0x22')](_0xea73('0x47'),util['inspect'](this[_0xea73('0xb')][_0x4f22f7['peer']],{'showHidden':![],'depth':null}));this['emit'](util[_0xea73('0x35')](_0xea73('0x48'),this['telephones'][_0x4f22f7[_0xea73('0x42')]][_0xea73('0x2d')]),_0xea73('0x49'),this['telephones'][_0x4f22f7[_0xea73('0x42')]]);}else if(this[_0xea73('0x9')][_0x4f22f7['peer']]){this[_0xea73('0x9')][_0x4f22f7[_0xea73('0x42')]][_0xea73('0x46')]=_0x4f22f7[_0xea73('0x11')]['toLowerCase']();this[_0xea73('0x9')][_0x4f22f7['peer']][_0xea73('0x43')]=_0x4f22f7[_0xea73('0x43')];logger[_0xea73('0x22')]('[userReport][peerstatus]\x20sending\x20trunk:save\x20event:',util[_0xea73('0x19')](this[_0xea73('0x9')][_0x4f22f7[_0xea73('0x42')]],{'showHidden':![],'depth':null}));this['emit'](util[_0xea73('0x35')]('trunk:%s',this['trunks'][_0x4f22f7[_0xea73('0x42')]][_0xea73('0x2d')]),_0xea73('0x3a'),this[_0xea73('0x9')][_0x4f22f7[_0xea73('0x42')]]);}}}catch(_0x36d593){logger['error'](_0xea73('0x44'),util[_0xea73('0x19')](_0x36d593,{'showHidden':![],'depth':null}));}};module[_0xea73('0x4a')]=UserReport;