Built motion from commit dbf3a7e2.|2.6.30
[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 _0x462e=['entityFound:','format','webbar:originate','originate\x20executed!','hangup','hangup\x20fired:','user:%s','webbar:hangup','hangup\x20executed!','answer','answer\x20fired:','webbar:answer','hold\x20fired:','hold\x20executed!','unhold','unhold\x20fired:','unhold\x20executed!','calls','calls\x20fired:','all','conference','conference\x20fired:','webbar:conference','conference\x20executed!','transfer','transfer\x20fired:','transferNumber','transfer\x20executed!','path','lodash','../../mysqldb','../../config/environment','util','jayson/promise','client','http','../../config/logger','ioredis','redis','defaults','localhost','validate','number','userId\x20is\x20required','callNumber\x20is\x20required','string','sessionId\x20is\x20required','transferNumber\x20is\x20required','stringify','log','handleError:','error','name','status','send','then','message','result','catch','findOne','VoiceChannels','rows','sessionId','length','info','originate\x20fired:','body','json','userId','callNumber','callerId','callbackUrl'];(function(_0x2179f1,_0x21c653){var _0x176ec9=function(_0x4c4a4c){while(--_0x4c4a4c){_0x2179f1['push'](_0x2179f1['shift']());}};_0x176ec9(++_0x21c653);}(_0x462e,0x13c));var _0xe462=function(_0x3a11d6,_0x4cf2f3){_0x3a11d6=_0x3a11d6-0x0;var _0x46a0a0=_0x462e[_0x3a11d6];return _0x46a0a0;};'use strict';var path=require(_0xe462('0x0'));var fs=require('fs');var _=require(_0xe462('0x1'));var db=require(_0xe462('0x2'))['db'];var config=require(_0xe462('0x3'));var util=require(_0xe462('0x4'));var BPromise=require('bluebird');var jayson=require(_0xe462('0x5'));var amiClient=jayson[_0xe462('0x6')][_0xe462('0x7')]({'port':0x232a});var logger=require(_0xe462('0x8'))('webbarapi');var Redis=require(_0xe462('0x9'));config[_0xe462('0xa')]=_[_0xe462('0xb')](config[_0xe462('0xa')],{'host':_0xe462('0xc'),'port':0x18eb});var io=require('socket.io-emitter')(new Redis(config[_0xe462('0xa')]));var Schema=require(_0xe462('0xd'));var originateValidation=new Schema({'userId':{'type':_0xe462('0xe'),'required':[!![],_0xe462('0xf')]},'callNumber':{'type':'string','required':[!![],_0xe462('0x10')]},'callerId':{'type':_0xe462('0x11')},'callbackUrl':{'type':_0xe462('0x11')}});var hangupValidation=new Schema({'userId':{'type':'number','required':[!![],_0xe462('0xf')]},'sessionId':{'type':_0xe462('0x11'),'required':![]}});var answerValidation=new Schema({'userId':{'type':_0xe462('0xe'),'required':[!![],'userId\x20is\x20required']},'sessionId':{'type':_0xe462('0x11'),'required':![]}});var transferValidation=new Schema({'userId':{'type':_0xe462('0xe'),'required':[!![],_0xe462('0xf')]},'sessionId':{'type':'string','required':[!![],_0xe462('0x12')]},'transferNumber':{'type':'string','required':[!![],_0xe462('0x13')]}});var holdValidation=new Schema({'userId':{'type':'number','required':[!![],_0xe462('0xf')]},'sessionId':{'type':_0xe462('0x11'),'required':![]}});var unholdValidation=new Schema({'userId':{'type':_0xe462('0xe'),'required':[!![],'userId\x20is\x20required']},'sessionId':{'type':_0xe462('0x11'),'required':![]}});var callsValidation=new Schema({'userId':{'type':'number','required':[!![],_0xe462('0xf')]}});var conferenceValidation=new Schema({'userId':{'type':'number','required':[!![],_0xe462('0xf')]}});function emit(_0x48eefb,_0x5e70b5,_0x1f60de){logger['info'](_0x48eefb,_0x5e70b5,JSON[_0xe462('0x14')](_0x1f60de));io['to'](_0x48eefb)['emit'](_0x5e70b5,_0x1f60de);}function handleError(_0x29f022){return function(_0x114dbc){console[_0xe462('0x15')](_0xe462('0x16'),_0x114dbc,_0x114dbc instanceof RangeError);logger[_0xe462('0x17')](_0x114dbc['stack']);if(_0x114dbc instanceof RangeError){if(_0x114dbc['name']){delete _0x114dbc[_0xe462('0x18')];}_0x29f022[_0xe462('0x19')](0x194)['send'](_0x114dbc);}else{if(_0x114dbc['name']){delete _0x114dbc[_0xe462('0x18')];}_0x29f022['status'](0x1f4)[_0xe462('0x1a')](_0x114dbc);}};}function checkError(){return function(_0x3b0088){if(!_0x3b0088){throw new RangeError('NotFound');}return _0x3b0088;};}function respondWithRpcPromise(_0x214eb7,_0x5568a4){return new BPromise(function(_0x3983cc,_0x4a8ec4){var _0x43bf72=amiClient;return _0x43bf72['request'](_0x214eb7,_0x5568a4)[_0xe462('0x1b')](function(_0x1d015f){if(_0x1d015f[_0xe462('0x17')]){if(_0x1d015f['error']['code']===0x1f4){return _0x4a8ec4(_0x1d015f[_0xe462('0x17')]['message']);}return _0x3983cc(_0x1d015f['error'][_0xe462('0x1c')]);}else{_0x3983cc(_0x1d015f[_0xe462('0x1d')]);}})[_0xe462('0x1e')](function(_0x4c4096){_0x4a8ec4(_0x4c4096);});});}function getAgent(_0x5c0bd9){return db['User'][_0xe462('0x1f')]({'where':{'id':_0x5c0bd9,'role':'agent'}})[_0xe462('0x1b')](checkError());}function getAgentCheckSession(_0x381153,_0x5a2808){return new BPromise(function(_0x186b6a,_0xabffde){var _0x35cb55=respondWithRpcPromise(_0xe462('0x20'));var _0x1e4207=getAgent(_0x381153);Promise['all']([_0x35cb55,_0x1e4207])[_0xe462('0x1b')](function(_0x53c168){var _0x2ecd17=_0x53c168[0x0];var _0x1bb47f=_0x53c168[0x1];var _0x3b4857=_['filter'](_0x2ecd17[_0xe462('0x21')],function(_0x2d9285){return _0x2d9285['UserId']==_0x1bb47f['id']&&_0x2d9285[_0xe462('0x22')]==_0x5a2808;});if(_0x3b4857[_0xe462('0x23')]==0x1){_0x186b6a(_0x1bb47f);}else{_0xabffde(new RangeError('sessionId\x20'+_0x5a2808+'\x20not\x20found!'));}});});}exports['originate']=function(_0xc8cb2b,_0x152603){logger[_0xe462('0x24')](_0xe462('0x25'),_0xc8cb2b[_0xe462('0x26')]);var _0x3e01b8=originateValidation['validate'](_0xc8cb2b[_0xe462('0x26')]);if(_0x3e01b8[_0xe462('0x23')]>0x0){return _0x152603['status'](0x190)[_0xe462('0x27')](_0x3e01b8);}var _0x40026f=_0xc8cb2b[_0xe462('0x26')][_0xe462('0x28')];var _0x52c483=_0xc8cb2b[_0xe462('0x26')][_0xe462('0x29')];var _0x565336=_0xc8cb2b[_0xe462('0x26')][_0xe462('0x2a')];var _0x1424c8=_0xc8cb2b['body'][_0xe462('0x2b')];return getAgent(_0x40026f)[_0xe462('0x1b')](function(_0x1651e9){logger['info'](_0xe462('0x2c'),_0x1651e9['name']);emit(util[_0xe462('0x2d')]('user:%s',_0x1651e9['name']),_0xe462('0x2e'),{'callNumber':_0x52c483,'callerId':_0x565336,'callbackUrl':_0x1424c8});return _0x152603[_0xe462('0x19')](0xc8)[_0xe462('0x27')]({'error':![],'message':_0xe462('0x2f')});})[_0xe462('0x1e')](handleError(_0x152603));};exports[_0xe462('0x30')]=function(_0x475e8c,_0x499aa3){logger[_0xe462('0x24')](_0xe462('0x31'),_0x475e8c[_0xe462('0x26')]);var _0x1a5555=hangupValidation['validate'](_0x475e8c[_0xe462('0x26')]);if(_0x1a5555[_0xe462('0x23')]>0x0){return _0x499aa3[_0xe462('0x19')](0x190)[_0xe462('0x27')](_0x1a5555);}var _0x2f922d=_0x475e8c[_0xe462('0x26')][_0xe462('0x28')];var _0x40617f=_0x475e8c['body'][_0xe462('0x22')];return getAgent(_0x2f922d)[_0xe462('0x1b')](function(_0x410800){logger['info'](_0xe462('0x2c'),_0x410800[_0xe462('0x18')]);emit(util[_0xe462('0x2d')](_0xe462('0x32'),_0x410800[_0xe462('0x18')]),_0xe462('0x33'),{'sessionId':_0x40617f});return _0x499aa3[_0xe462('0x19')](0xc8)[_0xe462('0x27')]({'error':![],'message':_0xe462('0x34')});})[_0xe462('0x1e')](handleError(_0x499aa3));};exports[_0xe462('0x35')]=function(_0x3cea4f,_0x59970){logger[_0xe462('0x24')](_0xe462('0x36'),_0x3cea4f['body']);var _0x848f67=answerValidation[_0xe462('0xd')](_0x3cea4f[_0xe462('0x26')]);if(_0x848f67['length']>0x0){return _0x59970[_0xe462('0x19')](0x190)[_0xe462('0x27')](_0x848f67);}var _0x4b077f=_0x3cea4f[_0xe462('0x26')]['userId'];var _0x32267c=_0x3cea4f['body'][_0xe462('0x22')];return getAgent(_0x4b077f)['then'](function(_0x5de839){logger[_0xe462('0x24')](_0xe462('0x2c'),_0x5de839[_0xe462('0x18')]);emit(util[_0xe462('0x2d')]('user:%s',_0x5de839['name']),_0xe462('0x37'),{'sessionId':_0x32267c});return _0x59970[_0xe462('0x19')](0xc8)['json']({'error':![],'message':'answer\x20executed!'});})[_0xe462('0x1e')](handleError(_0x59970));};exports['hold']=function(_0x21a40b,_0x14d351){logger[_0xe462('0x24')](_0xe462('0x38'),_0x21a40b['body']);var _0x573e3b=holdValidation['validate'](_0x21a40b['body']);if(_0x573e3b[_0xe462('0x23')]>0x0){return _0x14d351[_0xe462('0x19')](0x190)[_0xe462('0x27')](_0x573e3b);}var _0x4c7eda=_0x21a40b['body']['userId'];var _0x729e8b=_0x21a40b[_0xe462('0x26')][_0xe462('0x22')];return getAgent(_0x4c7eda)[_0xe462('0x1b')](function(_0x5c767d){logger[_0xe462('0x24')]('entityFound:',_0x5c767d[_0xe462('0x18')]);emit(util[_0xe462('0x2d')](_0xe462('0x32'),_0x5c767d['name']),'webbar:hold',{'sessionId':_0x729e8b});return _0x14d351[_0xe462('0x19')](0xc8)[_0xe462('0x27')]({'error':![],'message':_0xe462('0x39')});})[_0xe462('0x1e')](handleError(_0x14d351));};exports[_0xe462('0x3a')]=function(_0x95b08f,_0x2a9667){logger['info'](_0xe462('0x3b'),_0x95b08f[_0xe462('0x26')]);var _0x3766e7=unholdValidation[_0xe462('0xd')](_0x95b08f['body']);if(_0x3766e7['length']>0x0){return _0x2a9667['status'](0x190)[_0xe462('0x27')](_0x3766e7);}var _0x2ab0e6=_0x95b08f[_0xe462('0x26')]['userId'];var _0x5baefc=_0x95b08f[_0xe462('0x26')][_0xe462('0x22')];return getAgent(_0x2ab0e6)[_0xe462('0x1b')](function(_0x3963f5){logger[_0xe462('0x24')]('entityFound:',_0x3963f5[_0xe462('0x18')]);emit(util['format']('user:%s',_0x3963f5[_0xe462('0x18')]),'webbar:unhold',{'sessionId':_0x5baefc});return _0x2a9667[_0xe462('0x19')](0xc8)['json']({'error':![],'message':_0xe462('0x3c')});})[_0xe462('0x1e')](handleError(_0x2a9667));};exports[_0xe462('0x3d')]=function(_0x146c73,_0x40016a){logger['info'](_0xe462('0x3e'),_0x40016a[_0xe462('0x26')]);var _0x5b60e8=callsValidation[_0xe462('0xd')](_0x146c73[_0xe462('0x26')]);if(_0x5b60e8[_0xe462('0x23')]>0x0){return _0x40016a['status'](0x190)[_0xe462('0x27')](_0x5b60e8);}var _0x5088b1=_0x146c73[_0xe462('0x26')][_0xe462('0x28')];var _0x23c963=respondWithRpcPromise(_0xe462('0x20'));var _0x20de69=getAgent(_0x5088b1);return Promise[_0xe462('0x3f')]([_0x23c963,_0x20de69])[_0xe462('0x1b')](function(_0x42f971){var _0x2093d5=_0x42f971[0x0];var _0x20a3d8=_0x42f971[0x1];var _0x53b3f8=_['filter'](_0x2093d5[_0xe462('0x21')],function(_0x6ab551){return _0x6ab551['UserId']==_0x20a3d8['id'];});return _0x40016a[_0xe462('0x19')](0xc8)[_0xe462('0x27')]({'count':_0x53b3f8['length'],'rows':_0x53b3f8});})[_0xe462('0x1e')](handleError(_0x40016a));};exports[_0xe462('0x40')]=function(_0x587ad1,_0x2b1bc6){logger[_0xe462('0x24')](_0xe462('0x41'),_0x587ad1[_0xe462('0x26')]);var _0x353c66=conferenceValidation[_0xe462('0xd')](_0x587ad1['body']);if(_0x353c66['length']>0x0){return _0x2b1bc6['status'](0x190)['json'](_0x353c66);}var _0x2f4acb=_0x587ad1[_0xe462('0x26')][_0xe462('0x28')];return getAgent(_0x2f4acb)[_0xe462('0x1b')](function(_0x186b22){logger[_0xe462('0x24')](_0xe462('0x2c'),_0x186b22['name']);emit(util[_0xe462('0x2d')]('user:%s',_0x186b22['name']),_0xe462('0x42'));return _0x2b1bc6['status'](0xc8)['json']({'error':![],'message':_0xe462('0x43')});})['catch'](handleError(_0x2b1bc6));};exports[_0xe462('0x44')]=function(_0x26df69,_0x4fe258){logger[_0xe462('0x24')](_0xe462('0x45'),_0x26df69[_0xe462('0x26')]);var _0x49bdd9=transferValidation[_0xe462('0xd')](_0x26df69[_0xe462('0x26')]);if(_0x49bdd9[_0xe462('0x23')]>0x0){return _0x4fe258[_0xe462('0x19')](0x190)[_0xe462('0x27')](_0x49bdd9);}var _0x532bc6=_0x26df69['body'][_0xe462('0x28')];var _0x2a5da8=_0x26df69[_0xe462('0x26')]['sessionId'];var _0x4155f7=_0x26df69[_0xe462('0x26')][_0xe462('0x46')];return getAgent(_0x532bc6)['then'](function(_0xd5ab6f){logger[_0xe462('0x24')](_0xe462('0x2c'),_0xd5ab6f['name']);emit(util[_0xe462('0x2d')](_0xe462('0x32'),_0xd5ab6f[_0xe462('0x18')]),'webbar:transfer',{'sessionId':_0x2a5da8,'transferNumber':_0x4155f7});return _0x4fe258[_0xe462('0x19')](0xc8)[_0xe462('0x27')]({'error':![],'message':_0xe462('0x47')});})[_0xe462('0x1e')](handleError(_0x4fe258));};