Built motion from commit (unavailable).|2.5.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 _0x5645=['catch','findOne','agent','then','VoiceChannels','all','filter','rows','UserId','sessionId','length','sessionId\x20','originate','originate\x20fired:','body','json','userId','callNumber','callerId','callbackUrl','user:%s','webbar:originate','originate\x20executed!','hangup','hangup\x20fired:','entityFound:','format','hangup\x20executed!','answer','answer\x20fired:','webbar:answer','hold','hold\x20fired:','webbar:hold','unhold\x20fired:','unhold\x20executed!','calls\x20fired:','conference','conference\x20fired:','conference\x20executed!','transfer\x20fired:','transferNumber','webbar:transfer','transfer\x20executed!','path','lodash','../../mysqldb','../../config/environment','util','jayson/promise','client','http','../../config/logger','webbarapi','ioredis','redis','defaults','validate','number','userId\x20is\x20required','string','info','emit','log','handleError:','error','stack','name','status','send','request','code','message','result'];(function(_0x171129,_0x3aab82){var _0x59c218=function(_0x5292bd){while(--_0x5292bd){_0x171129['push'](_0x171129['shift']());}};_0x59c218(++_0x3aab82);}(_0x5645,0x19e));var _0x5564=function(_0x45bdae,_0x41eb62){_0x45bdae=_0x45bdae-0x0;var _0xcb8501=_0x5645[_0x45bdae];return _0xcb8501;};'use strict';var path=require(_0x5564('0x0'));var fs=require('fs');var _=require(_0x5564('0x1'));var db=require(_0x5564('0x2'))['db'];var config=require(_0x5564('0x3'));var util=require(_0x5564('0x4'));var BPromise=require('bluebird');var jayson=require(_0x5564('0x5'));var amiClient=jayson[_0x5564('0x6')][_0x5564('0x7')]({'port':0x232a});var logger=require(_0x5564('0x8'))(_0x5564('0x9'));var Redis=require(_0x5564('0xa'));config[_0x5564('0xb')]=_[_0x5564('0xc')](config[_0x5564('0xb')],{'host':'localhost','port':0x18eb});var io=require('socket.io-emitter')(new Redis(config[_0x5564('0xb')]));var Schema=require(_0x5564('0xd'));var originateValidation=new Schema({'userId':{'type':_0x5564('0xe'),'required':[!![],_0x5564('0xf')]},'callNumber':{'type':_0x5564('0x10'),'required':[!![],'callNumber\x20is\x20required']},'callerId':{'type':_0x5564('0x10')},'callbackUrl':{'type':_0x5564('0x10')}});var hangupValidation=new Schema({'userId':{'type':'number','required':[!![],_0x5564('0xf')]},'sessionId':{'type':_0x5564('0x10'),'required':![]}});var answerValidation=new Schema({'userId':{'type':_0x5564('0xe'),'required':[!![],_0x5564('0xf')]},'sessionId':{'type':_0x5564('0x10'),'required':![]}});var transferValidation=new Schema({'userId':{'type':_0x5564('0xe'),'required':[!![],_0x5564('0xf')]},'sessionId':{'type':_0x5564('0x10'),'required':[!![],'sessionId\x20is\x20required']},'transferNumber':{'type':_0x5564('0x10'),'required':[!![],'transferNumber\x20is\x20required']}});var holdValidation=new Schema({'userId':{'type':_0x5564('0xe'),'required':[!![],_0x5564('0xf')]},'sessionId':{'type':'string','required':![]}});var unholdValidation=new Schema({'userId':{'type':_0x5564('0xe'),'required':[!![],_0x5564('0xf')]},'sessionId':{'type':_0x5564('0x10'),'required':![]}});var callsValidation=new Schema({'userId':{'type':_0x5564('0xe'),'required':[!![],_0x5564('0xf')]}});var conferenceValidation=new Schema({'userId':{'type':_0x5564('0xe'),'required':[!![],'userId\x20is\x20required']}});function emit(_0x190d8e,_0x30f3fa,_0x12285c){logger[_0x5564('0x11')](_0x190d8e,_0x30f3fa,JSON['stringify'](_0x12285c));io['to'](_0x190d8e)[_0x5564('0x12')](_0x30f3fa,_0x12285c);}function handleError(_0x39ce17){return function(_0x2f4761){console[_0x5564('0x13')](_0x5564('0x14'),_0x2f4761,_0x2f4761 instanceof RangeError);logger[_0x5564('0x15')](_0x2f4761[_0x5564('0x16')]);if(_0x2f4761 instanceof RangeError){if(_0x2f4761[_0x5564('0x17')]){delete _0x2f4761[_0x5564('0x17')];}_0x39ce17[_0x5564('0x18')](0x194)[_0x5564('0x19')](_0x2f4761);}else{if(_0x2f4761[_0x5564('0x17')]){delete _0x2f4761[_0x5564('0x17')];}_0x39ce17['status'](0x1f4)[_0x5564('0x19')](_0x2f4761);}};}function checkError(){return function(_0x3a34e6){if(!_0x3a34e6){throw new RangeError('NotFound');}return _0x3a34e6;};}function respondWithRpcPromise(_0x2cd0ae,_0xa7583){return new BPromise(function(_0x537842,_0x15328b){var _0x40f145=amiClient;return _0x40f145[_0x5564('0x1a')](_0x2cd0ae,_0xa7583)['then'](function(_0x364b6f){if(_0x364b6f[_0x5564('0x15')]){if(_0x364b6f[_0x5564('0x15')][_0x5564('0x1b')]===0x1f4){return _0x15328b(_0x364b6f[_0x5564('0x15')][_0x5564('0x1c')]);}return _0x537842(_0x364b6f[_0x5564('0x15')][_0x5564('0x1c')]);}else{_0x537842(_0x364b6f[_0x5564('0x1d')]);}})[_0x5564('0x1e')](function(_0x1a8a00){_0x15328b(_0x1a8a00);});});}function getAgent(_0x2aa2b0){return db['User'][_0x5564('0x1f')]({'where':{'id':_0x2aa2b0,'role':_0x5564('0x20')}})[_0x5564('0x21')](checkError());}function getAgentCheckSession(_0x50d02e,_0x3aaea9){return new BPromise(function(_0x8ad073,_0x3126fc){var _0x4c391f=respondWithRpcPromise(_0x5564('0x22'));var _0xee6731=getAgent(_0x50d02e);Promise[_0x5564('0x23')]([_0x4c391f,_0xee6731])[_0x5564('0x21')](function(_0x5c35e4){var _0x140c36=_0x5c35e4[0x0];var _0x5540cc=_0x5c35e4[0x1];var _0x1ea93e=_[_0x5564('0x24')](_0x140c36[_0x5564('0x25')],function(_0x5c197f){return _0x5c197f[_0x5564('0x26')]==_0x5540cc['id']&&_0x5c197f[_0x5564('0x27')]==_0x3aaea9;});if(_0x1ea93e[_0x5564('0x28')]==0x1){_0x8ad073(_0x5540cc);}else{_0x3126fc(new RangeError(_0x5564('0x29')+_0x3aaea9+'\x20not\x20found!'));}});});}exports[_0x5564('0x2a')]=function(_0x262d89,_0x3fb210){logger['info'](_0x5564('0x2b'),_0x262d89[_0x5564('0x2c')]);var _0xdb029=originateValidation[_0x5564('0xd')](_0x262d89[_0x5564('0x2c')]);if(_0xdb029[_0x5564('0x28')]>0x0){return _0x3fb210['status'](0x190)[_0x5564('0x2d')](_0xdb029);}var _0x222097=_0x262d89[_0x5564('0x2c')][_0x5564('0x2e')];var _0x127630=_0x262d89[_0x5564('0x2c')][_0x5564('0x2f')];var _0x5db16a=_0x262d89[_0x5564('0x2c')][_0x5564('0x30')];var _0x44682e=_0x262d89['body'][_0x5564('0x31')];return getAgent(_0x222097)[_0x5564('0x21')](function(_0x4b3fc7){logger[_0x5564('0x11')]('entityFound:',_0x4b3fc7['name']);emit(util['format'](_0x5564('0x32'),_0x4b3fc7[_0x5564('0x17')]),_0x5564('0x33'),{'callNumber':_0x127630,'callerId':_0x5db16a,'callbackUrl':_0x44682e});return _0x3fb210[_0x5564('0x18')](0xc8)['json']({'error':![],'message':_0x5564('0x34')});})[_0x5564('0x1e')](handleError(_0x3fb210));};exports[_0x5564('0x35')]=function(_0x5c5aab,_0x56d1ee){logger['info'](_0x5564('0x36'),_0x5c5aab[_0x5564('0x2c')]);var _0x1c53ea=hangupValidation[_0x5564('0xd')](_0x5c5aab[_0x5564('0x2c')]);if(_0x1c53ea[_0x5564('0x28')]>0x0){return _0x56d1ee[_0x5564('0x18')](0x190)['json'](_0x1c53ea);}var _0x36a535=_0x5c5aab[_0x5564('0x2c')][_0x5564('0x2e')];var _0x23aa8d=_0x5c5aab[_0x5564('0x2c')][_0x5564('0x27')];return getAgent(_0x36a535)[_0x5564('0x21')](function(_0x4af931){logger[_0x5564('0x11')](_0x5564('0x37'),_0x4af931['name']);emit(util[_0x5564('0x38')](_0x5564('0x32'),_0x4af931['name']),'webbar:hangup',{'sessionId':_0x23aa8d});return _0x56d1ee['status'](0xc8)[_0x5564('0x2d')]({'error':![],'message':_0x5564('0x39')});})[_0x5564('0x1e')](handleError(_0x56d1ee));};exports[_0x5564('0x3a')]=function(_0x104b9c,_0x53ad40){logger[_0x5564('0x11')](_0x5564('0x3b'),_0x104b9c[_0x5564('0x2c')]);var _0x1d7deb=answerValidation[_0x5564('0xd')](_0x104b9c[_0x5564('0x2c')]);if(_0x1d7deb[_0x5564('0x28')]>0x0){return _0x53ad40['status'](0x190)['json'](_0x1d7deb);}var _0x1e7032=_0x104b9c[_0x5564('0x2c')][_0x5564('0x2e')];var _0x590518=_0x104b9c[_0x5564('0x2c')][_0x5564('0x27')];return getAgent(_0x1e7032)[_0x5564('0x21')](function(_0x53b1f0){logger[_0x5564('0x11')](_0x5564('0x37'),_0x53b1f0[_0x5564('0x17')]);emit(util[_0x5564('0x38')]('user:%s',_0x53b1f0[_0x5564('0x17')]),_0x5564('0x3c'),{'sessionId':_0x590518});return _0x53ad40['status'](0xc8)['json']({'error':![],'message':'answer\x20executed!'});})['catch'](handleError(_0x53ad40));};exports[_0x5564('0x3d')]=function(_0x514f89,_0x7a4e12){logger[_0x5564('0x11')](_0x5564('0x3e'),_0x514f89[_0x5564('0x2c')]);var _0x34539b=holdValidation[_0x5564('0xd')](_0x514f89[_0x5564('0x2c')]);if(_0x34539b[_0x5564('0x28')]>0x0){return _0x7a4e12['status'](0x190)[_0x5564('0x2d')](_0x34539b);}var _0x44b2c9=_0x514f89[_0x5564('0x2c')][_0x5564('0x2e')];var _0x5895a3=_0x514f89[_0x5564('0x2c')][_0x5564('0x27')];return getAgent(_0x44b2c9)[_0x5564('0x21')](function(_0x4ae0be){logger['info'](_0x5564('0x37'),_0x4ae0be['name']);emit(util[_0x5564('0x38')](_0x5564('0x32'),_0x4ae0be[_0x5564('0x17')]),_0x5564('0x3f'),{'sessionId':_0x5895a3});return _0x7a4e12[_0x5564('0x18')](0xc8)['json']({'error':![],'message':'hold\x20executed!'});})['catch'](handleError(_0x7a4e12));};exports['unhold']=function(_0x20b948,_0x275129){logger['info'](_0x5564('0x40'),_0x20b948[_0x5564('0x2c')]);var _0x37719a=unholdValidation[_0x5564('0xd')](_0x20b948['body']);if(_0x37719a['length']>0x0){return _0x275129[_0x5564('0x18')](0x190)[_0x5564('0x2d')](_0x37719a);}var _0x94ff19=_0x20b948[_0x5564('0x2c')]['userId'];var _0x4db556=_0x20b948[_0x5564('0x2c')][_0x5564('0x27')];return getAgent(_0x94ff19)[_0x5564('0x21')](function(_0x285ed3){logger['info']('entityFound:',_0x285ed3[_0x5564('0x17')]);emit(util[_0x5564('0x38')](_0x5564('0x32'),_0x285ed3[_0x5564('0x17')]),'webbar:unhold',{'sessionId':_0x4db556});return _0x275129['status'](0xc8)[_0x5564('0x2d')]({'error':![],'message':_0x5564('0x41')});})['catch'](handleError(_0x275129));};exports['calls']=function(_0x1e849e,_0x1ff7b9){logger[_0x5564('0x11')](_0x5564('0x42'),_0x1ff7b9[_0x5564('0x2c')]);var _0x49348e=callsValidation[_0x5564('0xd')](_0x1e849e[_0x5564('0x2c')]);if(_0x49348e[_0x5564('0x28')]>0x0){return _0x1ff7b9['status'](0x190)[_0x5564('0x2d')](_0x49348e);}var _0x4b9aeb=_0x1e849e[_0x5564('0x2c')]['userId'];var _0x11dfbe=respondWithRpcPromise(_0x5564('0x22'));var _0xca9854=getAgent(_0x4b9aeb);return Promise[_0x5564('0x23')]([_0x11dfbe,_0xca9854])[_0x5564('0x21')](function(_0xb90be8){var _0x1220f8=_0xb90be8[0x0];var _0x50bf84=_0xb90be8[0x1];var _0xe0143=_[_0x5564('0x24')](_0x1220f8['rows'],function(_0x3341b8){return _0x3341b8[_0x5564('0x26')]==_0x50bf84['id'];});return _0x1ff7b9[_0x5564('0x18')](0xc8)[_0x5564('0x2d')]({'count':_0xe0143[_0x5564('0x28')],'rows':_0xe0143});})[_0x5564('0x1e')](handleError(_0x1ff7b9));};exports[_0x5564('0x43')]=function(_0x2f9682,_0x451c8f){logger[_0x5564('0x11')](_0x5564('0x44'),_0x2f9682[_0x5564('0x2c')]);var _0x411481=conferenceValidation[_0x5564('0xd')](_0x2f9682[_0x5564('0x2c')]);if(_0x411481[_0x5564('0x28')]>0x0){return _0x451c8f['status'](0x190)[_0x5564('0x2d')](_0x411481);}var _0x53de17=_0x2f9682[_0x5564('0x2c')][_0x5564('0x2e')];return getAgent(_0x53de17)[_0x5564('0x21')](function(_0x510f11){logger[_0x5564('0x11')](_0x5564('0x37'),_0x510f11[_0x5564('0x17')]);emit(util['format'](_0x5564('0x32'),_0x510f11[_0x5564('0x17')]),'webbar:conference');return _0x451c8f['status'](0xc8)['json']({'error':![],'message':_0x5564('0x45')});})['catch'](handleError(_0x451c8f));};exports['transfer']=function(_0x37db7e,_0x91ec4){logger[_0x5564('0x11')](_0x5564('0x46'),_0x37db7e[_0x5564('0x2c')]);var _0x350991=transferValidation[_0x5564('0xd')](_0x37db7e[_0x5564('0x2c')]);if(_0x350991[_0x5564('0x28')]>0x0){return _0x91ec4[_0x5564('0x18')](0x190)['json'](_0x350991);}var _0x4866db=_0x37db7e['body'][_0x5564('0x2e')];var _0x487c56=_0x37db7e[_0x5564('0x2c')][_0x5564('0x27')];var _0x592961=_0x37db7e[_0x5564('0x2c')][_0x5564('0x47')];return getAgent(_0x4866db)[_0x5564('0x21')](function(_0x1aa5bb){logger['info']('entityFound:',_0x1aa5bb[_0x5564('0x17')]);emit(util[_0x5564('0x38')](_0x5564('0x32'),_0x1aa5bb['name']),_0x5564('0x48'),{'sessionId':_0x487c56,'transferNumber':_0x592961});return _0x91ec4[_0x5564('0x18')](0xc8)[_0x5564('0x2d')]({'error':![],'message':_0x5564('0x49')});})[_0x5564('0x1e')](handleError(_0x91ec4));};