Built motion from commit (unavailable).|2.5.22
[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 _0xb661=['conference','conference\x20fired:','webbar:conference','conference\x20executed!','transfer','transfer\x20fired:','transferNumber','transfer\x20executed!','path','lodash','../../mysqldb','../../config/environment','util','bluebird','jayson/promise','ioredis','redis','localhost','socket.io-emitter','validate','number','userId\x20is\x20required','string','callNumber\x20is\x20required','sessionId\x20is\x20required','transferNumber\x20is\x20required','info','stringify','emit','log','handleError:','error','stack','name','status','send','NotFound','request','code','message','result','catch','User','findOne','agent','VoiceChannels','then','filter','UserId','length','\x20not\x20found!','originate','originate\x20fired:','body','json','callNumber','callerId','entityFound:','format','user:%s','webbar:originate','originate\x20executed!','hangup\x20fired:','userId','sessionId','webbar:hangup','answer','answer\x20fired:','webbar:answer','webbar:hold','unhold','unhold\x20fired:','webbar:unhold','calls','calls\x20fired:','all'];(function(_0x1ff347,_0x2f7546){var _0x10128d=function(_0x4522c3){while(--_0x4522c3){_0x1ff347['push'](_0x1ff347['shift']());}};_0x10128d(++_0x2f7546);}(_0xb661,0x1d0));var _0x1b66=function(_0x501510,_0x61caa9){_0x501510=_0x501510-0x0;var _0x1e6ee5=_0xb661[_0x501510];return _0x1e6ee5;};'use strict';var path=require(_0x1b66('0x0'));var fs=require('fs');var _=require(_0x1b66('0x1'));var db=require(_0x1b66('0x2'))['db'];var config=require(_0x1b66('0x3'));var util=require(_0x1b66('0x4'));var BPromise=require(_0x1b66('0x5'));var jayson=require(_0x1b66('0x6'));var amiClient=jayson['client']['http']({'port':0x232a});var logger=require('../../config/logger')('webbarapi');var Redis=require(_0x1b66('0x7'));config[_0x1b66('0x8')]=_['defaults'](config[_0x1b66('0x8')],{'host':_0x1b66('0x9'),'port':0x18eb});var io=require(_0x1b66('0xa'))(new Redis(config[_0x1b66('0x8')]));var Schema=require(_0x1b66('0xb'));var originateValidation=new Schema({'userId':{'type':_0x1b66('0xc'),'required':[!![],_0x1b66('0xd')]},'callNumber':{'type':_0x1b66('0xe'),'required':[!![],_0x1b66('0xf')]},'callerId':{'type':'string'},'callbackUrl':{'type':_0x1b66('0xe')}});var hangupValidation=new Schema({'userId':{'type':_0x1b66('0xc'),'required':[!![],_0x1b66('0xd')]},'sessionId':{'type':_0x1b66('0xe'),'required':![]}});var answerValidation=new Schema({'userId':{'type':_0x1b66('0xc'),'required':[!![],_0x1b66('0xd')]},'sessionId':{'type':_0x1b66('0xe'),'required':![]}});var transferValidation=new Schema({'userId':{'type':_0x1b66('0xc'),'required':[!![],_0x1b66('0xd')]},'sessionId':{'type':_0x1b66('0xe'),'required':[!![],_0x1b66('0x10')]},'transferNumber':{'type':_0x1b66('0xe'),'required':[!![],_0x1b66('0x11')]}});var holdValidation=new Schema({'userId':{'type':_0x1b66('0xc'),'required':[!![],_0x1b66('0xd')]},'sessionId':{'type':_0x1b66('0xe'),'required':![]}});var unholdValidation=new Schema({'userId':{'type':_0x1b66('0xc'),'required':[!![],_0x1b66('0xd')]},'sessionId':{'type':_0x1b66('0xe'),'required':![]}});var callsValidation=new Schema({'userId':{'type':'number','required':[!![],'userId\x20is\x20required']}});var conferenceValidation=new Schema({'userId':{'type':_0x1b66('0xc'),'required':[!![],_0x1b66('0xd')]}});function emit(_0x354086,_0x4af411,_0x2cdfef){logger[_0x1b66('0x12')](_0x354086,_0x4af411,JSON[_0x1b66('0x13')](_0x2cdfef));io['to'](_0x354086)[_0x1b66('0x14')](_0x4af411,_0x2cdfef);}function handleError(_0x4dff7a){return function(_0x535925){console[_0x1b66('0x15')](_0x1b66('0x16'),_0x535925,_0x535925 instanceof RangeError);logger[_0x1b66('0x17')](_0x535925[_0x1b66('0x18')]);if(_0x535925 instanceof RangeError){if(_0x535925[_0x1b66('0x19')]){delete _0x535925[_0x1b66('0x19')];}_0x4dff7a[_0x1b66('0x1a')](0x194)[_0x1b66('0x1b')](_0x535925);}else{if(_0x535925['name']){delete _0x535925['name'];}_0x4dff7a[_0x1b66('0x1a')](0x1f4)[_0x1b66('0x1b')](_0x535925);}};}function checkError(){return function(_0x182684){if(!_0x182684){throw new RangeError(_0x1b66('0x1c'));}return _0x182684;};}function respondWithRpcPromise(_0x491f5c,_0x760da){return new BPromise(function(_0x5c5479,_0x2fe9a0){var _0x141b17=amiClient;return _0x141b17[_0x1b66('0x1d')](_0x491f5c,_0x760da)['then'](function(_0x47c94e){if(_0x47c94e[_0x1b66('0x17')]){if(_0x47c94e[_0x1b66('0x17')][_0x1b66('0x1e')]===0x1f4){return _0x2fe9a0(_0x47c94e[_0x1b66('0x17')][_0x1b66('0x1f')]);}return _0x5c5479(_0x47c94e[_0x1b66('0x17')]['message']);}else{_0x5c5479(_0x47c94e[_0x1b66('0x20')]);}})[_0x1b66('0x21')](function(_0xc65f78){_0x2fe9a0(_0xc65f78);});});}function getAgent(_0x432f99){return db[_0x1b66('0x22')][_0x1b66('0x23')]({'where':{'id':_0x432f99,'role':_0x1b66('0x24')}})['then'](checkError());}function getAgentCheckSession(_0x18aec8,_0x3529b6){return new BPromise(function(_0x43d336,_0x2b7412){var _0x1b3fd5=respondWithRpcPromise(_0x1b66('0x25'));var _0x24f00e=getAgent(_0x18aec8);Promise['all']([_0x1b3fd5,_0x24f00e])[_0x1b66('0x26')](function(_0x26c6a4){var _0x76bd46=_0x26c6a4[0x0];var _0xd875bd=_0x26c6a4[0x1];var _0x58b086=_[_0x1b66('0x27')](_0x76bd46['rows'],function(_0xe76bd0){return _0xe76bd0[_0x1b66('0x28')]==_0xd875bd['id']&&_0xe76bd0['sessionId']==_0x3529b6;});if(_0x58b086[_0x1b66('0x29')]==0x1){_0x43d336(_0xd875bd);}else{_0x2b7412(new RangeError('sessionId\x20'+_0x3529b6+_0x1b66('0x2a')));}});});}exports[_0x1b66('0x2b')]=function(_0x4f2398,_0x14d0e2){logger[_0x1b66('0x12')](_0x1b66('0x2c'),_0x4f2398[_0x1b66('0x2d')]);var _0x12458b=originateValidation[_0x1b66('0xb')](_0x4f2398[_0x1b66('0x2d')]);if(_0x12458b[_0x1b66('0x29')]>0x0){return _0x14d0e2[_0x1b66('0x1a')](0x190)[_0x1b66('0x2e')](_0x12458b);}var _0x334eca=_0x4f2398[_0x1b66('0x2d')]['userId'];var _0x5e7ad7=_0x4f2398[_0x1b66('0x2d')][_0x1b66('0x2f')];var _0x1484ff=_0x4f2398[_0x1b66('0x2d')][_0x1b66('0x30')];var _0x421300=_0x4f2398[_0x1b66('0x2d')]['callbackUrl'];return getAgent(_0x334eca)[_0x1b66('0x26')](function(_0x38b0f6){logger[_0x1b66('0x12')](_0x1b66('0x31'),_0x38b0f6[_0x1b66('0x19')]);emit(util[_0x1b66('0x32')](_0x1b66('0x33'),_0x38b0f6[_0x1b66('0x19')]),_0x1b66('0x34'),{'callNumber':_0x5e7ad7,'callerId':_0x1484ff,'callbackUrl':_0x421300});return _0x14d0e2[_0x1b66('0x1a')](0xc8)[_0x1b66('0x2e')]({'error':![],'message':_0x1b66('0x35')});})[_0x1b66('0x21')](handleError(_0x14d0e2));};exports['hangup']=function(_0x353be1,_0x3f0a07){logger[_0x1b66('0x12')](_0x1b66('0x36'),_0x353be1['body']);var _0x2a20d3=hangupValidation['validate'](_0x353be1[_0x1b66('0x2d')]);if(_0x2a20d3[_0x1b66('0x29')]>0x0){return _0x3f0a07['status'](0x190)[_0x1b66('0x2e')](_0x2a20d3);}var _0x5d4c37=_0x353be1[_0x1b66('0x2d')][_0x1b66('0x37')];var _0x1154e3=_0x353be1['body'][_0x1b66('0x38')];return getAgent(_0x5d4c37)[_0x1b66('0x26')](function(_0x2feae3){logger[_0x1b66('0x12')]('entityFound:',_0x2feae3[_0x1b66('0x19')]);emit(util[_0x1b66('0x32')](_0x1b66('0x33'),_0x2feae3['name']),_0x1b66('0x39'),{'sessionId':_0x1154e3});return _0x3f0a07[_0x1b66('0x1a')](0xc8)[_0x1b66('0x2e')]({'error':![],'message':'hangup\x20executed!'});})['catch'](handleError(_0x3f0a07));};exports[_0x1b66('0x3a')]=function(_0x2126b4,_0x5c1a93){logger[_0x1b66('0x12')](_0x1b66('0x3b'),_0x2126b4[_0x1b66('0x2d')]);var _0x619d94=answerValidation[_0x1b66('0xb')](_0x2126b4[_0x1b66('0x2d')]);if(_0x619d94[_0x1b66('0x29')]>0x0){return _0x5c1a93['status'](0x190)['json'](_0x619d94);}var _0x2c8abf=_0x2126b4[_0x1b66('0x2d')][_0x1b66('0x37')];var _0x56156c=_0x2126b4['body'][_0x1b66('0x38')];return getAgent(_0x2c8abf)['then'](function(_0xcc7656){logger['info'](_0x1b66('0x31'),_0xcc7656['name']);emit(util[_0x1b66('0x32')](_0x1b66('0x33'),_0xcc7656[_0x1b66('0x19')]),_0x1b66('0x3c'),{'sessionId':_0x56156c});return _0x5c1a93[_0x1b66('0x1a')](0xc8)['json']({'error':![],'message':'answer\x20executed!'});})[_0x1b66('0x21')](handleError(_0x5c1a93));};exports['hold']=function(_0x7e53aa,_0x333a87){logger[_0x1b66('0x12')]('hold\x20fired:',_0x7e53aa[_0x1b66('0x2d')]);var _0x4b11aa=holdValidation[_0x1b66('0xb')](_0x7e53aa['body']);if(_0x4b11aa[_0x1b66('0x29')]>0x0){return _0x333a87['status'](0x190)[_0x1b66('0x2e')](_0x4b11aa);}var _0x4ca6c1=_0x7e53aa[_0x1b66('0x2d')]['userId'];var _0xd033f3=_0x7e53aa[_0x1b66('0x2d')][_0x1b66('0x38')];return getAgent(_0x4ca6c1)[_0x1b66('0x26')](function(_0xbc42c3){logger[_0x1b66('0x12')](_0x1b66('0x31'),_0xbc42c3[_0x1b66('0x19')]);emit(util['format']('user:%s',_0xbc42c3[_0x1b66('0x19')]),_0x1b66('0x3d'),{'sessionId':_0xd033f3});return _0x333a87[_0x1b66('0x1a')](0xc8)[_0x1b66('0x2e')]({'error':![],'message':'hold\x20executed!'});})[_0x1b66('0x21')](handleError(_0x333a87));};exports[_0x1b66('0x3e')]=function(_0x4a5bfc,_0x2d5370){logger[_0x1b66('0x12')](_0x1b66('0x3f'),_0x4a5bfc['body']);var _0x3fdca9=unholdValidation[_0x1b66('0xb')](_0x4a5bfc['body']);if(_0x3fdca9['length']>0x0){return _0x2d5370['status'](0x190)[_0x1b66('0x2e')](_0x3fdca9);}var _0x5e0fa6=_0x4a5bfc['body'][_0x1b66('0x37')];var _0x48c843=_0x4a5bfc[_0x1b66('0x2d')]['sessionId'];return getAgent(_0x5e0fa6)[_0x1b66('0x26')](function(_0x5c4951){logger[_0x1b66('0x12')]('entityFound:',_0x5c4951[_0x1b66('0x19')]);emit(util['format'](_0x1b66('0x33'),_0x5c4951[_0x1b66('0x19')]),_0x1b66('0x40'),{'sessionId':_0x48c843});return _0x2d5370[_0x1b66('0x1a')](0xc8)[_0x1b66('0x2e')]({'error':![],'message':'unhold\x20executed!'});})[_0x1b66('0x21')](handleError(_0x2d5370));};exports[_0x1b66('0x41')]=function(_0x41b01d,_0x1b4511){logger['info'](_0x1b66('0x42'),_0x1b4511[_0x1b66('0x2d')]);var _0x1504e5=callsValidation[_0x1b66('0xb')](_0x41b01d[_0x1b66('0x2d')]);if(_0x1504e5[_0x1b66('0x29')]>0x0){return _0x1b4511[_0x1b66('0x1a')](0x190)[_0x1b66('0x2e')](_0x1504e5);}var _0x2282b9=_0x41b01d[_0x1b66('0x2d')]['userId'];var _0x5c2156=respondWithRpcPromise(_0x1b66('0x25'));var _0x513bde=getAgent(_0x2282b9);return Promise[_0x1b66('0x43')]([_0x5c2156,_0x513bde])[_0x1b66('0x26')](function(_0x5ad5fd){var _0x480e9c=_0x5ad5fd[0x0];var _0x3d7b2e=_0x5ad5fd[0x1];var _0x53138f=_['filter'](_0x480e9c['rows'],function(_0x3fdd59){return _0x3fdd59[_0x1b66('0x28')]==_0x3d7b2e['id'];});return _0x1b4511[_0x1b66('0x1a')](0xc8)[_0x1b66('0x2e')]({'count':_0x53138f['length'],'rows':_0x53138f});})[_0x1b66('0x21')](handleError(_0x1b4511));};exports[_0x1b66('0x44')]=function(_0x498e62,_0x4f765b){logger[_0x1b66('0x12')](_0x1b66('0x45'),_0x498e62[_0x1b66('0x2d')]);var _0x239635=conferenceValidation[_0x1b66('0xb')](_0x498e62['body']);if(_0x239635[_0x1b66('0x29')]>0x0){return _0x4f765b[_0x1b66('0x1a')](0x190)[_0x1b66('0x2e')](_0x239635);}var _0x5a5019=_0x498e62['body'][_0x1b66('0x37')];return getAgent(_0x5a5019)[_0x1b66('0x26')](function(_0x495309){logger[_0x1b66('0x12')](_0x1b66('0x31'),_0x495309[_0x1b66('0x19')]);emit(util['format'](_0x1b66('0x33'),_0x495309['name']),_0x1b66('0x46'));return _0x4f765b[_0x1b66('0x1a')](0xc8)[_0x1b66('0x2e')]({'error':![],'message':_0x1b66('0x47')});})[_0x1b66('0x21')](handleError(_0x4f765b));};exports[_0x1b66('0x48')]=function(_0x4f1e0a,_0x47bf7a){logger['info'](_0x1b66('0x49'),_0x4f1e0a[_0x1b66('0x2d')]);var _0x4011a6=transferValidation[_0x1b66('0xb')](_0x4f1e0a[_0x1b66('0x2d')]);if(_0x4011a6[_0x1b66('0x29')]>0x0){return _0x47bf7a[_0x1b66('0x1a')](0x190)[_0x1b66('0x2e')](_0x4011a6);}var _0x3e4806=_0x4f1e0a[_0x1b66('0x2d')][_0x1b66('0x37')];var _0x4cf5d3=_0x4f1e0a[_0x1b66('0x2d')]['sessionId'];var _0x419af5=_0x4f1e0a[_0x1b66('0x2d')][_0x1b66('0x4a')];return getAgent(_0x3e4806)[_0x1b66('0x26')](function(_0x190ad3){logger[_0x1b66('0x12')](_0x1b66('0x31'),_0x190ad3[_0x1b66('0x19')]);emit(util[_0x1b66('0x32')](_0x1b66('0x33'),_0x190ad3[_0x1b66('0x19')]),'webbar:transfer',{'sessionId':_0x4cf5d3,'transferNumber':_0x419af5});return _0x47bf7a[_0x1b66('0x1a')](0xc8)[_0x1b66('0x2e')]({'error':![],'message':_0x1b66('0x4b')});})[_0x1b66('0x21')](handleError(_0x47bf7a));};