Built motion from commit (unavailable).|2.5.16
[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 _0xd33b=['userId','callerId','callbackUrl','entityFound:','format','user:%s','webbar:originate','originate\x20executed!','hangup','hangup\x20fired:','length','sessionId','webbar:hangup','hangup\x20executed!','answer','answer\x20fired:','webbar:answer','answer\x20executed!','hold','hold\x20fired:','webbar:hold','hold\x20executed!','unhold','unhold\x20fired:','webbar:unhold','unhold\x20executed!','calls\x20fired:','UserId','conference','conference\x20fired:','webbar:conference','transfer','transfer\x20fired:','transferNumber','webbar:transfer','transfer\x20executed!','path','lodash','../../config/environment','client','http','webbarapi','ioredis','redis','defaults','localhost','validate','number','userId\x20is\x20required','string','callNumber\x20is\x20required','sessionId\x20is\x20required','transferNumber\x20is\x20required','info','stringify','log','handleError:','stack','name','status','send','NotFound','then','error','code','message','result','catch','User','findOne','agent','VoiceChannels','all','filter','rows','sessionId\x20','originate','body','json'];(function(_0x43635e,_0x12619b){var _0x1b972f=function(_0x1f0618){while(--_0x1f0618){_0x43635e['push'](_0x43635e['shift']());}};_0x1b972f(++_0x12619b);}(_0xd33b,0x1af));var _0xbd33=function(_0xf16ba7,_0x166d3f){_0xf16ba7=_0xf16ba7-0x0;var _0xb132f0=_0xd33b[_0xf16ba7];return _0xb132f0;};'use strict';var path=require(_0xbd33('0x0'));var fs=require('fs');var _=require(_0xbd33('0x1'));var db=require('../../mysqldb')['db'];var config=require(_0xbd33('0x2'));var util=require('util');var BPromise=require('bluebird');var jayson=require('jayson/promise');var amiClient=jayson[_0xbd33('0x3')][_0xbd33('0x4')]({'port':0x232a});var logger=require('../../config/logger')(_0xbd33('0x5'));var Redis=require(_0xbd33('0x6'));config[_0xbd33('0x7')]=_[_0xbd33('0x8')](config['redis'],{'host':_0xbd33('0x9'),'port':0x18eb});var io=require('socket.io-emitter')(new Redis(config[_0xbd33('0x7')]));var Schema=require(_0xbd33('0xa'));var originateValidation=new Schema({'userId':{'type':_0xbd33('0xb'),'required':[!![],_0xbd33('0xc')]},'callNumber':{'type':_0xbd33('0xd'),'required':[!![],_0xbd33('0xe')]},'callerId':{'type':_0xbd33('0xd')},'callbackUrl':{'type':'string'}});var hangupValidation=new Schema({'userId':{'type':_0xbd33('0xb'),'required':[!![],_0xbd33('0xc')]},'sessionId':{'type':'string','required':![]}});var answerValidation=new Schema({'userId':{'type':_0xbd33('0xb'),'required':[!![],_0xbd33('0xc')]},'sessionId':{'type':_0xbd33('0xd'),'required':![]}});var transferValidation=new Schema({'userId':{'type':'number','required':[!![],_0xbd33('0xc')]},'sessionId':{'type':_0xbd33('0xd'),'required':[!![],_0xbd33('0xf')]},'transferNumber':{'type':_0xbd33('0xd'),'required':[!![],_0xbd33('0x10')]}});var holdValidation=new Schema({'userId':{'type':_0xbd33('0xb'),'required':[!![],_0xbd33('0xc')]},'sessionId':{'type':'string','required':![]}});var unholdValidation=new Schema({'userId':{'type':_0xbd33('0xb'),'required':[!![],_0xbd33('0xc')]},'sessionId':{'type':_0xbd33('0xd'),'required':![]}});var callsValidation=new Schema({'userId':{'type':'number','required':[!![],'userId\x20is\x20required']}});var conferenceValidation=new Schema({'userId':{'type':'number','required':[!![],'userId\x20is\x20required']}});function emit(_0x3f5964,_0x322341,_0x4ba160){logger[_0xbd33('0x11')](_0x3f5964,_0x322341,JSON[_0xbd33('0x12')](_0x4ba160));io['to'](_0x3f5964)['emit'](_0x322341,_0x4ba160);}function handleError(_0x13bcda){return function(_0x381a36){console[_0xbd33('0x13')](_0xbd33('0x14'),_0x381a36,_0x381a36 instanceof RangeError);logger['error'](_0x381a36[_0xbd33('0x15')]);if(_0x381a36 instanceof RangeError){if(_0x381a36[_0xbd33('0x16')]){delete _0x381a36[_0xbd33('0x16')];}_0x13bcda[_0xbd33('0x17')](0x194)[_0xbd33('0x18')](_0x381a36);}else{if(_0x381a36[_0xbd33('0x16')]){delete _0x381a36['name'];}_0x13bcda['status'](0x1f4)['send'](_0x381a36);}};}function checkError(){return function(_0x311c5b){if(!_0x311c5b){throw new RangeError(_0xbd33('0x19'));}return _0x311c5b;};}function respondWithRpcPromise(_0x500c80,_0x4a3be2){return new BPromise(function(_0x4d021a,_0x48f4af){var _0x9c2f99=amiClient;return _0x9c2f99['request'](_0x500c80,_0x4a3be2)[_0xbd33('0x1a')](function(_0x1a0dcd){if(_0x1a0dcd[_0xbd33('0x1b')]){if(_0x1a0dcd[_0xbd33('0x1b')][_0xbd33('0x1c')]===0x1f4){return _0x48f4af(_0x1a0dcd['error']['message']);}return _0x4d021a(_0x1a0dcd[_0xbd33('0x1b')][_0xbd33('0x1d')]);}else{_0x4d021a(_0x1a0dcd[_0xbd33('0x1e')]);}})[_0xbd33('0x1f')](function(_0x1be515){_0x48f4af(_0x1be515);});});}function getAgent(_0x463f36){return db[_0xbd33('0x20')][_0xbd33('0x21')]({'where':{'id':_0x463f36,'role':_0xbd33('0x22')}})[_0xbd33('0x1a')](checkError());}function getAgentCheckSession(_0x5a3e37,_0x5d51ab){return new BPromise(function(_0x4f4b63,_0x3f2c91){var _0x1d43bd=respondWithRpcPromise(_0xbd33('0x23'));var _0x22a9c9=getAgent(_0x5a3e37);Promise[_0xbd33('0x24')]([_0x1d43bd,_0x22a9c9])[_0xbd33('0x1a')](function(_0x47ce9f){var _0x30848c=_0x47ce9f[0x0];var _0x3806c3=_0x47ce9f[0x1];var _0x2cb9df=_[_0xbd33('0x25')](_0x30848c[_0xbd33('0x26')],function(_0x29204f){return _0x29204f['UserId']==_0x3806c3['id']&&_0x29204f['sessionId']==_0x5d51ab;});if(_0x2cb9df['length']==0x1){_0x4f4b63(_0x3806c3);}else{_0x3f2c91(new RangeError(_0xbd33('0x27')+_0x5d51ab+'\x20not\x20found!'));}});});}exports[_0xbd33('0x28')]=function(_0x1f82b4,_0x22c33f){logger[_0xbd33('0x11')]('originate\x20fired:',_0x1f82b4[_0xbd33('0x29')]);var _0x1d007e=originateValidation['validate'](_0x1f82b4[_0xbd33('0x29')]);if(_0x1d007e['length']>0x0){return _0x22c33f[_0xbd33('0x17')](0x190)[_0xbd33('0x2a')](_0x1d007e);}var _0x1b501b=_0x1f82b4[_0xbd33('0x29')][_0xbd33('0x2b')];var _0x4bc639=_0x1f82b4[_0xbd33('0x29')]['callNumber'];var _0x2ffd45=_0x1f82b4[_0xbd33('0x29')][_0xbd33('0x2c')];var _0x483fa1=_0x1f82b4[_0xbd33('0x29')][_0xbd33('0x2d')];return getAgent(_0x1b501b)[_0xbd33('0x1a')](function(_0x1a2677){logger[_0xbd33('0x11')](_0xbd33('0x2e'),_0x1a2677[_0xbd33('0x16')]);emit(util[_0xbd33('0x2f')](_0xbd33('0x30'),_0x1a2677['name']),_0xbd33('0x31'),{'callNumber':_0x4bc639,'callerId':_0x2ffd45,'callbackUrl':_0x483fa1});return _0x22c33f[_0xbd33('0x17')](0xc8)[_0xbd33('0x2a')]({'error':![],'message':_0xbd33('0x32')});})['catch'](handleError(_0x22c33f));};exports[_0xbd33('0x33')]=function(_0x2eca01,_0x8f5a3){logger['info'](_0xbd33('0x34'),_0x2eca01['body']);var _0x5dffe1=hangupValidation[_0xbd33('0xa')](_0x2eca01[_0xbd33('0x29')]);if(_0x5dffe1[_0xbd33('0x35')]>0x0){return _0x8f5a3[_0xbd33('0x17')](0x190)['json'](_0x5dffe1);}var _0x1e978e=_0x2eca01[_0xbd33('0x29')][_0xbd33('0x2b')];var _0x15056e=_0x2eca01[_0xbd33('0x29')][_0xbd33('0x36')];return getAgent(_0x1e978e)[_0xbd33('0x1a')](function(_0x411277){logger['info'](_0xbd33('0x2e'),_0x411277['name']);emit(util[_0xbd33('0x2f')](_0xbd33('0x30'),_0x411277[_0xbd33('0x16')]),_0xbd33('0x37'),{'sessionId':_0x15056e});return _0x8f5a3[_0xbd33('0x17')](0xc8)['json']({'error':![],'message':_0xbd33('0x38')});})[_0xbd33('0x1f')](handleError(_0x8f5a3));};exports[_0xbd33('0x39')]=function(_0x2bca10,_0x1e70d2){logger[_0xbd33('0x11')](_0xbd33('0x3a'),_0x2bca10[_0xbd33('0x29')]);var _0x27250c=answerValidation['validate'](_0x2bca10[_0xbd33('0x29')]);if(_0x27250c['length']>0x0){return _0x1e70d2['status'](0x190)[_0xbd33('0x2a')](_0x27250c);}var _0xfb6776=_0x2bca10['body'][_0xbd33('0x2b')];var _0x2022cc=_0x2bca10['body'][_0xbd33('0x36')];return getAgent(_0xfb6776)[_0xbd33('0x1a')](function(_0x2c2aea){logger[_0xbd33('0x11')](_0xbd33('0x2e'),_0x2c2aea[_0xbd33('0x16')]);emit(util[_0xbd33('0x2f')]('user:%s',_0x2c2aea['name']),_0xbd33('0x3b'),{'sessionId':_0x2022cc});return _0x1e70d2['status'](0xc8)[_0xbd33('0x2a')]({'error':![],'message':_0xbd33('0x3c')});})['catch'](handleError(_0x1e70d2));};exports[_0xbd33('0x3d')]=function(_0x4ce968,_0x496835){logger[_0xbd33('0x11')](_0xbd33('0x3e'),_0x4ce968[_0xbd33('0x29')]);var _0x4ce9c7=holdValidation[_0xbd33('0xa')](_0x4ce968[_0xbd33('0x29')]);if(_0x4ce9c7[_0xbd33('0x35')]>0x0){return _0x496835[_0xbd33('0x17')](0x190)['json'](_0x4ce9c7);}var _0x29d55c=_0x4ce968[_0xbd33('0x29')]['userId'];var _0x3d5feb=_0x4ce968[_0xbd33('0x29')][_0xbd33('0x36')];return getAgent(_0x29d55c)[_0xbd33('0x1a')](function(_0x276ffb){logger[_0xbd33('0x11')](_0xbd33('0x2e'),_0x276ffb[_0xbd33('0x16')]);emit(util[_0xbd33('0x2f')](_0xbd33('0x30'),_0x276ffb['name']),_0xbd33('0x3f'),{'sessionId':_0x3d5feb});return _0x496835[_0xbd33('0x17')](0xc8)[_0xbd33('0x2a')]({'error':![],'message':_0xbd33('0x40')});})[_0xbd33('0x1f')](handleError(_0x496835));};exports[_0xbd33('0x41')]=function(_0x1dfcb7,_0x5850e8){logger[_0xbd33('0x11')](_0xbd33('0x42'),_0x1dfcb7[_0xbd33('0x29')]);var _0x2ddce4=unholdValidation['validate'](_0x1dfcb7[_0xbd33('0x29')]);if(_0x2ddce4[_0xbd33('0x35')]>0x0){return _0x5850e8[_0xbd33('0x17')](0x190)['json'](_0x2ddce4);}var _0x51d21a=_0x1dfcb7[_0xbd33('0x29')]['userId'];var _0x59819b=_0x1dfcb7[_0xbd33('0x29')][_0xbd33('0x36')];return getAgent(_0x51d21a)['then'](function(_0x26af0d){logger['info']('entityFound:',_0x26af0d[_0xbd33('0x16')]);emit(util[_0xbd33('0x2f')]('user:%s',_0x26af0d[_0xbd33('0x16')]),_0xbd33('0x43'),{'sessionId':_0x59819b});return _0x5850e8['status'](0xc8)[_0xbd33('0x2a')]({'error':![],'message':_0xbd33('0x44')});})[_0xbd33('0x1f')](handleError(_0x5850e8));};exports['calls']=function(_0x1a64a8,_0x3e70b4){logger['info'](_0xbd33('0x45'),_0x3e70b4[_0xbd33('0x29')]);var _0x4bf784=callsValidation[_0xbd33('0xa')](_0x1a64a8[_0xbd33('0x29')]);if(_0x4bf784[_0xbd33('0x35')]>0x0){return _0x3e70b4[_0xbd33('0x17')](0x190)['json'](_0x4bf784);}var _0x40d030=_0x1a64a8[_0xbd33('0x29')][_0xbd33('0x2b')];var _0x4ce0fd=respondWithRpcPromise('VoiceChannels');var _0x875a45=getAgent(_0x40d030);return Promise[_0xbd33('0x24')]([_0x4ce0fd,_0x875a45])[_0xbd33('0x1a')](function(_0x2ff73f){var _0x3fbd20=_0x2ff73f[0x0];var _0x3e4142=_0x2ff73f[0x1];var _0x527ea4=_[_0xbd33('0x25')](_0x3fbd20['rows'],function(_0xa92727){return _0xa92727[_0xbd33('0x46')]==_0x3e4142['id'];});return _0x3e70b4[_0xbd33('0x17')](0xc8)[_0xbd33('0x2a')]({'count':_0x527ea4[_0xbd33('0x35')],'rows':_0x527ea4});})['catch'](handleError(_0x3e70b4));};exports[_0xbd33('0x47')]=function(_0x5b554e,_0x30c199){logger[_0xbd33('0x11')](_0xbd33('0x48'),_0x5b554e[_0xbd33('0x29')]);var _0x468a56=conferenceValidation[_0xbd33('0xa')](_0x5b554e[_0xbd33('0x29')]);if(_0x468a56[_0xbd33('0x35')]>0x0){return _0x30c199[_0xbd33('0x17')](0x190)[_0xbd33('0x2a')](_0x468a56);}var _0x42a3ee=_0x5b554e['body'][_0xbd33('0x2b')];return getAgent(_0x42a3ee)[_0xbd33('0x1a')](function(_0x11a675){logger[_0xbd33('0x11')](_0xbd33('0x2e'),_0x11a675[_0xbd33('0x16')]);emit(util[_0xbd33('0x2f')]('user:%s',_0x11a675[_0xbd33('0x16')]),_0xbd33('0x49'));return _0x30c199[_0xbd33('0x17')](0xc8)[_0xbd33('0x2a')]({'error':![],'message':'conference\x20executed!'});})[_0xbd33('0x1f')](handleError(_0x30c199));};exports[_0xbd33('0x4a')]=function(_0x18456a,_0x9b53bf){logger[_0xbd33('0x11')](_0xbd33('0x4b'),_0x18456a[_0xbd33('0x29')]);var _0x102af8=transferValidation['validate'](_0x18456a[_0xbd33('0x29')]);if(_0x102af8[_0xbd33('0x35')]>0x0){return _0x9b53bf[_0xbd33('0x17')](0x190)[_0xbd33('0x2a')](_0x102af8);}var _0x10790a=_0x18456a[_0xbd33('0x29')][_0xbd33('0x2b')];var _0x20b3f2=_0x18456a[_0xbd33('0x29')][_0xbd33('0x36')];var _0x1fa444=_0x18456a[_0xbd33('0x29')][_0xbd33('0x4c')];return getAgent(_0x10790a)[_0xbd33('0x1a')](function(_0x2f7dd6){logger[_0xbd33('0x11')](_0xbd33('0x2e'),_0x2f7dd6[_0xbd33('0x16')]);emit(util[_0xbd33('0x2f')](_0xbd33('0x30'),_0x2f7dd6[_0xbd33('0x16')]),_0xbd33('0x4d'),{'sessionId':_0x20b3f2,'transferNumber':_0x1fa444});return _0x9b53bf[_0xbd33('0x17')](0xc8)['json']({'error':![],'message':_0xbd33('0x4e')});})[_0xbd33('0x1f')](handleError(_0x9b53bf));};