Built motion from commit (unavailable).|2.5.27
[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 _0x9c48=['webbar:originate','originate\x20executed!','hangup','hangup\x20fired:','json','hangup\x20executed!','answer','answer\x20fired:','webbar:answer','hold','webbar:hold','hold\x20executed!','unhold','unhold\x20fired:','webbar:unhold','unhold\x20executed!','calls','conference\x20fired:','webbar:conference','conference\x20executed!','transfer','transfer\x20fired:','transferNumber','webbar:transfer','transfer\x20executed!','path','../../mysqldb','../../config/environment','util','bluebird','jayson/promise','client','http','../../config/logger','webbarapi','ioredis','redis','defaults','localhost','validate','number','userId\x20is\x20required','string','info','stringify','emit','log','handleError:','error','name','send','then','code','message','result','catch','User','findOne','agent','VoiceChannels','filter','rows','UserId','sessionId','originate','originate\x20fired:','body','length','status','userId','callNumber','callerId','callbackUrl','entityFound:','format','user:%s'];(function(_0x5774be,_0x2259d3){var _0x4914b4=function(_0x1eebc3){while(--_0x1eebc3){_0x5774be['push'](_0x5774be['shift']());}};_0x4914b4(++_0x2259d3);}(_0x9c48,0xb1));var _0x89c4=function(_0x399d0c,_0x390299){_0x399d0c=_0x399d0c-0x0;var _0x199691=_0x9c48[_0x399d0c];return _0x199691;};'use strict';var path=require(_0x89c4('0x0'));var fs=require('fs');var _=require('lodash');var db=require(_0x89c4('0x1'))['db'];var config=require(_0x89c4('0x2'));var util=require(_0x89c4('0x3'));var BPromise=require(_0x89c4('0x4'));var jayson=require(_0x89c4('0x5'));var amiClient=jayson[_0x89c4('0x6')][_0x89c4('0x7')]({'port':0x232a});var logger=require(_0x89c4('0x8'))(_0x89c4('0x9'));var Redis=require(_0x89c4('0xa'));config[_0x89c4('0xb')]=_[_0x89c4('0xc')](config[_0x89c4('0xb')],{'host':_0x89c4('0xd'),'port':0x18eb});var io=require('socket.io-emitter')(new Redis(config[_0x89c4('0xb')]));var Schema=require(_0x89c4('0xe'));var originateValidation=new Schema({'userId':{'type':_0x89c4('0xf'),'required':[!![],_0x89c4('0x10')]},'callNumber':{'type':_0x89c4('0x11'),'required':[!![],'callNumber\x20is\x20required']},'callerId':{'type':'string'},'callbackUrl':{'type':_0x89c4('0x11')}});var hangupValidation=new Schema({'userId':{'type':_0x89c4('0xf'),'required':[!![],'userId\x20is\x20required']},'sessionId':{'type':'string','required':![]}});var answerValidation=new Schema({'userId':{'type':_0x89c4('0xf'),'required':[!![],_0x89c4('0x10')]},'sessionId':{'type':_0x89c4('0x11'),'required':![]}});var transferValidation=new Schema({'userId':{'type':'number','required':[!![],_0x89c4('0x10')]},'sessionId':{'type':_0x89c4('0x11'),'required':[!![],'sessionId\x20is\x20required']},'transferNumber':{'type':_0x89c4('0x11'),'required':[!![],'transferNumber\x20is\x20required']}});var holdValidation=new Schema({'userId':{'type':_0x89c4('0xf'),'required':[!![],_0x89c4('0x10')]},'sessionId':{'type':_0x89c4('0x11'),'required':![]}});var unholdValidation=new Schema({'userId':{'type':_0x89c4('0xf'),'required':[!![],_0x89c4('0x10')]},'sessionId':{'type':'string','required':![]}});var callsValidation=new Schema({'userId':{'type':_0x89c4('0xf'),'required':[!![],_0x89c4('0x10')]}});var conferenceValidation=new Schema({'userId':{'type':_0x89c4('0xf'),'required':[!![],'userId\x20is\x20required']}});function emit(_0x6f9159,_0x4e2097,_0x55a3a2){logger[_0x89c4('0x12')](_0x6f9159,_0x4e2097,JSON[_0x89c4('0x13')](_0x55a3a2));io['to'](_0x6f9159)[_0x89c4('0x14')](_0x4e2097,_0x55a3a2);}function handleError(_0xfad9ff){return function(_0x47276b){console[_0x89c4('0x15')](_0x89c4('0x16'),_0x47276b,_0x47276b instanceof RangeError);logger[_0x89c4('0x17')](_0x47276b['stack']);if(_0x47276b instanceof RangeError){if(_0x47276b[_0x89c4('0x18')]){delete _0x47276b[_0x89c4('0x18')];}_0xfad9ff['status'](0x194)[_0x89c4('0x19')](_0x47276b);}else{if(_0x47276b[_0x89c4('0x18')]){delete _0x47276b['name'];}_0xfad9ff['status'](0x1f4)[_0x89c4('0x19')](_0x47276b);}};}function checkError(){return function(_0x4ba3a8){if(!_0x4ba3a8){throw new RangeError('NotFound');}return _0x4ba3a8;};}function respondWithRpcPromise(_0x5ce126,_0x5bd254){return new BPromise(function(_0x2b0fe1,_0x468808){var _0x31e1c1=amiClient;return _0x31e1c1['request'](_0x5ce126,_0x5bd254)[_0x89c4('0x1a')](function(_0x4695b3){if(_0x4695b3['error']){if(_0x4695b3[_0x89c4('0x17')][_0x89c4('0x1b')]===0x1f4){return _0x468808(_0x4695b3[_0x89c4('0x17')][_0x89c4('0x1c')]);}return _0x2b0fe1(_0x4695b3[_0x89c4('0x17')][_0x89c4('0x1c')]);}else{_0x2b0fe1(_0x4695b3[_0x89c4('0x1d')]);}})[_0x89c4('0x1e')](function(_0x2fcd04){_0x468808(_0x2fcd04);});});}function getAgent(_0x37f836){return db[_0x89c4('0x1f')][_0x89c4('0x20')]({'where':{'id':_0x37f836,'role':_0x89c4('0x21')}})[_0x89c4('0x1a')](checkError());}function getAgentCheckSession(_0x338f57,_0x35f1a7){return new BPromise(function(_0x5b393a,_0x3dd289){var _0x1b9217=respondWithRpcPromise(_0x89c4('0x22'));var _0x4d7ee7=getAgent(_0x338f57);Promise['all']([_0x1b9217,_0x4d7ee7])['then'](function(_0x25ff07){var _0x34a0af=_0x25ff07[0x0];var _0x242bb4=_0x25ff07[0x1];var _0x25e43b=_[_0x89c4('0x23')](_0x34a0af[_0x89c4('0x24')],function(_0x22a961){return _0x22a961[_0x89c4('0x25')]==_0x242bb4['id']&&_0x22a961[_0x89c4('0x26')]==_0x35f1a7;});if(_0x25e43b['length']==0x1){_0x5b393a(_0x242bb4);}else{_0x3dd289(new RangeError('sessionId\x20'+_0x35f1a7+'\x20not\x20found!'));}});});}exports[_0x89c4('0x27')]=function(_0x4ddf9d,_0x16d50e){logger['info'](_0x89c4('0x28'),_0x4ddf9d[_0x89c4('0x29')]);var _0x5dd051=originateValidation[_0x89c4('0xe')](_0x4ddf9d[_0x89c4('0x29')]);if(_0x5dd051[_0x89c4('0x2a')]>0x0){return _0x16d50e[_0x89c4('0x2b')](0x190)['json'](_0x5dd051);}var _0x57fd7a=_0x4ddf9d['body'][_0x89c4('0x2c')];var _0xa3ddb4=_0x4ddf9d['body'][_0x89c4('0x2d')];var _0x160139=_0x4ddf9d[_0x89c4('0x29')][_0x89c4('0x2e')];var _0x5315ac=_0x4ddf9d['body'][_0x89c4('0x2f')];return getAgent(_0x57fd7a)['then'](function(_0x171a33){logger[_0x89c4('0x12')](_0x89c4('0x30'),_0x171a33[_0x89c4('0x18')]);emit(util[_0x89c4('0x31')](_0x89c4('0x32'),_0x171a33['name']),_0x89c4('0x33'),{'callNumber':_0xa3ddb4,'callerId':_0x160139,'callbackUrl':_0x5315ac});return _0x16d50e[_0x89c4('0x2b')](0xc8)['json']({'error':![],'message':_0x89c4('0x34')});})[_0x89c4('0x1e')](handleError(_0x16d50e));};exports[_0x89c4('0x35')]=function(_0x59a69b,_0x3d386d){logger['info'](_0x89c4('0x36'),_0x59a69b[_0x89c4('0x29')]);var _0x51e861=hangupValidation[_0x89c4('0xe')](_0x59a69b[_0x89c4('0x29')]);if(_0x51e861[_0x89c4('0x2a')]>0x0){return _0x3d386d[_0x89c4('0x2b')](0x190)[_0x89c4('0x37')](_0x51e861);}var _0x283ff6=_0x59a69b[_0x89c4('0x29')][_0x89c4('0x2c')];var _0x435acd=_0x59a69b['body'][_0x89c4('0x26')];return getAgent(_0x283ff6)[_0x89c4('0x1a')](function(_0x108188){logger[_0x89c4('0x12')](_0x89c4('0x30'),_0x108188[_0x89c4('0x18')]);emit(util[_0x89c4('0x31')]('user:%s',_0x108188[_0x89c4('0x18')]),'webbar:hangup',{'sessionId':_0x435acd});return _0x3d386d[_0x89c4('0x2b')](0xc8)[_0x89c4('0x37')]({'error':![],'message':_0x89c4('0x38')});})['catch'](handleError(_0x3d386d));};exports[_0x89c4('0x39')]=function(_0x50f461,_0xe17737){logger[_0x89c4('0x12')](_0x89c4('0x3a'),_0x50f461['body']);var _0x2f55d4=answerValidation[_0x89c4('0xe')](_0x50f461[_0x89c4('0x29')]);if(_0x2f55d4[_0x89c4('0x2a')]>0x0){return _0xe17737[_0x89c4('0x2b')](0x190)['json'](_0x2f55d4);}var _0x39d0af=_0x50f461['body'][_0x89c4('0x2c')];var _0x4e3aa8=_0x50f461[_0x89c4('0x29')][_0x89c4('0x26')];return getAgent(_0x39d0af)[_0x89c4('0x1a')](function(_0x486847){logger['info'](_0x89c4('0x30'),_0x486847['name']);emit(util[_0x89c4('0x31')]('user:%s',_0x486847['name']),_0x89c4('0x3b'),{'sessionId':_0x4e3aa8});return _0xe17737[_0x89c4('0x2b')](0xc8)[_0x89c4('0x37')]({'error':![],'message':'answer\x20executed!'});})[_0x89c4('0x1e')](handleError(_0xe17737));};exports[_0x89c4('0x3c')]=function(_0x4e1d85,_0x3bedcb){logger[_0x89c4('0x12')]('hold\x20fired:',_0x4e1d85['body']);var _0x5ef567=holdValidation[_0x89c4('0xe')](_0x4e1d85[_0x89c4('0x29')]);if(_0x5ef567[_0x89c4('0x2a')]>0x0){return _0x3bedcb['status'](0x190)[_0x89c4('0x37')](_0x5ef567);}var _0x298dce=_0x4e1d85[_0x89c4('0x29')]['userId'];var _0x5f19d8=_0x4e1d85[_0x89c4('0x29')]['sessionId'];return getAgent(_0x298dce)[_0x89c4('0x1a')](function(_0x2c91eb){logger[_0x89c4('0x12')](_0x89c4('0x30'),_0x2c91eb[_0x89c4('0x18')]);emit(util[_0x89c4('0x31')](_0x89c4('0x32'),_0x2c91eb[_0x89c4('0x18')]),_0x89c4('0x3d'),{'sessionId':_0x5f19d8});return _0x3bedcb[_0x89c4('0x2b')](0xc8)[_0x89c4('0x37')]({'error':![],'message':_0x89c4('0x3e')});})[_0x89c4('0x1e')](handleError(_0x3bedcb));};exports[_0x89c4('0x3f')]=function(_0x4b3e15,_0x2a9af3){logger[_0x89c4('0x12')](_0x89c4('0x40'),_0x4b3e15['body']);var _0x19e844=unholdValidation['validate'](_0x4b3e15[_0x89c4('0x29')]);if(_0x19e844[_0x89c4('0x2a')]>0x0){return _0x2a9af3[_0x89c4('0x2b')](0x190)[_0x89c4('0x37')](_0x19e844);}var _0x5d8d32=_0x4b3e15[_0x89c4('0x29')]['userId'];var _0x40e847=_0x4b3e15[_0x89c4('0x29')][_0x89c4('0x26')];return getAgent(_0x5d8d32)[_0x89c4('0x1a')](function(_0x3df021){logger[_0x89c4('0x12')](_0x89c4('0x30'),_0x3df021[_0x89c4('0x18')]);emit(util[_0x89c4('0x31')](_0x89c4('0x32'),_0x3df021[_0x89c4('0x18')]),_0x89c4('0x41'),{'sessionId':_0x40e847});return _0x2a9af3['status'](0xc8)[_0x89c4('0x37')]({'error':![],'message':_0x89c4('0x42')});})['catch'](handleError(_0x2a9af3));};exports[_0x89c4('0x43')]=function(_0x13affc,_0x241a58){logger['info']('calls\x20fired:',_0x241a58[_0x89c4('0x29')]);var _0x78d73c=callsValidation[_0x89c4('0xe')](_0x13affc[_0x89c4('0x29')]);if(_0x78d73c[_0x89c4('0x2a')]>0x0){return _0x241a58[_0x89c4('0x2b')](0x190)[_0x89c4('0x37')](_0x78d73c);}var _0x371492=_0x13affc[_0x89c4('0x29')][_0x89c4('0x2c')];var _0x3969a7=respondWithRpcPromise('VoiceChannels');var _0x56269d=getAgent(_0x371492);return Promise['all']([_0x3969a7,_0x56269d])['then'](function(_0x19789d){var _0x3df244=_0x19789d[0x0];var _0x2910af=_0x19789d[0x1];var _0x7a60e0=_[_0x89c4('0x23')](_0x3df244['rows'],function(_0x3e221c){return _0x3e221c[_0x89c4('0x25')]==_0x2910af['id'];});return _0x241a58['status'](0xc8)[_0x89c4('0x37')]({'count':_0x7a60e0[_0x89c4('0x2a')],'rows':_0x7a60e0});})['catch'](handleError(_0x241a58));};exports['conference']=function(_0x4ffbf9,_0x51a060){logger['info'](_0x89c4('0x44'),_0x4ffbf9[_0x89c4('0x29')]);var _0x19add6=conferenceValidation['validate'](_0x4ffbf9['body']);if(_0x19add6[_0x89c4('0x2a')]>0x0){return _0x51a060[_0x89c4('0x2b')](0x190)['json'](_0x19add6);}var _0x5cd861=_0x4ffbf9[_0x89c4('0x29')]['userId'];return getAgent(_0x5cd861)['then'](function(_0x339223){logger[_0x89c4('0x12')](_0x89c4('0x30'),_0x339223[_0x89c4('0x18')]);emit(util[_0x89c4('0x31')](_0x89c4('0x32'),_0x339223['name']),_0x89c4('0x45'));return _0x51a060[_0x89c4('0x2b')](0xc8)[_0x89c4('0x37')]({'error':![],'message':_0x89c4('0x46')});})[_0x89c4('0x1e')](handleError(_0x51a060));};exports[_0x89c4('0x47')]=function(_0x242a21,_0x1a0e3d){logger['info'](_0x89c4('0x48'),_0x242a21[_0x89c4('0x29')]);var _0x21ed54=transferValidation[_0x89c4('0xe')](_0x242a21['body']);if(_0x21ed54['length']>0x0){return _0x1a0e3d[_0x89c4('0x2b')](0x190)['json'](_0x21ed54);}var _0x54d5fa=_0x242a21['body'][_0x89c4('0x2c')];var _0x403295=_0x242a21[_0x89c4('0x29')][_0x89c4('0x26')];var _0x45d23b=_0x242a21[_0x89c4('0x29')][_0x89c4('0x49')];return getAgent(_0x54d5fa)[_0x89c4('0x1a')](function(_0x325e85){logger[_0x89c4('0x12')](_0x89c4('0x30'),_0x325e85[_0x89c4('0x18')]);emit(util[_0x89c4('0x31')](_0x89c4('0x32'),_0x325e85[_0x89c4('0x18')]),_0x89c4('0x4a'),{'sessionId':_0x403295,'transferNumber':_0x45d23b});return _0x1a0e3d[_0x89c4('0x2b')](0xc8)[_0x89c4('0x37')]({'error':![],'message':_0x89c4('0x4b')});})['catch'](handleError(_0x1a0e3d));};