Built motion from commit (unavailable).|2.5.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 _0xc631=['sessionId\x20is\x20required','transferNumber\x20is\x20required','info','stringify','handleError:','error','stack','name','status','send','NotFound','request','code','message','result','catch','User','findOne','VoiceChannels','all','filter','rows','UserId','sessionId','\x20not\x20found!','body','validate','length','json','userId','callerId','callbackUrl','entityFound:','format','hangup','hangup\x20fired:','user:%s','webbar:hangup','hangup\x20executed!','answer','answer\x20fired:','then','webbar:answer','answer\x20executed!','webbar:hold','hold\x20executed!','webbar:unhold','unhold\x20executed!','calls\x20fired:','conference\x20fired:','conference\x20executed!','transfer','transfer\x20fired:','transferNumber','webbar:transfer','transfer\x20executed!','lodash','../../mysqldb','../../config/environment','util','bluebird','jayson/promise','client','http','../../config/logger','webbarapi','redis','defaults','localhost','socket.io-emitter','number','userId\x20is\x20required','string','callNumber\x20is\x20required'];(function(_0x552464,_0x29416b){var _0x191e28=function(_0x30fe56){while(--_0x30fe56){_0x552464['push'](_0x552464['shift']());}};_0x191e28(++_0x29416b);}(_0xc631,0x82));var _0x1c63=function(_0x3a2093,_0x39f284){_0x3a2093=_0x3a2093-0x0;var _0xa46c32=_0xc631[_0x3a2093];return _0xa46c32;};'use strict';var path=require('path');var fs=require('fs');var _=require(_0x1c63('0x0'));var db=require(_0x1c63('0x1'))['db'];var config=require(_0x1c63('0x2'));var util=require(_0x1c63('0x3'));var BPromise=require(_0x1c63('0x4'));var jayson=require(_0x1c63('0x5'));var amiClient=jayson[_0x1c63('0x6')][_0x1c63('0x7')]({'port':0x232a});var logger=require(_0x1c63('0x8'))(_0x1c63('0x9'));var Redis=require('ioredis');config[_0x1c63('0xa')]=_[_0x1c63('0xb')](config[_0x1c63('0xa')],{'host':_0x1c63('0xc'),'port':0x18eb});var io=require(_0x1c63('0xd'))(new Redis(config[_0x1c63('0xa')]));var Schema=require('validate');var originateValidation=new Schema({'userId':{'type':_0x1c63('0xe'),'required':[!![],_0x1c63('0xf')]},'callNumber':{'type':_0x1c63('0x10'),'required':[!![],_0x1c63('0x11')]},'callerId':{'type':_0x1c63('0x10')},'callbackUrl':{'type':_0x1c63('0x10')}});var hangupValidation=new Schema({'userId':{'type':_0x1c63('0xe'),'required':[!![],'userId\x20is\x20required']},'sessionId':{'type':'string','required':![]}});var answerValidation=new Schema({'userId':{'type':_0x1c63('0xe'),'required':[!![],_0x1c63('0xf')]},'sessionId':{'type':_0x1c63('0x10'),'required':![]}});var transferValidation=new Schema({'userId':{'type':_0x1c63('0xe'),'required':[!![],_0x1c63('0xf')]},'sessionId':{'type':_0x1c63('0x10'),'required':[!![],_0x1c63('0x12')]},'transferNumber':{'type':_0x1c63('0x10'),'required':[!![],_0x1c63('0x13')]}});var holdValidation=new Schema({'userId':{'type':_0x1c63('0xe'),'required':[!![],'userId\x20is\x20required']},'sessionId':{'type':_0x1c63('0x10'),'required':![]}});var unholdValidation=new Schema({'userId':{'type':'number','required':[!![],_0x1c63('0xf')]},'sessionId':{'type':_0x1c63('0x10'),'required':![]}});var callsValidation=new Schema({'userId':{'type':_0x1c63('0xe'),'required':[!![],_0x1c63('0xf')]}});var conferenceValidation=new Schema({'userId':{'type':_0x1c63('0xe'),'required':[!![],_0x1c63('0xf')]}});function emit(_0x131eca,_0x5a852e,_0x518953){logger[_0x1c63('0x14')](_0x131eca,_0x5a852e,JSON[_0x1c63('0x15')](_0x518953));io['to'](_0x131eca)['emit'](_0x5a852e,_0x518953);}function handleError(_0x4d4cc1){return function(_0x645a90){console['log'](_0x1c63('0x16'),_0x645a90,_0x645a90 instanceof RangeError);logger[_0x1c63('0x17')](_0x645a90[_0x1c63('0x18')]);if(_0x645a90 instanceof RangeError){if(_0x645a90[_0x1c63('0x19')]){delete _0x645a90[_0x1c63('0x19')];}_0x4d4cc1[_0x1c63('0x1a')](0x194)['send'](_0x645a90);}else{if(_0x645a90[_0x1c63('0x19')]){delete _0x645a90['name'];}_0x4d4cc1['status'](0x1f4)[_0x1c63('0x1b')](_0x645a90);}};}function checkError(){return function(_0x2a0ead){if(!_0x2a0ead){throw new RangeError(_0x1c63('0x1c'));}return _0x2a0ead;};}function respondWithRpcPromise(_0x2e75dd,_0x38bde7){return new BPromise(function(_0x284491,_0x2c373e){var _0x534b24=amiClient;return _0x534b24[_0x1c63('0x1d')](_0x2e75dd,_0x38bde7)['then'](function(_0xec8500){if(_0xec8500[_0x1c63('0x17')]){if(_0xec8500[_0x1c63('0x17')][_0x1c63('0x1e')]===0x1f4){return _0x2c373e(_0xec8500[_0x1c63('0x17')][_0x1c63('0x1f')]);}return _0x284491(_0xec8500['error']['message']);}else{_0x284491(_0xec8500[_0x1c63('0x20')]);}})[_0x1c63('0x21')](function(_0x15894d){_0x2c373e(_0x15894d);});});}function getAgent(_0x1d2072){return db[_0x1c63('0x22')][_0x1c63('0x23')]({'where':{'id':_0x1d2072,'role':'agent'}})['then'](checkError());}function getAgentCheckSession(_0x35cc59,_0x5562d6){return new BPromise(function(_0x480020,_0x36d781){var _0xc85e63=respondWithRpcPromise(_0x1c63('0x24'));var _0x245288=getAgent(_0x35cc59);Promise[_0x1c63('0x25')]([_0xc85e63,_0x245288])['then'](function(_0x4c0900){var _0x5aea6f=_0x4c0900[0x0];var _0xa16b97=_0x4c0900[0x1];var _0x139562=_[_0x1c63('0x26')](_0x5aea6f[_0x1c63('0x27')],function(_0x12b6f5){return _0x12b6f5[_0x1c63('0x28')]==_0xa16b97['id']&&_0x12b6f5[_0x1c63('0x29')]==_0x5562d6;});if(_0x139562['length']==0x1){_0x480020(_0xa16b97);}else{_0x36d781(new RangeError('sessionId\x20'+_0x5562d6+_0x1c63('0x2a')));}});});}exports['originate']=function(_0x2fe6cc,_0x5235ee){logger['info']('originate\x20fired:',_0x2fe6cc[_0x1c63('0x2b')]);var _0x49fe5a=originateValidation[_0x1c63('0x2c')](_0x2fe6cc[_0x1c63('0x2b')]);if(_0x49fe5a[_0x1c63('0x2d')]>0x0){return _0x5235ee[_0x1c63('0x1a')](0x190)[_0x1c63('0x2e')](_0x49fe5a);}var _0x3e1541=_0x2fe6cc[_0x1c63('0x2b')][_0x1c63('0x2f')];var _0x16f503=_0x2fe6cc[_0x1c63('0x2b')]['callNumber'];var _0x3c9e29=_0x2fe6cc[_0x1c63('0x2b')][_0x1c63('0x30')];var _0x358bb6=_0x2fe6cc[_0x1c63('0x2b')][_0x1c63('0x31')];return getAgent(_0x3e1541)['then'](function(_0x239ece){logger['info'](_0x1c63('0x32'),_0x239ece[_0x1c63('0x19')]);emit(util[_0x1c63('0x33')]('user:%s',_0x239ece['name']),'webbar:originate',{'callNumber':_0x16f503,'callerId':_0x3c9e29,'callbackUrl':_0x358bb6});return _0x5235ee['status'](0xc8)[_0x1c63('0x2e')]({'error':![],'message':'originate\x20executed!'});})[_0x1c63('0x21')](handleError(_0x5235ee));};exports[_0x1c63('0x34')]=function(_0x20b4ac,_0x1b6c39){logger[_0x1c63('0x14')](_0x1c63('0x35'),_0x20b4ac[_0x1c63('0x2b')]);var _0x110360=hangupValidation[_0x1c63('0x2c')](_0x20b4ac['body']);if(_0x110360[_0x1c63('0x2d')]>0x0){return _0x1b6c39[_0x1c63('0x1a')](0x190)[_0x1c63('0x2e')](_0x110360);}var _0x2f01e9=_0x20b4ac['body'][_0x1c63('0x2f')];var _0x58825b=_0x20b4ac[_0x1c63('0x2b')][_0x1c63('0x29')];return getAgent(_0x2f01e9)['then'](function(_0x543dc8){logger[_0x1c63('0x14')]('entityFound:',_0x543dc8[_0x1c63('0x19')]);emit(util[_0x1c63('0x33')](_0x1c63('0x36'),_0x543dc8[_0x1c63('0x19')]),_0x1c63('0x37'),{'sessionId':_0x58825b});return _0x1b6c39[_0x1c63('0x1a')](0xc8)[_0x1c63('0x2e')]({'error':![],'message':_0x1c63('0x38')});})[_0x1c63('0x21')](handleError(_0x1b6c39));};exports[_0x1c63('0x39')]=function(_0x99d8dc,_0x3e85cd){logger['info'](_0x1c63('0x3a'),_0x99d8dc['body']);var _0x4fa875=answerValidation[_0x1c63('0x2c')](_0x99d8dc[_0x1c63('0x2b')]);if(_0x4fa875['length']>0x0){return _0x3e85cd[_0x1c63('0x1a')](0x190)[_0x1c63('0x2e')](_0x4fa875);}var _0x546219=_0x99d8dc['body'][_0x1c63('0x2f')];var _0xdbafa8=_0x99d8dc[_0x1c63('0x2b')]['sessionId'];return getAgent(_0x546219)[_0x1c63('0x3b')](function(_0x540758){logger[_0x1c63('0x14')](_0x1c63('0x32'),_0x540758[_0x1c63('0x19')]);emit(util[_0x1c63('0x33')](_0x1c63('0x36'),_0x540758['name']),_0x1c63('0x3c'),{'sessionId':_0xdbafa8});return _0x3e85cd['status'](0xc8)[_0x1c63('0x2e')]({'error':![],'message':_0x1c63('0x3d')});})[_0x1c63('0x21')](handleError(_0x3e85cd));};exports['hold']=function(_0x2dc204,_0x96dfeb){logger[_0x1c63('0x14')]('hold\x20fired:',_0x2dc204[_0x1c63('0x2b')]);var _0xfc273d=holdValidation['validate'](_0x2dc204[_0x1c63('0x2b')]);if(_0xfc273d[_0x1c63('0x2d')]>0x0){return _0x96dfeb[_0x1c63('0x1a')](0x190)[_0x1c63('0x2e')](_0xfc273d);}var _0x4eddf4=_0x2dc204[_0x1c63('0x2b')][_0x1c63('0x2f')];var _0x11b2ea=_0x2dc204[_0x1c63('0x2b')][_0x1c63('0x29')];return getAgent(_0x4eddf4)['then'](function(_0x4cb803){logger[_0x1c63('0x14')](_0x1c63('0x32'),_0x4cb803[_0x1c63('0x19')]);emit(util[_0x1c63('0x33')](_0x1c63('0x36'),_0x4cb803[_0x1c63('0x19')]),_0x1c63('0x3e'),{'sessionId':_0x11b2ea});return _0x96dfeb[_0x1c63('0x1a')](0xc8)['json']({'error':![],'message':_0x1c63('0x3f')});})['catch'](handleError(_0x96dfeb));};exports['unhold']=function(_0x1afdc6,_0x117a88){logger[_0x1c63('0x14')]('unhold\x20fired:',_0x1afdc6['body']);var _0x5d6853=unholdValidation[_0x1c63('0x2c')](_0x1afdc6['body']);if(_0x5d6853[_0x1c63('0x2d')]>0x0){return _0x117a88['status'](0x190)['json'](_0x5d6853);}var _0x5383a3=_0x1afdc6['body']['userId'];var _0x1f08a0=_0x1afdc6['body'][_0x1c63('0x29')];return getAgent(_0x5383a3)[_0x1c63('0x3b')](function(_0x4dcf52){logger[_0x1c63('0x14')]('entityFound:',_0x4dcf52[_0x1c63('0x19')]);emit(util[_0x1c63('0x33')](_0x1c63('0x36'),_0x4dcf52['name']),_0x1c63('0x40'),{'sessionId':_0x1f08a0});return _0x117a88[_0x1c63('0x1a')](0xc8)[_0x1c63('0x2e')]({'error':![],'message':_0x1c63('0x41')});})[_0x1c63('0x21')](handleError(_0x117a88));};exports['calls']=function(_0x2ddabf,_0x18624e){logger[_0x1c63('0x14')](_0x1c63('0x42'),_0x18624e[_0x1c63('0x2b')]);var _0x17f86e=callsValidation[_0x1c63('0x2c')](_0x2ddabf[_0x1c63('0x2b')]);if(_0x17f86e[_0x1c63('0x2d')]>0x0){return _0x18624e[_0x1c63('0x1a')](0x190)[_0x1c63('0x2e')](_0x17f86e);}var _0x55f0b1=_0x2ddabf[_0x1c63('0x2b')][_0x1c63('0x2f')];var _0x476441=respondWithRpcPromise(_0x1c63('0x24'));var _0x9dac3d=getAgent(_0x55f0b1);return Promise[_0x1c63('0x25')]([_0x476441,_0x9dac3d])[_0x1c63('0x3b')](function(_0xe1751a){var _0x63bca7=_0xe1751a[0x0];var _0x285c7b=_0xe1751a[0x1];var _0x28f9e1=_[_0x1c63('0x26')](_0x63bca7[_0x1c63('0x27')],function(_0x37b5ea){return _0x37b5ea['UserId']==_0x285c7b['id'];});return _0x18624e[_0x1c63('0x1a')](0xc8)[_0x1c63('0x2e')]({'count':_0x28f9e1[_0x1c63('0x2d')],'rows':_0x28f9e1});})[_0x1c63('0x21')](handleError(_0x18624e));};exports['conference']=function(_0x21611f,_0x416b6c){logger['info'](_0x1c63('0x43'),_0x21611f[_0x1c63('0x2b')]);var _0x2c9327=conferenceValidation[_0x1c63('0x2c')](_0x21611f[_0x1c63('0x2b')]);if(_0x2c9327[_0x1c63('0x2d')]>0x0){return _0x416b6c[_0x1c63('0x1a')](0x190)[_0x1c63('0x2e')](_0x2c9327);}var _0xb069a7=_0x21611f['body']['userId'];return getAgent(_0xb069a7)[_0x1c63('0x3b')](function(_0x2f2be2){logger['info'](_0x1c63('0x32'),_0x2f2be2[_0x1c63('0x19')]);emit(util['format']('user:%s',_0x2f2be2[_0x1c63('0x19')]),'webbar:conference');return _0x416b6c[_0x1c63('0x1a')](0xc8)[_0x1c63('0x2e')]({'error':![],'message':_0x1c63('0x44')});})[_0x1c63('0x21')](handleError(_0x416b6c));};exports[_0x1c63('0x45')]=function(_0x24ec34,_0x5167ea){logger[_0x1c63('0x14')](_0x1c63('0x46'),_0x24ec34[_0x1c63('0x2b')]);var _0x40f1db=transferValidation['validate'](_0x24ec34[_0x1c63('0x2b')]);if(_0x40f1db[_0x1c63('0x2d')]>0x0){return _0x5167ea['status'](0x190)[_0x1c63('0x2e')](_0x40f1db);}var _0x7e41f=_0x24ec34[_0x1c63('0x2b')][_0x1c63('0x2f')];var _0x227733=_0x24ec34[_0x1c63('0x2b')][_0x1c63('0x29')];var _0x121173=_0x24ec34['body'][_0x1c63('0x47')];return getAgent(_0x7e41f)[_0x1c63('0x3b')](function(_0x7e3193){logger[_0x1c63('0x14')](_0x1c63('0x32'),_0x7e3193[_0x1c63('0x19')]);emit(util[_0x1c63('0x33')](_0x1c63('0x36'),_0x7e3193[_0x1c63('0x19')]),_0x1c63('0x48'),{'sessionId':_0x227733,'transferNumber':_0x121173});return _0x5167ea['status'](0xc8)[_0x1c63('0x2e')]({'error':![],'message':_0x1c63('0x49')});})[_0x1c63('0x21')](handleError(_0x5167ea));};