Built motion from commit 616d3211.|2.6.4
[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 _0xb07f=['hold','hold\x20fired:','user:%s','webbar:hold','hold\x20executed!','unhold\x20fired:','webbar:unhold','unhold\x20executed!','calls','calls\x20fired:','rows','conference','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','localhost','socket.io-emitter','validate','number','userId\x20is\x20required','string','callNumber\x20is\x20required','sessionId\x20is\x20required','transferNumber\x20is\x20required','info','stringify','log','handleError:','stack','name','send','status','NotFound','request','then','error','message','result','catch','User','agent','VoiceChannels','all','filter','UserId','length','\x20not\x20found!','originate\x20fired:','body','json','userId','callNumber','callerId','entityFound:','format','webbar:originate','hangup','hangup\x20fired:','sessionId','webbar:hangup','hangup\x20executed!','answer','answer\x20fired:','webbar:answer','answer\x20executed!'];(function(_0x1bd3ab,_0x352c42){var _0x37e394=function(_0x2f581d){while(--_0x2f581d){_0x1bd3ab['push'](_0x1bd3ab['shift']());}};_0x37e394(++_0x352c42);}(_0xb07f,0x109));var _0xfb07=function(_0x5d1d25,_0x763b36){_0x5d1d25=_0x5d1d25-0x0;var _0x5d5dce=_0xb07f[_0x5d1d25];return _0x5d5dce;};'use strict';var path=require(_0xfb07('0x0'));var fs=require('fs');var _=require(_0xfb07('0x1'));var db=require(_0xfb07('0x2'))['db'];var config=require(_0xfb07('0x3'));var util=require(_0xfb07('0x4'));var BPromise=require(_0xfb07('0x5'));var jayson=require(_0xfb07('0x6'));var amiClient=jayson[_0xfb07('0x7')][_0xfb07('0x8')]({'port':0x232a});var logger=require(_0xfb07('0x9'))(_0xfb07('0xa'));var Redis=require('ioredis');config[_0xfb07('0xb')]=_[_0xfb07('0xc')](config[_0xfb07('0xb')],{'host':_0xfb07('0xd'),'port':0x18eb});var io=require(_0xfb07('0xe'))(new Redis(config[_0xfb07('0xb')]));var Schema=require(_0xfb07('0xf'));var originateValidation=new Schema({'userId':{'type':_0xfb07('0x10'),'required':[!![],_0xfb07('0x11')]},'callNumber':{'type':_0xfb07('0x12'),'required':[!![],_0xfb07('0x13')]},'callerId':{'type':_0xfb07('0x12')},'callbackUrl':{'type':'string'}});var hangupValidation=new Schema({'userId':{'type':'number','required':[!![],'userId\x20is\x20required']},'sessionId':{'type':_0xfb07('0x12'),'required':![]}});var answerValidation=new Schema({'userId':{'type':_0xfb07('0x10'),'required':[!![],'userId\x20is\x20required']},'sessionId':{'type':_0xfb07('0x12'),'required':![]}});var transferValidation=new Schema({'userId':{'type':_0xfb07('0x10'),'required':[!![],_0xfb07('0x11')]},'sessionId':{'type':_0xfb07('0x12'),'required':[!![],_0xfb07('0x14')]},'transferNumber':{'type':_0xfb07('0x12'),'required':[!![],_0xfb07('0x15')]}});var holdValidation=new Schema({'userId':{'type':'number','required':[!![],_0xfb07('0x11')]},'sessionId':{'type':_0xfb07('0x12'),'required':![]}});var unholdValidation=new Schema({'userId':{'type':_0xfb07('0x10'),'required':[!![],_0xfb07('0x11')]},'sessionId':{'type':_0xfb07('0x12'),'required':![]}});var callsValidation=new Schema({'userId':{'type':_0xfb07('0x10'),'required':[!![],_0xfb07('0x11')]}});var conferenceValidation=new Schema({'userId':{'type':_0xfb07('0x10'),'required':[!![],_0xfb07('0x11')]}});function emit(_0x6a14e0,_0x3dde76,_0x1cfc43){logger[_0xfb07('0x16')](_0x6a14e0,_0x3dde76,JSON[_0xfb07('0x17')](_0x1cfc43));io['to'](_0x6a14e0)['emit'](_0x3dde76,_0x1cfc43);}function handleError(_0x57fc39){return function(_0x3e747e){console[_0xfb07('0x18')](_0xfb07('0x19'),_0x3e747e,_0x3e747e instanceof RangeError);logger['error'](_0x3e747e[_0xfb07('0x1a')]);if(_0x3e747e instanceof RangeError){if(_0x3e747e[_0xfb07('0x1b')]){delete _0x3e747e['name'];}_0x57fc39['status'](0x194)[_0xfb07('0x1c')](_0x3e747e);}else{if(_0x3e747e[_0xfb07('0x1b')]){delete _0x3e747e[_0xfb07('0x1b')];}_0x57fc39[_0xfb07('0x1d')](0x1f4)[_0xfb07('0x1c')](_0x3e747e);}};}function checkError(){return function(_0x323bec){if(!_0x323bec){throw new RangeError(_0xfb07('0x1e'));}return _0x323bec;};}function respondWithRpcPromise(_0x23c2be,_0x19ad99){return new BPromise(function(_0x578bb2,_0x45806a){var _0x56d0c4=amiClient;return _0x56d0c4[_0xfb07('0x1f')](_0x23c2be,_0x19ad99)[_0xfb07('0x20')](function(_0x428c85){if(_0x428c85[_0xfb07('0x21')]){if(_0x428c85[_0xfb07('0x21')]['code']===0x1f4){return _0x45806a(_0x428c85[_0xfb07('0x21')][_0xfb07('0x22')]);}return _0x578bb2(_0x428c85[_0xfb07('0x21')][_0xfb07('0x22')]);}else{_0x578bb2(_0x428c85[_0xfb07('0x23')]);}})[_0xfb07('0x24')](function(_0x531346){_0x45806a(_0x531346);});});}function getAgent(_0x36d6f3){return db[_0xfb07('0x25')]['findOne']({'where':{'id':_0x36d6f3,'role':_0xfb07('0x26')}})[_0xfb07('0x20')](checkError());}function getAgentCheckSession(_0xe813a7,_0x149ac0){return new BPromise(function(_0x46927a,_0x2b0650){var _0x20f01a=respondWithRpcPromise(_0xfb07('0x27'));var _0x95f1d=getAgent(_0xe813a7);Promise[_0xfb07('0x28')]([_0x20f01a,_0x95f1d])[_0xfb07('0x20')](function(_0x49b06e){var _0x217932=_0x49b06e[0x0];var _0x1e4cb8=_0x49b06e[0x1];var _0x36787a=_[_0xfb07('0x29')](_0x217932['rows'],function(_0x46d57e){return _0x46d57e[_0xfb07('0x2a')]==_0x1e4cb8['id']&&_0x46d57e['sessionId']==_0x149ac0;});if(_0x36787a[_0xfb07('0x2b')]==0x1){_0x46927a(_0x1e4cb8);}else{_0x2b0650(new RangeError('sessionId\x20'+_0x149ac0+_0xfb07('0x2c')));}});});}exports['originate']=function(_0x56b48c,_0x4a8d4c){logger[_0xfb07('0x16')](_0xfb07('0x2d'),_0x56b48c[_0xfb07('0x2e')]);var _0x4452d7=originateValidation[_0xfb07('0xf')](_0x56b48c[_0xfb07('0x2e')]);if(_0x4452d7['length']>0x0){return _0x4a8d4c['status'](0x190)[_0xfb07('0x2f')](_0x4452d7);}var _0x1cccdd=_0x56b48c[_0xfb07('0x2e')][_0xfb07('0x30')];var _0x5e28cd=_0x56b48c['body'][_0xfb07('0x31')];var _0x3e0d11=_0x56b48c[_0xfb07('0x2e')][_0xfb07('0x32')];var _0x4d06f5=_0x56b48c[_0xfb07('0x2e')]['callbackUrl'];return getAgent(_0x1cccdd)['then'](function(_0x4a5055){logger[_0xfb07('0x16')](_0xfb07('0x33'),_0x4a5055[_0xfb07('0x1b')]);emit(util[_0xfb07('0x34')]('user:%s',_0x4a5055['name']),_0xfb07('0x35'),{'callNumber':_0x5e28cd,'callerId':_0x3e0d11,'callbackUrl':_0x4d06f5});return _0x4a8d4c[_0xfb07('0x1d')](0xc8)['json']({'error':![],'message':'originate\x20executed!'});})['catch'](handleError(_0x4a8d4c));};exports[_0xfb07('0x36')]=function(_0x10cd8b,_0x55de52){logger['info'](_0xfb07('0x37'),_0x10cd8b[_0xfb07('0x2e')]);var _0x18c41f=hangupValidation[_0xfb07('0xf')](_0x10cd8b[_0xfb07('0x2e')]);if(_0x18c41f['length']>0x0){return _0x55de52[_0xfb07('0x1d')](0x190)[_0xfb07('0x2f')](_0x18c41f);}var _0xac769b=_0x10cd8b[_0xfb07('0x2e')]['userId'];var _0x4ab5dd=_0x10cd8b[_0xfb07('0x2e')][_0xfb07('0x38')];return getAgent(_0xac769b)[_0xfb07('0x20')](function(_0xc5df59){logger[_0xfb07('0x16')](_0xfb07('0x33'),_0xc5df59[_0xfb07('0x1b')]);emit(util['format']('user:%s',_0xc5df59[_0xfb07('0x1b')]),_0xfb07('0x39'),{'sessionId':_0x4ab5dd});return _0x55de52['status'](0xc8)['json']({'error':![],'message':_0xfb07('0x3a')});})[_0xfb07('0x24')](handleError(_0x55de52));};exports[_0xfb07('0x3b')]=function(_0x48c179,_0x479e61){logger[_0xfb07('0x16')](_0xfb07('0x3c'),_0x48c179[_0xfb07('0x2e')]);var _0x123e3d=answerValidation[_0xfb07('0xf')](_0x48c179[_0xfb07('0x2e')]);if(_0x123e3d[_0xfb07('0x2b')]>0x0){return _0x479e61[_0xfb07('0x1d')](0x190)[_0xfb07('0x2f')](_0x123e3d);}var _0x492f1b=_0x48c179[_0xfb07('0x2e')][_0xfb07('0x30')];var _0x3d6372=_0x48c179[_0xfb07('0x2e')][_0xfb07('0x38')];return getAgent(_0x492f1b)[_0xfb07('0x20')](function(_0x4cb228){logger[_0xfb07('0x16')](_0xfb07('0x33'),_0x4cb228[_0xfb07('0x1b')]);emit(util['format']('user:%s',_0x4cb228[_0xfb07('0x1b')]),_0xfb07('0x3d'),{'sessionId':_0x3d6372});return _0x479e61['status'](0xc8)[_0xfb07('0x2f')]({'error':![],'message':_0xfb07('0x3e')});})[_0xfb07('0x24')](handleError(_0x479e61));};exports[_0xfb07('0x3f')]=function(_0x44568c,_0x567958){logger['info'](_0xfb07('0x40'),_0x44568c[_0xfb07('0x2e')]);var _0x38354c=holdValidation[_0xfb07('0xf')](_0x44568c[_0xfb07('0x2e')]);if(_0x38354c[_0xfb07('0x2b')]>0x0){return _0x567958[_0xfb07('0x1d')](0x190)[_0xfb07('0x2f')](_0x38354c);}var _0x186987=_0x44568c[_0xfb07('0x2e')]['userId'];var _0x5b304d=_0x44568c['body'][_0xfb07('0x38')];return getAgent(_0x186987)['then'](function(_0x2397f8){logger[_0xfb07('0x16')](_0xfb07('0x33'),_0x2397f8[_0xfb07('0x1b')]);emit(util[_0xfb07('0x34')](_0xfb07('0x41'),_0x2397f8['name']),_0xfb07('0x42'),{'sessionId':_0x5b304d});return _0x567958[_0xfb07('0x1d')](0xc8)[_0xfb07('0x2f')]({'error':![],'message':_0xfb07('0x43')});})[_0xfb07('0x24')](handleError(_0x567958));};exports['unhold']=function(_0x3cfb89,_0x3b85f7){logger[_0xfb07('0x16')](_0xfb07('0x44'),_0x3cfb89[_0xfb07('0x2e')]);var _0x5179c2=unholdValidation[_0xfb07('0xf')](_0x3cfb89[_0xfb07('0x2e')]);if(_0x5179c2[_0xfb07('0x2b')]>0x0){return _0x3b85f7[_0xfb07('0x1d')](0x190)[_0xfb07('0x2f')](_0x5179c2);}var _0x529936=_0x3cfb89[_0xfb07('0x2e')][_0xfb07('0x30')];var _0x26a7b7=_0x3cfb89[_0xfb07('0x2e')]['sessionId'];return getAgent(_0x529936)[_0xfb07('0x20')](function(_0x204469){logger[_0xfb07('0x16')](_0xfb07('0x33'),_0x204469[_0xfb07('0x1b')]);emit(util[_0xfb07('0x34')](_0xfb07('0x41'),_0x204469[_0xfb07('0x1b')]),_0xfb07('0x45'),{'sessionId':_0x26a7b7});return _0x3b85f7[_0xfb07('0x1d')](0xc8)['json']({'error':![],'message':_0xfb07('0x46')});})['catch'](handleError(_0x3b85f7));};exports[_0xfb07('0x47')]=function(_0xfcaeb7,_0x22fa5c){logger[_0xfb07('0x16')](_0xfb07('0x48'),_0x22fa5c[_0xfb07('0x2e')]);var _0x1c76af=callsValidation['validate'](_0xfcaeb7['body']);if(_0x1c76af['length']>0x0){return _0x22fa5c[_0xfb07('0x1d')](0x190)[_0xfb07('0x2f')](_0x1c76af);}var _0x44d1a1=_0xfcaeb7['body'][_0xfb07('0x30')];var _0x4ef1a4=respondWithRpcPromise(_0xfb07('0x27'));var _0x29e4be=getAgent(_0x44d1a1);return Promise['all']([_0x4ef1a4,_0x29e4be])[_0xfb07('0x20')](function(_0x2f9f0f){var _0x18d0de=_0x2f9f0f[0x0];var _0xc122ae=_0x2f9f0f[0x1];var _0x294dc8=_[_0xfb07('0x29')](_0x18d0de[_0xfb07('0x49')],function(_0x18ae74){return _0x18ae74[_0xfb07('0x2a')]==_0xc122ae['id'];});return _0x22fa5c[_0xfb07('0x1d')](0xc8)[_0xfb07('0x2f')]({'count':_0x294dc8[_0xfb07('0x2b')],'rows':_0x294dc8});})[_0xfb07('0x24')](handleError(_0x22fa5c));};exports[_0xfb07('0x4a')]=function(_0x5387ce,_0x275aba){logger[_0xfb07('0x16')]('conference\x20fired:',_0x5387ce['body']);var _0xb5bf41=conferenceValidation[_0xfb07('0xf')](_0x5387ce[_0xfb07('0x2e')]);if(_0xb5bf41['length']>0x0){return _0x275aba[_0xfb07('0x1d')](0x190)['json'](_0xb5bf41);}var _0x4e323f=_0x5387ce['body']['userId'];return getAgent(_0x4e323f)[_0xfb07('0x20')](function(_0x237117){logger[_0xfb07('0x16')](_0xfb07('0x33'),_0x237117[_0xfb07('0x1b')]);emit(util[_0xfb07('0x34')](_0xfb07('0x41'),_0x237117['name']),_0xfb07('0x4b'));return _0x275aba[_0xfb07('0x1d')](0xc8)[_0xfb07('0x2f')]({'error':![],'message':_0xfb07('0x4c')});})[_0xfb07('0x24')](handleError(_0x275aba));};exports[_0xfb07('0x4d')]=function(_0x268d88,_0x238492){logger['info'](_0xfb07('0x4e'),_0x268d88[_0xfb07('0x2e')]);var _0x3831bf=transferValidation[_0xfb07('0xf')](_0x268d88[_0xfb07('0x2e')]);if(_0x3831bf['length']>0x0){return _0x238492['status'](0x190)[_0xfb07('0x2f')](_0x3831bf);}var _0x231247=_0x268d88['body'][_0xfb07('0x30')];var _0x311c6d=_0x268d88[_0xfb07('0x2e')][_0xfb07('0x38')];var _0x127392=_0x268d88[_0xfb07('0x2e')][_0xfb07('0x4f')];return getAgent(_0x231247)['then'](function(_0x4c1238){logger[_0xfb07('0x16')]('entityFound:',_0x4c1238[_0xfb07('0x1b')]);emit(util[_0xfb07('0x34')](_0xfb07('0x41'),_0x4c1238[_0xfb07('0x1b')]),_0xfb07('0x50'),{'sessionId':_0x311c6d,'transferNumber':_0x127392});return _0x238492[_0xfb07('0x1d')](0xc8)[_0xfb07('0x2f')]({'error':![],'message':_0xfb07('0x51')});})[_0xfb07('0x24')](handleError(_0x238492));};