Built motion from commit (unavailable).|2.4.20
[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 _0x1a35=['handleError:','error','stack','name','status','send','NotFound','request','then','code','message','result','User','agent','all','filter','rows','UserId','length','\x20not\x20found!','originate','originate\x20fired:','body','validate','json','userId','callNumber','callbackUrl','entityFound:','user:%s','originate\x20executed!','sessionId','format','webbar:hangup','hangup\x20executed!','hold\x20fired:','catch','unhold','webbar:unhold','unhold\x20executed!','VoiceChannels','conference','conference\x20fired:','conference\x20executed!','transfer','transfer\x20fired:','transferNumber','webbar:transfer','path','lodash','../../mysqldb','../../config/environment','bluebird','jayson/promise','client','../../config/logger','webbarapi','ioredis','redis','defaults','localhost','socket.io-emitter','number','userId\x20is\x20required','string','sessionId\x20is\x20required','transferNumber\x20is\x20required','info','stringify','log'];(function(_0x3bf83f,_0x181cac){var _0x22c4a9=function(_0xb3ff0d){while(--_0xb3ff0d){_0x3bf83f['push'](_0x3bf83f['shift']());}};_0x22c4a9(++_0x181cac);}(_0x1a35,0x102));var _0x51a3=function(_0x40a909,_0x31d6d4){_0x40a909=_0x40a909-0x0;var _0x25f06f=_0x1a35[_0x40a909];return _0x25f06f;};'use strict';var path=require(_0x51a3('0x0'));var fs=require('fs');var _=require(_0x51a3('0x1'));var db=require(_0x51a3('0x2'))['db'];var config=require(_0x51a3('0x3'));var util=require('util');var BPromise=require(_0x51a3('0x4'));var jayson=require(_0x51a3('0x5'));var amiClient=jayson[_0x51a3('0x6')]['http']({'port':0x232a});var logger=require(_0x51a3('0x7'))(_0x51a3('0x8'));var Redis=require(_0x51a3('0x9'));config[_0x51a3('0xa')]=_[_0x51a3('0xb')](config[_0x51a3('0xa')],{'host':_0x51a3('0xc'),'port':0x18eb});var io=require(_0x51a3('0xd'))(new Redis(config[_0x51a3('0xa')]));var Schema=require('validate');var originateValidation=new Schema({'userId':{'type':_0x51a3('0xe'),'required':[!![],_0x51a3('0xf')]},'callNumber':{'type':_0x51a3('0x10'),'required':[!![],'callNumber\x20is\x20required']},'callerId':{'type':_0x51a3('0x10')},'callbackUrl':{'type':_0x51a3('0x10')}});var hangupValidation=new Schema({'userId':{'type':_0x51a3('0xe'),'required':[!![],'userId\x20is\x20required']},'sessionId':{'type':_0x51a3('0x10'),'required':![]}});var answerValidation=new Schema({'userId':{'type':'number','required':[!![],_0x51a3('0xf')]},'sessionId':{'type':'string','required':[!![],_0x51a3('0x11')]}});var transferValidation=new Schema({'userId':{'type':_0x51a3('0xe'),'required':[!![],_0x51a3('0xf')]},'sessionId':{'type':_0x51a3('0x10'),'required':[!![],_0x51a3('0x11')]},'transferNumber':{'type':_0x51a3('0x10'),'required':[!![],_0x51a3('0x12')]}});var holdValidation=new Schema({'userId':{'type':_0x51a3('0xe'),'required':[!![],_0x51a3('0xf')]},'sessionId':{'type':'string','required':![]}});var unholdValidation=new Schema({'userId':{'type':_0x51a3('0xe'),'required':[!![],'userId\x20is\x20required']},'sessionId':{'type':_0x51a3('0x10'),'required':![]}});var callsValidation=new Schema({'userId':{'type':_0x51a3('0xe'),'required':[!![],_0x51a3('0xf')]}});var conferenceValidation=new Schema({'userId':{'type':_0x51a3('0xe'),'required':[!![],_0x51a3('0xf')]}});function emit(_0x735b7c,_0x4a986b,_0x30ae28){logger[_0x51a3('0x13')](_0x735b7c,_0x4a986b,JSON[_0x51a3('0x14')](_0x30ae28));io['to'](_0x735b7c)['emit'](_0x4a986b,_0x30ae28);}function handleError(_0x43c631){return function(_0x257019){console[_0x51a3('0x15')](_0x51a3('0x16'),_0x257019,_0x257019 instanceof RangeError);logger[_0x51a3('0x17')](_0x257019[_0x51a3('0x18')]);if(_0x257019 instanceof RangeError){if(_0x257019[_0x51a3('0x19')]){delete _0x257019['name'];}_0x43c631['status'](0x194)['send'](_0x257019);}else{if(_0x257019[_0x51a3('0x19')]){delete _0x257019['name'];}_0x43c631[_0x51a3('0x1a')](0x1f4)[_0x51a3('0x1b')](_0x257019);}};}function checkError(){return function(_0x325b94){if(!_0x325b94){throw new RangeError(_0x51a3('0x1c'));}return _0x325b94;};}function respondWithRpcPromise(_0x1ae722,_0x5292c8){return new BPromise(function(_0x24f7d6,_0x987a9e){var _0x4fe0c5=amiClient;return _0x4fe0c5[_0x51a3('0x1d')](_0x1ae722,_0x5292c8)[_0x51a3('0x1e')](function(_0x1f1723){if(_0x1f1723[_0x51a3('0x17')]){if(_0x1f1723[_0x51a3('0x17')][_0x51a3('0x1f')]===0x1f4){return _0x987a9e(_0x1f1723['error']['message']);}return _0x24f7d6(_0x1f1723['error'][_0x51a3('0x20')]);}else{_0x24f7d6(_0x1f1723[_0x51a3('0x21')]);}})['catch'](function(_0x3c8624){_0x987a9e(_0x3c8624);});});}function getAgent(_0xb326df){return db[_0x51a3('0x22')]['findOne']({'where':{'id':_0xb326df,'role':_0x51a3('0x23')}})[_0x51a3('0x1e')](checkError());}function getAgentCheckSession(_0x4a0a80,_0x5a8b44){return new BPromise(function(_0x2ce41e,_0x4bc617){var _0x1d4685=respondWithRpcPromise('VoiceChannels');var _0x15d5cd=getAgent(_0x4a0a80);Promise[_0x51a3('0x24')]([_0x1d4685,_0x15d5cd])[_0x51a3('0x1e')](function(_0x4a20eb){var _0x594b0e=_0x4a20eb[0x0];var _0x53a36a=_0x4a20eb[0x1];var _0x14b982=_[_0x51a3('0x25')](_0x594b0e[_0x51a3('0x26')],function(_0x5a3660){return _0x5a3660[_0x51a3('0x27')]==_0x53a36a['id']&&_0x5a3660['sessionId']==_0x5a8b44;});if(_0x14b982[_0x51a3('0x28')]==0x1){_0x2ce41e(_0x53a36a);}else{_0x4bc617(new RangeError('sessionId\x20'+_0x5a8b44+_0x51a3('0x29')));}});});}exports[_0x51a3('0x2a')]=function(_0x3eb8c0,_0x1ee527){logger[_0x51a3('0x13')](_0x51a3('0x2b'),_0x3eb8c0[_0x51a3('0x2c')]);var _0x154bfb=originateValidation[_0x51a3('0x2d')](_0x3eb8c0[_0x51a3('0x2c')]);if(_0x154bfb['length']>0x0){return _0x1ee527[_0x51a3('0x1a')](0x190)[_0x51a3('0x2e')](_0x154bfb);}var _0x434f5d=_0x3eb8c0[_0x51a3('0x2c')][_0x51a3('0x2f')];var _0x181763=_0x3eb8c0[_0x51a3('0x2c')][_0x51a3('0x30')];var _0x99707b=_0x3eb8c0[_0x51a3('0x2c')]['callerId'];var _0x31a752=_0x3eb8c0[_0x51a3('0x2c')][_0x51a3('0x31')];return getAgent(_0x434f5d)[_0x51a3('0x1e')](function(_0x55813c){logger[_0x51a3('0x13')](_0x51a3('0x32'),_0x55813c[_0x51a3('0x19')]);emit(util['format'](_0x51a3('0x33'),_0x55813c[_0x51a3('0x19')]),'webbar:originate',{'callNumber':_0x181763,'callerId':_0x99707b,'callbackUrl':_0x31a752});return _0x1ee527[_0x51a3('0x1a')](0xc8)[_0x51a3('0x2e')]({'error':![],'message':_0x51a3('0x34')});})['catch'](handleError(_0x1ee527));};exports['hangup']=function(_0xefe6d3,_0x2f8cd0){logger[_0x51a3('0x13')]('hangup\x20fired:',_0xefe6d3['body']);var _0x51bfbf=hangupValidation[_0x51a3('0x2d')](_0xefe6d3[_0x51a3('0x2c')]);if(_0x51bfbf['length']>0x0){return _0x2f8cd0[_0x51a3('0x1a')](0x190)[_0x51a3('0x2e')](_0x51bfbf);}var _0x1e0ed9=_0xefe6d3[_0x51a3('0x2c')][_0x51a3('0x2f')];var _0x16711b=_0xefe6d3[_0x51a3('0x2c')][_0x51a3('0x35')];return getAgent(_0x1e0ed9)[_0x51a3('0x1e')](function(_0x3e2ec9){logger[_0x51a3('0x13')](_0x51a3('0x32'),_0x3e2ec9[_0x51a3('0x19')]);emit(util[_0x51a3('0x36')](_0x51a3('0x33'),_0x3e2ec9[_0x51a3('0x19')]),_0x51a3('0x37'),{'sessionId':_0x16711b});return _0x2f8cd0[_0x51a3('0x1a')](0xc8)[_0x51a3('0x2e')]({'error':![],'message':_0x51a3('0x38')});})['catch'](handleError(_0x2f8cd0));};exports['answer']=function(_0x43f33a,_0x49fbe5){logger[_0x51a3('0x13')]('answer\x20fired:',_0x43f33a[_0x51a3('0x2c')]);var _0x52c54f=answerValidation['validate'](_0x43f33a[_0x51a3('0x2c')]);if(_0x52c54f[_0x51a3('0x28')]>0x0){return _0x49fbe5[_0x51a3('0x1a')](0x190)[_0x51a3('0x2e')](_0x52c54f);}var _0x4d69ab=_0x43f33a[_0x51a3('0x2c')][_0x51a3('0x2f')];var _0x39be90=_0x43f33a['body']['sessionId'];return getAgent(_0x4d69ab)[_0x51a3('0x1e')](function(_0x42d70d){logger[_0x51a3('0x13')](_0x51a3('0x32'),_0x42d70d[_0x51a3('0x19')]);emit(util[_0x51a3('0x36')](_0x51a3('0x33'),_0x42d70d[_0x51a3('0x19')]),'webbar:answer',{'sessionId':_0x39be90});return _0x49fbe5[_0x51a3('0x1a')](0xc8)[_0x51a3('0x2e')]({'error':![],'message':'answer\x20executed!'});})['catch'](handleError(_0x49fbe5));};exports['hold']=function(_0x4b5d4d,_0x58fbe7){logger[_0x51a3('0x13')](_0x51a3('0x39'),_0x4b5d4d[_0x51a3('0x2c')]);var _0x33fbc9=holdValidation['validate'](_0x4b5d4d[_0x51a3('0x2c')]);if(_0x33fbc9[_0x51a3('0x28')]>0x0){return _0x58fbe7[_0x51a3('0x1a')](0x190)[_0x51a3('0x2e')](_0x33fbc9);}var _0xa1a207=_0x4b5d4d[_0x51a3('0x2c')][_0x51a3('0x2f')];var _0x1a7a02=_0x4b5d4d[_0x51a3('0x2c')][_0x51a3('0x35')];return getAgent(_0xa1a207)[_0x51a3('0x1e')](function(_0x25ac86){logger[_0x51a3('0x13')](_0x51a3('0x32'),_0x25ac86[_0x51a3('0x19')]);emit(util['format']('user:%s',_0x25ac86[_0x51a3('0x19')]),'webbar:hold',{'sessionId':_0x1a7a02});return _0x58fbe7[_0x51a3('0x1a')](0xc8)[_0x51a3('0x2e')]({'error':![],'message':'hold\x20executed!'});})[_0x51a3('0x3a')](handleError(_0x58fbe7));};exports[_0x51a3('0x3b')]=function(_0x487c61,_0x123328){logger[_0x51a3('0x13')]('unhold\x20fired:',_0x487c61['body']);var _0x905f98=unholdValidation[_0x51a3('0x2d')](_0x487c61[_0x51a3('0x2c')]);if(_0x905f98[_0x51a3('0x28')]>0x0){return _0x123328[_0x51a3('0x1a')](0x190)[_0x51a3('0x2e')](_0x905f98);}var _0x1d1fd9=_0x487c61[_0x51a3('0x2c')][_0x51a3('0x2f')];var _0x5616d4=_0x487c61['body']['sessionId'];return getAgent(_0x1d1fd9)[_0x51a3('0x1e')](function(_0x1fe8c9){logger['info'](_0x51a3('0x32'),_0x1fe8c9['name']);emit(util[_0x51a3('0x36')](_0x51a3('0x33'),_0x1fe8c9[_0x51a3('0x19')]),_0x51a3('0x3c'),{'sessionId':_0x5616d4});return _0x123328[_0x51a3('0x1a')](0xc8)[_0x51a3('0x2e')]({'error':![],'message':_0x51a3('0x3d')});})[_0x51a3('0x3a')](handleError(_0x123328));};exports['calls']=function(_0x1c48ad,_0x2120f0){logger[_0x51a3('0x13')]('calls\x20fired:',_0x2120f0[_0x51a3('0x2c')]);var _0x1dce11=callsValidation['validate'](_0x1c48ad[_0x51a3('0x2c')]);if(_0x1dce11[_0x51a3('0x28')]>0x0){return _0x2120f0[_0x51a3('0x1a')](0x190)[_0x51a3('0x2e')](_0x1dce11);}var _0x3fff3a=_0x1c48ad[_0x51a3('0x2c')][_0x51a3('0x2f')];var _0x5d260e=respondWithRpcPromise(_0x51a3('0x3e'));var _0x2ed051=getAgent(_0x3fff3a);return Promise[_0x51a3('0x24')]([_0x5d260e,_0x2ed051])[_0x51a3('0x1e')](function(_0x235fef){var _0x105575=_0x235fef[0x0];var _0x5d9315=_0x235fef[0x1];var _0x2e03bf=_[_0x51a3('0x25')](_0x105575[_0x51a3('0x26')],function(_0x35b02e){return _0x35b02e[_0x51a3('0x27')]==_0x5d9315['id'];});return _0x2120f0[_0x51a3('0x1a')](0xc8)[_0x51a3('0x2e')]({'count':_0x2e03bf['length'],'rows':_0x2e03bf});})['catch'](handleError(_0x2120f0));};exports[_0x51a3('0x3f')]=function(_0x1d6ff4,_0x37275e){logger['info'](_0x51a3('0x40'),_0x1d6ff4[_0x51a3('0x2c')]);var _0x10220e=conferenceValidation[_0x51a3('0x2d')](_0x1d6ff4[_0x51a3('0x2c')]);if(_0x10220e['length']>0x0){return _0x37275e[_0x51a3('0x1a')](0x190)[_0x51a3('0x2e')](_0x10220e);}var _0x28180f=_0x1d6ff4[_0x51a3('0x2c')]['userId'];return getAgent(_0x28180f)[_0x51a3('0x1e')](function(_0x1de406){logger[_0x51a3('0x13')](_0x51a3('0x32'),_0x1de406[_0x51a3('0x19')]);emit(util[_0x51a3('0x36')]('user:%s',_0x1de406[_0x51a3('0x19')]),'webbar:conference');return _0x37275e['status'](0xc8)[_0x51a3('0x2e')]({'error':![],'message':_0x51a3('0x41')});})[_0x51a3('0x3a')](handleError(_0x37275e));};exports[_0x51a3('0x42')]=function(_0x3027ed,_0x41a5bc){logger[_0x51a3('0x13')](_0x51a3('0x43'),_0x3027ed[_0x51a3('0x2c')]);var _0x38d206=transferValidation[_0x51a3('0x2d')](_0x3027ed[_0x51a3('0x2c')]);if(_0x38d206[_0x51a3('0x28')]>0x0){return _0x41a5bc['status'](0x190)[_0x51a3('0x2e')](_0x38d206);}var _0x5820d3=_0x3027ed[_0x51a3('0x2c')][_0x51a3('0x2f')];var _0x12da55=_0x3027ed[_0x51a3('0x2c')]['sessionId'];var _0x1c9524=_0x3027ed[_0x51a3('0x2c')][_0x51a3('0x44')];return getAgent(_0x5820d3)[_0x51a3('0x1e')](function(_0x2997af){logger[_0x51a3('0x13')](_0x51a3('0x32'),_0x2997af[_0x51a3('0x19')]);emit(util[_0x51a3('0x36')](_0x51a3('0x33'),_0x2997af[_0x51a3('0x19')]),_0x51a3('0x45'),{'sessionId':_0x12da55,'transferNumber':_0x1c9524});return _0x41a5bc[_0x51a3('0x1a')](0xc8)[_0x51a3('0x2e')]({'error':![],'message':'transfer\x20executed!'});})['catch'](handleError(_0x41a5bc));};