Built motion from commit db94841.|2.5.3
[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 _0xe638=['redis','defaults','localhost','socket.io-emitter','validate','userId\x20is\x20required','string','callNumber\x20is\x20required','number','sessionId\x20is\x20required','transferNumber\x20is\x20required','info','stringify','emit','log','handleError:','error','stack','status','name','send','request','then','message','result','findOne','agent','VoiceChannels','all','filter','rows','sessionId','sessionId\x20','\x20not\x20found!','originate','originate\x20fired:','body','callNumber','callbackUrl','entityFound:','format','user:%s','webbar:originate','json','originate\x20executed!','catch','hangup','hangup\x20fired:','userId','webbar:hangup','answer\x20fired:','answer\x20executed!','length','webbar:hold','hold\x20executed!','unhold','unhold\x20fired:','webbar:unhold','unhold\x20executed!','calls','calls\x20fired:','UserId','conference','conference\x20fired:','webbar:conference','transfer','transferNumber','webbar:transfer','transfer\x20executed!','path','lodash','../../mysqldb','../../config/environment','bluebird','jayson/promise','../../config/logger','ioredis'];(function(_0x519f57,_0x5afd6){var _0x3e7189=function(_0x5e4ee9){while(--_0x5e4ee9){_0x519f57['push'](_0x519f57['shift']());}};_0x3e7189(++_0x5afd6);}(_0xe638,0x92));var _0x8e63=function(_0x55189a,_0x35d0d0){_0x55189a=_0x55189a-0x0;var _0x3731f6=_0xe638[_0x55189a];return _0x3731f6;};'use strict';var path=require(_0x8e63('0x0'));var fs=require('fs');var _=require(_0x8e63('0x1'));var db=require(_0x8e63('0x2'))['db'];var config=require(_0x8e63('0x3'));var util=require('util');var BPromise=require(_0x8e63('0x4'));var jayson=require(_0x8e63('0x5'));var amiClient=jayson['client']['http']({'port':0x232a});var logger=require(_0x8e63('0x6'))('webbarapi');var Redis=require(_0x8e63('0x7'));config[_0x8e63('0x8')]=_[_0x8e63('0x9')](config['redis'],{'host':_0x8e63('0xa'),'port':0x18eb});var io=require(_0x8e63('0xb'))(new Redis(config[_0x8e63('0x8')]));var Schema=require(_0x8e63('0xc'));var originateValidation=new Schema({'userId':{'type':'number','required':[!![],_0x8e63('0xd')]},'callNumber':{'type':_0x8e63('0xe'),'required':[!![],_0x8e63('0xf')]},'callerId':{'type':_0x8e63('0xe')},'callbackUrl':{'type':_0x8e63('0xe')}});var hangupValidation=new Schema({'userId':{'type':_0x8e63('0x10'),'required':[!![],_0x8e63('0xd')]},'sessionId':{'type':_0x8e63('0xe'),'required':![]}});var answerValidation=new Schema({'userId':{'type':'number','required':[!![],_0x8e63('0xd')]},'sessionId':{'type':_0x8e63('0xe'),'required':![]}});var transferValidation=new Schema({'userId':{'type':_0x8e63('0x10'),'required':[!![],_0x8e63('0xd')]},'sessionId':{'type':_0x8e63('0xe'),'required':[!![],_0x8e63('0x11')]},'transferNumber':{'type':'string','required':[!![],_0x8e63('0x12')]}});var holdValidation=new Schema({'userId':{'type':_0x8e63('0x10'),'required':[!![],'userId\x20is\x20required']},'sessionId':{'type':'string','required':![]}});var unholdValidation=new Schema({'userId':{'type':_0x8e63('0x10'),'required':[!![],_0x8e63('0xd')]},'sessionId':{'type':_0x8e63('0xe'),'required':![]}});var callsValidation=new Schema({'userId':{'type':'number','required':[!![],_0x8e63('0xd')]}});var conferenceValidation=new Schema({'userId':{'type':'number','required':[!![],_0x8e63('0xd')]}});function emit(_0x78449a,_0x1de429,_0x590985){logger[_0x8e63('0x13')](_0x78449a,_0x1de429,JSON[_0x8e63('0x14')](_0x590985));io['to'](_0x78449a)[_0x8e63('0x15')](_0x1de429,_0x590985);}function handleError(_0x1479e6){return function(_0x10bbea){console[_0x8e63('0x16')](_0x8e63('0x17'),_0x10bbea,_0x10bbea instanceof RangeError);logger[_0x8e63('0x18')](_0x10bbea[_0x8e63('0x19')]);if(_0x10bbea instanceof RangeError){if(_0x10bbea['name']){delete _0x10bbea['name'];}_0x1479e6[_0x8e63('0x1a')](0x194)['send'](_0x10bbea);}else{if(_0x10bbea[_0x8e63('0x1b')]){delete _0x10bbea[_0x8e63('0x1b')];}_0x1479e6[_0x8e63('0x1a')](0x1f4)[_0x8e63('0x1c')](_0x10bbea);}};}function checkError(){return function(_0x16da6b){if(!_0x16da6b){throw new RangeError('NotFound');}return _0x16da6b;};}function respondWithRpcPromise(_0x56cc88,_0x32912c){return new BPromise(function(_0x35ad61,_0x52209d){var _0x596f80=amiClient;return _0x596f80[_0x8e63('0x1d')](_0x56cc88,_0x32912c)[_0x8e63('0x1e')](function(_0x65e04c){if(_0x65e04c[_0x8e63('0x18')]){if(_0x65e04c[_0x8e63('0x18')]['code']===0x1f4){return _0x52209d(_0x65e04c[_0x8e63('0x18')][_0x8e63('0x1f')]);}return _0x35ad61(_0x65e04c[_0x8e63('0x18')][_0x8e63('0x1f')]);}else{_0x35ad61(_0x65e04c[_0x8e63('0x20')]);}})['catch'](function(_0x255d1c){_0x52209d(_0x255d1c);});});}function getAgent(_0x1a0c31){return db['User'][_0x8e63('0x21')]({'where':{'id':_0x1a0c31,'role':_0x8e63('0x22')}})['then'](checkError());}function getAgentCheckSession(_0x35b4f3,_0x574217){return new BPromise(function(_0x57fbb7,_0x24289d){var _0x42660b=respondWithRpcPromise(_0x8e63('0x23'));var _0x544bcc=getAgent(_0x35b4f3);Promise[_0x8e63('0x24')]([_0x42660b,_0x544bcc])[_0x8e63('0x1e')](function(_0x50b2b4){var _0x5a25e3=_0x50b2b4[0x0];var _0x4ab250=_0x50b2b4[0x1];var _0x53adf5=_[_0x8e63('0x25')](_0x5a25e3[_0x8e63('0x26')],function(_0x2bd817){return _0x2bd817['UserId']==_0x4ab250['id']&&_0x2bd817[_0x8e63('0x27')]==_0x574217;});if(_0x53adf5['length']==0x1){_0x57fbb7(_0x4ab250);}else{_0x24289d(new RangeError(_0x8e63('0x28')+_0x574217+_0x8e63('0x29')));}});});}exports[_0x8e63('0x2a')]=function(_0xd85e36,_0xdca8eb){logger[_0x8e63('0x13')](_0x8e63('0x2b'),_0xd85e36[_0x8e63('0x2c')]);var _0x590750=originateValidation[_0x8e63('0xc')](_0xd85e36[_0x8e63('0x2c')]);if(_0x590750['length']>0x0){return _0xdca8eb['status'](0x190)['json'](_0x590750);}var _0x4f5821=_0xd85e36[_0x8e63('0x2c')]['userId'];var _0x225cd1=_0xd85e36[_0x8e63('0x2c')][_0x8e63('0x2d')];var _0x376e7c=_0xd85e36['body']['callerId'];var _0x2b1d08=_0xd85e36[_0x8e63('0x2c')][_0x8e63('0x2e')];return getAgent(_0x4f5821)[_0x8e63('0x1e')](function(_0x1c494e){logger[_0x8e63('0x13')](_0x8e63('0x2f'),_0x1c494e[_0x8e63('0x1b')]);emit(util[_0x8e63('0x30')](_0x8e63('0x31'),_0x1c494e[_0x8e63('0x1b')]),_0x8e63('0x32'),{'callNumber':_0x225cd1,'callerId':_0x376e7c,'callbackUrl':_0x2b1d08});return _0xdca8eb[_0x8e63('0x1a')](0xc8)[_0x8e63('0x33')]({'error':![],'message':_0x8e63('0x34')});})[_0x8e63('0x35')](handleError(_0xdca8eb));};exports[_0x8e63('0x36')]=function(_0x505c93,_0x1035c6){logger[_0x8e63('0x13')](_0x8e63('0x37'),_0x505c93[_0x8e63('0x2c')]);var _0x44897d=hangupValidation[_0x8e63('0xc')](_0x505c93[_0x8e63('0x2c')]);if(_0x44897d['length']>0x0){return _0x1035c6['status'](0x190)[_0x8e63('0x33')](_0x44897d);}var _0x411154=_0x505c93['body'][_0x8e63('0x38')];var _0x37e36b=_0x505c93[_0x8e63('0x2c')]['sessionId'];return getAgent(_0x411154)[_0x8e63('0x1e')](function(_0x360c65){logger[_0x8e63('0x13')](_0x8e63('0x2f'),_0x360c65[_0x8e63('0x1b')]);emit(util[_0x8e63('0x30')](_0x8e63('0x31'),_0x360c65[_0x8e63('0x1b')]),_0x8e63('0x39'),{'sessionId':_0x37e36b});return _0x1035c6[_0x8e63('0x1a')](0xc8)['json']({'error':![],'message':'hangup\x20executed!'});})[_0x8e63('0x35')](handleError(_0x1035c6));};exports['answer']=function(_0x4748fd,_0x4ded17){logger[_0x8e63('0x13')](_0x8e63('0x3a'),_0x4748fd[_0x8e63('0x2c')]);var _0x2f79b1=answerValidation[_0x8e63('0xc')](_0x4748fd['body']);if(_0x2f79b1['length']>0x0){return _0x4ded17[_0x8e63('0x1a')](0x190)[_0x8e63('0x33')](_0x2f79b1);}var _0x1cd8b6=_0x4748fd[_0x8e63('0x2c')][_0x8e63('0x38')];var _0x42b4f0=_0x4748fd['body'][_0x8e63('0x27')];return getAgent(_0x1cd8b6)[_0x8e63('0x1e')](function(_0xeae3d5){logger[_0x8e63('0x13')](_0x8e63('0x2f'),_0xeae3d5[_0x8e63('0x1b')]);emit(util[_0x8e63('0x30')](_0x8e63('0x31'),_0xeae3d5['name']),'webbar:answer',{'sessionId':_0x42b4f0});return _0x4ded17[_0x8e63('0x1a')](0xc8)[_0x8e63('0x33')]({'error':![],'message':_0x8e63('0x3b')});})[_0x8e63('0x35')](handleError(_0x4ded17));};exports['hold']=function(_0x34fd86,_0x526bee){logger[_0x8e63('0x13')]('hold\x20fired:',_0x34fd86[_0x8e63('0x2c')]);var _0x5d9201=holdValidation[_0x8e63('0xc')](_0x34fd86[_0x8e63('0x2c')]);if(_0x5d9201[_0x8e63('0x3c')]>0x0){return _0x526bee[_0x8e63('0x1a')](0x190)[_0x8e63('0x33')](_0x5d9201);}var _0x427be8=_0x34fd86[_0x8e63('0x2c')]['userId'];var _0x223980=_0x34fd86[_0x8e63('0x2c')][_0x8e63('0x27')];return getAgent(_0x427be8)['then'](function(_0x49f8b6){logger['info']('entityFound:',_0x49f8b6[_0x8e63('0x1b')]);emit(util['format']('user:%s',_0x49f8b6[_0x8e63('0x1b')]),_0x8e63('0x3d'),{'sessionId':_0x223980});return _0x526bee[_0x8e63('0x1a')](0xc8)['json']({'error':![],'message':_0x8e63('0x3e')});})[_0x8e63('0x35')](handleError(_0x526bee));};exports[_0x8e63('0x3f')]=function(_0x153082,_0x17847d){logger['info'](_0x8e63('0x40'),_0x153082[_0x8e63('0x2c')]);var _0x158f5f=unholdValidation['validate'](_0x153082[_0x8e63('0x2c')]);if(_0x158f5f['length']>0x0){return _0x17847d['status'](0x190)[_0x8e63('0x33')](_0x158f5f);}var _0x1ce648=_0x153082[_0x8e63('0x2c')][_0x8e63('0x38')];var _0x3e60c4=_0x153082[_0x8e63('0x2c')][_0x8e63('0x27')];return getAgent(_0x1ce648)['then'](function(_0xe7cf2f){logger['info']('entityFound:',_0xe7cf2f[_0x8e63('0x1b')]);emit(util[_0x8e63('0x30')](_0x8e63('0x31'),_0xe7cf2f[_0x8e63('0x1b')]),_0x8e63('0x41'),{'sessionId':_0x3e60c4});return _0x17847d[_0x8e63('0x1a')](0xc8)['json']({'error':![],'message':_0x8e63('0x42')});})[_0x8e63('0x35')](handleError(_0x17847d));};exports[_0x8e63('0x43')]=function(_0x510c73,_0x48379d){logger['info'](_0x8e63('0x44'),_0x48379d[_0x8e63('0x2c')]);var _0x40aedc=callsValidation[_0x8e63('0xc')](_0x510c73['body']);if(_0x40aedc[_0x8e63('0x3c')]>0x0){return _0x48379d['status'](0x190)[_0x8e63('0x33')](_0x40aedc);}var _0x1ad601=_0x510c73[_0x8e63('0x2c')]['userId'];var _0x42ace4=respondWithRpcPromise('VoiceChannels');var _0x56213a=getAgent(_0x1ad601);return Promise[_0x8e63('0x24')]([_0x42ace4,_0x56213a])[_0x8e63('0x1e')](function(_0x5e30dc){var _0xb42c3d=_0x5e30dc[0x0];var _0x5ad313=_0x5e30dc[0x1];var _0x598348=_[_0x8e63('0x25')](_0xb42c3d[_0x8e63('0x26')],function(_0x5c6504){return _0x5c6504[_0x8e63('0x45')]==_0x5ad313['id'];});return _0x48379d[_0x8e63('0x1a')](0xc8)['json']({'count':_0x598348['length'],'rows':_0x598348});})[_0x8e63('0x35')](handleError(_0x48379d));};exports[_0x8e63('0x46')]=function(_0x240cff,_0x48957e){logger['info'](_0x8e63('0x47'),_0x240cff[_0x8e63('0x2c')]);var _0x4ead61=conferenceValidation[_0x8e63('0xc')](_0x240cff[_0x8e63('0x2c')]);if(_0x4ead61[_0x8e63('0x3c')]>0x0){return _0x48957e[_0x8e63('0x1a')](0x190)[_0x8e63('0x33')](_0x4ead61);}var _0x5b3c5d=_0x240cff[_0x8e63('0x2c')]['userId'];return getAgent(_0x5b3c5d)[_0x8e63('0x1e')](function(_0x2c79f1){logger['info'](_0x8e63('0x2f'),_0x2c79f1['name']);emit(util[_0x8e63('0x30')](_0x8e63('0x31'),_0x2c79f1['name']),_0x8e63('0x48'));return _0x48957e[_0x8e63('0x1a')](0xc8)[_0x8e63('0x33')]({'error':![],'message':'conference\x20executed!'});})[_0x8e63('0x35')](handleError(_0x48957e));};exports[_0x8e63('0x49')]=function(_0x298121,_0x4165cb){logger['info']('transfer\x20fired:',_0x298121[_0x8e63('0x2c')]);var _0x1b344d=transferValidation['validate'](_0x298121[_0x8e63('0x2c')]);if(_0x1b344d[_0x8e63('0x3c')]>0x0){return _0x4165cb['status'](0x190)[_0x8e63('0x33')](_0x1b344d);}var _0x2c64e9=_0x298121[_0x8e63('0x2c')][_0x8e63('0x38')];var _0x4cb85c=_0x298121['body'][_0x8e63('0x27')];var _0x4ebc8e=_0x298121[_0x8e63('0x2c')][_0x8e63('0x4a')];return getAgent(_0x2c64e9)['then'](function(_0x5b6fa1){logger[_0x8e63('0x13')]('entityFound:',_0x5b6fa1[_0x8e63('0x1b')]);emit(util['format']('user:%s',_0x5b6fa1[_0x8e63('0x1b')]),_0x8e63('0x4b'),{'sessionId':_0x4cb85c,'transferNumber':_0x4ebc8e});return _0x4165cb[_0x8e63('0x1a')](0xc8)[_0x8e63('0x33')]({'error':![],'message':_0x8e63('0x4c')});})[_0x8e63('0x35')](handleError(_0x4165cb));};