Built motion from commit 8c034dcd.|2.6.31
[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 _0x7cb9=['sessionId\x20','originate','info','originate\x20fired:','body','json','callNumber','callbackUrl','entityFound:','format','user:%s','webbar:originate','originate\x20executed!','hangup','userId','webbar:hangup','hangup\x20executed!','answer','answer\x20fired:','sessionId','webbar:answer','answer\x20executed!','hold\x20fired:','webbar:hold','unhold\x20fired:','webbar:unhold','unhold\x20executed!','calls','calls\x20fired:','VoiceChannels','conference','conference\x20executed!','transfer','transfer\x20fired:','webbar:transfer','transfer\x20executed!','path','lodash','../../mysqldb','../../config/environment','util','bluebird','jayson/promise','client','http','../../config/logger','webbarapi','ioredis','redis','defaults','localhost','validate','userId\x20is\x20required','string','callNumber\x20is\x20required','number','sessionId\x20is\x20required','transferNumber\x20is\x20required','emit','log','handleError:','error','stack','name','status','send','NotFound','request','then','code','message','result','catch','findOne','all','filter','rows','UserId','length'];(function(_0x2b3f0e,_0x4f4cd8){var _0x422115=function(_0xfc4879){while(--_0xfc4879){_0x2b3f0e['push'](_0x2b3f0e['shift']());}};_0x422115(++_0x4f4cd8);}(_0x7cb9,0x160));var _0x97cb=function(_0x122ef9,_0x451d2a){_0x122ef9=_0x122ef9-0x0;var _0x42fba0=_0x7cb9[_0x122ef9];return _0x42fba0;};'use strict';var path=require(_0x97cb('0x0'));var fs=require('fs');var _=require(_0x97cb('0x1'));var db=require(_0x97cb('0x2'))['db'];var config=require(_0x97cb('0x3'));var util=require(_0x97cb('0x4'));var BPromise=require(_0x97cb('0x5'));var jayson=require(_0x97cb('0x6'));var amiClient=jayson[_0x97cb('0x7')][_0x97cb('0x8')]({'port':0x232a});var logger=require(_0x97cb('0x9'))(_0x97cb('0xa'));var Redis=require(_0x97cb('0xb'));config[_0x97cb('0xc')]=_[_0x97cb('0xd')](config[_0x97cb('0xc')],{'host':_0x97cb('0xe'),'port':0x18eb});var io=require('socket.io-emitter')(new Redis(config[_0x97cb('0xc')]));var Schema=require(_0x97cb('0xf'));var originateValidation=new Schema({'userId':{'type':'number','required':[!![],_0x97cb('0x10')]},'callNumber':{'type':_0x97cb('0x11'),'required':[!![],_0x97cb('0x12')]},'callerId':{'type':_0x97cb('0x11')},'callbackUrl':{'type':_0x97cb('0x11')}});var hangupValidation=new Schema({'userId':{'type':'number','required':[!![],_0x97cb('0x10')]},'sessionId':{'type':_0x97cb('0x11'),'required':![]}});var answerValidation=new Schema({'userId':{'type':_0x97cb('0x13'),'required':[!![],_0x97cb('0x10')]},'sessionId':{'type':'string','required':![]}});var transferValidation=new Schema({'userId':{'type':_0x97cb('0x13'),'required':[!![],'userId\x20is\x20required']},'sessionId':{'type':_0x97cb('0x11'),'required':[!![],_0x97cb('0x14')]},'transferNumber':{'type':_0x97cb('0x11'),'required':[!![],_0x97cb('0x15')]}});var holdValidation=new Schema({'userId':{'type':_0x97cb('0x13'),'required':[!![],_0x97cb('0x10')]},'sessionId':{'type':_0x97cb('0x11'),'required':![]}});var unholdValidation=new Schema({'userId':{'type':_0x97cb('0x13'),'required':[!![],_0x97cb('0x10')]},'sessionId':{'type':_0x97cb('0x11'),'required':![]}});var callsValidation=new Schema({'userId':{'type':_0x97cb('0x13'),'required':[!![],_0x97cb('0x10')]}});var conferenceValidation=new Schema({'userId':{'type':_0x97cb('0x13'),'required':[!![],'userId\x20is\x20required']}});function emit(_0x44fb4c,_0x14fc5d,_0x56217d){logger['info'](_0x44fb4c,_0x14fc5d,JSON['stringify'](_0x56217d));io['to'](_0x44fb4c)[_0x97cb('0x16')](_0x14fc5d,_0x56217d);}function handleError(_0x12594e){return function(_0x50cd4c){console[_0x97cb('0x17')](_0x97cb('0x18'),_0x50cd4c,_0x50cd4c instanceof RangeError);logger[_0x97cb('0x19')](_0x50cd4c[_0x97cb('0x1a')]);if(_0x50cd4c instanceof RangeError){if(_0x50cd4c[_0x97cb('0x1b')]){delete _0x50cd4c[_0x97cb('0x1b')];}_0x12594e[_0x97cb('0x1c')](0x194)['send'](_0x50cd4c);}else{if(_0x50cd4c['name']){delete _0x50cd4c['name'];}_0x12594e[_0x97cb('0x1c')](0x1f4)[_0x97cb('0x1d')](_0x50cd4c);}};}function checkError(){return function(_0x2e399d){if(!_0x2e399d){throw new RangeError(_0x97cb('0x1e'));}return _0x2e399d;};}function respondWithRpcPromise(_0x1c5d2b,_0x1ecf30){return new BPromise(function(_0x1ad783,_0x41fd0e){var _0x225564=amiClient;return _0x225564[_0x97cb('0x1f')](_0x1c5d2b,_0x1ecf30)[_0x97cb('0x20')](function(_0x40bf55){if(_0x40bf55[_0x97cb('0x19')]){if(_0x40bf55[_0x97cb('0x19')][_0x97cb('0x21')]===0x1f4){return _0x41fd0e(_0x40bf55['error']['message']);}return _0x1ad783(_0x40bf55[_0x97cb('0x19')][_0x97cb('0x22')]);}else{_0x1ad783(_0x40bf55[_0x97cb('0x23')]);}})[_0x97cb('0x24')](function(_0x23fdff){_0x41fd0e(_0x23fdff);});});}function getAgent(_0x1b1335){return db['User'][_0x97cb('0x25')]({'where':{'id':_0x1b1335,'role':'agent'}})[_0x97cb('0x20')](checkError());}function getAgentCheckSession(_0x3dbee5,_0x217329){return new BPromise(function(_0x3a15a6,_0x40c7b3){var _0x3fa65b=respondWithRpcPromise('VoiceChannels');var _0x14c4f8=getAgent(_0x3dbee5);Promise[_0x97cb('0x26')]([_0x3fa65b,_0x14c4f8])[_0x97cb('0x20')](function(_0x35df8f){var _0x1489ff=_0x35df8f[0x0];var _0x48efd0=_0x35df8f[0x1];var _0x206cae=_[_0x97cb('0x27')](_0x1489ff[_0x97cb('0x28')],function(_0x227aa0){return _0x227aa0[_0x97cb('0x29')]==_0x48efd0['id']&&_0x227aa0['sessionId']==_0x217329;});if(_0x206cae[_0x97cb('0x2a')]==0x1){_0x3a15a6(_0x48efd0);}else{_0x40c7b3(new RangeError(_0x97cb('0x2b')+_0x217329+'\x20not\x20found!'));}});});}exports[_0x97cb('0x2c')]=function(_0x218bcd,_0x8bb9ca){logger[_0x97cb('0x2d')](_0x97cb('0x2e'),_0x218bcd[_0x97cb('0x2f')]);var _0x1c3de8=originateValidation['validate'](_0x218bcd[_0x97cb('0x2f')]);if(_0x1c3de8[_0x97cb('0x2a')]>0x0){return _0x8bb9ca[_0x97cb('0x1c')](0x190)[_0x97cb('0x30')](_0x1c3de8);}var _0x62305b=_0x218bcd[_0x97cb('0x2f')]['userId'];var _0x4822a4=_0x218bcd[_0x97cb('0x2f')][_0x97cb('0x31')];var _0x87eb15=_0x218bcd[_0x97cb('0x2f')]['callerId'];var _0x2dcff8=_0x218bcd['body'][_0x97cb('0x32')];return getAgent(_0x62305b)[_0x97cb('0x20')](function(_0x234f45){logger[_0x97cb('0x2d')](_0x97cb('0x33'),_0x234f45[_0x97cb('0x1b')]);emit(util[_0x97cb('0x34')](_0x97cb('0x35'),_0x234f45[_0x97cb('0x1b')]),_0x97cb('0x36'),{'callNumber':_0x4822a4,'callerId':_0x87eb15,'callbackUrl':_0x2dcff8});return _0x8bb9ca[_0x97cb('0x1c')](0xc8)[_0x97cb('0x30')]({'error':![],'message':_0x97cb('0x37')});})[_0x97cb('0x24')](handleError(_0x8bb9ca));};exports[_0x97cb('0x38')]=function(_0x18f377,_0xd514f9){logger[_0x97cb('0x2d')]('hangup\x20fired:',_0x18f377[_0x97cb('0x2f')]);var _0x223d35=hangupValidation[_0x97cb('0xf')](_0x18f377[_0x97cb('0x2f')]);if(_0x223d35[_0x97cb('0x2a')]>0x0){return _0xd514f9[_0x97cb('0x1c')](0x190)[_0x97cb('0x30')](_0x223d35);}var _0x3b1abe=_0x18f377[_0x97cb('0x2f')][_0x97cb('0x39')];var _0x40f753=_0x18f377['body']['sessionId'];return getAgent(_0x3b1abe)[_0x97cb('0x20')](function(_0x1e3b6c){logger[_0x97cb('0x2d')](_0x97cb('0x33'),_0x1e3b6c[_0x97cb('0x1b')]);emit(util[_0x97cb('0x34')]('user:%s',_0x1e3b6c[_0x97cb('0x1b')]),_0x97cb('0x3a'),{'sessionId':_0x40f753});return _0xd514f9[_0x97cb('0x1c')](0xc8)[_0x97cb('0x30')]({'error':![],'message':_0x97cb('0x3b')});})['catch'](handleError(_0xd514f9));};exports[_0x97cb('0x3c')]=function(_0x29c506,_0x579bfb){logger[_0x97cb('0x2d')](_0x97cb('0x3d'),_0x29c506[_0x97cb('0x2f')]);var _0x5a7186=answerValidation[_0x97cb('0xf')](_0x29c506['body']);if(_0x5a7186['length']>0x0){return _0x579bfb[_0x97cb('0x1c')](0x190)[_0x97cb('0x30')](_0x5a7186);}var _0x4bc9e3=_0x29c506['body'][_0x97cb('0x39')];var _0x2d2ccf=_0x29c506[_0x97cb('0x2f')][_0x97cb('0x3e')];return getAgent(_0x4bc9e3)[_0x97cb('0x20')](function(_0x4a686c){logger[_0x97cb('0x2d')](_0x97cb('0x33'),_0x4a686c[_0x97cb('0x1b')]);emit(util['format'](_0x97cb('0x35'),_0x4a686c[_0x97cb('0x1b')]),_0x97cb('0x3f'),{'sessionId':_0x2d2ccf});return _0x579bfb['status'](0xc8)[_0x97cb('0x30')]({'error':![],'message':_0x97cb('0x40')});})[_0x97cb('0x24')](handleError(_0x579bfb));};exports['hold']=function(_0x59ae10,_0x5a1a79){logger['info'](_0x97cb('0x41'),_0x59ae10[_0x97cb('0x2f')]);var _0x257cf0=holdValidation[_0x97cb('0xf')](_0x59ae10[_0x97cb('0x2f')]);if(_0x257cf0[_0x97cb('0x2a')]>0x0){return _0x5a1a79[_0x97cb('0x1c')](0x190)[_0x97cb('0x30')](_0x257cf0);}var _0x1b07ca=_0x59ae10[_0x97cb('0x2f')][_0x97cb('0x39')];var _0x1c37b4=_0x59ae10['body'][_0x97cb('0x3e')];return getAgent(_0x1b07ca)[_0x97cb('0x20')](function(_0x150c73){logger[_0x97cb('0x2d')](_0x97cb('0x33'),_0x150c73[_0x97cb('0x1b')]);emit(util[_0x97cb('0x34')](_0x97cb('0x35'),_0x150c73['name']),_0x97cb('0x42'),{'sessionId':_0x1c37b4});return _0x5a1a79['status'](0xc8)[_0x97cb('0x30')]({'error':![],'message':'hold\x20executed!'});})[_0x97cb('0x24')](handleError(_0x5a1a79));};exports['unhold']=function(_0x295835,_0x36d182){logger[_0x97cb('0x2d')](_0x97cb('0x43'),_0x295835['body']);var _0x31be69=unholdValidation[_0x97cb('0xf')](_0x295835[_0x97cb('0x2f')]);if(_0x31be69[_0x97cb('0x2a')]>0x0){return _0x36d182['status'](0x190)[_0x97cb('0x30')](_0x31be69);}var _0x43c9b2=_0x295835[_0x97cb('0x2f')][_0x97cb('0x39')];var _0x15a722=_0x295835[_0x97cb('0x2f')][_0x97cb('0x3e')];return getAgent(_0x43c9b2)[_0x97cb('0x20')](function(_0x5aeffe){logger['info'](_0x97cb('0x33'),_0x5aeffe[_0x97cb('0x1b')]);emit(util['format']('user:%s',_0x5aeffe[_0x97cb('0x1b')]),_0x97cb('0x44'),{'sessionId':_0x15a722});return _0x36d182[_0x97cb('0x1c')](0xc8)['json']({'error':![],'message':_0x97cb('0x45')});})[_0x97cb('0x24')](handleError(_0x36d182));};exports[_0x97cb('0x46')]=function(_0x355796,_0x3285e8){logger[_0x97cb('0x2d')](_0x97cb('0x47'),_0x3285e8[_0x97cb('0x2f')]);var _0x2e2b08=callsValidation[_0x97cb('0xf')](_0x355796[_0x97cb('0x2f')]);if(_0x2e2b08[_0x97cb('0x2a')]>0x0){return _0x3285e8[_0x97cb('0x1c')](0x190)[_0x97cb('0x30')](_0x2e2b08);}var _0x3363f1=_0x355796[_0x97cb('0x2f')][_0x97cb('0x39')];var _0x5d85ec=respondWithRpcPromise(_0x97cb('0x48'));var _0x5a5dd0=getAgent(_0x3363f1);return Promise[_0x97cb('0x26')]([_0x5d85ec,_0x5a5dd0])[_0x97cb('0x20')](function(_0x1fbae7){var _0x2345e8=_0x1fbae7[0x0];var _0x5ce74b=_0x1fbae7[0x1];var _0x32784d=_[_0x97cb('0x27')](_0x2345e8[_0x97cb('0x28')],function(_0xd3dd9d){return _0xd3dd9d[_0x97cb('0x29')]==_0x5ce74b['id'];});return _0x3285e8[_0x97cb('0x1c')](0xc8)[_0x97cb('0x30')]({'count':_0x32784d[_0x97cb('0x2a')],'rows':_0x32784d});})[_0x97cb('0x24')](handleError(_0x3285e8));};exports[_0x97cb('0x49')]=function(_0x28e0ef,_0x244f52){logger[_0x97cb('0x2d')]('conference\x20fired:',_0x28e0ef[_0x97cb('0x2f')]);var _0x1a8bb2=conferenceValidation[_0x97cb('0xf')](_0x28e0ef[_0x97cb('0x2f')]);if(_0x1a8bb2['length']>0x0){return _0x244f52[_0x97cb('0x1c')](0x190)[_0x97cb('0x30')](_0x1a8bb2);}var _0x52ceb2=_0x28e0ef['body'][_0x97cb('0x39')];return getAgent(_0x52ceb2)[_0x97cb('0x20')](function(_0x84ac83){logger['info'](_0x97cb('0x33'),_0x84ac83[_0x97cb('0x1b')]);emit(util[_0x97cb('0x34')](_0x97cb('0x35'),_0x84ac83['name']),'webbar:conference');return _0x244f52[_0x97cb('0x1c')](0xc8)['json']({'error':![],'message':_0x97cb('0x4a')});})[_0x97cb('0x24')](handleError(_0x244f52));};exports[_0x97cb('0x4b')]=function(_0x25b8e1,_0x338c72){logger['info'](_0x97cb('0x4c'),_0x25b8e1[_0x97cb('0x2f')]);var _0x144b91=transferValidation['validate'](_0x25b8e1[_0x97cb('0x2f')]);if(_0x144b91[_0x97cb('0x2a')]>0x0){return _0x338c72[_0x97cb('0x1c')](0x190)[_0x97cb('0x30')](_0x144b91);}var _0x1452dd=_0x25b8e1[_0x97cb('0x2f')][_0x97cb('0x39')];var _0x3a506c=_0x25b8e1[_0x97cb('0x2f')]['sessionId'];var _0x4ed4f8=_0x25b8e1[_0x97cb('0x2f')]['transferNumber'];return getAgent(_0x1452dd)['then'](function(_0x3ebe37){logger['info'](_0x97cb('0x33'),_0x3ebe37[_0x97cb('0x1b')]);emit(util[_0x97cb('0x34')](_0x97cb('0x35'),_0x3ebe37['name']),_0x97cb('0x4d'),{'sessionId':_0x3a506c,'transferNumber':_0x4ed4f8});return _0x338c72[_0x97cb('0x1c')](0xc8)[_0x97cb('0x30')]({'error':![],'message':_0x97cb('0x4e')});})[_0x97cb('0x24')](handleError(_0x338c72));};