Built motion from commit 85328c08.|2.5.50
[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 _0x303a=['answer','answer\x20fired:','webbar:answer','hold\x20executed!','unhold','unhold\x20fired:','unhold\x20executed!','calls','calls\x20fired:','VoiceChannels','conference','conference\x20fired:','webbar:conference','transferNumber','path','../../mysqldb','../../config/environment','util','bluebird','client','http','../../config/logger','webbarapi','ioredis','redis','defaults','localhost','number','userId\x20is\x20required','callNumber\x20is\x20required','string','sessionId\x20is\x20required','info','stringify','log','error','name','status','NotFound','then','code','message','findOne','agent','all','filter','rows','UserId','sessionId','length','sessionId\x20','\x20not\x20found!','originate','originate\x20fired:','body','validate','json','userId','callerId','callbackUrl','entityFound:','format','webbar:originate','catch','hangup','user:%s','webbar:hangup'];(function(_0xf4b0a4,_0x2682b8){var _0x2efe69=function(_0x55ad04){while(--_0x55ad04){_0xf4b0a4['push'](_0xf4b0a4['shift']());}};_0x2efe69(++_0x2682b8);}(_0x303a,0x1a0));var _0xa303=function(_0x41b4df,_0x15b067){_0x41b4df=_0x41b4df-0x0;var _0x55d4dc=_0x303a[_0x41b4df];return _0x55d4dc;};'use strict';var path=require(_0xa303('0x0'));var fs=require('fs');var _=require('lodash');var db=require(_0xa303('0x1'))['db'];var config=require(_0xa303('0x2'));var util=require(_0xa303('0x3'));var BPromise=require(_0xa303('0x4'));var jayson=require('jayson/promise');var amiClient=jayson[_0xa303('0x5')][_0xa303('0x6')]({'port':0x232a});var logger=require(_0xa303('0x7'))(_0xa303('0x8'));var Redis=require(_0xa303('0x9'));config[_0xa303('0xa')]=_[_0xa303('0xb')](config[_0xa303('0xa')],{'host':_0xa303('0xc'),'port':0x18eb});var io=require('socket.io-emitter')(new Redis(config['redis']));var Schema=require('validate');var originateValidation=new Schema({'userId':{'type':_0xa303('0xd'),'required':[!![],_0xa303('0xe')]},'callNumber':{'type':'string','required':[!![],_0xa303('0xf')]},'callerId':{'type':'string'},'callbackUrl':{'type':_0xa303('0x10')}});var hangupValidation=new Schema({'userId':{'type':'number','required':[!![],_0xa303('0xe')]},'sessionId':{'type':_0xa303('0x10'),'required':![]}});var answerValidation=new Schema({'userId':{'type':_0xa303('0xd'),'required':[!![],_0xa303('0xe')]},'sessionId':{'type':'string','required':![]}});var transferValidation=new Schema({'userId':{'type':_0xa303('0xd'),'required':[!![],'userId\x20is\x20required']},'sessionId':{'type':_0xa303('0x10'),'required':[!![],_0xa303('0x11')]},'transferNumber':{'type':_0xa303('0x10'),'required':[!![],'transferNumber\x20is\x20required']}});var holdValidation=new Schema({'userId':{'type':_0xa303('0xd'),'required':[!![],_0xa303('0xe')]},'sessionId':{'type':_0xa303('0x10'),'required':![]}});var unholdValidation=new Schema({'userId':{'type':_0xa303('0xd'),'required':[!![],_0xa303('0xe')]},'sessionId':{'type':_0xa303('0x10'),'required':![]}});var callsValidation=new Schema({'userId':{'type':_0xa303('0xd'),'required':[!![],_0xa303('0xe')]}});var conferenceValidation=new Schema({'userId':{'type':'number','required':[!![],_0xa303('0xe')]}});function emit(_0xd2e8ee,_0x1f3ede,_0x288596){logger[_0xa303('0x12')](_0xd2e8ee,_0x1f3ede,JSON[_0xa303('0x13')](_0x288596));io['to'](_0xd2e8ee)['emit'](_0x1f3ede,_0x288596);}function handleError(_0x28c164){return function(_0x54ca49){console[_0xa303('0x14')]('handleError:',_0x54ca49,_0x54ca49 instanceof RangeError);logger[_0xa303('0x15')](_0x54ca49['stack']);if(_0x54ca49 instanceof RangeError){if(_0x54ca49[_0xa303('0x16')]){delete _0x54ca49[_0xa303('0x16')];}_0x28c164[_0xa303('0x17')](0x194)['send'](_0x54ca49);}else{if(_0x54ca49[_0xa303('0x16')]){delete _0x54ca49[_0xa303('0x16')];}_0x28c164[_0xa303('0x17')](0x1f4)['send'](_0x54ca49);}};}function checkError(){return function(_0x282e25){if(!_0x282e25){throw new RangeError(_0xa303('0x18'));}return _0x282e25;};}function respondWithRpcPromise(_0x21deee,_0x904261){return new BPromise(function(_0x54b173,_0x14f9ab){var _0x2a2512=amiClient;return _0x2a2512['request'](_0x21deee,_0x904261)[_0xa303('0x19')](function(_0x27c1d7){if(_0x27c1d7[_0xa303('0x15')]){if(_0x27c1d7[_0xa303('0x15')][_0xa303('0x1a')]===0x1f4){return _0x14f9ab(_0x27c1d7[_0xa303('0x15')][_0xa303('0x1b')]);}return _0x54b173(_0x27c1d7[_0xa303('0x15')][_0xa303('0x1b')]);}else{_0x54b173(_0x27c1d7['result']);}})['catch'](function(_0x4dad5b){_0x14f9ab(_0x4dad5b);});});}function getAgent(_0x58922f){return db['User'][_0xa303('0x1c')]({'where':{'id':_0x58922f,'role':_0xa303('0x1d')}})[_0xa303('0x19')](checkError());}function getAgentCheckSession(_0xbb93f0,_0x94d3e4){return new BPromise(function(_0x48e79f,_0x2d1341){var _0xb35c22=respondWithRpcPromise('VoiceChannels');var _0x221f59=getAgent(_0xbb93f0);Promise[_0xa303('0x1e')]([_0xb35c22,_0x221f59])[_0xa303('0x19')](function(_0x32dcfb){var _0x3c85de=_0x32dcfb[0x0];var _0x221007=_0x32dcfb[0x1];var _0x11b175=_[_0xa303('0x1f')](_0x3c85de[_0xa303('0x20')],function(_0x3383f4){return _0x3383f4[_0xa303('0x21')]==_0x221007['id']&&_0x3383f4[_0xa303('0x22')]==_0x94d3e4;});if(_0x11b175[_0xa303('0x23')]==0x1){_0x48e79f(_0x221007);}else{_0x2d1341(new RangeError(_0xa303('0x24')+_0x94d3e4+_0xa303('0x25')));}});});}exports[_0xa303('0x26')]=function(_0x228ae7,_0x5de180){logger['info'](_0xa303('0x27'),_0x228ae7[_0xa303('0x28')]);var _0xa69c59=originateValidation[_0xa303('0x29')](_0x228ae7['body']);if(_0xa69c59[_0xa303('0x23')]>0x0){return _0x5de180[_0xa303('0x17')](0x190)[_0xa303('0x2a')](_0xa69c59);}var _0x1093e1=_0x228ae7['body'][_0xa303('0x2b')];var _0x37376d=_0x228ae7[_0xa303('0x28')]['callNumber'];var _0xd35249=_0x228ae7[_0xa303('0x28')][_0xa303('0x2c')];var _0x4a6328=_0x228ae7[_0xa303('0x28')][_0xa303('0x2d')];return getAgent(_0x1093e1)[_0xa303('0x19')](function(_0x5dea0a){logger[_0xa303('0x12')](_0xa303('0x2e'),_0x5dea0a[_0xa303('0x16')]);emit(util[_0xa303('0x2f')]('user:%s',_0x5dea0a[_0xa303('0x16')]),_0xa303('0x30'),{'callNumber':_0x37376d,'callerId':_0xd35249,'callbackUrl':_0x4a6328});return _0x5de180[_0xa303('0x17')](0xc8)[_0xa303('0x2a')]({'error':![],'message':'originate\x20executed!'});})[_0xa303('0x31')](handleError(_0x5de180));};exports[_0xa303('0x32')]=function(_0x22da2d,_0x16c680){logger[_0xa303('0x12')]('hangup\x20fired:',_0x22da2d['body']);var _0x992eb9=hangupValidation[_0xa303('0x29')](_0x22da2d[_0xa303('0x28')]);if(_0x992eb9['length']>0x0){return _0x16c680['status'](0x190)[_0xa303('0x2a')](_0x992eb9);}var _0x8a16a3=_0x22da2d[_0xa303('0x28')][_0xa303('0x2b')];var _0x569158=_0x22da2d['body'][_0xa303('0x22')];return getAgent(_0x8a16a3)[_0xa303('0x19')](function(_0x1c99b4){logger[_0xa303('0x12')](_0xa303('0x2e'),_0x1c99b4['name']);emit(util[_0xa303('0x2f')](_0xa303('0x33'),_0x1c99b4[_0xa303('0x16')]),_0xa303('0x34'),{'sessionId':_0x569158});return _0x16c680['status'](0xc8)['json']({'error':![],'message':'hangup\x20executed!'});})[_0xa303('0x31')](handleError(_0x16c680));};exports[_0xa303('0x35')]=function(_0x3aece5,_0x411b69){logger[_0xa303('0x12')](_0xa303('0x36'),_0x3aece5[_0xa303('0x28')]);var _0x1f4352=answerValidation[_0xa303('0x29')](_0x3aece5[_0xa303('0x28')]);if(_0x1f4352[_0xa303('0x23')]>0x0){return _0x411b69['status'](0x190)['json'](_0x1f4352);}var _0x45fb2f=_0x3aece5['body'][_0xa303('0x2b')];var _0x564d59=_0x3aece5[_0xa303('0x28')][_0xa303('0x22')];return getAgent(_0x45fb2f)[_0xa303('0x19')](function(_0x2c03fa){logger[_0xa303('0x12')](_0xa303('0x2e'),_0x2c03fa[_0xa303('0x16')]);emit(util[_0xa303('0x2f')](_0xa303('0x33'),_0x2c03fa[_0xa303('0x16')]),_0xa303('0x37'),{'sessionId':_0x564d59});return _0x411b69[_0xa303('0x17')](0xc8)[_0xa303('0x2a')]({'error':![],'message':'answer\x20executed!'});})[_0xa303('0x31')](handleError(_0x411b69));};exports['hold']=function(_0x32b439,_0x11440f){logger[_0xa303('0x12')]('hold\x20fired:',_0x32b439['body']);var _0x9240e1=holdValidation[_0xa303('0x29')](_0x32b439[_0xa303('0x28')]);if(_0x9240e1[_0xa303('0x23')]>0x0){return _0x11440f[_0xa303('0x17')](0x190)[_0xa303('0x2a')](_0x9240e1);}var _0x2f9f0b=_0x32b439[_0xa303('0x28')][_0xa303('0x2b')];var _0x4cbf30=_0x32b439['body'][_0xa303('0x22')];return getAgent(_0x2f9f0b)[_0xa303('0x19')](function(_0x532003){logger[_0xa303('0x12')]('entityFound:',_0x532003[_0xa303('0x16')]);emit(util[_0xa303('0x2f')](_0xa303('0x33'),_0x532003[_0xa303('0x16')]),'webbar:hold',{'sessionId':_0x4cbf30});return _0x11440f[_0xa303('0x17')](0xc8)[_0xa303('0x2a')]({'error':![],'message':_0xa303('0x38')});})[_0xa303('0x31')](handleError(_0x11440f));};exports[_0xa303('0x39')]=function(_0x16242c,_0x538ef4){logger[_0xa303('0x12')](_0xa303('0x3a'),_0x16242c[_0xa303('0x28')]);var _0xe4a907=unholdValidation['validate'](_0x16242c['body']);if(_0xe4a907[_0xa303('0x23')]>0x0){return _0x538ef4[_0xa303('0x17')](0x190)[_0xa303('0x2a')](_0xe4a907);}var _0x4bcee0=_0x16242c[_0xa303('0x28')]['userId'];var _0x5939ea=_0x16242c['body']['sessionId'];return getAgent(_0x4bcee0)[_0xa303('0x19')](function(_0xdc6eaf){logger['info'](_0xa303('0x2e'),_0xdc6eaf[_0xa303('0x16')]);emit(util[_0xa303('0x2f')](_0xa303('0x33'),_0xdc6eaf[_0xa303('0x16')]),'webbar:unhold',{'sessionId':_0x5939ea});return _0x538ef4[_0xa303('0x17')](0xc8)[_0xa303('0x2a')]({'error':![],'message':_0xa303('0x3b')});})[_0xa303('0x31')](handleError(_0x538ef4));};exports[_0xa303('0x3c')]=function(_0x53d9dc,_0x56bc98){logger[_0xa303('0x12')](_0xa303('0x3d'),_0x56bc98[_0xa303('0x28')]);var _0x87a096=callsValidation[_0xa303('0x29')](_0x53d9dc[_0xa303('0x28')]);if(_0x87a096[_0xa303('0x23')]>0x0){return _0x56bc98[_0xa303('0x17')](0x190)[_0xa303('0x2a')](_0x87a096);}var _0x5d4a72=_0x53d9dc[_0xa303('0x28')][_0xa303('0x2b')];var _0x27471c=respondWithRpcPromise(_0xa303('0x3e'));var _0x47da3a=getAgent(_0x5d4a72);return Promise['all']([_0x27471c,_0x47da3a])[_0xa303('0x19')](function(_0x4db2e2){var _0x14861e=_0x4db2e2[0x0];var _0x44c8d3=_0x4db2e2[0x1];var _0x5272d7=_['filter'](_0x14861e[_0xa303('0x20')],function(_0x249378){return _0x249378['UserId']==_0x44c8d3['id'];});return _0x56bc98['status'](0xc8)['json']({'count':_0x5272d7[_0xa303('0x23')],'rows':_0x5272d7});})[_0xa303('0x31')](handleError(_0x56bc98));};exports[_0xa303('0x3f')]=function(_0x15f4e6,_0x28cd01){logger[_0xa303('0x12')](_0xa303('0x40'),_0x15f4e6[_0xa303('0x28')]);var _0x8aecd7=conferenceValidation['validate'](_0x15f4e6[_0xa303('0x28')]);if(_0x8aecd7[_0xa303('0x23')]>0x0){return _0x28cd01[_0xa303('0x17')](0x190)[_0xa303('0x2a')](_0x8aecd7);}var _0x40e4b4=_0x15f4e6[_0xa303('0x28')]['userId'];return getAgent(_0x40e4b4)[_0xa303('0x19')](function(_0x558a2a){logger['info'](_0xa303('0x2e'),_0x558a2a[_0xa303('0x16')]);emit(util['format'](_0xa303('0x33'),_0x558a2a[_0xa303('0x16')]),_0xa303('0x41'));return _0x28cd01[_0xa303('0x17')](0xc8)[_0xa303('0x2a')]({'error':![],'message':'conference\x20executed!'});})['catch'](handleError(_0x28cd01));};exports['transfer']=function(_0x2e8100,_0x40550d){logger[_0xa303('0x12')]('transfer\x20fired:',_0x2e8100['body']);var _0x3b0f1e=transferValidation['validate'](_0x2e8100['body']);if(_0x3b0f1e['length']>0x0){return _0x40550d['status'](0x190)[_0xa303('0x2a')](_0x3b0f1e);}var _0x27474e=_0x2e8100[_0xa303('0x28')][_0xa303('0x2b')];var _0x3008ae=_0x2e8100[_0xa303('0x28')][_0xa303('0x22')];var _0x2e5a11=_0x2e8100['body'][_0xa303('0x42')];return getAgent(_0x27474e)[_0xa303('0x19')](function(_0x123d7f){logger[_0xa303('0x12')](_0xa303('0x2e'),_0x123d7f[_0xa303('0x16')]);emit(util['format'](_0xa303('0x33'),_0x123d7f['name']),'webbar:transfer',{'sessionId':_0x3008ae,'transferNumber':_0x2e5a11});return _0x40550d[_0xa303('0x17')](0xc8)['json']({'error':![],'message':'transfer\x20executed!'});})['catch'](handleError(_0x40550d));};