Built motion from commit (unavailable).|2.4.21
[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 _0x8938=['then','VoiceChannels','all','filter','rows','UserId','sessionId','\x20not\x20found!','body','validate','length','json','callbackUrl','entityFound:','format','user:%s','webbar:originate','originate\x20executed!','catch','hangup\x20fired:','webbar:hangup','hangup\x20executed!','answer','answer\x20fired:','userId','webbar:answer','answer\x20executed!','hold\x20fired:','webbar:hold','hold\x20executed!','unhold','unhold\x20fired:','webbar:unhold','calls','calls\x20fired:','webbar:conference','transfer','transfer\x20fired:','transferNumber','webbar:transfer','transfer\x20executed!','lodash','../../mysqldb','util','bluebird','client','webbarapi','ioredis','redis','defaults','localhost','socket.io-emitter','number','string','userId\x20is\x20required','sessionId\x20is\x20required','transferNumber\x20is\x20required','info','stringify','emit','log','error','stack','name','status','send','NotFound','request','message','result','User','findOne'];(function(_0x56976b,_0x7b13ed){var _0x469e3d=function(_0x3a74df){while(--_0x3a74df){_0x56976b['push'](_0x56976b['shift']());}};_0x469e3d(++_0x7b13ed);}(_0x8938,0x1d9));var _0x8893=function(_0x58965a,_0x2e71db){_0x58965a=_0x58965a-0x0;var _0x254efc=_0x8938[_0x58965a];return _0x254efc;};'use strict';var path=require('path');var fs=require('fs');var _=require(_0x8893('0x0'));var db=require(_0x8893('0x1'))['db'];var config=require('../../config/environment');var util=require(_0x8893('0x2'));var BPromise=require(_0x8893('0x3'));var jayson=require('jayson/promise');var amiClient=jayson[_0x8893('0x4')]['http']({'port':0x232a});var logger=require('../../config/logger')(_0x8893('0x5'));var Redis=require(_0x8893('0x6'));config[_0x8893('0x7')]=_[_0x8893('0x8')](config['redis'],{'host':_0x8893('0x9'),'port':0x18eb});var io=require(_0x8893('0xa'))(new Redis(config['redis']));var Schema=require('validate');var originateValidation=new Schema({'userId':{'type':_0x8893('0xb'),'required':[!![],'userId\x20is\x20required']},'callNumber':{'type':_0x8893('0xc'),'required':[!![],'callNumber\x20is\x20required']},'callerId':{'type':'string'},'callbackUrl':{'type':_0x8893('0xc')}});var hangupValidation=new Schema({'userId':{'type':_0x8893('0xb'),'required':[!![],_0x8893('0xd')]},'sessionId':{'type':'string','required':![]}});var answerValidation=new Schema({'userId':{'type':'number','required':[!![],'userId\x20is\x20required']},'sessionId':{'type':_0x8893('0xc'),'required':[!![],'sessionId\x20is\x20required']}});var transferValidation=new Schema({'userId':{'type':_0x8893('0xb'),'required':[!![],'userId\x20is\x20required']},'sessionId':{'type':_0x8893('0xc'),'required':[!![],_0x8893('0xe')]},'transferNumber':{'type':_0x8893('0xc'),'required':[!![],_0x8893('0xf')]}});var holdValidation=new Schema({'userId':{'type':_0x8893('0xb'),'required':[!![],'userId\x20is\x20required']},'sessionId':{'type':_0x8893('0xc'),'required':![]}});var unholdValidation=new Schema({'userId':{'type':'number','required':[!![],_0x8893('0xd')]},'sessionId':{'type':_0x8893('0xc'),'required':![]}});var callsValidation=new Schema({'userId':{'type':_0x8893('0xb'),'required':[!![],_0x8893('0xd')]}});var conferenceValidation=new Schema({'userId':{'type':'number','required':[!![],_0x8893('0xd')]}});function emit(_0x81036a,_0x47d3c4,_0x35e6cb){logger[_0x8893('0x10')](_0x81036a,_0x47d3c4,JSON[_0x8893('0x11')](_0x35e6cb));io['to'](_0x81036a)[_0x8893('0x12')](_0x47d3c4,_0x35e6cb);}function handleError(_0x32e70d){return function(_0x1d0a4f){console[_0x8893('0x13')]('handleError:',_0x1d0a4f,_0x1d0a4f instanceof RangeError);logger[_0x8893('0x14')](_0x1d0a4f[_0x8893('0x15')]);if(_0x1d0a4f instanceof RangeError){if(_0x1d0a4f[_0x8893('0x16')]){delete _0x1d0a4f['name'];}_0x32e70d[_0x8893('0x17')](0x194)[_0x8893('0x18')](_0x1d0a4f);}else{if(_0x1d0a4f[_0x8893('0x16')]){delete _0x1d0a4f[_0x8893('0x16')];}_0x32e70d[_0x8893('0x17')](0x1f4)[_0x8893('0x18')](_0x1d0a4f);}};}function checkError(){return function(_0x21a746){if(!_0x21a746){throw new RangeError(_0x8893('0x19'));}return _0x21a746;};}function respondWithRpcPromise(_0x1592c7,_0x1712b4){return new BPromise(function(_0x1b0d55,_0xb25697){var _0x7f7741=amiClient;return _0x7f7741[_0x8893('0x1a')](_0x1592c7,_0x1712b4)['then'](function(_0x2a1b99){if(_0x2a1b99[_0x8893('0x14')]){if(_0x2a1b99['error']['code']===0x1f4){return _0xb25697(_0x2a1b99['error'][_0x8893('0x1b')]);}return _0x1b0d55(_0x2a1b99[_0x8893('0x14')]['message']);}else{_0x1b0d55(_0x2a1b99[_0x8893('0x1c')]);}})['catch'](function(_0x20c33e){_0xb25697(_0x20c33e);});});}function getAgent(_0x59c6f1){return db[_0x8893('0x1d')][_0x8893('0x1e')]({'where':{'id':_0x59c6f1,'role':'agent'}})[_0x8893('0x1f')](checkError());}function getAgentCheckSession(_0x28e240,_0x53f79a){return new BPromise(function(_0x2e7681,_0xeaff6e){var _0x3639c4=respondWithRpcPromise(_0x8893('0x20'));var _0xd12bd2=getAgent(_0x28e240);Promise[_0x8893('0x21')]([_0x3639c4,_0xd12bd2])[_0x8893('0x1f')](function(_0x277a59){var _0x53009c=_0x277a59[0x0];var _0x27be54=_0x277a59[0x1];var _0x2a32e6=_[_0x8893('0x22')](_0x53009c[_0x8893('0x23')],function(_0x10dbcd){return _0x10dbcd[_0x8893('0x24')]==_0x27be54['id']&&_0x10dbcd[_0x8893('0x25')]==_0x53f79a;});if(_0x2a32e6['length']==0x1){_0x2e7681(_0x27be54);}else{_0xeaff6e(new RangeError('sessionId\x20'+_0x53f79a+_0x8893('0x26')));}});});}exports['originate']=function(_0x5f2a55,_0x261bb0){logger[_0x8893('0x10')]('originate\x20fired:',_0x5f2a55[_0x8893('0x27')]);var _0x58943d=originateValidation[_0x8893('0x28')](_0x5f2a55[_0x8893('0x27')]);if(_0x58943d[_0x8893('0x29')]>0x0){return _0x261bb0[_0x8893('0x17')](0x190)[_0x8893('0x2a')](_0x58943d);}var _0x426131=_0x5f2a55[_0x8893('0x27')]['userId'];var _0x310d73=_0x5f2a55[_0x8893('0x27')]['callNumber'];var _0x123032=_0x5f2a55[_0x8893('0x27')]['callerId'];var _0x5caea7=_0x5f2a55[_0x8893('0x27')][_0x8893('0x2b')];return getAgent(_0x426131)[_0x8893('0x1f')](function(_0x2c378e){logger[_0x8893('0x10')](_0x8893('0x2c'),_0x2c378e[_0x8893('0x16')]);emit(util[_0x8893('0x2d')](_0x8893('0x2e'),_0x2c378e[_0x8893('0x16')]),_0x8893('0x2f'),{'callNumber':_0x310d73,'callerId':_0x123032,'callbackUrl':_0x5caea7});return _0x261bb0[_0x8893('0x17')](0xc8)[_0x8893('0x2a')]({'error':![],'message':_0x8893('0x30')});})[_0x8893('0x31')](handleError(_0x261bb0));};exports['hangup']=function(_0x4519ac,_0x4a6b4d){logger['info'](_0x8893('0x32'),_0x4519ac[_0x8893('0x27')]);var _0x9b31d5=hangupValidation['validate'](_0x4519ac['body']);if(_0x9b31d5[_0x8893('0x29')]>0x0){return _0x4a6b4d[_0x8893('0x17')](0x190)['json'](_0x9b31d5);}var _0x3e6966=_0x4519ac[_0x8893('0x27')]['userId'];var _0x45da0e=_0x4519ac['body']['sessionId'];return getAgent(_0x3e6966)['then'](function(_0x4ba42e){logger['info'](_0x8893('0x2c'),_0x4ba42e[_0x8893('0x16')]);emit(util[_0x8893('0x2d')]('user:%s',_0x4ba42e[_0x8893('0x16')]),_0x8893('0x33'),{'sessionId':_0x45da0e});return _0x4a6b4d[_0x8893('0x17')](0xc8)['json']({'error':![],'message':_0x8893('0x34')});})[_0x8893('0x31')](handleError(_0x4a6b4d));};exports[_0x8893('0x35')]=function(_0x1fffe5,_0x3e21c8){logger['info'](_0x8893('0x36'),_0x1fffe5[_0x8893('0x27')]);var _0x483939=answerValidation[_0x8893('0x28')](_0x1fffe5[_0x8893('0x27')]);if(_0x483939[_0x8893('0x29')]>0x0){return _0x3e21c8['status'](0x190)[_0x8893('0x2a')](_0x483939);}var _0x39b705=_0x1fffe5[_0x8893('0x27')][_0x8893('0x37')];var _0x278b2f=_0x1fffe5['body'][_0x8893('0x25')];return getAgent(_0x39b705)[_0x8893('0x1f')](function(_0x279e79){logger[_0x8893('0x10')]('entityFound:',_0x279e79[_0x8893('0x16')]);emit(util[_0x8893('0x2d')](_0x8893('0x2e'),_0x279e79['name']),_0x8893('0x38'),{'sessionId':_0x278b2f});return _0x3e21c8[_0x8893('0x17')](0xc8)[_0x8893('0x2a')]({'error':![],'message':_0x8893('0x39')});})[_0x8893('0x31')](handleError(_0x3e21c8));};exports['hold']=function(_0x41efbc,_0x14fa77){logger[_0x8893('0x10')](_0x8893('0x3a'),_0x41efbc['body']);var _0x528bba=holdValidation['validate'](_0x41efbc[_0x8893('0x27')]);if(_0x528bba[_0x8893('0x29')]>0x0){return _0x14fa77[_0x8893('0x17')](0x190)[_0x8893('0x2a')](_0x528bba);}var _0x2fc002=_0x41efbc['body']['userId'];var _0x54da3c=_0x41efbc['body']['sessionId'];return getAgent(_0x2fc002)['then'](function(_0x25fec2){logger['info']('entityFound:',_0x25fec2[_0x8893('0x16')]);emit(util[_0x8893('0x2d')](_0x8893('0x2e'),_0x25fec2[_0x8893('0x16')]),_0x8893('0x3b'),{'sessionId':_0x54da3c});return _0x14fa77['status'](0xc8)[_0x8893('0x2a')]({'error':![],'message':_0x8893('0x3c')});})[_0x8893('0x31')](handleError(_0x14fa77));};exports[_0x8893('0x3d')]=function(_0x22ec93,_0x4d8dff){logger[_0x8893('0x10')](_0x8893('0x3e'),_0x22ec93[_0x8893('0x27')]);var _0x22224f=unholdValidation[_0x8893('0x28')](_0x22ec93[_0x8893('0x27')]);if(_0x22224f[_0x8893('0x29')]>0x0){return _0x4d8dff[_0x8893('0x17')](0x190)[_0x8893('0x2a')](_0x22224f);}var _0xaa069a=_0x22ec93[_0x8893('0x27')][_0x8893('0x37')];var _0x2505b4=_0x22ec93[_0x8893('0x27')][_0x8893('0x25')];return getAgent(_0xaa069a)[_0x8893('0x1f')](function(_0x49fc9f){logger[_0x8893('0x10')]('entityFound:',_0x49fc9f['name']);emit(util[_0x8893('0x2d')](_0x8893('0x2e'),_0x49fc9f['name']),_0x8893('0x3f'),{'sessionId':_0x2505b4});return _0x4d8dff[_0x8893('0x17')](0xc8)[_0x8893('0x2a')]({'error':![],'message':'unhold\x20executed!'});})[_0x8893('0x31')](handleError(_0x4d8dff));};exports[_0x8893('0x40')]=function(_0x1a2e9e,_0x3ec162){logger['info'](_0x8893('0x41'),_0x3ec162[_0x8893('0x27')]);var _0x5ac3a8=callsValidation[_0x8893('0x28')](_0x1a2e9e[_0x8893('0x27')]);if(_0x5ac3a8[_0x8893('0x29')]>0x0){return _0x3ec162['status'](0x190)['json'](_0x5ac3a8);}var _0x129481=_0x1a2e9e['body'][_0x8893('0x37')];var _0x444ce0=respondWithRpcPromise('VoiceChannels');var _0x339957=getAgent(_0x129481);return Promise[_0x8893('0x21')]([_0x444ce0,_0x339957])[_0x8893('0x1f')](function(_0x33cdfe){var _0x4fd5a8=_0x33cdfe[0x0];var _0x589fc5=_0x33cdfe[0x1];var _0x4cbae5=_[_0x8893('0x22')](_0x4fd5a8[_0x8893('0x23')],function(_0x2487eb){return _0x2487eb[_0x8893('0x24')]==_0x589fc5['id'];});return _0x3ec162[_0x8893('0x17')](0xc8)[_0x8893('0x2a')]({'count':_0x4cbae5['length'],'rows':_0x4cbae5});})[_0x8893('0x31')](handleError(_0x3ec162));};exports['conference']=function(_0x131343,_0x5e4f87){logger[_0x8893('0x10')]('conference\x20fired:',_0x131343[_0x8893('0x27')]);var _0x5e6b03=conferenceValidation[_0x8893('0x28')](_0x131343[_0x8893('0x27')]);if(_0x5e6b03[_0x8893('0x29')]>0x0){return _0x5e4f87['status'](0x190)[_0x8893('0x2a')](_0x5e6b03);}var _0x35df7f=_0x131343[_0x8893('0x27')][_0x8893('0x37')];return getAgent(_0x35df7f)[_0x8893('0x1f')](function(_0x184213){logger['info'](_0x8893('0x2c'),_0x184213[_0x8893('0x16')]);emit(util[_0x8893('0x2d')](_0x8893('0x2e'),_0x184213[_0x8893('0x16')]),_0x8893('0x42'));return _0x5e4f87[_0x8893('0x17')](0xc8)[_0x8893('0x2a')]({'error':![],'message':'conference\x20executed!'});})[_0x8893('0x31')](handleError(_0x5e4f87));};exports[_0x8893('0x43')]=function(_0xaf9d94,_0x5581e2){logger[_0x8893('0x10')](_0x8893('0x44'),_0xaf9d94[_0x8893('0x27')]);var _0x18e211=transferValidation[_0x8893('0x28')](_0xaf9d94[_0x8893('0x27')]);if(_0x18e211[_0x8893('0x29')]>0x0){return _0x5581e2[_0x8893('0x17')](0x190)[_0x8893('0x2a')](_0x18e211);}var _0x477863=_0xaf9d94[_0x8893('0x27')][_0x8893('0x37')];var _0x4d1856=_0xaf9d94[_0x8893('0x27')][_0x8893('0x25')];var _0xfb4c90=_0xaf9d94['body'][_0x8893('0x45')];return getAgent(_0x477863)[_0x8893('0x1f')](function(_0x3735e5){logger['info'](_0x8893('0x2c'),_0x3735e5['name']);emit(util[_0x8893('0x2d')]('user:%s',_0x3735e5[_0x8893('0x16')]),_0x8893('0x46'),{'sessionId':_0x4d1856,'transferNumber':_0xfb4c90});return _0x5581e2[_0x8893('0x17')](0xc8)[_0x8893('0x2a')]({'error':![],'message':_0x8893('0x47')});})[_0x8893('0x31')](handleError(_0x5581e2));};