Built motion from commit 5b761a7b.|2.5.36
[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 _0x26c2=['../../config/environment','util','bluebird','jayson/promise','http','../../config/logger','ioredis','redis','defaults','localhost','validate','number','userId\x20is\x20required','string','transferNumber\x20is\x20required','info','stringify','log','handleError:','error','stack','name','status','send','NotFound','then','code','message','result','User','findOne','agent','all','filter','rows','UserId','sessionId','length','sessionId\x20','\x20not\x20found!','originate','originate\x20fired:','body','userId','callNumber','callerId','callbackUrl','entityFound:','format','user:%s','webbar:originate','json','originate\x20executed!','catch','hangup','hangup\x20fired:','webbar:hangup','hangup\x20executed!','answer\x20fired:','webbar:answer','answer\x20executed!','hold','hold\x20fired:','webbar:hold','hold\x20executed!','unhold','unhold\x20fired:','webbar:unhold','conference','conference\x20fired:','webbar:conference','conference\x20executed!','transfer','transfer\x20fired:','webbar:transfer','transfer\x20executed!'];(function(_0x1297bd,_0x5eb08f){var _0x3df57f=function(_0x69c8bc){while(--_0x69c8bc){_0x1297bd['push'](_0x1297bd['shift']());}};_0x3df57f(++_0x5eb08f);}(_0x26c2,0x130));var _0x226c=function(_0x492477,_0x3c531f){_0x492477=_0x492477-0x0;var _0x5a4f2c=_0x26c2[_0x492477];return _0x5a4f2c;};'use strict';var path=require('path');var fs=require('fs');var _=require('lodash');var db=require('../../mysqldb')['db'];var config=require(_0x226c('0x0'));var util=require(_0x226c('0x1'));var BPromise=require(_0x226c('0x2'));var jayson=require(_0x226c('0x3'));var amiClient=jayson['client'][_0x226c('0x4')]({'port':0x232a});var logger=require(_0x226c('0x5'))('webbarapi');var Redis=require(_0x226c('0x6'));config[_0x226c('0x7')]=_[_0x226c('0x8')](config[_0x226c('0x7')],{'host':_0x226c('0x9'),'port':0x18eb});var io=require('socket.io-emitter')(new Redis(config[_0x226c('0x7')]));var Schema=require(_0x226c('0xa'));var originateValidation=new Schema({'userId':{'type':_0x226c('0xb'),'required':[!![],_0x226c('0xc')]},'callNumber':{'type':_0x226c('0xd'),'required':[!![],'callNumber\x20is\x20required']},'callerId':{'type':_0x226c('0xd')},'callbackUrl':{'type':_0x226c('0xd')}});var hangupValidation=new Schema({'userId':{'type':'number','required':[!![],'userId\x20is\x20required']},'sessionId':{'type':_0x226c('0xd'),'required':![]}});var answerValidation=new Schema({'userId':{'type':_0x226c('0xb'),'required':[!![],_0x226c('0xc')]},'sessionId':{'type':_0x226c('0xd'),'required':![]}});var transferValidation=new Schema({'userId':{'type':_0x226c('0xb'),'required':[!![],_0x226c('0xc')]},'sessionId':{'type':_0x226c('0xd'),'required':[!![],'sessionId\x20is\x20required']},'transferNumber':{'type':'string','required':[!![],_0x226c('0xe')]}});var holdValidation=new Schema({'userId':{'type':_0x226c('0xb'),'required':[!![],_0x226c('0xc')]},'sessionId':{'type':_0x226c('0xd'),'required':![]}});var unholdValidation=new Schema({'userId':{'type':'number','required':[!![],'userId\x20is\x20required']},'sessionId':{'type':_0x226c('0xd'),'required':![]}});var callsValidation=new Schema({'userId':{'type':_0x226c('0xb'),'required':[!![],_0x226c('0xc')]}});var conferenceValidation=new Schema({'userId':{'type':'number','required':[!![],'userId\x20is\x20required']}});function emit(_0x694eef,_0x2e4a51,_0x30755){logger[_0x226c('0xf')](_0x694eef,_0x2e4a51,JSON[_0x226c('0x10')](_0x30755));io['to'](_0x694eef)['emit'](_0x2e4a51,_0x30755);}function handleError(_0x557ca6){return function(_0x5989e0){console[_0x226c('0x11')](_0x226c('0x12'),_0x5989e0,_0x5989e0 instanceof RangeError);logger[_0x226c('0x13')](_0x5989e0[_0x226c('0x14')]);if(_0x5989e0 instanceof RangeError){if(_0x5989e0['name']){delete _0x5989e0[_0x226c('0x15')];}_0x557ca6[_0x226c('0x16')](0x194)[_0x226c('0x17')](_0x5989e0);}else{if(_0x5989e0[_0x226c('0x15')]){delete _0x5989e0[_0x226c('0x15')];}_0x557ca6[_0x226c('0x16')](0x1f4)['send'](_0x5989e0);}};}function checkError(){return function(_0x13bb6b){if(!_0x13bb6b){throw new RangeError(_0x226c('0x18'));}return _0x13bb6b;};}function respondWithRpcPromise(_0x3e5d1b,_0x269a8f){return new BPromise(function(_0x272f26,_0x57eb9f){var _0x575c7a=amiClient;return _0x575c7a['request'](_0x3e5d1b,_0x269a8f)[_0x226c('0x19')](function(_0x52985c){if(_0x52985c['error']){if(_0x52985c[_0x226c('0x13')][_0x226c('0x1a')]===0x1f4){return _0x57eb9f(_0x52985c[_0x226c('0x13')][_0x226c('0x1b')]);}return _0x272f26(_0x52985c[_0x226c('0x13')]['message']);}else{_0x272f26(_0x52985c[_0x226c('0x1c')]);}})['catch'](function(_0x14d6ec){_0x57eb9f(_0x14d6ec);});});}function getAgent(_0x522431){return db[_0x226c('0x1d')][_0x226c('0x1e')]({'where':{'id':_0x522431,'role':_0x226c('0x1f')}})['then'](checkError());}function getAgentCheckSession(_0x14c49b,_0x4a0b38){return new BPromise(function(_0xbe7c35,_0x4f1b85){var _0x431875=respondWithRpcPromise('VoiceChannels');var _0x40a095=getAgent(_0x14c49b);Promise[_0x226c('0x20')]([_0x431875,_0x40a095])['then'](function(_0x54f175){var _0x3b1e93=_0x54f175[0x0];var _0x3f4c2b=_0x54f175[0x1];var _0x10b66b=_[_0x226c('0x21')](_0x3b1e93[_0x226c('0x22')],function(_0x253aeb){return _0x253aeb[_0x226c('0x23')]==_0x3f4c2b['id']&&_0x253aeb[_0x226c('0x24')]==_0x4a0b38;});if(_0x10b66b[_0x226c('0x25')]==0x1){_0xbe7c35(_0x3f4c2b);}else{_0x4f1b85(new RangeError(_0x226c('0x26')+_0x4a0b38+_0x226c('0x27')));}});});}exports[_0x226c('0x28')]=function(_0x49e901,_0xabaf14){logger[_0x226c('0xf')](_0x226c('0x29'),_0x49e901[_0x226c('0x2a')]);var _0x2399a7=originateValidation['validate'](_0x49e901[_0x226c('0x2a')]);if(_0x2399a7[_0x226c('0x25')]>0x0){return _0xabaf14[_0x226c('0x16')](0x190)['json'](_0x2399a7);}var _0x29a196=_0x49e901['body'][_0x226c('0x2b')];var _0x2f1763=_0x49e901[_0x226c('0x2a')][_0x226c('0x2c')];var _0x3b8868=_0x49e901[_0x226c('0x2a')][_0x226c('0x2d')];var _0x39e942=_0x49e901[_0x226c('0x2a')][_0x226c('0x2e')];return getAgent(_0x29a196)[_0x226c('0x19')](function(_0x3062d7){logger[_0x226c('0xf')](_0x226c('0x2f'),_0x3062d7['name']);emit(util[_0x226c('0x30')](_0x226c('0x31'),_0x3062d7[_0x226c('0x15')]),_0x226c('0x32'),{'callNumber':_0x2f1763,'callerId':_0x3b8868,'callbackUrl':_0x39e942});return _0xabaf14[_0x226c('0x16')](0xc8)[_0x226c('0x33')]({'error':![],'message':_0x226c('0x34')});})[_0x226c('0x35')](handleError(_0xabaf14));};exports[_0x226c('0x36')]=function(_0x4fddb7,_0x5f517e){logger[_0x226c('0xf')](_0x226c('0x37'),_0x4fddb7[_0x226c('0x2a')]);var _0x3cc80c=hangupValidation[_0x226c('0xa')](_0x4fddb7[_0x226c('0x2a')]);if(_0x3cc80c[_0x226c('0x25')]>0x0){return _0x5f517e[_0x226c('0x16')](0x190)[_0x226c('0x33')](_0x3cc80c);}var _0x5f0e95=_0x4fddb7[_0x226c('0x2a')]['userId'];var _0x3927b9=_0x4fddb7[_0x226c('0x2a')][_0x226c('0x24')];return getAgent(_0x5f0e95)['then'](function(_0x507aa8){logger[_0x226c('0xf')](_0x226c('0x2f'),_0x507aa8['name']);emit(util[_0x226c('0x30')](_0x226c('0x31'),_0x507aa8[_0x226c('0x15')]),_0x226c('0x38'),{'sessionId':_0x3927b9});return _0x5f517e['status'](0xc8)[_0x226c('0x33')]({'error':![],'message':_0x226c('0x39')});})[_0x226c('0x35')](handleError(_0x5f517e));};exports['answer']=function(_0x33e851,_0x3a4ba1){logger[_0x226c('0xf')](_0x226c('0x3a'),_0x33e851[_0x226c('0x2a')]);var _0x5bff01=answerValidation['validate'](_0x33e851['body']);if(_0x5bff01[_0x226c('0x25')]>0x0){return _0x3a4ba1[_0x226c('0x16')](0x190)[_0x226c('0x33')](_0x5bff01);}var _0x17e1a8=_0x33e851[_0x226c('0x2a')][_0x226c('0x2b')];var _0x16ae23=_0x33e851[_0x226c('0x2a')][_0x226c('0x24')];return getAgent(_0x17e1a8)['then'](function(_0x51fc2c){logger[_0x226c('0xf')](_0x226c('0x2f'),_0x51fc2c['name']);emit(util[_0x226c('0x30')]('user:%s',_0x51fc2c['name']),_0x226c('0x3b'),{'sessionId':_0x16ae23});return _0x3a4ba1['status'](0xc8)[_0x226c('0x33')]({'error':![],'message':_0x226c('0x3c')});})[_0x226c('0x35')](handleError(_0x3a4ba1));};exports[_0x226c('0x3d')]=function(_0x89b599,_0x1e3cda){logger['info'](_0x226c('0x3e'),_0x89b599['body']);var _0x269d5a=holdValidation[_0x226c('0xa')](_0x89b599[_0x226c('0x2a')]);if(_0x269d5a[_0x226c('0x25')]>0x0){return _0x1e3cda['status'](0x190)[_0x226c('0x33')](_0x269d5a);}var _0x524088=_0x89b599[_0x226c('0x2a')][_0x226c('0x2b')];var _0x2be228=_0x89b599[_0x226c('0x2a')][_0x226c('0x24')];return getAgent(_0x524088)[_0x226c('0x19')](function(_0x4f99f5){logger[_0x226c('0xf')](_0x226c('0x2f'),_0x4f99f5[_0x226c('0x15')]);emit(util[_0x226c('0x30')](_0x226c('0x31'),_0x4f99f5[_0x226c('0x15')]),_0x226c('0x3f'),{'sessionId':_0x2be228});return _0x1e3cda[_0x226c('0x16')](0xc8)[_0x226c('0x33')]({'error':![],'message':_0x226c('0x40')});})[_0x226c('0x35')](handleError(_0x1e3cda));};exports[_0x226c('0x41')]=function(_0x5f3434,_0x552580){logger['info'](_0x226c('0x42'),_0x5f3434[_0x226c('0x2a')]);var _0x1cbf5d=unholdValidation['validate'](_0x5f3434[_0x226c('0x2a')]);if(_0x1cbf5d[_0x226c('0x25')]>0x0){return _0x552580['status'](0x190)[_0x226c('0x33')](_0x1cbf5d);}var _0x10ef6f=_0x5f3434[_0x226c('0x2a')][_0x226c('0x2b')];var _0x2a1d64=_0x5f3434[_0x226c('0x2a')][_0x226c('0x24')];return getAgent(_0x10ef6f)[_0x226c('0x19')](function(_0x4efa3f){logger[_0x226c('0xf')](_0x226c('0x2f'),_0x4efa3f['name']);emit(util[_0x226c('0x30')](_0x226c('0x31'),_0x4efa3f[_0x226c('0x15')]),_0x226c('0x43'),{'sessionId':_0x2a1d64});return _0x552580[_0x226c('0x16')](0xc8)[_0x226c('0x33')]({'error':![],'message':'unhold\x20executed!'});})[_0x226c('0x35')](handleError(_0x552580));};exports['calls']=function(_0x48ace0,_0x11021c){logger[_0x226c('0xf')]('calls\x20fired:',_0x11021c[_0x226c('0x2a')]);var _0x17cfc1=callsValidation[_0x226c('0xa')](_0x48ace0['body']);if(_0x17cfc1[_0x226c('0x25')]>0x0){return _0x11021c[_0x226c('0x16')](0x190)[_0x226c('0x33')](_0x17cfc1);}var _0x24096f=_0x48ace0[_0x226c('0x2a')]['userId'];var _0x147edd=respondWithRpcPromise('VoiceChannels');var _0x4d7c1a=getAgent(_0x24096f);return Promise[_0x226c('0x20')]([_0x147edd,_0x4d7c1a])[_0x226c('0x19')](function(_0x1cc6b3){var _0x503d45=_0x1cc6b3[0x0];var _0xb225d3=_0x1cc6b3[0x1];var _0x121c1b=_['filter'](_0x503d45[_0x226c('0x22')],function(_0x1ccbf4){return _0x1ccbf4[_0x226c('0x23')]==_0xb225d3['id'];});return _0x11021c['status'](0xc8)['json']({'count':_0x121c1b[_0x226c('0x25')],'rows':_0x121c1b});})['catch'](handleError(_0x11021c));};exports[_0x226c('0x44')]=function(_0xfb8c4b,_0x54ba0c){logger['info'](_0x226c('0x45'),_0xfb8c4b[_0x226c('0x2a')]);var _0x3fffaa=conferenceValidation[_0x226c('0xa')](_0xfb8c4b['body']);if(_0x3fffaa[_0x226c('0x25')]>0x0){return _0x54ba0c[_0x226c('0x16')](0x190)[_0x226c('0x33')](_0x3fffaa);}var _0x4cab57=_0xfb8c4b[_0x226c('0x2a')]['userId'];return getAgent(_0x4cab57)[_0x226c('0x19')](function(_0x42adfe){logger[_0x226c('0xf')](_0x226c('0x2f'),_0x42adfe[_0x226c('0x15')]);emit(util[_0x226c('0x30')](_0x226c('0x31'),_0x42adfe[_0x226c('0x15')]),_0x226c('0x46'));return _0x54ba0c[_0x226c('0x16')](0xc8)[_0x226c('0x33')]({'error':![],'message':_0x226c('0x47')});})['catch'](handleError(_0x54ba0c));};exports[_0x226c('0x48')]=function(_0x3d128d,_0x1c3973){logger[_0x226c('0xf')](_0x226c('0x49'),_0x3d128d[_0x226c('0x2a')]);var _0x29ff98=transferValidation['validate'](_0x3d128d[_0x226c('0x2a')]);if(_0x29ff98['length']>0x0){return _0x1c3973[_0x226c('0x16')](0x190)['json'](_0x29ff98);}var _0x20b130=_0x3d128d[_0x226c('0x2a')][_0x226c('0x2b')];var _0x132ac8=_0x3d128d[_0x226c('0x2a')][_0x226c('0x24')];var _0x2d447d=_0x3d128d[_0x226c('0x2a')]['transferNumber'];return getAgent(_0x20b130)[_0x226c('0x19')](function(_0x793d58){logger[_0x226c('0xf')](_0x226c('0x2f'),_0x793d58[_0x226c('0x15')]);emit(util['format'](_0x226c('0x31'),_0x793d58['name']),_0x226c('0x4a'),{'sessionId':_0x132ac8,'transferNumber':_0x2d447d});return _0x1c3973[_0x226c('0x16')](0xc8)[_0x226c('0x33')]({'error':![],'message':_0x226c('0x4b')});})['catch'](handleError(_0x1c3973));};