Built motion from commit (unavailable).|2.5.6
[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 _0xb32d=['unhold','unhold\x20fired:','webbar:unhold','unhold\x20executed!','calls','rows','conference','transfer','transfer\x20fired:','transferNumber','webbar:transfer','transfer\x20executed!','path','lodash','../../mysqldb','../../config/environment','util','client','http','webbarapi','ioredis','redis','defaults','localhost','validate','number','userId\x20is\x20required','string','callNumber\x20is\x20required','sessionId\x20is\x20required','transferNumber\x20is\x20required','emit','log','handleError:','error','status','name','send','request','code','message','result','catch','findOne','agent','then','all','filter','UserId','sessionId','length','sessionId\x20','\x20not\x20found!','originate','body','json','userId','callNumber','callerId','callbackUrl','info','entityFound:','webbar:originate','originate\x20executed!','hangup','format','user:%s','webbar:hangup','hangup\x20executed!','answer','answer\x20fired:','webbar:answer','answer\x20executed!','hold','hold\x20fired:','webbar:hold','hold\x20executed!'];(function(_0x1d6faa,_0x569eeb){var _0x51f9c4=function(_0x3cf62f){while(--_0x3cf62f){_0x1d6faa['push'](_0x1d6faa['shift']());}};_0x51f9c4(++_0x569eeb);}(_0xb32d,0x1da));var _0xdb32=function(_0x33fc57,_0xdd2591){_0x33fc57=_0x33fc57-0x0;var _0xf701ca=_0xb32d[_0x33fc57];return _0xf701ca;};'use strict';var path=require(_0xdb32('0x0'));var fs=require('fs');var _=require(_0xdb32('0x1'));var db=require(_0xdb32('0x2'))['db'];var config=require(_0xdb32('0x3'));var util=require(_0xdb32('0x4'));var BPromise=require('bluebird');var jayson=require('jayson/promise');var amiClient=jayson[_0xdb32('0x5')][_0xdb32('0x6')]({'port':0x232a});var logger=require('../../config/logger')(_0xdb32('0x7'));var Redis=require(_0xdb32('0x8'));config[_0xdb32('0x9')]=_[_0xdb32('0xa')](config[_0xdb32('0x9')],{'host':_0xdb32('0xb'),'port':0x18eb});var io=require('socket.io-emitter')(new Redis(config[_0xdb32('0x9')]));var Schema=require(_0xdb32('0xc'));var originateValidation=new Schema({'userId':{'type':_0xdb32('0xd'),'required':[!![],_0xdb32('0xe')]},'callNumber':{'type':_0xdb32('0xf'),'required':[!![],_0xdb32('0x10')]},'callerId':{'type':_0xdb32('0xf')},'callbackUrl':{'type':_0xdb32('0xf')}});var hangupValidation=new Schema({'userId':{'type':_0xdb32('0xd'),'required':[!![],_0xdb32('0xe')]},'sessionId':{'type':_0xdb32('0xf'),'required':![]}});var answerValidation=new Schema({'userId':{'type':_0xdb32('0xd'),'required':[!![],_0xdb32('0xe')]},'sessionId':{'type':_0xdb32('0xf'),'required':![]}});var transferValidation=new Schema({'userId':{'type':_0xdb32('0xd'),'required':[!![],_0xdb32('0xe')]},'sessionId':{'type':_0xdb32('0xf'),'required':[!![],_0xdb32('0x11')]},'transferNumber':{'type':_0xdb32('0xf'),'required':[!![],_0xdb32('0x12')]}});var holdValidation=new Schema({'userId':{'type':_0xdb32('0xd'),'required':[!![],'userId\x20is\x20required']},'sessionId':{'type':_0xdb32('0xf'),'required':![]}});var unholdValidation=new Schema({'userId':{'type':_0xdb32('0xd'),'required':[!![],_0xdb32('0xe')]},'sessionId':{'type':_0xdb32('0xf'),'required':![]}});var callsValidation=new Schema({'userId':{'type':_0xdb32('0xd'),'required':[!![],'userId\x20is\x20required']}});var conferenceValidation=new Schema({'userId':{'type':_0xdb32('0xd'),'required':[!![],_0xdb32('0xe')]}});function emit(_0x3a4028,_0x4fc593,_0x4fe088){logger['info'](_0x3a4028,_0x4fc593,JSON['stringify'](_0x4fe088));io['to'](_0x3a4028)[_0xdb32('0x13')](_0x4fc593,_0x4fe088);}function handleError(_0x5ae827){return function(_0x1fd22b){console[_0xdb32('0x14')](_0xdb32('0x15'),_0x1fd22b,_0x1fd22b instanceof RangeError);logger[_0xdb32('0x16')](_0x1fd22b['stack']);if(_0x1fd22b instanceof RangeError){if(_0x1fd22b['name']){delete _0x1fd22b['name'];}_0x5ae827[_0xdb32('0x17')](0x194)['send'](_0x1fd22b);}else{if(_0x1fd22b[_0xdb32('0x18')]){delete _0x1fd22b[_0xdb32('0x18')];}_0x5ae827[_0xdb32('0x17')](0x1f4)[_0xdb32('0x19')](_0x1fd22b);}};}function checkError(){return function(_0x278920){if(!_0x278920){throw new RangeError('NotFound');}return _0x278920;};}function respondWithRpcPromise(_0x4584e1,_0x21f966){return new BPromise(function(_0x2429ea,_0x5a5a84){var _0x4c140c=amiClient;return _0x4c140c[_0xdb32('0x1a')](_0x4584e1,_0x21f966)['then'](function(_0x49f01f){if(_0x49f01f[_0xdb32('0x16')]){if(_0x49f01f[_0xdb32('0x16')][_0xdb32('0x1b')]===0x1f4){return _0x5a5a84(_0x49f01f[_0xdb32('0x16')]['message']);}return _0x2429ea(_0x49f01f['error'][_0xdb32('0x1c')]);}else{_0x2429ea(_0x49f01f[_0xdb32('0x1d')]);}})[_0xdb32('0x1e')](function(_0x5b0a48){_0x5a5a84(_0x5b0a48);});});}function getAgent(_0x282ed3){return db['User'][_0xdb32('0x1f')]({'where':{'id':_0x282ed3,'role':_0xdb32('0x20')}})[_0xdb32('0x21')](checkError());}function getAgentCheckSession(_0x2e1ada,_0x22e6b1){return new BPromise(function(_0x5d29da,_0x54f02c){var _0xadeb8e=respondWithRpcPromise('VoiceChannels');var _0x37c703=getAgent(_0x2e1ada);Promise[_0xdb32('0x22')]([_0xadeb8e,_0x37c703])[_0xdb32('0x21')](function(_0x5a6109){var _0x5344ea=_0x5a6109[0x0];var _0x4421da=_0x5a6109[0x1];var _0x18f770=_[_0xdb32('0x23')](_0x5344ea['rows'],function(_0x28a6d0){return _0x28a6d0[_0xdb32('0x24')]==_0x4421da['id']&&_0x28a6d0[_0xdb32('0x25')]==_0x22e6b1;});if(_0x18f770[_0xdb32('0x26')]==0x1){_0x5d29da(_0x4421da);}else{_0x54f02c(new RangeError(_0xdb32('0x27')+_0x22e6b1+_0xdb32('0x28')));}});});}exports[_0xdb32('0x29')]=function(_0x84ef42,_0x137644){logger['info']('originate\x20fired:',_0x84ef42[_0xdb32('0x2a')]);var _0x5d8a8b=originateValidation[_0xdb32('0xc')](_0x84ef42[_0xdb32('0x2a')]);if(_0x5d8a8b[_0xdb32('0x26')]>0x0){return _0x137644['status'](0x190)[_0xdb32('0x2b')](_0x5d8a8b);}var _0x965f36=_0x84ef42['body'][_0xdb32('0x2c')];var _0x2a81dc=_0x84ef42['body'][_0xdb32('0x2d')];var _0x447c34=_0x84ef42[_0xdb32('0x2a')][_0xdb32('0x2e')];var _0x3345d4=_0x84ef42[_0xdb32('0x2a')][_0xdb32('0x2f')];return getAgent(_0x965f36)['then'](function(_0xcb0323){logger[_0xdb32('0x30')](_0xdb32('0x31'),_0xcb0323[_0xdb32('0x18')]);emit(util['format']('user:%s',_0xcb0323['name']),_0xdb32('0x32'),{'callNumber':_0x2a81dc,'callerId':_0x447c34,'callbackUrl':_0x3345d4});return _0x137644['status'](0xc8)['json']({'error':![],'message':_0xdb32('0x33')});})['catch'](handleError(_0x137644));};exports[_0xdb32('0x34')]=function(_0x1c4e2b,_0x145697){logger[_0xdb32('0x30')]('hangup\x20fired:',_0x1c4e2b[_0xdb32('0x2a')]);var _0x41c188=hangupValidation[_0xdb32('0xc')](_0x1c4e2b[_0xdb32('0x2a')]);if(_0x41c188[_0xdb32('0x26')]>0x0){return _0x145697[_0xdb32('0x17')](0x190)[_0xdb32('0x2b')](_0x41c188);}var _0xa01e9d=_0x1c4e2b[_0xdb32('0x2a')]['userId'];var _0x4382d6=_0x1c4e2b['body'][_0xdb32('0x25')];return getAgent(_0xa01e9d)[_0xdb32('0x21')](function(_0x7f8263){logger['info'](_0xdb32('0x31'),_0x7f8263[_0xdb32('0x18')]);emit(util[_0xdb32('0x35')](_0xdb32('0x36'),_0x7f8263[_0xdb32('0x18')]),_0xdb32('0x37'),{'sessionId':_0x4382d6});return _0x145697[_0xdb32('0x17')](0xc8)['json']({'error':![],'message':_0xdb32('0x38')});})['catch'](handleError(_0x145697));};exports[_0xdb32('0x39')]=function(_0x3b11d4,_0x2cf1e1){logger[_0xdb32('0x30')](_0xdb32('0x3a'),_0x3b11d4[_0xdb32('0x2a')]);var _0x5d63f1=answerValidation[_0xdb32('0xc')](_0x3b11d4[_0xdb32('0x2a')]);if(_0x5d63f1[_0xdb32('0x26')]>0x0){return _0x2cf1e1['status'](0x190)['json'](_0x5d63f1);}var _0x839d30=_0x3b11d4['body'][_0xdb32('0x2c')];var _0x3baf71=_0x3b11d4[_0xdb32('0x2a')][_0xdb32('0x25')];return getAgent(_0x839d30)[_0xdb32('0x21')](function(_0x4f100e){logger[_0xdb32('0x30')]('entityFound:',_0x4f100e[_0xdb32('0x18')]);emit(util[_0xdb32('0x35')]('user:%s',_0x4f100e[_0xdb32('0x18')]),_0xdb32('0x3b'),{'sessionId':_0x3baf71});return _0x2cf1e1['status'](0xc8)[_0xdb32('0x2b')]({'error':![],'message':_0xdb32('0x3c')});})[_0xdb32('0x1e')](handleError(_0x2cf1e1));};exports[_0xdb32('0x3d')]=function(_0x4835ad,_0x544a7b){logger[_0xdb32('0x30')](_0xdb32('0x3e'),_0x4835ad[_0xdb32('0x2a')]);var _0x2d60d8=holdValidation[_0xdb32('0xc')](_0x4835ad[_0xdb32('0x2a')]);if(_0x2d60d8['length']>0x0){return _0x544a7b['status'](0x190)[_0xdb32('0x2b')](_0x2d60d8);}var _0x539bd5=_0x4835ad[_0xdb32('0x2a')]['userId'];var _0x930f01=_0x4835ad[_0xdb32('0x2a')][_0xdb32('0x25')];return getAgent(_0x539bd5)[_0xdb32('0x21')](function(_0x194b23){logger[_0xdb32('0x30')]('entityFound:',_0x194b23[_0xdb32('0x18')]);emit(util[_0xdb32('0x35')](_0xdb32('0x36'),_0x194b23['name']),_0xdb32('0x3f'),{'sessionId':_0x930f01});return _0x544a7b['status'](0xc8)[_0xdb32('0x2b')]({'error':![],'message':_0xdb32('0x40')});})[_0xdb32('0x1e')](handleError(_0x544a7b));};exports[_0xdb32('0x41')]=function(_0x40e23a,_0x19b29c){logger['info'](_0xdb32('0x42'),_0x40e23a['body']);var _0x5392a7=unholdValidation[_0xdb32('0xc')](_0x40e23a[_0xdb32('0x2a')]);if(_0x5392a7['length']>0x0){return _0x19b29c[_0xdb32('0x17')](0x190)['json'](_0x5392a7);}var _0x2b0307=_0x40e23a[_0xdb32('0x2a')]['userId'];var _0x54b306=_0x40e23a[_0xdb32('0x2a')][_0xdb32('0x25')];return getAgent(_0x2b0307)[_0xdb32('0x21')](function(_0x3b6855){logger[_0xdb32('0x30')]('entityFound:',_0x3b6855[_0xdb32('0x18')]);emit(util[_0xdb32('0x35')](_0xdb32('0x36'),_0x3b6855['name']),_0xdb32('0x43'),{'sessionId':_0x54b306});return _0x19b29c[_0xdb32('0x17')](0xc8)[_0xdb32('0x2b')]({'error':![],'message':_0xdb32('0x44')});})[_0xdb32('0x1e')](handleError(_0x19b29c));};exports[_0xdb32('0x45')]=function(_0x2deb83,_0x5479f6){logger[_0xdb32('0x30')]('calls\x20fired:',_0x5479f6['body']);var _0x229b94=callsValidation[_0xdb32('0xc')](_0x2deb83[_0xdb32('0x2a')]);if(_0x229b94[_0xdb32('0x26')]>0x0){return _0x5479f6[_0xdb32('0x17')](0x190)[_0xdb32('0x2b')](_0x229b94);}var _0x192903=_0x2deb83[_0xdb32('0x2a')][_0xdb32('0x2c')];var _0x1e324b=respondWithRpcPromise('VoiceChannels');var _0x81f014=getAgent(_0x192903);return Promise[_0xdb32('0x22')]([_0x1e324b,_0x81f014])[_0xdb32('0x21')](function(_0x29f7bb){var _0x16b74a=_0x29f7bb[0x0];var _0x39556d=_0x29f7bb[0x1];var _0x16028b=_['filter'](_0x16b74a[_0xdb32('0x46')],function(_0x142e8f){return _0x142e8f['UserId']==_0x39556d['id'];});return _0x5479f6['status'](0xc8)[_0xdb32('0x2b')]({'count':_0x16028b[_0xdb32('0x26')],'rows':_0x16028b});})[_0xdb32('0x1e')](handleError(_0x5479f6));};exports[_0xdb32('0x47')]=function(_0x40b0fc,_0x4ddc0f){logger[_0xdb32('0x30')]('conference\x20fired:',_0x40b0fc[_0xdb32('0x2a')]);var _0x57bc94=conferenceValidation['validate'](_0x40b0fc['body']);if(_0x57bc94[_0xdb32('0x26')]>0x0){return _0x4ddc0f['status'](0x190)[_0xdb32('0x2b')](_0x57bc94);}var _0xf003b8=_0x40b0fc['body'][_0xdb32('0x2c')];return getAgent(_0xf003b8)['then'](function(_0x45bf5b){logger[_0xdb32('0x30')](_0xdb32('0x31'),_0x45bf5b['name']);emit(util['format']('user:%s',_0x45bf5b[_0xdb32('0x18')]),'webbar:conference');return _0x4ddc0f['status'](0xc8)[_0xdb32('0x2b')]({'error':![],'message':'conference\x20executed!'});})[_0xdb32('0x1e')](handleError(_0x4ddc0f));};exports[_0xdb32('0x48')]=function(_0x21724d,_0x5eefe9){logger['info'](_0xdb32('0x49'),_0x21724d[_0xdb32('0x2a')]);var _0x1aad20=transferValidation[_0xdb32('0xc')](_0x21724d[_0xdb32('0x2a')]);if(_0x1aad20['length']>0x0){return _0x5eefe9['status'](0x190)[_0xdb32('0x2b')](_0x1aad20);}var _0x322b05=_0x21724d[_0xdb32('0x2a')]['userId'];var _0xd8cdec=_0x21724d[_0xdb32('0x2a')][_0xdb32('0x25')];var _0x2f2ccf=_0x21724d['body'][_0xdb32('0x4a')];return getAgent(_0x322b05)[_0xdb32('0x21')](function(_0x4628b0){logger[_0xdb32('0x30')](_0xdb32('0x31'),_0x4628b0[_0xdb32('0x18')]);emit(util['format'](_0xdb32('0x36'),_0x4628b0[_0xdb32('0x18')]),_0xdb32('0x4b'),{'sessionId':_0xd8cdec,'transferNumber':_0x2f2ccf});return _0x5eefe9['status'](0xc8)[_0xdb32('0x2b')]({'error':![],'message':_0xdb32('0x4c')});})[_0xdb32('0x1e')](handleError(_0x5eefe9));};