f2a02af128898969d7920b1406419682ba0aa59b
[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 _0xc288=['hold','hold\x20fired:','webbar:hold','hold\x20executed!','unhold','webbar:unhold','unhold\x20executed!','calls','conference','conference\x20fired:','webbar:conference','conference\x20executed!','transfer\x20fired:','transferNumber','webbar:transfer','path','../../mysqldb','../../config/environment','util','bluebird','jayson/promise','client','http','../../config/logger','webbarapi','ioredis','defaults','socket.io-emitter','redis','validate','number','userId\x20is\x20required','string','sessionId\x20is\x20required','transferNumber\x20is\x20required','info','log','handleError:','name','status','send','NotFound','request','then','error','message','result','catch','User','findOne','agent','all','filter','rows','UserId','sessionId','length','sessionId\x20','\x20not\x20found!','originate','body','userId','callerId','callbackUrl','entityFound:','format','webbar:originate','json','originate\x20executed!','hangup','hangup\x20fired:','user:%s','webbar:hangup','hangup\x20executed!','answer\x20fired:','webbar:answer'];(function(_0x16bb67,_0x4d9734){var _0x36da60=function(_0xe854f7){while(--_0xe854f7){_0x16bb67['push'](_0x16bb67['shift']());}};_0x36da60(++_0x4d9734);}(_0xc288,0x18b));var _0x8c28=function(_0x20a99f,_0xba34e){_0x20a99f=_0x20a99f-0x0;var _0x4fe929=_0xc288[_0x20a99f];return _0x4fe929;};'use strict';var path=require(_0x8c28('0x0'));var fs=require('fs');var _=require('lodash');var db=require(_0x8c28('0x1'))['db'];var config=require(_0x8c28('0x2'));var util=require(_0x8c28('0x3'));var BPromise=require(_0x8c28('0x4'));var jayson=require(_0x8c28('0x5'));var amiClient=jayson[_0x8c28('0x6')][_0x8c28('0x7')]({'port':0x232a});var logger=require(_0x8c28('0x8'))(_0x8c28('0x9'));var Redis=require(_0x8c28('0xa'));config['redis']=_[_0x8c28('0xb')](config['redis'],{'host':'localhost','port':0x18eb});var io=require(_0x8c28('0xc'))(new Redis(config[_0x8c28('0xd')]));var Schema=require(_0x8c28('0xe'));var originateValidation=new Schema({'userId':{'type':_0x8c28('0xf'),'required':[!![],_0x8c28('0x10')]},'callNumber':{'type':_0x8c28('0x11'),'required':[!![],'callNumber\x20is\x20required']},'callerId':{'type':_0x8c28('0x11')},'callbackUrl':{'type':_0x8c28('0x11')}});var hangupValidation=new Schema({'userId':{'type':'number','required':[!![],'userId\x20is\x20required']},'sessionId':{'type':'string','required':![]}});var answerValidation=new Schema({'userId':{'type':_0x8c28('0xf'),'required':[!![],_0x8c28('0x10')]},'sessionId':{'type':'string','required':![]}});var transferValidation=new Schema({'userId':{'type':'number','required':[!![],_0x8c28('0x10')]},'sessionId':{'type':'string','required':[!![],_0x8c28('0x12')]},'transferNumber':{'type':_0x8c28('0x11'),'required':[!![],_0x8c28('0x13')]}});var holdValidation=new Schema({'userId':{'type':'number','required':[!![],_0x8c28('0x10')]},'sessionId':{'type':'string','required':![]}});var unholdValidation=new Schema({'userId':{'type':_0x8c28('0xf'),'required':[!![],_0x8c28('0x10')]},'sessionId':{'type':_0x8c28('0x11'),'required':![]}});var callsValidation=new Schema({'userId':{'type':_0x8c28('0xf'),'required':[!![],_0x8c28('0x10')]}});var conferenceValidation=new Schema({'userId':{'type':_0x8c28('0xf'),'required':[!![],_0x8c28('0x10')]}});function emit(_0x3443cd,_0x1ff287,_0x1fee3b){logger[_0x8c28('0x14')](_0x3443cd,_0x1ff287,JSON['stringify'](_0x1fee3b));io['to'](_0x3443cd)['emit'](_0x1ff287,_0x1fee3b);}function handleError(_0x534921){return function(_0x4ab4ba){console[_0x8c28('0x15')](_0x8c28('0x16'),_0x4ab4ba,_0x4ab4ba instanceof RangeError);logger['error'](_0x4ab4ba['stack']);if(_0x4ab4ba instanceof RangeError){if(_0x4ab4ba[_0x8c28('0x17')]){delete _0x4ab4ba[_0x8c28('0x17')];}_0x534921[_0x8c28('0x18')](0x194)['send'](_0x4ab4ba);}else{if(_0x4ab4ba[_0x8c28('0x17')]){delete _0x4ab4ba[_0x8c28('0x17')];}_0x534921[_0x8c28('0x18')](0x1f4)[_0x8c28('0x19')](_0x4ab4ba);}};}function checkError(){return function(_0x5cc229){if(!_0x5cc229){throw new RangeError(_0x8c28('0x1a'));}return _0x5cc229;};}function respondWithRpcPromise(_0x596085,_0x52503b){return new BPromise(function(_0x526211,_0x21105d){var _0x515fe0=amiClient;return _0x515fe0[_0x8c28('0x1b')](_0x596085,_0x52503b)[_0x8c28('0x1c')](function(_0x3d37c7){if(_0x3d37c7[_0x8c28('0x1d')]){if(_0x3d37c7[_0x8c28('0x1d')]['code']===0x1f4){return _0x21105d(_0x3d37c7[_0x8c28('0x1d')][_0x8c28('0x1e')]);}return _0x526211(_0x3d37c7[_0x8c28('0x1d')][_0x8c28('0x1e')]);}else{_0x526211(_0x3d37c7[_0x8c28('0x1f')]);}})[_0x8c28('0x20')](function(_0x59e116){_0x21105d(_0x59e116);});});}function getAgent(_0x27190c){return db[_0x8c28('0x21')][_0x8c28('0x22')]({'where':{'id':_0x27190c,'role':_0x8c28('0x23')}})[_0x8c28('0x1c')](checkError());}function getAgentCheckSession(_0x30b40e,_0x32ef24){return new BPromise(function(_0x2468a1,_0x59843c){var _0x5bf2b5=respondWithRpcPromise('VoiceChannels');var _0x18f9d8=getAgent(_0x30b40e);Promise[_0x8c28('0x24')]([_0x5bf2b5,_0x18f9d8])[_0x8c28('0x1c')](function(_0x80b4){var _0x4de045=_0x80b4[0x0];var _0x21592a=_0x80b4[0x1];var _0xff24=_[_0x8c28('0x25')](_0x4de045[_0x8c28('0x26')],function(_0x3bdc6d){return _0x3bdc6d[_0x8c28('0x27')]==_0x21592a['id']&&_0x3bdc6d[_0x8c28('0x28')]==_0x32ef24;});if(_0xff24[_0x8c28('0x29')]==0x1){_0x2468a1(_0x21592a);}else{_0x59843c(new RangeError(_0x8c28('0x2a')+_0x32ef24+_0x8c28('0x2b')));}});});}exports[_0x8c28('0x2c')]=function(_0x7f5e85,_0x5e4e59){logger[_0x8c28('0x14')]('originate\x20fired:',_0x7f5e85[_0x8c28('0x2d')]);var _0x3bb132=originateValidation[_0x8c28('0xe')](_0x7f5e85[_0x8c28('0x2d')]);if(_0x3bb132['length']>0x0){return _0x5e4e59[_0x8c28('0x18')](0x190)['json'](_0x3bb132);}var _0xf7b0c3=_0x7f5e85['body'][_0x8c28('0x2e')];var _0x1de85f=_0x7f5e85[_0x8c28('0x2d')]['callNumber'];var _0x5993b2=_0x7f5e85[_0x8c28('0x2d')][_0x8c28('0x2f')];var _0x1d61a4=_0x7f5e85['body'][_0x8c28('0x30')];return getAgent(_0xf7b0c3)[_0x8c28('0x1c')](function(_0x22720d){logger[_0x8c28('0x14')](_0x8c28('0x31'),_0x22720d[_0x8c28('0x17')]);emit(util[_0x8c28('0x32')]('user:%s',_0x22720d[_0x8c28('0x17')]),_0x8c28('0x33'),{'callNumber':_0x1de85f,'callerId':_0x5993b2,'callbackUrl':_0x1d61a4});return _0x5e4e59[_0x8c28('0x18')](0xc8)[_0x8c28('0x34')]({'error':![],'message':_0x8c28('0x35')});})[_0x8c28('0x20')](handleError(_0x5e4e59));};exports[_0x8c28('0x36')]=function(_0x34c46b,_0x124f63){logger['info'](_0x8c28('0x37'),_0x34c46b[_0x8c28('0x2d')]);var _0x21edb5=hangupValidation[_0x8c28('0xe')](_0x34c46b[_0x8c28('0x2d')]);if(_0x21edb5['length']>0x0){return _0x124f63[_0x8c28('0x18')](0x190)[_0x8c28('0x34')](_0x21edb5);}var _0x212572=_0x34c46b[_0x8c28('0x2d')][_0x8c28('0x2e')];var _0x36b0b2=_0x34c46b[_0x8c28('0x2d')]['sessionId'];return getAgent(_0x212572)['then'](function(_0x2fe056){logger[_0x8c28('0x14')](_0x8c28('0x31'),_0x2fe056['name']);emit(util[_0x8c28('0x32')](_0x8c28('0x38'),_0x2fe056['name']),_0x8c28('0x39'),{'sessionId':_0x36b0b2});return _0x124f63[_0x8c28('0x18')](0xc8)[_0x8c28('0x34')]({'error':![],'message':_0x8c28('0x3a')});})[_0x8c28('0x20')](handleError(_0x124f63));};exports['answer']=function(_0x49496e,_0x236fce){logger['info'](_0x8c28('0x3b'),_0x49496e['body']);var _0x27013d=answerValidation[_0x8c28('0xe')](_0x49496e['body']);if(_0x27013d[_0x8c28('0x29')]>0x0){return _0x236fce[_0x8c28('0x18')](0x190)[_0x8c28('0x34')](_0x27013d);}var _0x1423c3=_0x49496e[_0x8c28('0x2d')][_0x8c28('0x2e')];var _0x3b7a4d=_0x49496e[_0x8c28('0x2d')]['sessionId'];return getAgent(_0x1423c3)[_0x8c28('0x1c')](function(_0x403e34){logger['info']('entityFound:',_0x403e34['name']);emit(util[_0x8c28('0x32')]('user:%s',_0x403e34[_0x8c28('0x17')]),_0x8c28('0x3c'),{'sessionId':_0x3b7a4d});return _0x236fce[_0x8c28('0x18')](0xc8)[_0x8c28('0x34')]({'error':![],'message':'answer\x20executed!'});})['catch'](handleError(_0x236fce));};exports[_0x8c28('0x3d')]=function(_0x2c28e8,_0x463e4e){logger['info'](_0x8c28('0x3e'),_0x2c28e8[_0x8c28('0x2d')]);var _0x5d755c=holdValidation[_0x8c28('0xe')](_0x2c28e8['body']);if(_0x5d755c['length']>0x0){return _0x463e4e[_0x8c28('0x18')](0x190)[_0x8c28('0x34')](_0x5d755c);}var _0x3506a0=_0x2c28e8[_0x8c28('0x2d')][_0x8c28('0x2e')];var _0xc6c88e=_0x2c28e8[_0x8c28('0x2d')]['sessionId'];return getAgent(_0x3506a0)[_0x8c28('0x1c')](function(_0x50af4e){logger[_0x8c28('0x14')](_0x8c28('0x31'),_0x50af4e[_0x8c28('0x17')]);emit(util[_0x8c28('0x32')](_0x8c28('0x38'),_0x50af4e[_0x8c28('0x17')]),_0x8c28('0x3f'),{'sessionId':_0xc6c88e});return _0x463e4e[_0x8c28('0x18')](0xc8)['json']({'error':![],'message':_0x8c28('0x40')});})[_0x8c28('0x20')](handleError(_0x463e4e));};exports[_0x8c28('0x41')]=function(_0x31073e,_0x5a6105){logger[_0x8c28('0x14')]('unhold\x20fired:',_0x31073e['body']);var _0x3ba15a=unholdValidation[_0x8c28('0xe')](_0x31073e[_0x8c28('0x2d')]);if(_0x3ba15a['length']>0x0){return _0x5a6105[_0x8c28('0x18')](0x190)[_0x8c28('0x34')](_0x3ba15a);}var _0x449d67=_0x31073e[_0x8c28('0x2d')][_0x8c28('0x2e')];var _0x1b7e98=_0x31073e[_0x8c28('0x2d')][_0x8c28('0x28')];return getAgent(_0x449d67)[_0x8c28('0x1c')](function(_0xbaae2e){logger['info'](_0x8c28('0x31'),_0xbaae2e['name']);emit(util[_0x8c28('0x32')](_0x8c28('0x38'),_0xbaae2e['name']),_0x8c28('0x42'),{'sessionId':_0x1b7e98});return _0x5a6105[_0x8c28('0x18')](0xc8)[_0x8c28('0x34')]({'error':![],'message':_0x8c28('0x43')});})[_0x8c28('0x20')](handleError(_0x5a6105));};exports[_0x8c28('0x44')]=function(_0x136f12,_0x224343){logger[_0x8c28('0x14')]('calls\x20fired:',_0x224343[_0x8c28('0x2d')]);var _0x56125f=callsValidation[_0x8c28('0xe')](_0x136f12[_0x8c28('0x2d')]);if(_0x56125f[_0x8c28('0x29')]>0x0){return _0x224343[_0x8c28('0x18')](0x190)['json'](_0x56125f);}var _0x8a4397=_0x136f12['body'][_0x8c28('0x2e')];var _0x49c995=respondWithRpcPromise('VoiceChannels');var _0x543659=getAgent(_0x8a4397);return Promise[_0x8c28('0x24')]([_0x49c995,_0x543659])[_0x8c28('0x1c')](function(_0x4cdcf2){var _0x336dcd=_0x4cdcf2[0x0];var _0x4f25d8=_0x4cdcf2[0x1];var _0x12e8b5=_[_0x8c28('0x25')](_0x336dcd['rows'],function(_0x3da2e3){return _0x3da2e3[_0x8c28('0x27')]==_0x4f25d8['id'];});return _0x224343[_0x8c28('0x18')](0xc8)[_0x8c28('0x34')]({'count':_0x12e8b5[_0x8c28('0x29')],'rows':_0x12e8b5});})[_0x8c28('0x20')](handleError(_0x224343));};exports[_0x8c28('0x45')]=function(_0x458b03,_0x1f1da8){logger[_0x8c28('0x14')](_0x8c28('0x46'),_0x458b03[_0x8c28('0x2d')]);var _0x47cbf1=conferenceValidation['validate'](_0x458b03[_0x8c28('0x2d')]);if(_0x47cbf1[_0x8c28('0x29')]>0x0){return _0x1f1da8[_0x8c28('0x18')](0x190)[_0x8c28('0x34')](_0x47cbf1);}var _0x2aa9ee=_0x458b03[_0x8c28('0x2d')]['userId'];return getAgent(_0x2aa9ee)[_0x8c28('0x1c')](function(_0x334e7e){logger[_0x8c28('0x14')]('entityFound:',_0x334e7e[_0x8c28('0x17')]);emit(util[_0x8c28('0x32')](_0x8c28('0x38'),_0x334e7e[_0x8c28('0x17')]),_0x8c28('0x47'));return _0x1f1da8['status'](0xc8)[_0x8c28('0x34')]({'error':![],'message':_0x8c28('0x48')});})[_0x8c28('0x20')](handleError(_0x1f1da8));};exports['transfer']=function(_0x174de8,_0x47b820){logger[_0x8c28('0x14')](_0x8c28('0x49'),_0x174de8[_0x8c28('0x2d')]);var _0xd85e42=transferValidation['validate'](_0x174de8[_0x8c28('0x2d')]);if(_0xd85e42[_0x8c28('0x29')]>0x0){return _0x47b820[_0x8c28('0x18')](0x190)[_0x8c28('0x34')](_0xd85e42);}var _0x26f988=_0x174de8[_0x8c28('0x2d')][_0x8c28('0x2e')];var _0x4a62cf=_0x174de8[_0x8c28('0x2d')][_0x8c28('0x28')];var _0x5d521c=_0x174de8[_0x8c28('0x2d')][_0x8c28('0x4a')];return getAgent(_0x26f988)['then'](function(_0x668257){logger['info']('entityFound:',_0x668257[_0x8c28('0x17')]);emit(util['format'](_0x8c28('0x38'),_0x668257[_0x8c28('0x17')]),_0x8c28('0x4b'),{'sessionId':_0x4a62cf,'transferNumber':_0x5d521c});return _0x47b820[_0x8c28('0x18')](0xc8)[_0x8c28('0x34')]({'error':![],'message':'transfer\x20executed!'});})[_0x8c28('0x20')](handleError(_0x47b820));};