Built motion from commit (unavailable).|2.5.11
[motion2.git] / server / api / webbar / webbar.controller.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 _0x4853=['bluebird','jayson/promise','client','http','redis','defaults','localhost','socket.io-emitter','validate','userId\x20is\x20required','string','callNumber\x20is\x20required','number','sessionId\x20is\x20required','transferNumber\x20is\x20required','stringify','emit','name','status','send','NotFound','then','error','code','message','result','catch','User','findOne','agent','all','rows','sessionId','length','sessionId\x20','\x20not\x20found!','originate\x20fired:','body','json','userId','callNumber','callbackUrl','info','entityFound:','user:%s','originate\x20executed!','hangup','hangup\x20fired:','webbar:hangup','hangup\x20executed!','answer','answer\x20fired:','format','webbar:answer','answer\x20executed!','hold','hold\x20fired:','hold\x20executed!','webbar:unhold','unhold\x20executed!','calls','calls\x20fired:','VoiceChannels','filter','UserId','conference\x20fired:','webbar:conference','conference\x20executed!','webbar:transfer','lodash','../../config/environment','util'];(function(_0x3e665d,_0xef863d){var _0x24a155=function(_0x1343e7){while(--_0x1343e7){_0x3e665d['push'](_0x3e665d['shift']());}};_0x24a155(++_0xef863d);}(_0x4853,0x11d));var _0x3485=function(_0x20a584,_0xe384a5){_0x20a584=_0x20a584-0x0;var _0x4b41a8=_0x4853[_0x20a584];return _0x4b41a8;};'use strict';var path=require('path');var fs=require('fs');var _=require(_0x3485('0x0'));var db=require('../../mysqldb')['db'];var config=require(_0x3485('0x1'));var util=require(_0x3485('0x2'));var BPromise=require(_0x3485('0x3'));var jayson=require(_0x3485('0x4'));var amiClient=jayson[_0x3485('0x5')][_0x3485('0x6')]({'port':0x232a});var logger=require('../../config/logger')('webbarapi');var Redis=require('ioredis');config[_0x3485('0x7')]=_[_0x3485('0x8')](config[_0x3485('0x7')],{'host':_0x3485('0x9'),'port':0x18eb});var io=require(_0x3485('0xa'))(new Redis(config[_0x3485('0x7')]));var Schema=require(_0x3485('0xb'));var originateValidation=new Schema({'userId':{'type':'number','required':[!![],_0x3485('0xc')]},'callNumber':{'type':_0x3485('0xd'),'required':[!![],_0x3485('0xe')]},'callerId':{'type':_0x3485('0xd')},'callbackUrl':{'type':_0x3485('0xd')}});var hangupValidation=new Schema({'userId':{'type':_0x3485('0xf'),'required':[!![],_0x3485('0xc')]},'sessionId':{'type':_0x3485('0xd'),'required':![]}});var answerValidation=new Schema({'userId':{'type':_0x3485('0xf'),'required':[!![],'userId\x20is\x20required']},'sessionId':{'type':_0x3485('0xd'),'required':![]}});var transferValidation=new Schema({'userId':{'type':_0x3485('0xf'),'required':[!![],'userId\x20is\x20required']},'sessionId':{'type':'string','required':[!![],_0x3485('0x10')]},'transferNumber':{'type':_0x3485('0xd'),'required':[!![],_0x3485('0x11')]}});var holdValidation=new Schema({'userId':{'type':'number','required':[!![],'userId\x20is\x20required']},'sessionId':{'type':'string','required':![]}});var unholdValidation=new Schema({'userId':{'type':'number','required':[!![],'userId\x20is\x20required']},'sessionId':{'type':_0x3485('0xd'),'required':![]}});var callsValidation=new Schema({'userId':{'type':_0x3485('0xf'),'required':[!![],_0x3485('0xc')]}});var conferenceValidation=new Schema({'userId':{'type':'number','required':[!![],_0x3485('0xc')]}});function emit(_0x5e1143,_0x55d0d5,_0x431c09){logger['info'](_0x5e1143,_0x55d0d5,JSON[_0x3485('0x12')](_0x431c09));io['to'](_0x5e1143)[_0x3485('0x13')](_0x55d0d5,_0x431c09);}function handleError(_0x440a00){return function(_0x444c00){console['log']('handleError:',_0x444c00,_0x444c00 instanceof RangeError);logger['error'](_0x444c00['stack']);if(_0x444c00 instanceof RangeError){if(_0x444c00['name']){delete _0x444c00[_0x3485('0x14')];}_0x440a00[_0x3485('0x15')](0x194)[_0x3485('0x16')](_0x444c00);}else{if(_0x444c00[_0x3485('0x14')]){delete _0x444c00[_0x3485('0x14')];}_0x440a00[_0x3485('0x15')](0x1f4)[_0x3485('0x16')](_0x444c00);}};}function checkError(){return function(_0x2739c8){if(!_0x2739c8){throw new RangeError(_0x3485('0x17'));}return _0x2739c8;};}function respondWithRpcPromise(_0x3be025,_0x116249){return new BPromise(function(_0x4b085d,_0x531b93){var _0x52de69=amiClient;return _0x52de69['request'](_0x3be025,_0x116249)[_0x3485('0x18')](function(_0x98440b){if(_0x98440b[_0x3485('0x19')]){if(_0x98440b[_0x3485('0x19')][_0x3485('0x1a')]===0x1f4){return _0x531b93(_0x98440b[_0x3485('0x19')][_0x3485('0x1b')]);}return _0x4b085d(_0x98440b[_0x3485('0x19')]['message']);}else{_0x4b085d(_0x98440b[_0x3485('0x1c')]);}})[_0x3485('0x1d')](function(_0x9829f2){_0x531b93(_0x9829f2);});});}function getAgent(_0xf5ec85){return db[_0x3485('0x1e')][_0x3485('0x1f')]({'where':{'id':_0xf5ec85,'role':_0x3485('0x20')}})[_0x3485('0x18')](checkError());}function getAgentCheckSession(_0x1eb229,_0x24f10f){return new BPromise(function(_0x40912e,_0xf7d6ef){var _0x3646c8=respondWithRpcPromise('VoiceChannels');var _0x3410e1=getAgent(_0x1eb229);Promise[_0x3485('0x21')]([_0x3646c8,_0x3410e1])[_0x3485('0x18')](function(_0x1d77d4){var _0x2481b1=_0x1d77d4[0x0];var _0x5273b0=_0x1d77d4[0x1];var _0x184abf=_['filter'](_0x2481b1[_0x3485('0x22')],function(_0x1d21f1){return _0x1d21f1['UserId']==_0x5273b0['id']&&_0x1d21f1[_0x3485('0x23')]==_0x24f10f;});if(_0x184abf[_0x3485('0x24')]==0x1){_0x40912e(_0x5273b0);}else{_0xf7d6ef(new RangeError(_0x3485('0x25')+_0x24f10f+_0x3485('0x26')));}});});}exports['originate']=function(_0x53d514,_0x14fecf){logger['info'](_0x3485('0x27'),_0x53d514[_0x3485('0x28')]);var _0x4f0abd=originateValidation[_0x3485('0xb')](_0x53d514[_0x3485('0x28')]);if(_0x4f0abd[_0x3485('0x24')]>0x0){return _0x14fecf[_0x3485('0x15')](0x190)[_0x3485('0x29')](_0x4f0abd);}var _0xc608e6=_0x53d514['body'][_0x3485('0x2a')];var _0x4d92d4=_0x53d514[_0x3485('0x28')][_0x3485('0x2b')];var _0x416bf8=_0x53d514[_0x3485('0x28')]['callerId'];var _0x51cfe4=_0x53d514[_0x3485('0x28')][_0x3485('0x2c')];return getAgent(_0xc608e6)[_0x3485('0x18')](function(_0x5630b1){logger[_0x3485('0x2d')](_0x3485('0x2e'),_0x5630b1[_0x3485('0x14')]);emit(util['format'](_0x3485('0x2f'),_0x5630b1['name']),'webbar:originate',{'callNumber':_0x4d92d4,'callerId':_0x416bf8,'callbackUrl':_0x51cfe4});return _0x14fecf[_0x3485('0x15')](0xc8)['json']({'error':![],'message':_0x3485('0x30')});})[_0x3485('0x1d')](handleError(_0x14fecf));};exports[_0x3485('0x31')]=function(_0x3a53ca,_0x12542a){logger[_0x3485('0x2d')](_0x3485('0x32'),_0x3a53ca['body']);var _0x2ce1b2=hangupValidation[_0x3485('0xb')](_0x3a53ca['body']);if(_0x2ce1b2['length']>0x0){return _0x12542a[_0x3485('0x15')](0x190)[_0x3485('0x29')](_0x2ce1b2);}var _0x376d81=_0x3a53ca[_0x3485('0x28')][_0x3485('0x2a')];var _0x419233=_0x3a53ca[_0x3485('0x28')][_0x3485('0x23')];return getAgent(_0x376d81)[_0x3485('0x18')](function(_0x4515a2){logger[_0x3485('0x2d')]('entityFound:',_0x4515a2['name']);emit(util['format'](_0x3485('0x2f'),_0x4515a2[_0x3485('0x14')]),_0x3485('0x33'),{'sessionId':_0x419233});return _0x12542a[_0x3485('0x15')](0xc8)[_0x3485('0x29')]({'error':![],'message':_0x3485('0x34')});})['catch'](handleError(_0x12542a));};exports[_0x3485('0x35')]=function(_0x4f5e9d,_0x325522){logger[_0x3485('0x2d')](_0x3485('0x36'),_0x4f5e9d['body']);var _0x29c216=answerValidation[_0x3485('0xb')](_0x4f5e9d[_0x3485('0x28')]);if(_0x29c216[_0x3485('0x24')]>0x0){return _0x325522[_0x3485('0x15')](0x190)['json'](_0x29c216);}var _0xf1f480=_0x4f5e9d[_0x3485('0x28')]['userId'];var _0x4ffb88=_0x4f5e9d['body'][_0x3485('0x23')];return getAgent(_0xf1f480)[_0x3485('0x18')](function(_0x38ec09){logger[_0x3485('0x2d')]('entityFound:',_0x38ec09[_0x3485('0x14')]);emit(util[_0x3485('0x37')]('user:%s',_0x38ec09['name']),_0x3485('0x38'),{'sessionId':_0x4ffb88});return _0x325522[_0x3485('0x15')](0xc8)['json']({'error':![],'message':_0x3485('0x39')});})[_0x3485('0x1d')](handleError(_0x325522));};exports[_0x3485('0x3a')]=function(_0x1b4fc8,_0x482e8e){logger[_0x3485('0x2d')](_0x3485('0x3b'),_0x1b4fc8[_0x3485('0x28')]);var _0x21d471=holdValidation[_0x3485('0xb')](_0x1b4fc8['body']);if(_0x21d471[_0x3485('0x24')]>0x0){return _0x482e8e[_0x3485('0x15')](0x190)[_0x3485('0x29')](_0x21d471);}var _0x10530b=_0x1b4fc8['body'][_0x3485('0x2a')];var _0x171f24=_0x1b4fc8['body'][_0x3485('0x23')];return getAgent(_0x10530b)[_0x3485('0x18')](function(_0x349afe){logger[_0x3485('0x2d')](_0x3485('0x2e'),_0x349afe[_0x3485('0x14')]);emit(util['format'](_0x3485('0x2f'),_0x349afe[_0x3485('0x14')]),'webbar:hold',{'sessionId':_0x171f24});return _0x482e8e[_0x3485('0x15')](0xc8)['json']({'error':![],'message':_0x3485('0x3c')});})[_0x3485('0x1d')](handleError(_0x482e8e));};exports['unhold']=function(_0x46f5af,_0x3f7433){logger['info']('unhold\x20fired:',_0x46f5af[_0x3485('0x28')]);var _0x314237=unholdValidation[_0x3485('0xb')](_0x46f5af['body']);if(_0x314237[_0x3485('0x24')]>0x0){return _0x3f7433[_0x3485('0x15')](0x190)[_0x3485('0x29')](_0x314237);}var _0x53b284=_0x46f5af[_0x3485('0x28')]['userId'];var _0x26f084=_0x46f5af[_0x3485('0x28')]['sessionId'];return getAgent(_0x53b284)['then'](function(_0x3fa941){logger['info']('entityFound:',_0x3fa941['name']);emit(util[_0x3485('0x37')](_0x3485('0x2f'),_0x3fa941[_0x3485('0x14')]),_0x3485('0x3d'),{'sessionId':_0x26f084});return _0x3f7433['status'](0xc8)[_0x3485('0x29')]({'error':![],'message':_0x3485('0x3e')});})[_0x3485('0x1d')](handleError(_0x3f7433));};exports[_0x3485('0x3f')]=function(_0x8f07f7,_0x6047ad){logger[_0x3485('0x2d')](_0x3485('0x40'),_0x6047ad['body']);var _0x21eea9=callsValidation['validate'](_0x8f07f7[_0x3485('0x28')]);if(_0x21eea9['length']>0x0){return _0x6047ad['status'](0x190)[_0x3485('0x29')](_0x21eea9);}var _0x2c85b4=_0x8f07f7[_0x3485('0x28')][_0x3485('0x2a')];var _0x2264b6=respondWithRpcPromise(_0x3485('0x41'));var _0x3212ca=getAgent(_0x2c85b4);return Promise[_0x3485('0x21')]([_0x2264b6,_0x3212ca])['then'](function(_0x237120){var _0x2d477d=_0x237120[0x0];var _0x118b3c=_0x237120[0x1];var _0x2a59f4=_[_0x3485('0x42')](_0x2d477d[_0x3485('0x22')],function(_0x39efbf){return _0x39efbf[_0x3485('0x43')]==_0x118b3c['id'];});return _0x6047ad['status'](0xc8)[_0x3485('0x29')]({'count':_0x2a59f4[_0x3485('0x24')],'rows':_0x2a59f4});})[_0x3485('0x1d')](handleError(_0x6047ad));};exports['conference']=function(_0x3376d0,_0x4b733b){logger[_0x3485('0x2d')](_0x3485('0x44'),_0x3376d0['body']);var _0x565d78=conferenceValidation[_0x3485('0xb')](_0x3376d0['body']);if(_0x565d78[_0x3485('0x24')]>0x0){return _0x4b733b[_0x3485('0x15')](0x190)[_0x3485('0x29')](_0x565d78);}var _0x17a176=_0x3376d0[_0x3485('0x28')]['userId'];return getAgent(_0x17a176)['then'](function(_0x40d7e7){logger[_0x3485('0x2d')](_0x3485('0x2e'),_0x40d7e7['name']);emit(util['format'](_0x3485('0x2f'),_0x40d7e7['name']),_0x3485('0x45'));return _0x4b733b['status'](0xc8)[_0x3485('0x29')]({'error':![],'message':_0x3485('0x46')});})[_0x3485('0x1d')](handleError(_0x4b733b));};exports['transfer']=function(_0x2b7cd7,_0x967740){logger[_0x3485('0x2d')]('transfer\x20fired:',_0x2b7cd7[_0x3485('0x28')]);var _0x4e1bf8=transferValidation[_0x3485('0xb')](_0x2b7cd7['body']);if(_0x4e1bf8[_0x3485('0x24')]>0x0){return _0x967740[_0x3485('0x15')](0x190)['json'](_0x4e1bf8);}var _0x396ae0=_0x2b7cd7[_0x3485('0x28')]['userId'];var _0x142ae2=_0x2b7cd7[_0x3485('0x28')][_0x3485('0x23')];var _0x912f9c=_0x2b7cd7[_0x3485('0x28')]['transferNumber'];return getAgent(_0x396ae0)[_0x3485('0x18')](function(_0x277ca2){logger[_0x3485('0x2d')](_0x3485('0x2e'),_0x277ca2[_0x3485('0x14')]);emit(util['format'](_0x3485('0x2f'),_0x277ca2[_0x3485('0x14')]),_0x3485('0x47'),{'sessionId':_0x142ae2,'transferNumber':_0x912f9c});return _0x967740[_0x3485('0x15')](0xc8)[_0x3485('0x29')]({'error':![],'message':'transfer\x20executed!'});})[_0x3485('0x1d')](handleError(_0x967740));};