Built motion from commit 7158bc59.|2.5.42
[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 _0x6a24=['NotFound','request','then','error','code','message','result','catch','User','findOne','agent','VoiceChannels','all','filter','rows','sessionId','length','sessionId\x20','\x20not\x20found!','originate','originate\x20fired:','validate','body','userId','callNumber','callbackUrl','format','user:%s','json','originate\x20executed!','entityFound:','webbar:hangup','hangup\x20executed!','answer','answer\x20fired:','webbar:answer','answer\x20executed!','hold','hold\x20fired:','webbar:hold','hold\x20executed!','unhold','unhold\x20fired:','calls','UserId','conference','conference\x20fired:','webbar:conference','conference\x20executed!','transfer','transfer\x20fired:','webbar:transfer','transfer\x20executed!','path','lodash','../../config/environment','util','bluebird','jayson/promise','client','../../config/logger','webbarapi','redis','defaults','socket.io-emitter','number','string','userId\x20is\x20required','sessionId\x20is\x20required','transferNumber\x20is\x20required','info','emit','log','handleError:','stack','name','status','send'];(function(_0x2e0cbb,_0x4c1214){var _0x657a49=function(_0x443398){while(--_0x443398){_0x2e0cbb['push'](_0x2e0cbb['shift']());}};_0x657a49(++_0x4c1214);}(_0x6a24,0xd1));var _0x46a2=function(_0x27038c,_0x5a68b5){_0x27038c=_0x27038c-0x0;var _0x5733b6=_0x6a24[_0x27038c];return _0x5733b6;};'use strict';var path=require(_0x46a2('0x0'));var fs=require('fs');var _=require(_0x46a2('0x1'));var db=require('../../mysqldb')['db'];var config=require(_0x46a2('0x2'));var util=require(_0x46a2('0x3'));var BPromise=require(_0x46a2('0x4'));var jayson=require(_0x46a2('0x5'));var amiClient=jayson[_0x46a2('0x6')]['http']({'port':0x232a});var logger=require(_0x46a2('0x7'))(_0x46a2('0x8'));var Redis=require('ioredis');config[_0x46a2('0x9')]=_[_0x46a2('0xa')](config['redis'],{'host':'localhost','port':0x18eb});var io=require(_0x46a2('0xb'))(new Redis(config[_0x46a2('0x9')]));var Schema=require('validate');var originateValidation=new Schema({'userId':{'type':_0x46a2('0xc'),'required':[!![],'userId\x20is\x20required']},'callNumber':{'type':_0x46a2('0xd'),'required':[!![],'callNumber\x20is\x20required']},'callerId':{'type':_0x46a2('0xd')},'callbackUrl':{'type':_0x46a2('0xd')}});var hangupValidation=new Schema({'userId':{'type':_0x46a2('0xc'),'required':[!![],_0x46a2('0xe')]},'sessionId':{'type':_0x46a2('0xd'),'required':![]}});var answerValidation=new Schema({'userId':{'type':_0x46a2('0xc'),'required':[!![],_0x46a2('0xe')]},'sessionId':{'type':_0x46a2('0xd'),'required':![]}});var transferValidation=new Schema({'userId':{'type':'number','required':[!![],'userId\x20is\x20required']},'sessionId':{'type':_0x46a2('0xd'),'required':[!![],_0x46a2('0xf')]},'transferNumber':{'type':'string','required':[!![],_0x46a2('0x10')]}});var holdValidation=new Schema({'userId':{'type':_0x46a2('0xc'),'required':[!![],_0x46a2('0xe')]},'sessionId':{'type':_0x46a2('0xd'),'required':![]}});var unholdValidation=new Schema({'userId':{'type':_0x46a2('0xc'),'required':[!![],_0x46a2('0xe')]},'sessionId':{'type':_0x46a2('0xd'),'required':![]}});var callsValidation=new Schema({'userId':{'type':_0x46a2('0xc'),'required':[!![],'userId\x20is\x20required']}});var conferenceValidation=new Schema({'userId':{'type':'number','required':[!![],_0x46a2('0xe')]}});function emit(_0x2deb20,_0x5eeaba,_0xead4f8){logger[_0x46a2('0x11')](_0x2deb20,_0x5eeaba,JSON['stringify'](_0xead4f8));io['to'](_0x2deb20)[_0x46a2('0x12')](_0x5eeaba,_0xead4f8);}function handleError(_0xc00b4d){return function(_0x577f18){console[_0x46a2('0x13')](_0x46a2('0x14'),_0x577f18,_0x577f18 instanceof RangeError);logger['error'](_0x577f18[_0x46a2('0x15')]);if(_0x577f18 instanceof RangeError){if(_0x577f18[_0x46a2('0x16')]){delete _0x577f18[_0x46a2('0x16')];}_0xc00b4d[_0x46a2('0x17')](0x194)[_0x46a2('0x18')](_0x577f18);}else{if(_0x577f18[_0x46a2('0x16')]){delete _0x577f18[_0x46a2('0x16')];}_0xc00b4d[_0x46a2('0x17')](0x1f4)[_0x46a2('0x18')](_0x577f18);}};}function checkError(){return function(_0x764467){if(!_0x764467){throw new RangeError(_0x46a2('0x19'));}return _0x764467;};}function respondWithRpcPromise(_0x2f5525,_0x105509){return new BPromise(function(_0x5c7586,_0xa37d90){var _0x504b9e=amiClient;return _0x504b9e[_0x46a2('0x1a')](_0x2f5525,_0x105509)[_0x46a2('0x1b')](function(_0x511ff6){if(_0x511ff6[_0x46a2('0x1c')]){if(_0x511ff6[_0x46a2('0x1c')][_0x46a2('0x1d')]===0x1f4){return _0xa37d90(_0x511ff6[_0x46a2('0x1c')]['message']);}return _0x5c7586(_0x511ff6[_0x46a2('0x1c')][_0x46a2('0x1e')]);}else{_0x5c7586(_0x511ff6[_0x46a2('0x1f')]);}})[_0x46a2('0x20')](function(_0x74bb6a){_0xa37d90(_0x74bb6a);});});}function getAgent(_0x295f15){return db[_0x46a2('0x21')][_0x46a2('0x22')]({'where':{'id':_0x295f15,'role':_0x46a2('0x23')}})[_0x46a2('0x1b')](checkError());}function getAgentCheckSession(_0x44ffb4,_0x582ada){return new BPromise(function(_0x2b4d9f,_0x704a19){var _0x1c059b=respondWithRpcPromise(_0x46a2('0x24'));var _0x435155=getAgent(_0x44ffb4);Promise[_0x46a2('0x25')]([_0x1c059b,_0x435155])['then'](function(_0x185647){var _0x26856f=_0x185647[0x0];var _0x2166eb=_0x185647[0x1];var _0x6e8b2e=_[_0x46a2('0x26')](_0x26856f[_0x46a2('0x27')],function(_0x4024be){return _0x4024be['UserId']==_0x2166eb['id']&&_0x4024be[_0x46a2('0x28')]==_0x582ada;});if(_0x6e8b2e[_0x46a2('0x29')]==0x1){_0x2b4d9f(_0x2166eb);}else{_0x704a19(new RangeError(_0x46a2('0x2a')+_0x582ada+_0x46a2('0x2b')));}});});}exports[_0x46a2('0x2c')]=function(_0x1910c9,_0x4c294a){logger[_0x46a2('0x11')](_0x46a2('0x2d'),_0x1910c9['body']);var _0x3ad9a7=originateValidation[_0x46a2('0x2e')](_0x1910c9[_0x46a2('0x2f')]);if(_0x3ad9a7[_0x46a2('0x29')]>0x0){return _0x4c294a[_0x46a2('0x17')](0x190)['json'](_0x3ad9a7);}var _0x54e08c=_0x1910c9[_0x46a2('0x2f')][_0x46a2('0x30')];var _0xeace18=_0x1910c9[_0x46a2('0x2f')][_0x46a2('0x31')];var _0x43845d=_0x1910c9['body']['callerId'];var _0x26d699=_0x1910c9['body'][_0x46a2('0x32')];return getAgent(_0x54e08c)[_0x46a2('0x1b')](function(_0x45b470){logger[_0x46a2('0x11')]('entityFound:',_0x45b470[_0x46a2('0x16')]);emit(util[_0x46a2('0x33')](_0x46a2('0x34'),_0x45b470[_0x46a2('0x16')]),'webbar:originate',{'callNumber':_0xeace18,'callerId':_0x43845d,'callbackUrl':_0x26d699});return _0x4c294a[_0x46a2('0x17')](0xc8)[_0x46a2('0x35')]({'error':![],'message':_0x46a2('0x36')});})[_0x46a2('0x20')](handleError(_0x4c294a));};exports['hangup']=function(_0x356c98,_0x5bddad){logger[_0x46a2('0x11')]('hangup\x20fired:',_0x356c98[_0x46a2('0x2f')]);var _0x32be94=hangupValidation['validate'](_0x356c98[_0x46a2('0x2f')]);if(_0x32be94['length']>0x0){return _0x5bddad['status'](0x190)[_0x46a2('0x35')](_0x32be94);}var _0x39e15f=_0x356c98[_0x46a2('0x2f')][_0x46a2('0x30')];var _0x118f23=_0x356c98[_0x46a2('0x2f')]['sessionId'];return getAgent(_0x39e15f)[_0x46a2('0x1b')](function(_0x49ace7){logger[_0x46a2('0x11')](_0x46a2('0x37'),_0x49ace7[_0x46a2('0x16')]);emit(util[_0x46a2('0x33')](_0x46a2('0x34'),_0x49ace7[_0x46a2('0x16')]),_0x46a2('0x38'),{'sessionId':_0x118f23});return _0x5bddad[_0x46a2('0x17')](0xc8)['json']({'error':![],'message':_0x46a2('0x39')});})[_0x46a2('0x20')](handleError(_0x5bddad));};exports[_0x46a2('0x3a')]=function(_0x37977c,_0x56a8b2){logger[_0x46a2('0x11')](_0x46a2('0x3b'),_0x37977c[_0x46a2('0x2f')]);var _0x3869d4=answerValidation[_0x46a2('0x2e')](_0x37977c['body']);if(_0x3869d4[_0x46a2('0x29')]>0x0){return _0x56a8b2['status'](0x190)[_0x46a2('0x35')](_0x3869d4);}var _0x20968b=_0x37977c['body'][_0x46a2('0x30')];var _0x1a7e45=_0x37977c[_0x46a2('0x2f')][_0x46a2('0x28')];return getAgent(_0x20968b)[_0x46a2('0x1b')](function(_0x440ecb){logger[_0x46a2('0x11')](_0x46a2('0x37'),_0x440ecb[_0x46a2('0x16')]);emit(util[_0x46a2('0x33')]('user:%s',_0x440ecb[_0x46a2('0x16')]),_0x46a2('0x3c'),{'sessionId':_0x1a7e45});return _0x56a8b2[_0x46a2('0x17')](0xc8)[_0x46a2('0x35')]({'error':![],'message':_0x46a2('0x3d')});})['catch'](handleError(_0x56a8b2));};exports[_0x46a2('0x3e')]=function(_0x3f0595,_0x13479b){logger[_0x46a2('0x11')](_0x46a2('0x3f'),_0x3f0595['body']);var _0x35a93f=holdValidation['validate'](_0x3f0595[_0x46a2('0x2f')]);if(_0x35a93f[_0x46a2('0x29')]>0x0){return _0x13479b['status'](0x190)[_0x46a2('0x35')](_0x35a93f);}var _0x3f8673=_0x3f0595[_0x46a2('0x2f')][_0x46a2('0x30')];var _0xa32428=_0x3f0595[_0x46a2('0x2f')][_0x46a2('0x28')];return getAgent(_0x3f8673)['then'](function(_0x369015){logger[_0x46a2('0x11')](_0x46a2('0x37'),_0x369015[_0x46a2('0x16')]);emit(util['format'](_0x46a2('0x34'),_0x369015['name']),_0x46a2('0x40'),{'sessionId':_0xa32428});return _0x13479b[_0x46a2('0x17')](0xc8)['json']({'error':![],'message':_0x46a2('0x41')});})['catch'](handleError(_0x13479b));};exports[_0x46a2('0x42')]=function(_0x76ccd3,_0x3be2a7){logger[_0x46a2('0x11')](_0x46a2('0x43'),_0x76ccd3[_0x46a2('0x2f')]);var _0x541de9=unholdValidation['validate'](_0x76ccd3[_0x46a2('0x2f')]);if(_0x541de9[_0x46a2('0x29')]>0x0){return _0x3be2a7[_0x46a2('0x17')](0x190)[_0x46a2('0x35')](_0x541de9);}var _0x3dfe8d=_0x76ccd3[_0x46a2('0x2f')][_0x46a2('0x30')];var _0x4d33fa=_0x76ccd3[_0x46a2('0x2f')][_0x46a2('0x28')];return getAgent(_0x3dfe8d)[_0x46a2('0x1b')](function(_0x32bbdf){logger[_0x46a2('0x11')](_0x46a2('0x37'),_0x32bbdf[_0x46a2('0x16')]);emit(util['format'](_0x46a2('0x34'),_0x32bbdf[_0x46a2('0x16')]),'webbar:unhold',{'sessionId':_0x4d33fa});return _0x3be2a7[_0x46a2('0x17')](0xc8)[_0x46a2('0x35')]({'error':![],'message':'unhold\x20executed!'});})[_0x46a2('0x20')](handleError(_0x3be2a7));};exports[_0x46a2('0x44')]=function(_0x56bbc6,_0x537b0a){logger[_0x46a2('0x11')]('calls\x20fired:',_0x537b0a['body']);var _0x48f2c2=callsValidation['validate'](_0x56bbc6[_0x46a2('0x2f')]);if(_0x48f2c2['length']>0x0){return _0x537b0a['status'](0x190)[_0x46a2('0x35')](_0x48f2c2);}var _0x102775=_0x56bbc6[_0x46a2('0x2f')][_0x46a2('0x30')];var _0x17223e=respondWithRpcPromise(_0x46a2('0x24'));var _0x230d0f=getAgent(_0x102775);return Promise[_0x46a2('0x25')]([_0x17223e,_0x230d0f])[_0x46a2('0x1b')](function(_0xea8a6a){var _0x4c840d=_0xea8a6a[0x0];var _0x5070a6=_0xea8a6a[0x1];var _0x3a6dc1=_[_0x46a2('0x26')](_0x4c840d[_0x46a2('0x27')],function(_0x47a34e){return _0x47a34e[_0x46a2('0x45')]==_0x5070a6['id'];});return _0x537b0a['status'](0xc8)[_0x46a2('0x35')]({'count':_0x3a6dc1['length'],'rows':_0x3a6dc1});})['catch'](handleError(_0x537b0a));};exports[_0x46a2('0x46')]=function(_0x5ec5f3,_0x398fa6){logger['info'](_0x46a2('0x47'),_0x5ec5f3['body']);var _0x2ac617=conferenceValidation['validate'](_0x5ec5f3[_0x46a2('0x2f')]);if(_0x2ac617[_0x46a2('0x29')]>0x0){return _0x398fa6['status'](0x190)[_0x46a2('0x35')](_0x2ac617);}var _0x3827af=_0x5ec5f3[_0x46a2('0x2f')][_0x46a2('0x30')];return getAgent(_0x3827af)[_0x46a2('0x1b')](function(_0x1fe497){logger[_0x46a2('0x11')](_0x46a2('0x37'),_0x1fe497[_0x46a2('0x16')]);emit(util[_0x46a2('0x33')](_0x46a2('0x34'),_0x1fe497['name']),_0x46a2('0x48'));return _0x398fa6[_0x46a2('0x17')](0xc8)[_0x46a2('0x35')]({'error':![],'message':_0x46a2('0x49')});})[_0x46a2('0x20')](handleError(_0x398fa6));};exports[_0x46a2('0x4a')]=function(_0x1fc849,_0x369246){logger[_0x46a2('0x11')](_0x46a2('0x4b'),_0x1fc849[_0x46a2('0x2f')]);var _0x3184f6=transferValidation['validate'](_0x1fc849['body']);if(_0x3184f6['length']>0x0){return _0x369246[_0x46a2('0x17')](0x190)[_0x46a2('0x35')](_0x3184f6);}var _0xdfb3e8=_0x1fc849[_0x46a2('0x2f')][_0x46a2('0x30')];var _0x359151=_0x1fc849[_0x46a2('0x2f')]['sessionId'];var _0x254618=_0x1fc849['body']['transferNumber'];return getAgent(_0xdfb3e8)[_0x46a2('0x1b')](function(_0x44f112){logger[_0x46a2('0x11')]('entityFound:',_0x44f112[_0x46a2('0x16')]);emit(util[_0x46a2('0x33')](_0x46a2('0x34'),_0x44f112[_0x46a2('0x16')]),_0x46a2('0x4c'),{'sessionId':_0x359151,'transferNumber':_0x254618});return _0x369246[_0x46a2('0x17')](0xc8)[_0x46a2('0x35')]({'error':![],'message':_0x46a2('0x4d')});})[_0x46a2('0x20')](handleError(_0x369246));};