Built motion from commit (unavailable).|2.5.24
[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 _0x61ea=['answer\x20fired:','webbar:answer','answer\x20executed!','hold','hold\x20fired:','webbar:hold','hold\x20executed!','unhold\x20fired:','calls','calls\x20fired:','VoiceChannels','filter','conference\x20fired:','webbar:conference','conference\x20executed!','transfer','transfer\x20fired:','transferNumber','transfer\x20executed!','path','lodash','../../mysqldb','../../config/environment','bluebird','http','webbarapi','ioredis','redis','defaults','localhost','socket.io-emitter','validate','callNumber\x20is\x20required','string','number','userId\x20is\x20required','sessionId\x20is\x20required','info','stringify','emit','handleError:','error','stack','name','status','send','NotFound','request','then','code','message','catch','User','findOne','agent','all','rows','UserId','sessionId','sessionId\x20','originate\x20fired:','body','length','json','userId','callerId','callbackUrl','entityFound:','format','user:%s','webbar:originate','hangup','hangup\x20fired:','webbar:hangup','hangup\x20executed!'];(function(_0x47b58b,_0x41a189){var _0x46bebe=function(_0x22bbfa){while(--_0x22bbfa){_0x47b58b['push'](_0x47b58b['shift']());}};_0x46bebe(++_0x41a189);}(_0x61ea,0x1d5));var _0xa61e=function(_0x479c62,_0x81287a){_0x479c62=_0x479c62-0x0;var _0x3dda90=_0x61ea[_0x479c62];return _0x3dda90;};'use strict';var path=require(_0xa61e('0x0'));var fs=require('fs');var _=require(_0xa61e('0x1'));var db=require(_0xa61e('0x2'))['db'];var config=require(_0xa61e('0x3'));var util=require('util');var BPromise=require(_0xa61e('0x4'));var jayson=require('jayson/promise');var amiClient=jayson['client'][_0xa61e('0x5')]({'port':0x232a});var logger=require('../../config/logger')(_0xa61e('0x6'));var Redis=require(_0xa61e('0x7'));config[_0xa61e('0x8')]=_[_0xa61e('0x9')](config[_0xa61e('0x8')],{'host':_0xa61e('0xa'),'port':0x18eb});var io=require(_0xa61e('0xb'))(new Redis(config[_0xa61e('0x8')]));var Schema=require(_0xa61e('0xc'));var originateValidation=new Schema({'userId':{'type':'number','required':[!![],'userId\x20is\x20required']},'callNumber':{'type':'string','required':[!![],_0xa61e('0xd')]},'callerId':{'type':_0xa61e('0xe')},'callbackUrl':{'type':_0xa61e('0xe')}});var hangupValidation=new Schema({'userId':{'type':_0xa61e('0xf'),'required':[!![],_0xa61e('0x10')]},'sessionId':{'type':_0xa61e('0xe'),'required':![]}});var answerValidation=new Schema({'userId':{'type':_0xa61e('0xf'),'required':[!![],'userId\x20is\x20required']},'sessionId':{'type':_0xa61e('0xe'),'required':![]}});var transferValidation=new Schema({'userId':{'type':_0xa61e('0xf'),'required':[!![],_0xa61e('0x10')]},'sessionId':{'type':'string','required':[!![],_0xa61e('0x11')]},'transferNumber':{'type':'string','required':[!![],'transferNumber\x20is\x20required']}});var holdValidation=new Schema({'userId':{'type':_0xa61e('0xf'),'required':[!![],_0xa61e('0x10')]},'sessionId':{'type':_0xa61e('0xe'),'required':![]}});var unholdValidation=new Schema({'userId':{'type':_0xa61e('0xf'),'required':[!![],_0xa61e('0x10')]},'sessionId':{'type':'string','required':![]}});var callsValidation=new Schema({'userId':{'type':_0xa61e('0xf'),'required':[!![],_0xa61e('0x10')]}});var conferenceValidation=new Schema({'userId':{'type':'number','required':[!![],_0xa61e('0x10')]}});function emit(_0x306270,_0x324bd7,_0x37c999){logger[_0xa61e('0x12')](_0x306270,_0x324bd7,JSON[_0xa61e('0x13')](_0x37c999));io['to'](_0x306270)[_0xa61e('0x14')](_0x324bd7,_0x37c999);}function handleError(_0x50bb0c){return function(_0x46886c){console['log'](_0xa61e('0x15'),_0x46886c,_0x46886c instanceof RangeError);logger[_0xa61e('0x16')](_0x46886c[_0xa61e('0x17')]);if(_0x46886c instanceof RangeError){if(_0x46886c[_0xa61e('0x18')]){delete _0x46886c['name'];}_0x50bb0c[_0xa61e('0x19')](0x194)['send'](_0x46886c);}else{if(_0x46886c[_0xa61e('0x18')]){delete _0x46886c['name'];}_0x50bb0c[_0xa61e('0x19')](0x1f4)[_0xa61e('0x1a')](_0x46886c);}};}function checkError(){return function(_0x541af6){if(!_0x541af6){throw new RangeError(_0xa61e('0x1b'));}return _0x541af6;};}function respondWithRpcPromise(_0x46e553,_0x409f6c){return new BPromise(function(_0x20b39c,_0x219bb4){var _0x39d081=amiClient;return _0x39d081[_0xa61e('0x1c')](_0x46e553,_0x409f6c)[_0xa61e('0x1d')](function(_0x4b7e0c){if(_0x4b7e0c['error']){if(_0x4b7e0c[_0xa61e('0x16')][_0xa61e('0x1e')]===0x1f4){return _0x219bb4(_0x4b7e0c['error'][_0xa61e('0x1f')]);}return _0x20b39c(_0x4b7e0c['error'][_0xa61e('0x1f')]);}else{_0x20b39c(_0x4b7e0c['result']);}})[_0xa61e('0x20')](function(_0x532057){_0x219bb4(_0x532057);});});}function getAgent(_0x48c5f0){return db[_0xa61e('0x21')][_0xa61e('0x22')]({'where':{'id':_0x48c5f0,'role':_0xa61e('0x23')}})[_0xa61e('0x1d')](checkError());}function getAgentCheckSession(_0x46f653,_0x263e18){return new BPromise(function(_0x4a37cf,_0x12ad91){var _0x13a8c7=respondWithRpcPromise('VoiceChannels');var _0x2efa04=getAgent(_0x46f653);Promise[_0xa61e('0x24')]([_0x13a8c7,_0x2efa04])[_0xa61e('0x1d')](function(_0x209223){var _0xaa9368=_0x209223[0x0];var _0x1358cf=_0x209223[0x1];var _0x22a74f=_['filter'](_0xaa9368[_0xa61e('0x25')],function(_0x3fb82e){return _0x3fb82e[_0xa61e('0x26')]==_0x1358cf['id']&&_0x3fb82e[_0xa61e('0x27')]==_0x263e18;});if(_0x22a74f['length']==0x1){_0x4a37cf(_0x1358cf);}else{_0x12ad91(new RangeError(_0xa61e('0x28')+_0x263e18+'\x20not\x20found!'));}});});}exports['originate']=function(_0x5e7bf5,_0x6fa430){logger[_0xa61e('0x12')](_0xa61e('0x29'),_0x5e7bf5[_0xa61e('0x2a')]);var _0x1cd0e0=originateValidation['validate'](_0x5e7bf5[_0xa61e('0x2a')]);if(_0x1cd0e0[_0xa61e('0x2b')]>0x0){return _0x6fa430[_0xa61e('0x19')](0x190)[_0xa61e('0x2c')](_0x1cd0e0);}var _0x52d51e=_0x5e7bf5[_0xa61e('0x2a')][_0xa61e('0x2d')];var _0xf9c73a=_0x5e7bf5['body']['callNumber'];var _0x103f1f=_0x5e7bf5[_0xa61e('0x2a')][_0xa61e('0x2e')];var _0xc7c0c8=_0x5e7bf5[_0xa61e('0x2a')][_0xa61e('0x2f')];return getAgent(_0x52d51e)[_0xa61e('0x1d')](function(_0x31400c){logger[_0xa61e('0x12')](_0xa61e('0x30'),_0x31400c[_0xa61e('0x18')]);emit(util[_0xa61e('0x31')](_0xa61e('0x32'),_0x31400c[_0xa61e('0x18')]),_0xa61e('0x33'),{'callNumber':_0xf9c73a,'callerId':_0x103f1f,'callbackUrl':_0xc7c0c8});return _0x6fa430[_0xa61e('0x19')](0xc8)[_0xa61e('0x2c')]({'error':![],'message':'originate\x20executed!'});})[_0xa61e('0x20')](handleError(_0x6fa430));};exports[_0xa61e('0x34')]=function(_0x20a1c3,_0xd16ea4){logger['info'](_0xa61e('0x35'),_0x20a1c3[_0xa61e('0x2a')]);var _0x560b6c=hangupValidation[_0xa61e('0xc')](_0x20a1c3[_0xa61e('0x2a')]);if(_0x560b6c[_0xa61e('0x2b')]>0x0){return _0xd16ea4[_0xa61e('0x19')](0x190)[_0xa61e('0x2c')](_0x560b6c);}var _0x182b15=_0x20a1c3[_0xa61e('0x2a')][_0xa61e('0x2d')];var _0x4675a6=_0x20a1c3['body'][_0xa61e('0x27')];return getAgent(_0x182b15)[_0xa61e('0x1d')](function(_0x3c84d5){logger[_0xa61e('0x12')](_0xa61e('0x30'),_0x3c84d5[_0xa61e('0x18')]);emit(util[_0xa61e('0x31')](_0xa61e('0x32'),_0x3c84d5[_0xa61e('0x18')]),_0xa61e('0x36'),{'sessionId':_0x4675a6});return _0xd16ea4[_0xa61e('0x19')](0xc8)[_0xa61e('0x2c')]({'error':![],'message':_0xa61e('0x37')});})[_0xa61e('0x20')](handleError(_0xd16ea4));};exports['answer']=function(_0xb8b27c,_0x3ea6a9){logger[_0xa61e('0x12')](_0xa61e('0x38'),_0xb8b27c['body']);var _0x59b30a=answerValidation['validate'](_0xb8b27c[_0xa61e('0x2a')]);if(_0x59b30a[_0xa61e('0x2b')]>0x0){return _0x3ea6a9[_0xa61e('0x19')](0x190)[_0xa61e('0x2c')](_0x59b30a);}var _0x2c544b=_0xb8b27c[_0xa61e('0x2a')][_0xa61e('0x2d')];var _0x3d72ae=_0xb8b27c[_0xa61e('0x2a')][_0xa61e('0x27')];return getAgent(_0x2c544b)[_0xa61e('0x1d')](function(_0x3c1e03){logger['info'](_0xa61e('0x30'),_0x3c1e03[_0xa61e('0x18')]);emit(util[_0xa61e('0x31')]('user:%s',_0x3c1e03[_0xa61e('0x18')]),_0xa61e('0x39'),{'sessionId':_0x3d72ae});return _0x3ea6a9[_0xa61e('0x19')](0xc8)['json']({'error':![],'message':_0xa61e('0x3a')});})['catch'](handleError(_0x3ea6a9));};exports[_0xa61e('0x3b')]=function(_0x44c1a8,_0x349b4b){logger[_0xa61e('0x12')](_0xa61e('0x3c'),_0x44c1a8[_0xa61e('0x2a')]);var _0x1a959a=holdValidation[_0xa61e('0xc')](_0x44c1a8[_0xa61e('0x2a')]);if(_0x1a959a['length']>0x0){return _0x349b4b[_0xa61e('0x19')](0x190)['json'](_0x1a959a);}var _0x5ddf77=_0x44c1a8[_0xa61e('0x2a')][_0xa61e('0x2d')];var _0x337012=_0x44c1a8[_0xa61e('0x2a')][_0xa61e('0x27')];return getAgent(_0x5ddf77)[_0xa61e('0x1d')](function(_0x3fc91e){logger['info'](_0xa61e('0x30'),_0x3fc91e[_0xa61e('0x18')]);emit(util[_0xa61e('0x31')](_0xa61e('0x32'),_0x3fc91e[_0xa61e('0x18')]),_0xa61e('0x3d'),{'sessionId':_0x337012});return _0x349b4b[_0xa61e('0x19')](0xc8)[_0xa61e('0x2c')]({'error':![],'message':_0xa61e('0x3e')});})[_0xa61e('0x20')](handleError(_0x349b4b));};exports['unhold']=function(_0x448caa,_0x14c56a){logger['info'](_0xa61e('0x3f'),_0x448caa[_0xa61e('0x2a')]);var _0x495c49=unholdValidation['validate'](_0x448caa[_0xa61e('0x2a')]);if(_0x495c49[_0xa61e('0x2b')]>0x0){return _0x14c56a[_0xa61e('0x19')](0x190)[_0xa61e('0x2c')](_0x495c49);}var _0x419ced=_0x448caa[_0xa61e('0x2a')]['userId'];var _0x7a3583=_0x448caa['body'][_0xa61e('0x27')];return getAgent(_0x419ced)[_0xa61e('0x1d')](function(_0x186b5c){logger['info'](_0xa61e('0x30'),_0x186b5c[_0xa61e('0x18')]);emit(util['format'](_0xa61e('0x32'),_0x186b5c[_0xa61e('0x18')]),'webbar:unhold',{'sessionId':_0x7a3583});return _0x14c56a[_0xa61e('0x19')](0xc8)[_0xa61e('0x2c')]({'error':![],'message':'unhold\x20executed!'});})['catch'](handleError(_0x14c56a));};exports[_0xa61e('0x40')]=function(_0x14ab20,_0x120d26){logger[_0xa61e('0x12')](_0xa61e('0x41'),_0x120d26['body']);var _0x1cf412=callsValidation[_0xa61e('0xc')](_0x14ab20[_0xa61e('0x2a')]);if(_0x1cf412['length']>0x0){return _0x120d26[_0xa61e('0x19')](0x190)[_0xa61e('0x2c')](_0x1cf412);}var _0x2e4144=_0x14ab20[_0xa61e('0x2a')][_0xa61e('0x2d')];var _0x932633=respondWithRpcPromise(_0xa61e('0x42'));var _0xc25bff=getAgent(_0x2e4144);return Promise[_0xa61e('0x24')]([_0x932633,_0xc25bff])[_0xa61e('0x1d')](function(_0x53594e){var _0x132637=_0x53594e[0x0];var _0x1c846f=_0x53594e[0x1];var _0x45366e=_[_0xa61e('0x43')](_0x132637[_0xa61e('0x25')],function(_0x3ffd03){return _0x3ffd03[_0xa61e('0x26')]==_0x1c846f['id'];});return _0x120d26[_0xa61e('0x19')](0xc8)[_0xa61e('0x2c')]({'count':_0x45366e[_0xa61e('0x2b')],'rows':_0x45366e});})['catch'](handleError(_0x120d26));};exports['conference']=function(_0x365afa,_0x41aa34){logger[_0xa61e('0x12')](_0xa61e('0x44'),_0x365afa[_0xa61e('0x2a')]);var _0x17fc5b=conferenceValidation[_0xa61e('0xc')](_0x365afa[_0xa61e('0x2a')]);if(_0x17fc5b[_0xa61e('0x2b')]>0x0){return _0x41aa34[_0xa61e('0x19')](0x190)[_0xa61e('0x2c')](_0x17fc5b);}var _0x5bf365=_0x365afa[_0xa61e('0x2a')]['userId'];return getAgent(_0x5bf365)[_0xa61e('0x1d')](function(_0x3ed196){logger[_0xa61e('0x12')](_0xa61e('0x30'),_0x3ed196[_0xa61e('0x18')]);emit(util[_0xa61e('0x31')](_0xa61e('0x32'),_0x3ed196[_0xa61e('0x18')]),_0xa61e('0x45'));return _0x41aa34[_0xa61e('0x19')](0xc8)[_0xa61e('0x2c')]({'error':![],'message':_0xa61e('0x46')});})[_0xa61e('0x20')](handleError(_0x41aa34));};exports[_0xa61e('0x47')]=function(_0x457aef,_0x419870){logger[_0xa61e('0x12')](_0xa61e('0x48'),_0x457aef['body']);var _0x3449d7=transferValidation[_0xa61e('0xc')](_0x457aef['body']);if(_0x3449d7[_0xa61e('0x2b')]>0x0){return _0x419870[_0xa61e('0x19')](0x190)[_0xa61e('0x2c')](_0x3449d7);}var _0x5e2284=_0x457aef[_0xa61e('0x2a')][_0xa61e('0x2d')];var _0x7c392a=_0x457aef[_0xa61e('0x2a')][_0xa61e('0x27')];var _0x1a3bb9=_0x457aef[_0xa61e('0x2a')][_0xa61e('0x49')];return getAgent(_0x5e2284)['then'](function(_0x5b358e){logger[_0xa61e('0x12')](_0xa61e('0x30'),_0x5b358e[_0xa61e('0x18')]);emit(util['format'](_0xa61e('0x32'),_0x5b358e[_0xa61e('0x18')]),'webbar:transfer',{'sessionId':_0x7c392a,'transferNumber':_0x1a3bb9});return _0x419870[_0xa61e('0x19')](0xc8)[_0xa61e('0x2c')]({'error':![],'message':_0xa61e('0x4a')});})['catch'](handleError(_0x419870));};