Built motion from commit e6806ed6.|2.6.0
[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 _0x37f8=['string','callNumber\x20is\x20required','transferNumber\x20is\x20required','stringify','emit','handleError:','error','stack','name','send','status','NotFound','request','then','code','message','result','catch','User','findOne','agent','VoiceChannels','all','filter','rows','UserId','\x20not\x20found!','originate','originate\x20fired:','length','json','body','callbackUrl','entityFound:','format','user:%s','hangup','hangup\x20fired:','sessionId','info','hangup\x20executed!','answer','answer\x20fired:','userId','webbar:answer','answer\x20executed!','hold','hold\x20fired:','webbar:hold','hold\x20executed!','unhold','unhold\x20fired:','webbar:unhold','unhold\x20executed!','calls','calls\x20fired:','conference','conference\x20fired:','webbar:conference','conference\x20executed!','transfer','webbar:transfer','lodash','../../mysqldb','../../config/environment','util','jayson/promise','redis','defaults','localhost','socket.io-emitter','validate','number','userId\x20is\x20required'];(function(_0x34eabc,_0x51d411){var _0x43e72f=function(_0x5619e8){while(--_0x5619e8){_0x34eabc['push'](_0x34eabc['shift']());}};_0x43e72f(++_0x51d411);}(_0x37f8,0xd2));var _0x837f=function(_0xced668,_0x2396b2){_0xced668=_0xced668-0x0;var _0x3bfd62=_0x37f8[_0xced668];return _0x3bfd62;};'use strict';var path=require('path');var fs=require('fs');var _=require(_0x837f('0x0'));var db=require(_0x837f('0x1'))['db'];var config=require(_0x837f('0x2'));var util=require(_0x837f('0x3'));var BPromise=require('bluebird');var jayson=require(_0x837f('0x4'));var amiClient=jayson['client']['http']({'port':0x232a});var logger=require('../../config/logger')('webbarapi');var Redis=require('ioredis');config[_0x837f('0x5')]=_[_0x837f('0x6')](config[_0x837f('0x5')],{'host':_0x837f('0x7'),'port':0x18eb});var io=require(_0x837f('0x8'))(new Redis(config[_0x837f('0x5')]));var Schema=require(_0x837f('0x9'));var originateValidation=new Schema({'userId':{'type':_0x837f('0xa'),'required':[!![],_0x837f('0xb')]},'callNumber':{'type':_0x837f('0xc'),'required':[!![],_0x837f('0xd')]},'callerId':{'type':_0x837f('0xc')},'callbackUrl':{'type':_0x837f('0xc')}});var hangupValidation=new Schema({'userId':{'type':_0x837f('0xa'),'required':[!![],_0x837f('0xb')]},'sessionId':{'type':'string','required':![]}});var answerValidation=new Schema({'userId':{'type':_0x837f('0xa'),'required':[!![],_0x837f('0xb')]},'sessionId':{'type':_0x837f('0xc'),'required':![]}});var transferValidation=new Schema({'userId':{'type':_0x837f('0xa'),'required':[!![],_0x837f('0xb')]},'sessionId':{'type':'string','required':[!![],'sessionId\x20is\x20required']},'transferNumber':{'type':_0x837f('0xc'),'required':[!![],_0x837f('0xe')]}});var holdValidation=new Schema({'userId':{'type':_0x837f('0xa'),'required':[!![],_0x837f('0xb')]},'sessionId':{'type':_0x837f('0xc'),'required':![]}});var unholdValidation=new Schema({'userId':{'type':'number','required':[!![],_0x837f('0xb')]},'sessionId':{'type':_0x837f('0xc'),'required':![]}});var callsValidation=new Schema({'userId':{'type':_0x837f('0xa'),'required':[!![],_0x837f('0xb')]}});var conferenceValidation=new Schema({'userId':{'type':_0x837f('0xa'),'required':[!![],_0x837f('0xb')]}});function emit(_0x546352,_0x11f37a,_0x2f2617){logger['info'](_0x546352,_0x11f37a,JSON[_0x837f('0xf')](_0x2f2617));io['to'](_0x546352)[_0x837f('0x10')](_0x11f37a,_0x2f2617);}function handleError(_0x28baaf){return function(_0x1d17b3){console['log'](_0x837f('0x11'),_0x1d17b3,_0x1d17b3 instanceof RangeError);logger[_0x837f('0x12')](_0x1d17b3[_0x837f('0x13')]);if(_0x1d17b3 instanceof RangeError){if(_0x1d17b3[_0x837f('0x14')]){delete _0x1d17b3[_0x837f('0x14')];}_0x28baaf['status'](0x194)[_0x837f('0x15')](_0x1d17b3);}else{if(_0x1d17b3[_0x837f('0x14')]){delete _0x1d17b3[_0x837f('0x14')];}_0x28baaf[_0x837f('0x16')](0x1f4)[_0x837f('0x15')](_0x1d17b3);}};}function checkError(){return function(_0x55dc1e){if(!_0x55dc1e){throw new RangeError(_0x837f('0x17'));}return _0x55dc1e;};}function respondWithRpcPromise(_0x37d7e0,_0x287c6e){return new BPromise(function(_0xe68eb1,_0xa0af78){var _0x237656=amiClient;return _0x237656[_0x837f('0x18')](_0x37d7e0,_0x287c6e)[_0x837f('0x19')](function(_0x11a9b3){if(_0x11a9b3[_0x837f('0x12')]){if(_0x11a9b3[_0x837f('0x12')][_0x837f('0x1a')]===0x1f4){return _0xa0af78(_0x11a9b3[_0x837f('0x12')][_0x837f('0x1b')]);}return _0xe68eb1(_0x11a9b3[_0x837f('0x12')][_0x837f('0x1b')]);}else{_0xe68eb1(_0x11a9b3[_0x837f('0x1c')]);}})[_0x837f('0x1d')](function(_0x1a6f26){_0xa0af78(_0x1a6f26);});});}function getAgent(_0x3af34f){return db[_0x837f('0x1e')][_0x837f('0x1f')]({'where':{'id':_0x3af34f,'role':_0x837f('0x20')}})['then'](checkError());}function getAgentCheckSession(_0x3f467d,_0x2df32d){return new BPromise(function(_0x4290e6,_0x5d7af3){var _0x530f6d=respondWithRpcPromise(_0x837f('0x21'));var _0x1ab2e4=getAgent(_0x3f467d);Promise[_0x837f('0x22')]([_0x530f6d,_0x1ab2e4])[_0x837f('0x19')](function(_0x30a3d9){var _0x387533=_0x30a3d9[0x0];var _0x323565=_0x30a3d9[0x1];var _0x507984=_[_0x837f('0x23')](_0x387533[_0x837f('0x24')],function(_0x266871){return _0x266871[_0x837f('0x25')]==_0x323565['id']&&_0x266871['sessionId']==_0x2df32d;});if(_0x507984['length']==0x1){_0x4290e6(_0x323565);}else{_0x5d7af3(new RangeError('sessionId\x20'+_0x2df32d+_0x837f('0x26')));}});});}exports[_0x837f('0x27')]=function(_0x2f6ab5,_0x422498){logger['info'](_0x837f('0x28'),_0x2f6ab5['body']);var _0x3997ab=originateValidation['validate'](_0x2f6ab5['body']);if(_0x3997ab[_0x837f('0x29')]>0x0){return _0x422498[_0x837f('0x16')](0x190)[_0x837f('0x2a')](_0x3997ab);}var _0x5200a9=_0x2f6ab5[_0x837f('0x2b')]['userId'];var _0x56ddfc=_0x2f6ab5[_0x837f('0x2b')]['callNumber'];var _0x2c3337=_0x2f6ab5[_0x837f('0x2b')]['callerId'];var _0x245342=_0x2f6ab5[_0x837f('0x2b')][_0x837f('0x2c')];return getAgent(_0x5200a9)[_0x837f('0x19')](function(_0x26bde0){logger['info'](_0x837f('0x2d'),_0x26bde0[_0x837f('0x14')]);emit(util[_0x837f('0x2e')](_0x837f('0x2f'),_0x26bde0[_0x837f('0x14')]),'webbar:originate',{'callNumber':_0x56ddfc,'callerId':_0x2c3337,'callbackUrl':_0x245342});return _0x422498['status'](0xc8)[_0x837f('0x2a')]({'error':![],'message':'originate\x20executed!'});})['catch'](handleError(_0x422498));};exports[_0x837f('0x30')]=function(_0x1c7352,_0x554b11){logger['info'](_0x837f('0x31'),_0x1c7352[_0x837f('0x2b')]);var _0x1e0584=hangupValidation['validate'](_0x1c7352[_0x837f('0x2b')]);if(_0x1e0584[_0x837f('0x29')]>0x0){return _0x554b11[_0x837f('0x16')](0x190)[_0x837f('0x2a')](_0x1e0584);}var _0x2ed1de=_0x1c7352['body']['userId'];var _0x3a9566=_0x1c7352[_0x837f('0x2b')][_0x837f('0x32')];return getAgent(_0x2ed1de)['then'](function(_0x5e001c){logger[_0x837f('0x33')](_0x837f('0x2d'),_0x5e001c[_0x837f('0x14')]);emit(util['format'](_0x837f('0x2f'),_0x5e001c[_0x837f('0x14')]),'webbar:hangup',{'sessionId':_0x3a9566});return _0x554b11['status'](0xc8)['json']({'error':![],'message':_0x837f('0x34')});})[_0x837f('0x1d')](handleError(_0x554b11));};exports[_0x837f('0x35')]=function(_0x4591db,_0x15e50d){logger[_0x837f('0x33')](_0x837f('0x36'),_0x4591db[_0x837f('0x2b')]);var _0xdbd892=answerValidation[_0x837f('0x9')](_0x4591db['body']);if(_0xdbd892[_0x837f('0x29')]>0x0){return _0x15e50d[_0x837f('0x16')](0x190)['json'](_0xdbd892);}var _0xc2e307=_0x4591db[_0x837f('0x2b')][_0x837f('0x37')];var _0x443e7c=_0x4591db[_0x837f('0x2b')][_0x837f('0x32')];return getAgent(_0xc2e307)['then'](function(_0x24c03c){logger[_0x837f('0x33')](_0x837f('0x2d'),_0x24c03c[_0x837f('0x14')]);emit(util[_0x837f('0x2e')](_0x837f('0x2f'),_0x24c03c[_0x837f('0x14')]),_0x837f('0x38'),{'sessionId':_0x443e7c});return _0x15e50d['status'](0xc8)[_0x837f('0x2a')]({'error':![],'message':_0x837f('0x39')});})['catch'](handleError(_0x15e50d));};exports[_0x837f('0x3a')]=function(_0x400ccd,_0x5ce967){logger[_0x837f('0x33')](_0x837f('0x3b'),_0x400ccd[_0x837f('0x2b')]);var _0x45af4a=holdValidation[_0x837f('0x9')](_0x400ccd[_0x837f('0x2b')]);if(_0x45af4a['length']>0x0){return _0x5ce967[_0x837f('0x16')](0x190)['json'](_0x45af4a);}var _0x1146ef=_0x400ccd[_0x837f('0x2b')][_0x837f('0x37')];var _0x39ce8b=_0x400ccd[_0x837f('0x2b')][_0x837f('0x32')];return getAgent(_0x1146ef)['then'](function(_0x554f74){logger['info'](_0x837f('0x2d'),_0x554f74[_0x837f('0x14')]);emit(util['format'](_0x837f('0x2f'),_0x554f74['name']),_0x837f('0x3c'),{'sessionId':_0x39ce8b});return _0x5ce967[_0x837f('0x16')](0xc8)[_0x837f('0x2a')]({'error':![],'message':_0x837f('0x3d')});})[_0x837f('0x1d')](handleError(_0x5ce967));};exports[_0x837f('0x3e')]=function(_0x4d9156,_0x23406b){logger['info'](_0x837f('0x3f'),_0x4d9156[_0x837f('0x2b')]);var _0x3734a6=unholdValidation['validate'](_0x4d9156[_0x837f('0x2b')]);if(_0x3734a6[_0x837f('0x29')]>0x0){return _0x23406b[_0x837f('0x16')](0x190)[_0x837f('0x2a')](_0x3734a6);}var _0x1dec94=_0x4d9156[_0x837f('0x2b')]['userId'];var _0x5446d8=_0x4d9156[_0x837f('0x2b')][_0x837f('0x32')];return getAgent(_0x1dec94)[_0x837f('0x19')](function(_0x4c36f0){logger[_0x837f('0x33')]('entityFound:',_0x4c36f0[_0x837f('0x14')]);emit(util['format'](_0x837f('0x2f'),_0x4c36f0[_0x837f('0x14')]),_0x837f('0x40'),{'sessionId':_0x5446d8});return _0x23406b[_0x837f('0x16')](0xc8)[_0x837f('0x2a')]({'error':![],'message':_0x837f('0x41')});})[_0x837f('0x1d')](handleError(_0x23406b));};exports[_0x837f('0x42')]=function(_0x2322d8,_0x3b9899){logger[_0x837f('0x33')](_0x837f('0x43'),_0x3b9899['body']);var _0x4ade1b=callsValidation[_0x837f('0x9')](_0x2322d8['body']);if(_0x4ade1b[_0x837f('0x29')]>0x0){return _0x3b9899[_0x837f('0x16')](0x190)[_0x837f('0x2a')](_0x4ade1b);}var _0x11bde4=_0x2322d8[_0x837f('0x2b')][_0x837f('0x37')];var _0x438d93=respondWithRpcPromise(_0x837f('0x21'));var _0x145e5d=getAgent(_0x11bde4);return Promise[_0x837f('0x22')]([_0x438d93,_0x145e5d])[_0x837f('0x19')](function(_0x13d01a){var _0x2b528a=_0x13d01a[0x0];var _0x48440f=_0x13d01a[0x1];var _0x476acd=_[_0x837f('0x23')](_0x2b528a[_0x837f('0x24')],function(_0x5acfab){return _0x5acfab[_0x837f('0x25')]==_0x48440f['id'];});return _0x3b9899[_0x837f('0x16')](0xc8)[_0x837f('0x2a')]({'count':_0x476acd[_0x837f('0x29')],'rows':_0x476acd});})[_0x837f('0x1d')](handleError(_0x3b9899));};exports[_0x837f('0x44')]=function(_0x536075,_0x48fa74){logger[_0x837f('0x33')](_0x837f('0x45'),_0x536075[_0x837f('0x2b')]);var _0x5a2868=conferenceValidation[_0x837f('0x9')](_0x536075[_0x837f('0x2b')]);if(_0x5a2868[_0x837f('0x29')]>0x0){return _0x48fa74[_0x837f('0x16')](0x190)['json'](_0x5a2868);}var _0x35f2f3=_0x536075[_0x837f('0x2b')][_0x837f('0x37')];return getAgent(_0x35f2f3)['then'](function(_0x53c966){logger['info'](_0x837f('0x2d'),_0x53c966[_0x837f('0x14')]);emit(util[_0x837f('0x2e')](_0x837f('0x2f'),_0x53c966[_0x837f('0x14')]),_0x837f('0x46'));return _0x48fa74[_0x837f('0x16')](0xc8)[_0x837f('0x2a')]({'error':![],'message':_0x837f('0x47')});})[_0x837f('0x1d')](handleError(_0x48fa74));};exports[_0x837f('0x48')]=function(_0x1022a7,_0x1b6747){logger[_0x837f('0x33')]('transfer\x20fired:',_0x1022a7['body']);var _0x50a01e=transferValidation[_0x837f('0x9')](_0x1022a7[_0x837f('0x2b')]);if(_0x50a01e[_0x837f('0x29')]>0x0){return _0x1b6747[_0x837f('0x16')](0x190)[_0x837f('0x2a')](_0x50a01e);}var _0xf00bc5=_0x1022a7['body'][_0x837f('0x37')];var _0x239981=_0x1022a7['body'][_0x837f('0x32')];var _0x1d43f6=_0x1022a7[_0x837f('0x2b')]['transferNumber'];return getAgent(_0xf00bc5)[_0x837f('0x19')](function(_0x365bff){logger[_0x837f('0x33')]('entityFound:',_0x365bff['name']);emit(util[_0x837f('0x2e')]('user:%s',_0x365bff[_0x837f('0x14')]),_0x837f('0x49'),{'sessionId':_0x239981,'transferNumber':_0x1d43f6});return _0x1b6747[_0x837f('0x16')](0xc8)[_0x837f('0x2a')]({'error':![],'message':'transfer\x20executed!'});})[_0x837f('0x1d')](handleError(_0x1b6747));};