Built motion from commit (unavailable).|2.5.13
[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 _0x1cc7=['stringify','emit','log','handleError:','stack','name','send','status','NotFound','request','then','error','code','message','result','catch','User','findOne','VoiceChannels','all','filter','rows','UserId','sessionId','length','sessionId\x20','\x20not\x20found!','originate','info','originate\x20fired:','body','callerId','callbackUrl','entityFound:','format','user:%s','webbar:originate','json','hangup','hangup\x20fired:','userId','answer','answer\x20fired:','answer\x20executed!','hold','hold\x20fired:','webbar:hold','hold\x20executed!','unhold','calls','calls\x20fired:','conference','webbar:conference','conference\x20executed!','transfer','transfer\x20fired:','transferNumber','transfer\x20executed!','path','lodash','../../mysqldb','jayson/promise','client','http','redis','localhost','socket.io-emitter','validate','userId\x20is\x20required','string','callNumber\x20is\x20required','number'];(function(_0x373a25,_0x987768){var _0x3e95fd=function(_0x348a82){while(--_0x348a82){_0x373a25['push'](_0x373a25['shift']());}};_0x3e95fd(++_0x987768);}(_0x1cc7,0x15a));var _0x71cc=function(_0x1f31bc,_0x2f488c){_0x1f31bc=_0x1f31bc-0x0;var _0x38330a=_0x1cc7[_0x1f31bc];return _0x38330a;};'use strict';var path=require(_0x71cc('0x0'));var fs=require('fs');var _=require(_0x71cc('0x1'));var db=require(_0x71cc('0x2'))['db'];var config=require('../../config/environment');var util=require('util');var BPromise=require('bluebird');var jayson=require(_0x71cc('0x3'));var amiClient=jayson[_0x71cc('0x4')][_0x71cc('0x5')]({'port':0x232a});var logger=require('../../config/logger')('webbarapi');var Redis=require('ioredis');config[_0x71cc('0x6')]=_['defaults'](config[_0x71cc('0x6')],{'host':_0x71cc('0x7'),'port':0x18eb});var io=require(_0x71cc('0x8'))(new Redis(config[_0x71cc('0x6')]));var Schema=require(_0x71cc('0x9'));var originateValidation=new Schema({'userId':{'type':'number','required':[!![],_0x71cc('0xa')]},'callNumber':{'type':_0x71cc('0xb'),'required':[!![],_0x71cc('0xc')]},'callerId':{'type':'string'},'callbackUrl':{'type':'string'}});var hangupValidation=new Schema({'userId':{'type':'number','required':[!![],'userId\x20is\x20required']},'sessionId':{'type':_0x71cc('0xb'),'required':![]}});var answerValidation=new Schema({'userId':{'type':_0x71cc('0xd'),'required':[!![],_0x71cc('0xa')]},'sessionId':{'type':'string','required':![]}});var transferValidation=new Schema({'userId':{'type':_0x71cc('0xd'),'required':[!![],'userId\x20is\x20required']},'sessionId':{'type':_0x71cc('0xb'),'required':[!![],'sessionId\x20is\x20required']},'transferNumber':{'type':_0x71cc('0xb'),'required':[!![],'transferNumber\x20is\x20required']}});var holdValidation=new Schema({'userId':{'type':_0x71cc('0xd'),'required':[!![],_0x71cc('0xa')]},'sessionId':{'type':_0x71cc('0xb'),'required':![]}});var unholdValidation=new Schema({'userId':{'type':_0x71cc('0xd'),'required':[!![],_0x71cc('0xa')]},'sessionId':{'type':'string','required':![]}});var callsValidation=new Schema({'userId':{'type':_0x71cc('0xd'),'required':[!![],_0x71cc('0xa')]}});var conferenceValidation=new Schema({'userId':{'type':_0x71cc('0xd'),'required':[!![],_0x71cc('0xa')]}});function emit(_0x3875b8,_0x14087c,_0x1e359d){logger['info'](_0x3875b8,_0x14087c,JSON[_0x71cc('0xe')](_0x1e359d));io['to'](_0x3875b8)[_0x71cc('0xf')](_0x14087c,_0x1e359d);}function handleError(_0x1a7d71){return function(_0x1d1da8){console[_0x71cc('0x10')](_0x71cc('0x11'),_0x1d1da8,_0x1d1da8 instanceof RangeError);logger['error'](_0x1d1da8[_0x71cc('0x12')]);if(_0x1d1da8 instanceof RangeError){if(_0x1d1da8[_0x71cc('0x13')]){delete _0x1d1da8['name'];}_0x1a7d71['status'](0x194)[_0x71cc('0x14')](_0x1d1da8);}else{if(_0x1d1da8[_0x71cc('0x13')]){delete _0x1d1da8[_0x71cc('0x13')];}_0x1a7d71[_0x71cc('0x15')](0x1f4)[_0x71cc('0x14')](_0x1d1da8);}};}function checkError(){return function(_0xccbfb){if(!_0xccbfb){throw new RangeError(_0x71cc('0x16'));}return _0xccbfb;};}function respondWithRpcPromise(_0x18683d,_0x4cfba0){return new BPromise(function(_0x1442ef,_0x109239){var _0x587a0b=amiClient;return _0x587a0b[_0x71cc('0x17')](_0x18683d,_0x4cfba0)[_0x71cc('0x18')](function(_0x38f58e){if(_0x38f58e[_0x71cc('0x19')]){if(_0x38f58e[_0x71cc('0x19')][_0x71cc('0x1a')]===0x1f4){return _0x109239(_0x38f58e['error'][_0x71cc('0x1b')]);}return _0x1442ef(_0x38f58e[_0x71cc('0x19')][_0x71cc('0x1b')]);}else{_0x1442ef(_0x38f58e[_0x71cc('0x1c')]);}})[_0x71cc('0x1d')](function(_0x5fa323){_0x109239(_0x5fa323);});});}function getAgent(_0x27b933){return db[_0x71cc('0x1e')][_0x71cc('0x1f')]({'where':{'id':_0x27b933,'role':'agent'}})[_0x71cc('0x18')](checkError());}function getAgentCheckSession(_0x43c155,_0x28e095){return new BPromise(function(_0x26becf,_0x20b093){var _0x1fa9c1=respondWithRpcPromise(_0x71cc('0x20'));var _0x9a7ca3=getAgent(_0x43c155);Promise[_0x71cc('0x21')]([_0x1fa9c1,_0x9a7ca3])[_0x71cc('0x18')](function(_0x30f94d){var _0x35f723=_0x30f94d[0x0];var _0x1d5805=_0x30f94d[0x1];var _0x2db9c9=_[_0x71cc('0x22')](_0x35f723[_0x71cc('0x23')],function(_0x4fa63e){return _0x4fa63e[_0x71cc('0x24')]==_0x1d5805['id']&&_0x4fa63e[_0x71cc('0x25')]==_0x28e095;});if(_0x2db9c9[_0x71cc('0x26')]==0x1){_0x26becf(_0x1d5805);}else{_0x20b093(new RangeError(_0x71cc('0x27')+_0x28e095+_0x71cc('0x28')));}});});}exports[_0x71cc('0x29')]=function(_0x4a44c1,_0x3110e3){logger[_0x71cc('0x2a')](_0x71cc('0x2b'),_0x4a44c1[_0x71cc('0x2c')]);var _0x3b11ba=originateValidation[_0x71cc('0x9')](_0x4a44c1[_0x71cc('0x2c')]);if(_0x3b11ba['length']>0x0){return _0x3110e3[_0x71cc('0x15')](0x190)['json'](_0x3b11ba);}var _0x5f3c24=_0x4a44c1[_0x71cc('0x2c')]['userId'];var _0x4fa34d=_0x4a44c1[_0x71cc('0x2c')]['callNumber'];var _0xf86f30=_0x4a44c1['body'][_0x71cc('0x2d')];var _0x1d8560=_0x4a44c1['body'][_0x71cc('0x2e')];return getAgent(_0x5f3c24)[_0x71cc('0x18')](function(_0x2ab9fb){logger[_0x71cc('0x2a')](_0x71cc('0x2f'),_0x2ab9fb[_0x71cc('0x13')]);emit(util[_0x71cc('0x30')](_0x71cc('0x31'),_0x2ab9fb[_0x71cc('0x13')]),_0x71cc('0x32'),{'callNumber':_0x4fa34d,'callerId':_0xf86f30,'callbackUrl':_0x1d8560});return _0x3110e3['status'](0xc8)[_0x71cc('0x33')]({'error':![],'message':'originate\x20executed!'});})[_0x71cc('0x1d')](handleError(_0x3110e3));};exports[_0x71cc('0x34')]=function(_0x3e9812,_0x9328e2){logger[_0x71cc('0x2a')](_0x71cc('0x35'),_0x3e9812['body']);var _0x38a701=hangupValidation['validate'](_0x3e9812[_0x71cc('0x2c')]);if(_0x38a701[_0x71cc('0x26')]>0x0){return _0x9328e2[_0x71cc('0x15')](0x190)['json'](_0x38a701);}var _0x588748=_0x3e9812['body'][_0x71cc('0x36')];var _0x33190b=_0x3e9812[_0x71cc('0x2c')][_0x71cc('0x25')];return getAgent(_0x588748)[_0x71cc('0x18')](function(_0x1e7e67){logger[_0x71cc('0x2a')](_0x71cc('0x2f'),_0x1e7e67[_0x71cc('0x13')]);emit(util[_0x71cc('0x30')](_0x71cc('0x31'),_0x1e7e67[_0x71cc('0x13')]),'webbar:hangup',{'sessionId':_0x33190b});return _0x9328e2[_0x71cc('0x15')](0xc8)[_0x71cc('0x33')]({'error':![],'message':'hangup\x20executed!'});})['catch'](handleError(_0x9328e2));};exports[_0x71cc('0x37')]=function(_0x21492b,_0x490b46){logger[_0x71cc('0x2a')](_0x71cc('0x38'),_0x21492b[_0x71cc('0x2c')]);var _0x19d7c8=answerValidation[_0x71cc('0x9')](_0x21492b['body']);if(_0x19d7c8['length']>0x0){return _0x490b46['status'](0x190)[_0x71cc('0x33')](_0x19d7c8);}var _0x51c0e7=_0x21492b[_0x71cc('0x2c')][_0x71cc('0x36')];var _0x70cd0e=_0x21492b[_0x71cc('0x2c')][_0x71cc('0x25')];return getAgent(_0x51c0e7)[_0x71cc('0x18')](function(_0x383af4){logger[_0x71cc('0x2a')](_0x71cc('0x2f'),_0x383af4[_0x71cc('0x13')]);emit(util[_0x71cc('0x30')](_0x71cc('0x31'),_0x383af4[_0x71cc('0x13')]),'webbar:answer',{'sessionId':_0x70cd0e});return _0x490b46[_0x71cc('0x15')](0xc8)[_0x71cc('0x33')]({'error':![],'message':_0x71cc('0x39')});})['catch'](handleError(_0x490b46));};exports[_0x71cc('0x3a')]=function(_0x3478f1,_0x30cf8a){logger[_0x71cc('0x2a')](_0x71cc('0x3b'),_0x3478f1[_0x71cc('0x2c')]);var _0x14f645=holdValidation[_0x71cc('0x9')](_0x3478f1[_0x71cc('0x2c')]);if(_0x14f645[_0x71cc('0x26')]>0x0){return _0x30cf8a[_0x71cc('0x15')](0x190)[_0x71cc('0x33')](_0x14f645);}var _0x47cefc=_0x3478f1[_0x71cc('0x2c')][_0x71cc('0x36')];var _0x3050c6=_0x3478f1[_0x71cc('0x2c')][_0x71cc('0x25')];return getAgent(_0x47cefc)[_0x71cc('0x18')](function(_0x430387){logger['info'](_0x71cc('0x2f'),_0x430387[_0x71cc('0x13')]);emit(util['format'](_0x71cc('0x31'),_0x430387[_0x71cc('0x13')]),_0x71cc('0x3c'),{'sessionId':_0x3050c6});return _0x30cf8a[_0x71cc('0x15')](0xc8)[_0x71cc('0x33')]({'error':![],'message':_0x71cc('0x3d')});})[_0x71cc('0x1d')](handleError(_0x30cf8a));};exports[_0x71cc('0x3e')]=function(_0x3cf0bf,_0x1647ce){logger[_0x71cc('0x2a')]('unhold\x20fired:',_0x3cf0bf[_0x71cc('0x2c')]);var _0x4e5bba=unholdValidation[_0x71cc('0x9')](_0x3cf0bf['body']);if(_0x4e5bba[_0x71cc('0x26')]>0x0){return _0x1647ce[_0x71cc('0x15')](0x190)['json'](_0x4e5bba);}var _0x2cac03=_0x3cf0bf[_0x71cc('0x2c')]['userId'];var _0x3edacf=_0x3cf0bf[_0x71cc('0x2c')][_0x71cc('0x25')];return getAgent(_0x2cac03)[_0x71cc('0x18')](function(_0x3ac021){logger[_0x71cc('0x2a')](_0x71cc('0x2f'),_0x3ac021['name']);emit(util[_0x71cc('0x30')](_0x71cc('0x31'),_0x3ac021['name']),'webbar:unhold',{'sessionId':_0x3edacf});return _0x1647ce[_0x71cc('0x15')](0xc8)[_0x71cc('0x33')]({'error':![],'message':'unhold\x20executed!'});})[_0x71cc('0x1d')](handleError(_0x1647ce));};exports[_0x71cc('0x3f')]=function(_0x3a2a0a,_0x3dd56d){logger[_0x71cc('0x2a')](_0x71cc('0x40'),_0x3dd56d['body']);var _0x49cd24=callsValidation[_0x71cc('0x9')](_0x3a2a0a['body']);if(_0x49cd24['length']>0x0){return _0x3dd56d[_0x71cc('0x15')](0x190)['json'](_0x49cd24);}var _0x47de7b=_0x3a2a0a['body']['userId'];var _0x572c62=respondWithRpcPromise(_0x71cc('0x20'));var _0x4b5587=getAgent(_0x47de7b);return Promise['all']([_0x572c62,_0x4b5587])[_0x71cc('0x18')](function(_0xbf7295){var _0x37190f=_0xbf7295[0x0];var _0x98e79b=_0xbf7295[0x1];var _0x2b108e=_[_0x71cc('0x22')](_0x37190f['rows'],function(_0x5b5bd0){return _0x5b5bd0['UserId']==_0x98e79b['id'];});return _0x3dd56d[_0x71cc('0x15')](0xc8)[_0x71cc('0x33')]({'count':_0x2b108e[_0x71cc('0x26')],'rows':_0x2b108e});})[_0x71cc('0x1d')](handleError(_0x3dd56d));};exports[_0x71cc('0x41')]=function(_0x5b1560,_0xcd78b5){logger[_0x71cc('0x2a')]('conference\x20fired:',_0x5b1560['body']);var _0x349d62=conferenceValidation[_0x71cc('0x9')](_0x5b1560['body']);if(_0x349d62['length']>0x0){return _0xcd78b5[_0x71cc('0x15')](0x190)['json'](_0x349d62);}var _0x48735b=_0x5b1560[_0x71cc('0x2c')][_0x71cc('0x36')];return getAgent(_0x48735b)[_0x71cc('0x18')](function(_0x5ed6b9){logger[_0x71cc('0x2a')](_0x71cc('0x2f'),_0x5ed6b9[_0x71cc('0x13')]);emit(util['format']('user:%s',_0x5ed6b9['name']),_0x71cc('0x42'));return _0xcd78b5[_0x71cc('0x15')](0xc8)[_0x71cc('0x33')]({'error':![],'message':_0x71cc('0x43')});})[_0x71cc('0x1d')](handleError(_0xcd78b5));};exports[_0x71cc('0x44')]=function(_0x515d18,_0x48b10c){logger[_0x71cc('0x2a')](_0x71cc('0x45'),_0x515d18[_0x71cc('0x2c')]);var _0x1c60f0=transferValidation[_0x71cc('0x9')](_0x515d18[_0x71cc('0x2c')]);if(_0x1c60f0[_0x71cc('0x26')]>0x0){return _0x48b10c[_0x71cc('0x15')](0x190)[_0x71cc('0x33')](_0x1c60f0);}var _0x17ecd1=_0x515d18['body']['userId'];var _0x36944a=_0x515d18[_0x71cc('0x2c')][_0x71cc('0x25')];var _0x2d05b5=_0x515d18[_0x71cc('0x2c')][_0x71cc('0x46')];return getAgent(_0x17ecd1)[_0x71cc('0x18')](function(_0x2f89b1){logger[_0x71cc('0x2a')]('entityFound:',_0x2f89b1[_0x71cc('0x13')]);emit(util[_0x71cc('0x30')](_0x71cc('0x31'),_0x2f89b1[_0x71cc('0x13')]),'webbar:transfer',{'sessionId':_0x36944a,'transferNumber':_0x2d05b5});return _0x48b10c['status'](0xc8)[_0x71cc('0x33')]({'error':![],'message':_0x71cc('0x47')});})[_0x71cc('0x1d')](handleError(_0x48b10c));};