Built motion from commit (unavailable).|2.5.26
[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 _0xdad2=['send','NotFound','then','error','code','message','catch','findOne','agent','VoiceChannels','all','filter','rows','UserId','sessionId','length','originate','info','originate\x20fired:','body','json','userId','callNumber','callerId','callbackUrl','entityFound:','format','user:%s','webbar:originate','originate\x20executed!','hangup\x20fired:','webbar:hangup','answer','webbar:answer','answer\x20executed!','hold','hold\x20fired:','hold\x20executed!','webbar:unhold','unhold\x20executed!','calls','calls\x20fired:','conference','conference\x20fired:','conference\x20executed!','transfer\x20fired:','transferNumber','transfer\x20executed!','lodash','../../mysqldb','util','bluebird','jayson/promise','http','../../config/logger','ioredis','redis','defaults','validate','number','userId\x20is\x20required','string','callNumber\x20is\x20required','sessionId\x20is\x20required','transferNumber\x20is\x20required','emit','log','handleError:','stack','name','status'];(function(_0x529587,_0x7b9e47){var _0x4ea039=function(_0x51cf40){while(--_0x51cf40){_0x529587['push'](_0x529587['shift']());}};_0x4ea039(++_0x7b9e47);}(_0xdad2,0x14c));var _0x2dad=function(_0x59ee6f,_0x450239){_0x59ee6f=_0x59ee6f-0x0;var _0x4c0979=_0xdad2[_0x59ee6f];return _0x4c0979;};'use strict';var path=require('path');var fs=require('fs');var _=require(_0x2dad('0x0'));var db=require(_0x2dad('0x1'))['db'];var config=require('../../config/environment');var util=require(_0x2dad('0x2'));var BPromise=require(_0x2dad('0x3'));var jayson=require(_0x2dad('0x4'));var amiClient=jayson['client'][_0x2dad('0x5')]({'port':0x232a});var logger=require(_0x2dad('0x6'))('webbarapi');var Redis=require(_0x2dad('0x7'));config[_0x2dad('0x8')]=_[_0x2dad('0x9')](config[_0x2dad('0x8')],{'host':'localhost','port':0x18eb});var io=require('socket.io-emitter')(new Redis(config[_0x2dad('0x8')]));var Schema=require(_0x2dad('0xa'));var originateValidation=new Schema({'userId':{'type':_0x2dad('0xb'),'required':[!![],_0x2dad('0xc')]},'callNumber':{'type':_0x2dad('0xd'),'required':[!![],_0x2dad('0xe')]},'callerId':{'type':'string'},'callbackUrl':{'type':_0x2dad('0xd')}});var hangupValidation=new Schema({'userId':{'type':'number','required':[!![],_0x2dad('0xc')]},'sessionId':{'type':_0x2dad('0xd'),'required':![]}});var answerValidation=new Schema({'userId':{'type':'number','required':[!![],_0x2dad('0xc')]},'sessionId':{'type':_0x2dad('0xd'),'required':![]}});var transferValidation=new Schema({'userId':{'type':_0x2dad('0xb'),'required':[!![],'userId\x20is\x20required']},'sessionId':{'type':_0x2dad('0xd'),'required':[!![],_0x2dad('0xf')]},'transferNumber':{'type':'string','required':[!![],_0x2dad('0x10')]}});var holdValidation=new Schema({'userId':{'type':_0x2dad('0xb'),'required':[!![],_0x2dad('0xc')]},'sessionId':{'type':_0x2dad('0xd'),'required':![]}});var unholdValidation=new Schema({'userId':{'type':'number','required':[!![],_0x2dad('0xc')]},'sessionId':{'type':_0x2dad('0xd'),'required':![]}});var callsValidation=new Schema({'userId':{'type':_0x2dad('0xb'),'required':[!![],_0x2dad('0xc')]}});var conferenceValidation=new Schema({'userId':{'type':_0x2dad('0xb'),'required':[!![],'userId\x20is\x20required']}});function emit(_0x569c25,_0x26ac1d,_0x511f4a){logger['info'](_0x569c25,_0x26ac1d,JSON['stringify'](_0x511f4a));io['to'](_0x569c25)[_0x2dad('0x11')](_0x26ac1d,_0x511f4a);}function handleError(_0x100b84){return function(_0x2a2602){console[_0x2dad('0x12')](_0x2dad('0x13'),_0x2a2602,_0x2a2602 instanceof RangeError);logger['error'](_0x2a2602[_0x2dad('0x14')]);if(_0x2a2602 instanceof RangeError){if(_0x2a2602[_0x2dad('0x15')]){delete _0x2a2602['name'];}_0x100b84[_0x2dad('0x16')](0x194)['send'](_0x2a2602);}else{if(_0x2a2602['name']){delete _0x2a2602[_0x2dad('0x15')];}_0x100b84[_0x2dad('0x16')](0x1f4)[_0x2dad('0x17')](_0x2a2602);}};}function checkError(){return function(_0x3b8fe5){if(!_0x3b8fe5){throw new RangeError(_0x2dad('0x18'));}return _0x3b8fe5;};}function respondWithRpcPromise(_0x1f3461,_0x49624c){return new BPromise(function(_0x4e1bd1,_0x2e1798){var _0x5d66af=amiClient;return _0x5d66af['request'](_0x1f3461,_0x49624c)[_0x2dad('0x19')](function(_0x3865e9){if(_0x3865e9[_0x2dad('0x1a')]){if(_0x3865e9['error'][_0x2dad('0x1b')]===0x1f4){return _0x2e1798(_0x3865e9['error'][_0x2dad('0x1c')]);}return _0x4e1bd1(_0x3865e9[_0x2dad('0x1a')][_0x2dad('0x1c')]);}else{_0x4e1bd1(_0x3865e9['result']);}})[_0x2dad('0x1d')](function(_0x30e0fe){_0x2e1798(_0x30e0fe);});});}function getAgent(_0xa8d751){return db['User'][_0x2dad('0x1e')]({'where':{'id':_0xa8d751,'role':_0x2dad('0x1f')}})[_0x2dad('0x19')](checkError());}function getAgentCheckSession(_0x518ee2,_0xa7b9f0){return new BPromise(function(_0x343905,_0x3c1434){var _0x379961=respondWithRpcPromise(_0x2dad('0x20'));var _0x37c3e1=getAgent(_0x518ee2);Promise[_0x2dad('0x21')]([_0x379961,_0x37c3e1])['then'](function(_0x202f0a){var _0x1dd053=_0x202f0a[0x0];var _0x4c46b4=_0x202f0a[0x1];var _0x5d4d37=_[_0x2dad('0x22')](_0x1dd053[_0x2dad('0x23')],function(_0x5acfe0){return _0x5acfe0[_0x2dad('0x24')]==_0x4c46b4['id']&&_0x5acfe0[_0x2dad('0x25')]==_0xa7b9f0;});if(_0x5d4d37[_0x2dad('0x26')]==0x1){_0x343905(_0x4c46b4);}else{_0x3c1434(new RangeError('sessionId\x20'+_0xa7b9f0+'\x20not\x20found!'));}});});}exports[_0x2dad('0x27')]=function(_0x305d12,_0x353370){logger[_0x2dad('0x28')](_0x2dad('0x29'),_0x305d12['body']);var _0x3d1e69=originateValidation['validate'](_0x305d12[_0x2dad('0x2a')]);if(_0x3d1e69[_0x2dad('0x26')]>0x0){return _0x353370[_0x2dad('0x16')](0x190)[_0x2dad('0x2b')](_0x3d1e69);}var _0x35cf62=_0x305d12[_0x2dad('0x2a')][_0x2dad('0x2c')];var _0x37176c=_0x305d12[_0x2dad('0x2a')][_0x2dad('0x2d')];var _0x77af3b=_0x305d12[_0x2dad('0x2a')][_0x2dad('0x2e')];var _0x128a75=_0x305d12[_0x2dad('0x2a')][_0x2dad('0x2f')];return getAgent(_0x35cf62)[_0x2dad('0x19')](function(_0x347e76){logger['info'](_0x2dad('0x30'),_0x347e76['name']);emit(util[_0x2dad('0x31')](_0x2dad('0x32'),_0x347e76['name']),_0x2dad('0x33'),{'callNumber':_0x37176c,'callerId':_0x77af3b,'callbackUrl':_0x128a75});return _0x353370[_0x2dad('0x16')](0xc8)[_0x2dad('0x2b')]({'error':![],'message':_0x2dad('0x34')});})['catch'](handleError(_0x353370));};exports['hangup']=function(_0x38b285,_0x3b5e41){logger[_0x2dad('0x28')](_0x2dad('0x35'),_0x38b285[_0x2dad('0x2a')]);var _0x26c69c=hangupValidation['validate'](_0x38b285[_0x2dad('0x2a')]);if(_0x26c69c[_0x2dad('0x26')]>0x0){return _0x3b5e41[_0x2dad('0x16')](0x190)['json'](_0x26c69c);}var _0xae523f=_0x38b285[_0x2dad('0x2a')]['userId'];var _0xbdef8b=_0x38b285[_0x2dad('0x2a')][_0x2dad('0x25')];return getAgent(_0xae523f)[_0x2dad('0x19')](function(_0x54c327){logger[_0x2dad('0x28')](_0x2dad('0x30'),_0x54c327['name']);emit(util['format'](_0x2dad('0x32'),_0x54c327['name']),_0x2dad('0x36'),{'sessionId':_0xbdef8b});return _0x3b5e41[_0x2dad('0x16')](0xc8)['json']({'error':![],'message':'hangup\x20executed!'});})[_0x2dad('0x1d')](handleError(_0x3b5e41));};exports[_0x2dad('0x37')]=function(_0x4bf50a,_0x15ac17){logger[_0x2dad('0x28')]('answer\x20fired:',_0x4bf50a[_0x2dad('0x2a')]);var _0x5905f8=answerValidation[_0x2dad('0xa')](_0x4bf50a[_0x2dad('0x2a')]);if(_0x5905f8[_0x2dad('0x26')]>0x0){return _0x15ac17['status'](0x190)[_0x2dad('0x2b')](_0x5905f8);}var _0x300d0b=_0x4bf50a[_0x2dad('0x2a')][_0x2dad('0x2c')];var _0x5cb5f1=_0x4bf50a[_0x2dad('0x2a')][_0x2dad('0x25')];return getAgent(_0x300d0b)['then'](function(_0x442a13){logger['info']('entityFound:',_0x442a13[_0x2dad('0x15')]);emit(util[_0x2dad('0x31')](_0x2dad('0x32'),_0x442a13[_0x2dad('0x15')]),_0x2dad('0x38'),{'sessionId':_0x5cb5f1});return _0x15ac17[_0x2dad('0x16')](0xc8)[_0x2dad('0x2b')]({'error':![],'message':_0x2dad('0x39')});})['catch'](handleError(_0x15ac17));};exports[_0x2dad('0x3a')]=function(_0x18017a,_0x155f48){logger['info'](_0x2dad('0x3b'),_0x18017a[_0x2dad('0x2a')]);var _0x285934=holdValidation[_0x2dad('0xa')](_0x18017a[_0x2dad('0x2a')]);if(_0x285934['length']>0x0){return _0x155f48['status'](0x190)['json'](_0x285934);}var _0x59084c=_0x18017a[_0x2dad('0x2a')]['userId'];var _0x3fcd88=_0x18017a[_0x2dad('0x2a')][_0x2dad('0x25')];return getAgent(_0x59084c)[_0x2dad('0x19')](function(_0x44c295){logger['info'](_0x2dad('0x30'),_0x44c295[_0x2dad('0x15')]);emit(util[_0x2dad('0x31')](_0x2dad('0x32'),_0x44c295['name']),'webbar:hold',{'sessionId':_0x3fcd88});return _0x155f48[_0x2dad('0x16')](0xc8)['json']({'error':![],'message':_0x2dad('0x3c')});})[_0x2dad('0x1d')](handleError(_0x155f48));};exports['unhold']=function(_0x1bc98b,_0x54d139){logger[_0x2dad('0x28')]('unhold\x20fired:',_0x1bc98b['body']);var _0x35aca1=unholdValidation[_0x2dad('0xa')](_0x1bc98b['body']);if(_0x35aca1[_0x2dad('0x26')]>0x0){return _0x54d139[_0x2dad('0x16')](0x190)[_0x2dad('0x2b')](_0x35aca1);}var _0x26620f=_0x1bc98b['body']['userId'];var _0xbb93bd=_0x1bc98b['body'][_0x2dad('0x25')];return getAgent(_0x26620f)[_0x2dad('0x19')](function(_0x37ff75){logger[_0x2dad('0x28')](_0x2dad('0x30'),_0x37ff75[_0x2dad('0x15')]);emit(util[_0x2dad('0x31')](_0x2dad('0x32'),_0x37ff75['name']),_0x2dad('0x3d'),{'sessionId':_0xbb93bd});return _0x54d139[_0x2dad('0x16')](0xc8)['json']({'error':![],'message':_0x2dad('0x3e')});})[_0x2dad('0x1d')](handleError(_0x54d139));};exports[_0x2dad('0x3f')]=function(_0x1fb14b,_0x2e48e3){logger[_0x2dad('0x28')](_0x2dad('0x40'),_0x2e48e3[_0x2dad('0x2a')]);var _0x3b6c3d=callsValidation[_0x2dad('0xa')](_0x1fb14b[_0x2dad('0x2a')]);if(_0x3b6c3d[_0x2dad('0x26')]>0x0){return _0x2e48e3['status'](0x190)[_0x2dad('0x2b')](_0x3b6c3d);}var _0x20b3a2=_0x1fb14b[_0x2dad('0x2a')][_0x2dad('0x2c')];var _0x1001c1=respondWithRpcPromise(_0x2dad('0x20'));var _0x315ba0=getAgent(_0x20b3a2);return Promise['all']([_0x1001c1,_0x315ba0])[_0x2dad('0x19')](function(_0x5d7778){var _0x66da4d=_0x5d7778[0x0];var _0x40f6ee=_0x5d7778[0x1];var _0x3a3c94=_[_0x2dad('0x22')](_0x66da4d[_0x2dad('0x23')],function(_0x29c810){return _0x29c810[_0x2dad('0x24')]==_0x40f6ee['id'];});return _0x2e48e3[_0x2dad('0x16')](0xc8)[_0x2dad('0x2b')]({'count':_0x3a3c94[_0x2dad('0x26')],'rows':_0x3a3c94});})[_0x2dad('0x1d')](handleError(_0x2e48e3));};exports[_0x2dad('0x41')]=function(_0x4c2ff1,_0x1a7628){logger[_0x2dad('0x28')](_0x2dad('0x42'),_0x4c2ff1[_0x2dad('0x2a')]);var _0x390be0=conferenceValidation[_0x2dad('0xa')](_0x4c2ff1[_0x2dad('0x2a')]);if(_0x390be0[_0x2dad('0x26')]>0x0){return _0x1a7628['status'](0x190)[_0x2dad('0x2b')](_0x390be0);}var _0x3b4ccb=_0x4c2ff1[_0x2dad('0x2a')][_0x2dad('0x2c')];return getAgent(_0x3b4ccb)['then'](function(_0x106c45){logger[_0x2dad('0x28')](_0x2dad('0x30'),_0x106c45[_0x2dad('0x15')]);emit(util[_0x2dad('0x31')](_0x2dad('0x32'),_0x106c45[_0x2dad('0x15')]),'webbar:conference');return _0x1a7628['status'](0xc8)[_0x2dad('0x2b')]({'error':![],'message':_0x2dad('0x43')});})[_0x2dad('0x1d')](handleError(_0x1a7628));};exports['transfer']=function(_0x14983b,_0x401f70){logger[_0x2dad('0x28')](_0x2dad('0x44'),_0x14983b['body']);var _0x3c03b2=transferValidation[_0x2dad('0xa')](_0x14983b[_0x2dad('0x2a')]);if(_0x3c03b2[_0x2dad('0x26')]>0x0){return _0x401f70['status'](0x190)[_0x2dad('0x2b')](_0x3c03b2);}var _0x4f306e=_0x14983b['body']['userId'];var _0x1e59a8=_0x14983b[_0x2dad('0x2a')][_0x2dad('0x25')];var _0x377b39=_0x14983b[_0x2dad('0x2a')][_0x2dad('0x45')];return getAgent(_0x4f306e)['then'](function(_0x36101b){logger[_0x2dad('0x28')](_0x2dad('0x30'),_0x36101b['name']);emit(util[_0x2dad('0x31')]('user:%s',_0x36101b['name']),'webbar:transfer',{'sessionId':_0x1e59a8,'transferNumber':_0x377b39});return _0x401f70[_0x2dad('0x16')](0xc8)[_0x2dad('0x2b')]({'error':![],'message':_0x2dad('0x46')});})[_0x2dad('0x1d')](handleError(_0x401f70));};