Built motion from commit 97153652.|2.6.26
[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 _0x5db8=['callerId','callbackUrl','entityFound:','format','user:%s','webbar:originate','originate\x20executed!','hangup','hangup\x20fired:','sessionId','webbar:hangup','hangup\x20executed!','answer','answer\x20fired:','webbar:answer','answer\x20executed!','hold','hold\x20fired:','webbar:hold','hold\x20executed!','webbar:unhold','unhold\x20executed!','calls','calls\x20fired:','VoiceChannels','UserId','transfer','transfer\x20fired:','transferNumber','webbar:transfer','transfer\x20executed!','path','lodash','../../mysqldb','util','bluebird','jayson/promise','../../config/logger','webbarapi','ioredis','redis','localhost','socket.io-emitter','validate','userId\x20is\x20required','callNumber\x20is\x20required','string','number','sessionId\x20is\x20required','transferNumber\x20is\x20required','info','stringify','emit','handleError:','error','stack','name','status','send','NotFound','request','code','message','result','catch','findOne','agent','then','all','filter','rows','length','\x20not\x20found!','originate','originate\x20fired:','body','json','userId'];(function(_0x465a0c,_0x19d4d5){var _0x1e202e=function(_0x27bd8a){while(--_0x27bd8a){_0x465a0c['push'](_0x465a0c['shift']());}};_0x1e202e(++_0x19d4d5);}(_0x5db8,0xbb));var _0x85db=function(_0x3eee56,_0x176daf){_0x3eee56=_0x3eee56-0x0;var _0x506bcd=_0x5db8[_0x3eee56];return _0x506bcd;};'use strict';var path=require(_0x85db('0x0'));var fs=require('fs');var _=require(_0x85db('0x1'));var db=require(_0x85db('0x2'))['db'];var config=require('../../config/environment');var util=require(_0x85db('0x3'));var BPromise=require(_0x85db('0x4'));var jayson=require(_0x85db('0x5'));var amiClient=jayson['client']['http']({'port':0x232a});var logger=require(_0x85db('0x6'))(_0x85db('0x7'));var Redis=require(_0x85db('0x8'));config[_0x85db('0x9')]=_['defaults'](config['redis'],{'host':_0x85db('0xa'),'port':0x18eb});var io=require(_0x85db('0xb'))(new Redis(config[_0x85db('0x9')]));var Schema=require(_0x85db('0xc'));var originateValidation=new Schema({'userId':{'type':'number','required':[!![],_0x85db('0xd')]},'callNumber':{'type':'string','required':[!![],_0x85db('0xe')]},'callerId':{'type':_0x85db('0xf')},'callbackUrl':{'type':_0x85db('0xf')}});var hangupValidation=new Schema({'userId':{'type':_0x85db('0x10'),'required':[!![],'userId\x20is\x20required']},'sessionId':{'type':'string','required':![]}});var answerValidation=new Schema({'userId':{'type':'number','required':[!![],_0x85db('0xd')]},'sessionId':{'type':_0x85db('0xf'),'required':![]}});var transferValidation=new Schema({'userId':{'type':'number','required':[!![],_0x85db('0xd')]},'sessionId':{'type':'string','required':[!![],_0x85db('0x11')]},'transferNumber':{'type':_0x85db('0xf'),'required':[!![],_0x85db('0x12')]}});var holdValidation=new Schema({'userId':{'type':_0x85db('0x10'),'required':[!![],_0x85db('0xd')]},'sessionId':{'type':_0x85db('0xf'),'required':![]}});var unholdValidation=new Schema({'userId':{'type':_0x85db('0x10'),'required':[!![],_0x85db('0xd')]},'sessionId':{'type':_0x85db('0xf'),'required':![]}});var callsValidation=new Schema({'userId':{'type':_0x85db('0x10'),'required':[!![],_0x85db('0xd')]}});var conferenceValidation=new Schema({'userId':{'type':_0x85db('0x10'),'required':[!![],_0x85db('0xd')]}});function emit(_0x5ccfef,_0x27bd65,_0x175622){logger[_0x85db('0x13')](_0x5ccfef,_0x27bd65,JSON[_0x85db('0x14')](_0x175622));io['to'](_0x5ccfef)[_0x85db('0x15')](_0x27bd65,_0x175622);}function handleError(_0x396afa){return function(_0x3209b3){console['log'](_0x85db('0x16'),_0x3209b3,_0x3209b3 instanceof RangeError);logger[_0x85db('0x17')](_0x3209b3[_0x85db('0x18')]);if(_0x3209b3 instanceof RangeError){if(_0x3209b3[_0x85db('0x19')]){delete _0x3209b3[_0x85db('0x19')];}_0x396afa[_0x85db('0x1a')](0x194)[_0x85db('0x1b')](_0x3209b3);}else{if(_0x3209b3[_0x85db('0x19')]){delete _0x3209b3[_0x85db('0x19')];}_0x396afa[_0x85db('0x1a')](0x1f4)['send'](_0x3209b3);}};}function checkError(){return function(_0x36a2af){if(!_0x36a2af){throw new RangeError(_0x85db('0x1c'));}return _0x36a2af;};}function respondWithRpcPromise(_0xc812d2,_0x470c81){return new BPromise(function(_0x44c122,_0x3842d7){var _0x3a7148=amiClient;return _0x3a7148[_0x85db('0x1d')](_0xc812d2,_0x470c81)['then'](function(_0xfffea2){if(_0xfffea2[_0x85db('0x17')]){if(_0xfffea2[_0x85db('0x17')][_0x85db('0x1e')]===0x1f4){return _0x3842d7(_0xfffea2[_0x85db('0x17')][_0x85db('0x1f')]);}return _0x44c122(_0xfffea2['error'][_0x85db('0x1f')]);}else{_0x44c122(_0xfffea2[_0x85db('0x20')]);}})[_0x85db('0x21')](function(_0x54ba03){_0x3842d7(_0x54ba03);});});}function getAgent(_0x5467ad){return db['User'][_0x85db('0x22')]({'where':{'id':_0x5467ad,'role':_0x85db('0x23')}})[_0x85db('0x24')](checkError());}function getAgentCheckSession(_0x51b748,_0x71c6f4){return new BPromise(function(_0xc2abb8,_0xdfff49){var _0x574bcc=respondWithRpcPromise('VoiceChannels');var _0x299013=getAgent(_0x51b748);Promise[_0x85db('0x25')]([_0x574bcc,_0x299013])[_0x85db('0x24')](function(_0x226540){var _0x397afc=_0x226540[0x0];var _0x16ee2a=_0x226540[0x1];var _0x8af4a4=_[_0x85db('0x26')](_0x397afc[_0x85db('0x27')],function(_0x1edc8d){return _0x1edc8d['UserId']==_0x16ee2a['id']&&_0x1edc8d['sessionId']==_0x71c6f4;});if(_0x8af4a4[_0x85db('0x28')]==0x1){_0xc2abb8(_0x16ee2a);}else{_0xdfff49(new RangeError('sessionId\x20'+_0x71c6f4+_0x85db('0x29')));}});});}exports[_0x85db('0x2a')]=function(_0x5abdb7,_0x1d15b0){logger[_0x85db('0x13')](_0x85db('0x2b'),_0x5abdb7[_0x85db('0x2c')]);var _0x515a06=originateValidation[_0x85db('0xc')](_0x5abdb7[_0x85db('0x2c')]);if(_0x515a06[_0x85db('0x28')]>0x0){return _0x1d15b0[_0x85db('0x1a')](0x190)[_0x85db('0x2d')](_0x515a06);}var _0x4808a4=_0x5abdb7[_0x85db('0x2c')][_0x85db('0x2e')];var _0x232175=_0x5abdb7[_0x85db('0x2c')]['callNumber'];var _0xfe3cd9=_0x5abdb7[_0x85db('0x2c')][_0x85db('0x2f')];var _0x536398=_0x5abdb7['body'][_0x85db('0x30')];return getAgent(_0x4808a4)[_0x85db('0x24')](function(_0x4980b7){logger[_0x85db('0x13')](_0x85db('0x31'),_0x4980b7[_0x85db('0x19')]);emit(util[_0x85db('0x32')](_0x85db('0x33'),_0x4980b7[_0x85db('0x19')]),_0x85db('0x34'),{'callNumber':_0x232175,'callerId':_0xfe3cd9,'callbackUrl':_0x536398});return _0x1d15b0[_0x85db('0x1a')](0xc8)[_0x85db('0x2d')]({'error':![],'message':_0x85db('0x35')});})[_0x85db('0x21')](handleError(_0x1d15b0));};exports[_0x85db('0x36')]=function(_0x54bc6f,_0x35e938){logger[_0x85db('0x13')](_0x85db('0x37'),_0x54bc6f[_0x85db('0x2c')]);var _0x57a77a=hangupValidation[_0x85db('0xc')](_0x54bc6f[_0x85db('0x2c')]);if(_0x57a77a[_0x85db('0x28')]>0x0){return _0x35e938[_0x85db('0x1a')](0x190)['json'](_0x57a77a);}var _0x5dfe91=_0x54bc6f['body']['userId'];var _0x4d5ff9=_0x54bc6f[_0x85db('0x2c')][_0x85db('0x38')];return getAgent(_0x5dfe91)[_0x85db('0x24')](function(_0x17f649){logger[_0x85db('0x13')]('entityFound:',_0x17f649['name']);emit(util[_0x85db('0x32')]('user:%s',_0x17f649[_0x85db('0x19')]),_0x85db('0x39'),{'sessionId':_0x4d5ff9});return _0x35e938['status'](0xc8)['json']({'error':![],'message':_0x85db('0x3a')});})[_0x85db('0x21')](handleError(_0x35e938));};exports[_0x85db('0x3b')]=function(_0x73eb93,_0x24f8dc){logger['info'](_0x85db('0x3c'),_0x73eb93[_0x85db('0x2c')]);var _0x115720=answerValidation['validate'](_0x73eb93['body']);if(_0x115720['length']>0x0){return _0x24f8dc[_0x85db('0x1a')](0x190)[_0x85db('0x2d')](_0x115720);}var _0x116cb3=_0x73eb93['body']['userId'];var _0x3e4dbc=_0x73eb93['body'][_0x85db('0x38')];return getAgent(_0x116cb3)[_0x85db('0x24')](function(_0x374515){logger['info'](_0x85db('0x31'),_0x374515[_0x85db('0x19')]);emit(util[_0x85db('0x32')](_0x85db('0x33'),_0x374515[_0x85db('0x19')]),_0x85db('0x3d'),{'sessionId':_0x3e4dbc});return _0x24f8dc[_0x85db('0x1a')](0xc8)[_0x85db('0x2d')]({'error':![],'message':_0x85db('0x3e')});})['catch'](handleError(_0x24f8dc));};exports[_0x85db('0x3f')]=function(_0x1b9ab8,_0x30c7a0){logger[_0x85db('0x13')](_0x85db('0x40'),_0x1b9ab8[_0x85db('0x2c')]);var _0x4acd1c=holdValidation[_0x85db('0xc')](_0x1b9ab8[_0x85db('0x2c')]);if(_0x4acd1c[_0x85db('0x28')]>0x0){return _0x30c7a0['status'](0x190)['json'](_0x4acd1c);}var _0x1350ae=_0x1b9ab8['body'][_0x85db('0x2e')];var _0x85181f=_0x1b9ab8[_0x85db('0x2c')][_0x85db('0x38')];return getAgent(_0x1350ae)[_0x85db('0x24')](function(_0x5e1455){logger['info'](_0x85db('0x31'),_0x5e1455[_0x85db('0x19')]);emit(util[_0x85db('0x32')](_0x85db('0x33'),_0x5e1455[_0x85db('0x19')]),_0x85db('0x41'),{'sessionId':_0x85181f});return _0x30c7a0[_0x85db('0x1a')](0xc8)[_0x85db('0x2d')]({'error':![],'message':_0x85db('0x42')});})[_0x85db('0x21')](handleError(_0x30c7a0));};exports['unhold']=function(_0x69c505,_0x2c4ae4){logger['info']('unhold\x20fired:',_0x69c505[_0x85db('0x2c')]);var _0x306be6=unholdValidation['validate'](_0x69c505['body']);if(_0x306be6[_0x85db('0x28')]>0x0){return _0x2c4ae4[_0x85db('0x1a')](0x190)['json'](_0x306be6);}var _0x101388=_0x69c505[_0x85db('0x2c')][_0x85db('0x2e')];var _0xd3cedb=_0x69c505[_0x85db('0x2c')][_0x85db('0x38')];return getAgent(_0x101388)[_0x85db('0x24')](function(_0x438ce7){logger[_0x85db('0x13')](_0x85db('0x31'),_0x438ce7['name']);emit(util['format'](_0x85db('0x33'),_0x438ce7[_0x85db('0x19')]),_0x85db('0x43'),{'sessionId':_0xd3cedb});return _0x2c4ae4[_0x85db('0x1a')](0xc8)[_0x85db('0x2d')]({'error':![],'message':_0x85db('0x44')});})[_0x85db('0x21')](handleError(_0x2c4ae4));};exports[_0x85db('0x45')]=function(_0x34b54e,_0x1e6f60){logger[_0x85db('0x13')](_0x85db('0x46'),_0x1e6f60[_0x85db('0x2c')]);var _0x425e61=callsValidation['validate'](_0x34b54e[_0x85db('0x2c')]);if(_0x425e61[_0x85db('0x28')]>0x0){return _0x1e6f60['status'](0x190)[_0x85db('0x2d')](_0x425e61);}var _0x40a009=_0x34b54e[_0x85db('0x2c')][_0x85db('0x2e')];var _0x992a63=respondWithRpcPromise(_0x85db('0x47'));var _0x43b095=getAgent(_0x40a009);return Promise['all']([_0x992a63,_0x43b095])[_0x85db('0x24')](function(_0x355be9){var _0x4d7e50=_0x355be9[0x0];var _0x5b38c6=_0x355be9[0x1];var _0x1e910e=_['filter'](_0x4d7e50[_0x85db('0x27')],function(_0x42ca02){return _0x42ca02[_0x85db('0x48')]==_0x5b38c6['id'];});return _0x1e6f60[_0x85db('0x1a')](0xc8)['json']({'count':_0x1e910e[_0x85db('0x28')],'rows':_0x1e910e});})['catch'](handleError(_0x1e6f60));};exports['conference']=function(_0x493ab3,_0x367e3e){logger[_0x85db('0x13')]('conference\x20fired:',_0x493ab3[_0x85db('0x2c')]);var _0x1249a6=conferenceValidation['validate'](_0x493ab3[_0x85db('0x2c')]);if(_0x1249a6[_0x85db('0x28')]>0x0){return _0x367e3e[_0x85db('0x1a')](0x190)[_0x85db('0x2d')](_0x1249a6);}var _0x42eddd=_0x493ab3[_0x85db('0x2c')]['userId'];return getAgent(_0x42eddd)[_0x85db('0x24')](function(_0x427250){logger[_0x85db('0x13')](_0x85db('0x31'),_0x427250[_0x85db('0x19')]);emit(util[_0x85db('0x32')](_0x85db('0x33'),_0x427250[_0x85db('0x19')]),'webbar:conference');return _0x367e3e['status'](0xc8)['json']({'error':![],'message':'conference\x20executed!'});})[_0x85db('0x21')](handleError(_0x367e3e));};exports[_0x85db('0x49')]=function(_0x88626d,_0x239027){logger[_0x85db('0x13')](_0x85db('0x4a'),_0x88626d['body']);var _0x367ebe=transferValidation[_0x85db('0xc')](_0x88626d[_0x85db('0x2c')]);if(_0x367ebe[_0x85db('0x28')]>0x0){return _0x239027['status'](0x190)[_0x85db('0x2d')](_0x367ebe);}var _0x3dc6f0=_0x88626d[_0x85db('0x2c')][_0x85db('0x2e')];var _0x4d042c=_0x88626d[_0x85db('0x2c')][_0x85db('0x38')];var _0x2af26e=_0x88626d[_0x85db('0x2c')][_0x85db('0x4b')];return getAgent(_0x3dc6f0)['then'](function(_0x4667a5){logger[_0x85db('0x13')](_0x85db('0x31'),_0x4667a5[_0x85db('0x19')]);emit(util[_0x85db('0x32')]('user:%s',_0x4667a5[_0x85db('0x19')]),_0x85db('0x4c'),{'sessionId':_0x4d042c,'transferNumber':_0x2af26e});return _0x239027[_0x85db('0x1a')](0xc8)[_0x85db('0x2d')]({'error':![],'message':_0x85db('0x4d')});})['catch'](handleError(_0x239027));};