cac0e552c72f01e20ff28991192ffdd00f525f59
[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 _0x26a3=['transferNumber\x20is\x20required','stringify','log','error','stack','name','status','send','NotFound','then','code','message','result','catch','User','findOne','agent','VoiceChannels','filter','rows','length','sessionId\x20','\x20not\x20found!','originate','info','body','userId','callNumber','callerId','callbackUrl','entityFound:','format','webbar:originate','json','originate\x20executed!','hangup','hangup\x20fired:','sessionId','webbar:hangup','hangup\x20executed!','answer','answer\x20fired:','user:%s','webbar:answer','hold','hold\x20fired:','hold\x20executed!','unhold','unhold\x20fired:','webbar:unhold','unhold\x20executed!','calls','calls\x20fired:','all','UserId','conference','conference\x20fired:','webbar:conference','conference\x20executed!','transfer','transfer\x20fired:','transferNumber','webbar:transfer','transfer\x20executed!','path','lodash','../../mysqldb','../../config/environment','util','bluebird','jayson/promise','client','http','../../config/logger','webbarapi','redis','defaults','socket.io-emitter','validate','number','userId\x20is\x20required','string','callNumber\x20is\x20required','sessionId\x20is\x20required'];(function(_0x5d6c3e,_0x409a3e){var _0x44ecb7=function(_0x936b6a){while(--_0x936b6a){_0x5d6c3e['push'](_0x5d6c3e['shift']());}};_0x44ecb7(++_0x409a3e);}(_0x26a3,0x94));var _0x326a=function(_0x3bd422,_0x3297c8){_0x3bd422=_0x3bd422-0x0;var _0x1a402c=_0x26a3[_0x3bd422];return _0x1a402c;};'use strict';var path=require(_0x326a('0x0'));var fs=require('fs');var _=require(_0x326a('0x1'));var db=require(_0x326a('0x2'))['db'];var config=require(_0x326a('0x3'));var util=require(_0x326a('0x4'));var BPromise=require(_0x326a('0x5'));var jayson=require(_0x326a('0x6'));var amiClient=jayson[_0x326a('0x7')][_0x326a('0x8')]({'port':0x232a});var logger=require(_0x326a('0x9'))(_0x326a('0xa'));var Redis=require('ioredis');config[_0x326a('0xb')]=_[_0x326a('0xc')](config[_0x326a('0xb')],{'host':'localhost','port':0x18eb});var io=require(_0x326a('0xd'))(new Redis(config[_0x326a('0xb')]));var Schema=require(_0x326a('0xe'));var originateValidation=new Schema({'userId':{'type':_0x326a('0xf'),'required':[!![],_0x326a('0x10')]},'callNumber':{'type':_0x326a('0x11'),'required':[!![],_0x326a('0x12')]},'callerId':{'type':'string'},'callbackUrl':{'type':_0x326a('0x11')}});var hangupValidation=new Schema({'userId':{'type':_0x326a('0xf'),'required':[!![],'userId\x20is\x20required']},'sessionId':{'type':_0x326a('0x11'),'required':![]}});var answerValidation=new Schema({'userId':{'type':_0x326a('0xf'),'required':[!![],'userId\x20is\x20required']},'sessionId':{'type':_0x326a('0x11'),'required':![]}});var transferValidation=new Schema({'userId':{'type':_0x326a('0xf'),'required':[!![],'userId\x20is\x20required']},'sessionId':{'type':_0x326a('0x11'),'required':[!![],_0x326a('0x13')]},'transferNumber':{'type':_0x326a('0x11'),'required':[!![],_0x326a('0x14')]}});var holdValidation=new Schema({'userId':{'type':_0x326a('0xf'),'required':[!![],_0x326a('0x10')]},'sessionId':{'type':_0x326a('0x11'),'required':![]}});var unholdValidation=new Schema({'userId':{'type':_0x326a('0xf'),'required':[!![],_0x326a('0x10')]},'sessionId':{'type':_0x326a('0x11'),'required':![]}});var callsValidation=new Schema({'userId':{'type':_0x326a('0xf'),'required':[!![],_0x326a('0x10')]}});var conferenceValidation=new Schema({'userId':{'type':_0x326a('0xf'),'required':[!![],_0x326a('0x10')]}});function emit(_0x5b5130,_0x3fb99c,_0x369e8e){logger['info'](_0x5b5130,_0x3fb99c,JSON[_0x326a('0x15')](_0x369e8e));io['to'](_0x5b5130)['emit'](_0x3fb99c,_0x369e8e);}function handleError(_0x439ce2){return function(_0x6166d){console[_0x326a('0x16')]('handleError:',_0x6166d,_0x6166d instanceof RangeError);logger[_0x326a('0x17')](_0x6166d[_0x326a('0x18')]);if(_0x6166d instanceof RangeError){if(_0x6166d[_0x326a('0x19')]){delete _0x6166d[_0x326a('0x19')];}_0x439ce2[_0x326a('0x1a')](0x194)[_0x326a('0x1b')](_0x6166d);}else{if(_0x6166d['name']){delete _0x6166d[_0x326a('0x19')];}_0x439ce2[_0x326a('0x1a')](0x1f4)['send'](_0x6166d);}};}function checkError(){return function(_0x579da5){if(!_0x579da5){throw new RangeError(_0x326a('0x1c'));}return _0x579da5;};}function respondWithRpcPromise(_0x763550,_0x1b0ccb){return new BPromise(function(_0x2001d0,_0x54363d){var _0x253206=amiClient;return _0x253206['request'](_0x763550,_0x1b0ccb)[_0x326a('0x1d')](function(_0x382fad){if(_0x382fad[_0x326a('0x17')]){if(_0x382fad[_0x326a('0x17')][_0x326a('0x1e')]===0x1f4){return _0x54363d(_0x382fad['error'][_0x326a('0x1f')]);}return _0x2001d0(_0x382fad[_0x326a('0x17')][_0x326a('0x1f')]);}else{_0x2001d0(_0x382fad[_0x326a('0x20')]);}})[_0x326a('0x21')](function(_0x3d06c8){_0x54363d(_0x3d06c8);});});}function getAgent(_0x582ae5){return db[_0x326a('0x22')][_0x326a('0x23')]({'where':{'id':_0x582ae5,'role':_0x326a('0x24')}})[_0x326a('0x1d')](checkError());}function getAgentCheckSession(_0x4e701b,_0x58c4d8){return new BPromise(function(_0x1cd0ac,_0x537973){var _0x29ec71=respondWithRpcPromise(_0x326a('0x25'));var _0x7db1b6=getAgent(_0x4e701b);Promise['all']([_0x29ec71,_0x7db1b6])['then'](function(_0x40c5db){var _0x2a3b13=_0x40c5db[0x0];var _0x2f20f7=_0x40c5db[0x1];var _0xb27abb=_[_0x326a('0x26')](_0x2a3b13[_0x326a('0x27')],function(_0x57e225){return _0x57e225['UserId']==_0x2f20f7['id']&&_0x57e225['sessionId']==_0x58c4d8;});if(_0xb27abb[_0x326a('0x28')]==0x1){_0x1cd0ac(_0x2f20f7);}else{_0x537973(new RangeError(_0x326a('0x29')+_0x58c4d8+_0x326a('0x2a')));}});});}exports[_0x326a('0x2b')]=function(_0x3a4f86,_0x5b87f5){logger[_0x326a('0x2c')]('originate\x20fired:',_0x3a4f86['body']);var _0x4bbea1=originateValidation[_0x326a('0xe')](_0x3a4f86[_0x326a('0x2d')]);if(_0x4bbea1['length']>0x0){return _0x5b87f5[_0x326a('0x1a')](0x190)['json'](_0x4bbea1);}var _0x1d75ea=_0x3a4f86[_0x326a('0x2d')][_0x326a('0x2e')];var _0x15c5d4=_0x3a4f86[_0x326a('0x2d')][_0x326a('0x2f')];var _0x472453=_0x3a4f86['body'][_0x326a('0x30')];var _0x234490=_0x3a4f86[_0x326a('0x2d')][_0x326a('0x31')];return getAgent(_0x1d75ea)['then'](function(_0x645f97){logger['info'](_0x326a('0x32'),_0x645f97['name']);emit(util[_0x326a('0x33')]('user:%s',_0x645f97[_0x326a('0x19')]),_0x326a('0x34'),{'callNumber':_0x15c5d4,'callerId':_0x472453,'callbackUrl':_0x234490});return _0x5b87f5['status'](0xc8)[_0x326a('0x35')]({'error':![],'message':_0x326a('0x36')});})[_0x326a('0x21')](handleError(_0x5b87f5));};exports[_0x326a('0x37')]=function(_0x4b79f9,_0x10d412){logger[_0x326a('0x2c')](_0x326a('0x38'),_0x4b79f9[_0x326a('0x2d')]);var _0x3e09d9=hangupValidation[_0x326a('0xe')](_0x4b79f9['body']);if(_0x3e09d9[_0x326a('0x28')]>0x0){return _0x10d412['status'](0x190)[_0x326a('0x35')](_0x3e09d9);}var _0x5d2acc=_0x4b79f9['body']['userId'];var _0x192fd2=_0x4b79f9['body'][_0x326a('0x39')];return getAgent(_0x5d2acc)[_0x326a('0x1d')](function(_0x548980){logger[_0x326a('0x2c')]('entityFound:',_0x548980[_0x326a('0x19')]);emit(util[_0x326a('0x33')]('user:%s',_0x548980['name']),_0x326a('0x3a'),{'sessionId':_0x192fd2});return _0x10d412[_0x326a('0x1a')](0xc8)['json']({'error':![],'message':_0x326a('0x3b')});})['catch'](handleError(_0x10d412));};exports[_0x326a('0x3c')]=function(_0x1a3f87,_0x4643e1){logger[_0x326a('0x2c')](_0x326a('0x3d'),_0x1a3f87[_0x326a('0x2d')]);var _0x47fac0=answerValidation[_0x326a('0xe')](_0x1a3f87[_0x326a('0x2d')]);if(_0x47fac0[_0x326a('0x28')]>0x0){return _0x4643e1['status'](0x190)[_0x326a('0x35')](_0x47fac0);}var _0x35fc05=_0x1a3f87[_0x326a('0x2d')][_0x326a('0x2e')];var _0x72fc5b=_0x1a3f87[_0x326a('0x2d')][_0x326a('0x39')];return getAgent(_0x35fc05)['then'](function(_0x5f361c){logger[_0x326a('0x2c')]('entityFound:',_0x5f361c[_0x326a('0x19')]);emit(util[_0x326a('0x33')](_0x326a('0x3e'),_0x5f361c['name']),_0x326a('0x3f'),{'sessionId':_0x72fc5b});return _0x4643e1[_0x326a('0x1a')](0xc8)[_0x326a('0x35')]({'error':![],'message':'answer\x20executed!'});})[_0x326a('0x21')](handleError(_0x4643e1));};exports[_0x326a('0x40')]=function(_0x4a9dfe,_0x31c316){logger['info'](_0x326a('0x41'),_0x4a9dfe['body']);var _0x23af68=holdValidation['validate'](_0x4a9dfe[_0x326a('0x2d')]);if(_0x23af68['length']>0x0){return _0x31c316[_0x326a('0x1a')](0x190)[_0x326a('0x35')](_0x23af68);}var _0x123337=_0x4a9dfe['body'][_0x326a('0x2e')];var _0x35d3c5=_0x4a9dfe[_0x326a('0x2d')][_0x326a('0x39')];return getAgent(_0x123337)[_0x326a('0x1d')](function(_0x50fe56){logger['info'](_0x326a('0x32'),_0x50fe56[_0x326a('0x19')]);emit(util[_0x326a('0x33')](_0x326a('0x3e'),_0x50fe56[_0x326a('0x19')]),'webbar:hold',{'sessionId':_0x35d3c5});return _0x31c316[_0x326a('0x1a')](0xc8)['json']({'error':![],'message':_0x326a('0x42')});})['catch'](handleError(_0x31c316));};exports[_0x326a('0x43')]=function(_0x47c698,_0x9eb2b7){logger[_0x326a('0x2c')](_0x326a('0x44'),_0x47c698[_0x326a('0x2d')]);var _0x5dac11=unholdValidation[_0x326a('0xe')](_0x47c698['body']);if(_0x5dac11[_0x326a('0x28')]>0x0){return _0x9eb2b7[_0x326a('0x1a')](0x190)['json'](_0x5dac11);}var _0x3ddf57=_0x47c698[_0x326a('0x2d')][_0x326a('0x2e')];var _0x24fdc4=_0x47c698['body'][_0x326a('0x39')];return getAgent(_0x3ddf57)['then'](function(_0x1b8d70){logger['info'](_0x326a('0x32'),_0x1b8d70['name']);emit(util['format'](_0x326a('0x3e'),_0x1b8d70['name']),_0x326a('0x45'),{'sessionId':_0x24fdc4});return _0x9eb2b7[_0x326a('0x1a')](0xc8)['json']({'error':![],'message':_0x326a('0x46')});})[_0x326a('0x21')](handleError(_0x9eb2b7));};exports[_0x326a('0x47')]=function(_0xb191f5,_0x464e20){logger[_0x326a('0x2c')](_0x326a('0x48'),_0x464e20['body']);var _0x3e77a8=callsValidation[_0x326a('0xe')](_0xb191f5[_0x326a('0x2d')]);if(_0x3e77a8['length']>0x0){return _0x464e20['status'](0x190)[_0x326a('0x35')](_0x3e77a8);}var _0x1180c1=_0xb191f5[_0x326a('0x2d')][_0x326a('0x2e')];var _0x1e1e7c=respondWithRpcPromise(_0x326a('0x25'));var _0xd323ae=getAgent(_0x1180c1);return Promise[_0x326a('0x49')]([_0x1e1e7c,_0xd323ae])[_0x326a('0x1d')](function(_0x2c7838){var _0xcd71ea=_0x2c7838[0x0];var _0x3a588a=_0x2c7838[0x1];var _0x4ed8f5=_['filter'](_0xcd71ea[_0x326a('0x27')],function(_0x37dac0){return _0x37dac0[_0x326a('0x4a')]==_0x3a588a['id'];});return _0x464e20[_0x326a('0x1a')](0xc8)[_0x326a('0x35')]({'count':_0x4ed8f5['length'],'rows':_0x4ed8f5});})[_0x326a('0x21')](handleError(_0x464e20));};exports[_0x326a('0x4b')]=function(_0x53b801,_0x164250){logger[_0x326a('0x2c')](_0x326a('0x4c'),_0x53b801[_0x326a('0x2d')]);var _0x3a4323=conferenceValidation['validate'](_0x53b801['body']);if(_0x3a4323['length']>0x0){return _0x164250['status'](0x190)[_0x326a('0x35')](_0x3a4323);}var _0x4bd165=_0x53b801['body'][_0x326a('0x2e')];return getAgent(_0x4bd165)[_0x326a('0x1d')](function(_0x4e254c){logger[_0x326a('0x2c')](_0x326a('0x32'),_0x4e254c[_0x326a('0x19')]);emit(util['format'](_0x326a('0x3e'),_0x4e254c['name']),_0x326a('0x4d'));return _0x164250['status'](0xc8)['json']({'error':![],'message':_0x326a('0x4e')});})[_0x326a('0x21')](handleError(_0x164250));};exports[_0x326a('0x4f')]=function(_0x1753a2,_0x2af30a){logger[_0x326a('0x2c')](_0x326a('0x50'),_0x1753a2[_0x326a('0x2d')]);var _0x594eca=transferValidation[_0x326a('0xe')](_0x1753a2['body']);if(_0x594eca[_0x326a('0x28')]>0x0){return _0x2af30a[_0x326a('0x1a')](0x190)[_0x326a('0x35')](_0x594eca);}var _0x31d72c=_0x1753a2['body'][_0x326a('0x2e')];var _0x25ade0=_0x1753a2[_0x326a('0x2d')][_0x326a('0x39')];var _0x29e352=_0x1753a2['body'][_0x326a('0x51')];return getAgent(_0x31d72c)[_0x326a('0x1d')](function(_0x4502f7){logger[_0x326a('0x2c')]('entityFound:',_0x4502f7[_0x326a('0x19')]);emit(util[_0x326a('0x33')](_0x326a('0x3e'),_0x4502f7[_0x326a('0x19')]),_0x326a('0x52'),{'sessionId':_0x25ade0,'transferNumber':_0x29e352});return _0x2af30a[_0x326a('0x1a')](0xc8)[_0x326a('0x35')]({'error':![],'message':_0x326a('0x53')});})[_0x326a('0x21')](handleError(_0x2af30a));};